草庐IT

incremental-compiler

全部标签

compiler-construction - 不同的 JDK 更新会产生不同的 Java 字节码吗?

假设场景:我有一个项目,其源代码合规性级别指定为1.5。现在,我使用两个不同的JDK编译该项目:首先使用JDK6Update7,然后使用JDK6Update20。这两个不同的JDK是否会产生不同的Java字节码,尽管它们只是更新版本不同? 最佳答案 生成的代码通常只在编译器错误修复时有所不同。但是,JLS不指定从源代码到生成的字节码的1:1映射,因此您不应依赖生成的完全相同的字节码。 关于compiler-construction-不同的JDK更新会产生不同的Java字节码吗?,我们在S

c# - Java原子整数和C#Interlocked.Increment方法的区别

我只是想知道,在线程环境中,在Java和C#中递增静态变量的方式有区别吗?在Java中,您使用atomicint:s进行此操作,而在C#中,您使用Interlocked.Incement(refyourVar)我说的不是你写的代码,而是它实际上是如何锁定内存并进行实际增量的。 最佳答案 互锁操作不锁定内存,而是根据操作向指令发出LOCK前缀。这会导致处理器断言总线锁定,因此只执行一次指令。你可以进一步查看followingarticle 关于c#-Java原子整数和C#Interlock

java - Eclipse Build Project 和 Maven Compile 命令的区别

Eclipse“BuildProject”命令是否与Maven命令“mvncompile”相同?两者基本上做同样的事情吗?如果是,那么为什么我需要在运行“mvncleaninstall”后在STS中执行“BuildProject”才能顺利运行应用程序?运行“mvncleaninstall”应该已经编译了项目。刷新STS中的项目是否足以运行它?如果否,那么Eclipse构建是否不同,因为Java编译器实现了Java语言规范来构建类?但是下面的ApacheMavenlink说默认编译器是javax.tools.JavaCompiler(顺便说一句,我使用的是Java1.6)。

java - GCJ(GNU Compiler for Java)是发布 webapp 的可行工具吗?

使用GCJ发布服务端应用真的可行吗?网络应用程序?我的老板坚信将我们的(我的)网络应用程序编译成二进制可执行文件是一个绝妙的主意。(话又说回来,他喜欢漂亮的、小的、简单的东西,上面有他能理解的闪烁的灯光。)他本能地认为这没有问题,而我只看到无穷无尽的一系列问题和退化。一旦我开始和他谈论我们平台的复杂性,以及字节码、JVM、库、操作系统之间的差异、处理器架构等更深入的细节……好吧……他的眼睛呆滞了,他微笑着说他已经明确表示他认为我在幼稚地抗拒。他为什么要一个魔法可执行文件?他看到了几个“好处”:如果它是二进制可执行文件,则很难进行逆向工程和规避任何许可。管理层一直担心这种情况会发生,即使

java - 为什么 "test-jar"需要 "mvn compile"依赖项

我在多模块项目中使用test-jar依赖项时遇到问题。例如,当我像这样声明cleartk-syntax模块依赖于cleartk-token模块的test-jar时(完整代码是here):4.0.0org.cleartkcleartk-syntax0.5.0-SNAPSHOTcleartk-syntax......org.cleartkcleartk-token0.7.0-SNAPSHOTtest-jartest如果我使用maven2运行mvncompile,我会收到以下错误:[INFO]--------------------------------------------------

java - 核心异常 : Could not get the value for parameter compilerId for plugin execution default-compile: PluginResolutionException

每次我创建一个maven简单项目时,我都会遇到以下错误。请让我知道可能的解决方案。我尝试了很多方法来解决它但都失败了。可能是什么原因?这是因为eclipse还是因为存储库或任何证书问题?CoreException:CouldnotgetthevalueforparametercompilerIdforpluginexecutiondefault-compile:PluginResolutionException:Pluginorg.apache.maven.plugins:maven-compiler-plugin:3.1 最佳答案

Java 8 lambda 表达式 : Mapping a Stream to type Integer and then calling sum() won't compile

我在玩Java8lambda表达式。作为一个例子,我然后尝试总结列表中包含的年龄:importjava.util.Arrays;importjava.util.List;publicclassPerson{publicstaticvoidmain(String[]args){Listpersons=Arrays.asList(newPerson("FooBar",12),newPerson("BarFoo",16));IntegersumOfAges=persons.stream().map(Person::getAge).sum();System.out.println("summe

java - 为 maven-compiler-plugin 设置默认的 jdk

我刚刚在一个新的ubuntu系统上安装了maven,其中包括maven-compiler-plugin。我有一个以前构建良好的java项目,默认为javac源和目标5(jdk1.5)。但是现在项目正在尝试在新系统上使用jdk1.3编译。有没有一种简单的方法来配置系统以使用>=jdk5?以下是系统的一些配置细节:$java-versionjavaversion"1.6.0_45"$dpkg-smavenPackage:mavenStatus:installokinstalledPriority:optionalSection:javaInstalled-Size:1489Maintain

java - : sequence id using JPA @TableGenerator, @GeneratedValue 与数据库 Auto_Increment 之间有什么区别

问题1.:在数据库中使用序列ID有什么区别A.CREATETABLEPerson(idlongNOTNULLAUTO_INCREMENT...PRIMARYKEY(id))对比B.@EntitypublicclassPerson{@Id@TableGenerator(name="TABLE_GEN",table="SEQUENCE_TABLE",pkColumnName="SEQ_NAME",valueColumnName="SEQ_COUNT",pkColumnValue="PERSON_SEQ")@GeneratedValue(strategy=GenerationType.TAB

Java 8 方法引用 : validation of methods at compile time

我想使用Java8的新方法引用在编译时提供对某些代码的更多验证。假设我有一个validateMethod方法,它需要一个参数:要验证的“方法”。例如:validateMethod(foo,"methodA");此处,该方法将验证foo#methodA()是否存在,在运行时。使用方法引用,我希望能够做到:validateMethod(foo::methodA);因此该方法的存在将在编译时验证。问题是方法引用似乎必须分配给功能接口(interface)。例如,这个:Objectdummy=foo::methodA;生成错误:“此表达式的目标类型必须是函数式接口(interface)”。如果