Tag: 编译器构造

如何在Scala编译器重写原始Scala代码的代码中看到

在Scala邮件列表之后,不同的人经常说:“编译器将此[scala]代码重写为此[java / scala ??]代码”。 例如,如果Scala看到,可以从最新的一个主题中找到 class C(i: Int = 4) { … } 然后编译器将其重写为(有效): class C(i: Int) { … } object C { def init$default$1: Int = 4 } 我怎样才能知道代码的编译器输出是什么? 我应该反编译生成的字节码吗?

在编译过程方面,Java Runtime Environment如何与.NET框架进行比较?

我正在学习通过.NET和JRE框架将源代码转换为机器代码。 首先,我做了一些比较两个过程的研究,并创建了这个图 。 我需要一些帮助批评它的正确性,更重要的是添加我错过的任何严肃的事情,以更好地理解编译途径。

编译器在运行时之前将Java字节码转换为与平台无关的C代码?

我正在寻找一个编译器,用于在运行时(Ahead-of-Time编译)之前将Java字节码转换为与平台无关的C代码。 然后,我应该能够使用标准C编译器将C代码编译为目标平台的可执行文件。 我知道这种方法仅适用于不经常修改的某些Java应用程序。 那么Java-to-C编译器可用?

什么时候java比c ++快(或者什么时候JIT更快然后预编译)?

可能重复: JIT编译器与离线编译器 我听说在某些情况下,由于JIT优化,Java程序或java程序的某些部分能够比C ++(或其他预编译代码)中的“相同”代码执行得更快。 这是因为编译器能够确定某些变量的范围,避免一些条件并在运行时拉出类似的技巧。 你能给出一个(或更好 – 一些)例子吗? 并且可能概述了编译器能够优化字节码超出预编译代码可能性的确切条件? 注意:这个问题不是将Java与C ++进行比较。 它关于JIT编译的可能性。 请不要燃烧。 我也不知道有任何重复。 如果你是的话请指出来。

通过查看内置类的编译器代码来编写优化代码的示例

这可能不是一个实际问题,但我只是为了获得一些有价值的附加知识而提出这个问题。 我曾经多次遇到这种情况(如阅读许多文章和博客),一旦一个人成为特定编程语言的专家,他们就会倾向于通过查看最微小的细节是如何实现的,在他们构建的任何应用程序中优化代码通过查看用于开发应用程序的每个内置类的编译器代码。 但我没有看到这种情况的例子。 任何人都可以建议任何或给一个片段。 我非常擅长Java,所以如果Java中存在任何这样的优化示例,请任何人都可以编写代码片段。 如果不是我不介意任何前卫。 语言作为问题几乎涵盖了目前使用的语言。

从命令行编译.java文件 – 外部库,类路径

我在Eclipse中创建了一个项目,现在我正在尝试确保从命令行编译.java文件。 我一直在尝试使用所有.java文件在文件夹中使用javac *.java进行编译。 但是,这会导致由于从外部库Joda-time引用类而导致的错误。 我有以下.classpath文件,Eclipse为项目制作但不知道如何处理它。 我尝试使用javac -classpath *.java编译,但这只会产生更多错误。 我的源文件位于’src’文件夹内的包文件夹中。 我在哪里放置我的classpath文件和我的joda-time-2.2.jar文件,以及如何编译所有内容? [编辑]我正在使用Windows 7

如何从派生类外部调用super方法(即:toString())

存在的问题 如果我有一个类层次结构,如: public class TestSuper { public static class A { @Override public String toString() { return “I am A”; } } public static class B extends A { @Override public String toString() { return “I am B”; } } public static void main(String[] args) { Object o = new B(); System.out.println( o ); // […]

javac代码消除function

我很难找到有关javac代码消除function的信息: 我读过如果你有类似下面的内容, if -statement将被删除: static final boolean DEBUG = false; if (DEBUG) System.out.println(“Hello World!”); // will be removed 但是这个怎么样,例如: static final int VALUE = 3; if (VALUE > 9) System.out.println(“VALUE > 9 ???”); // will this be removed? 或这个: static final SomeEnum VALUE = SomeEnum.FOO; if (VALUE==SomeEnum.BAR) System.out.println(“Bar???”); // will this be removed? 由于很难/不可能分析一个程序来找到所有死代码(可能类似于停止问题),我想可能只有一些明确定义的结构(如上面的第一个例子), javac将识别和可靠地移除。 […]

枚举:每个实例独有的方法

从另一个问题我了解到,在Java中可以为Enum的每个实例定义特定的方法 : public class AClass { private enum MyEnum{ A { public String method1(){ return null; } }, B { public Object method2(String s){ return null; } }, C { public void method3(){ return null; } } ; } … } 我很惊讶这甚至可能,这个“独有方法”特定于每个实例都有一个名称来查找文档? 另外, 它应该如何使用 ? 因为下一个没有编译: private void myMethod () { MyEnum.A.method1(); } 我该如何使用这些“独家”方法?

如何在Java中检查JIT编译器是否已关闭

我想知道如何检查JIT编译器是否已关闭。 我有以下代码,这意味着关闭JIT编译器。问题是,我不确定它是否真的这样做。 所以我想知道是否有办法检查JIT是否关闭。 我查看了Compiler类,但没有像isDisabled/enabled() 。 码: Compiler.disable(); 任何帮助或指示将受到高度赞赏。