66得票4回答
有没有一种 LLVM Java 前端可以将 Java 源代码转换为 LLVM 的中间形式?

据我所了解,有一个名为class2llvm的llvm程序可以将java字节码转换为llvm的中间形式。我的问题是如何访问它。我需要安装哪个前端来访问它。 VMkit是他们实现的JVM,但我想知道如何使用llvm编译java源代码,而不是运行它。

63得票6回答
尝试资源的8个分支 - 是否可能进行Jacoco覆盖?

我有一些使用try with resources的代码,在jacoco中只覆盖了一半。所有源代码行都是绿色的,但我得到一个小黄色符号告诉我只有4个分支被覆盖了。 我很难弄清楚所有的分支在哪里,以及如何编写代码来覆盖它们。可能有三个地方会抛出PipelineException异常,它们是c...

62得票9回答
是否有可能禁用javac对静态final变量的内联优化?

Java静态编译器(javac)会将一些静态final变量内联,并将值直接带入常量池。考虑以下示例。类A定义了一些常量(public static final变量):public class A { public static final int INT_VALUE = 1000; ...

62得票3回答
为什么存在invokeVirtual却需要invokeSpecial

有三个操作码可用于调用Java方法。很明显,invokeStatic仅用于静态方法的调用。 据我所知,invokespecial用于调用构造函数和私有方法。那么,在运行时需要区分私有方法和公有方法吗?它可以使用相同的操作码,比如说 invokevirtual 吗? JVM是否处理私有和公共...

56得票3回答
Sun的javac编译器产生的异常表项异常奇怪

考虑下面这个程序:class Test { public static void main(String[] args) { try { throw new NullPointerException(); } catch (Nul...

53得票7回答
Python的基本优化模式(python -O)有什么用途?

Python有一个标记-O,可以用它来执行解释器。该选项将生成“优化”的字节码(写入.pyo文件),如果给定两次,则会丢弃文档字符串。根据Python的手册:   -O打开基本优化。这将更改已编译(字节码)文件的文件名扩展名从.pyc到.pyo。重复给定两次,会导致丢弃文档字符串。 我...

52得票4回答
理解STG

GHC的设计基于STG,STG代表"无脊椎,无标记G机"。 G机是“图缩减机”的简称,它定义了如何实现惰性执行。未求值的推迟(thunk)被存储为表达式树,执行程序需要将其归约(reducing)到正常形式。(树是无环图,但Haskell的广泛递归意味着Haskell表达式形成一般图(gra...

49得票14回答
Java版本之间存在哪些具体的不兼容性示例?

在Java不同版本之间,是否存在不兼容性问题,即Java源代码/Java类文件针对Java版本X编写的代码在较高版本Y(其中Y>X)下无法编译或运行? “Java版本”指的是以下版本: JDK 1.0 (1996年1月) JDK 1.1 (1997年2月) J2SE 1.2 (1998年1...

47得票3回答
在Java字节码中编程

我想要在Java字节码中编写一个简短的程序(可能是“Hello World”)。 我只希望使用文本编辑器编写字节码并运行它。 我该如何做? 有示例吗? 谢谢!

47得票4回答
Scala特质如何编译成Java字节码?

我已经玩过Scala一段时间了,我知道traits可以作为Scala的接口和抽象类的等效物。那么traits到底是如何编译成Java字节码的呢? 我找到了一些简短的解释,它们指出当可能时,traits会被编译成与Java接口完全相同的形式,否则会编译成包含另一个类的接口。然而,我仍然不明白S...