我想知道是否有某种方法可以使Haskell在JVM上运行(编译或解释)? 在Sourceforge上有JHaskell,但是这个似乎是空的和死的。 GHC使用LLVM作为编译器后端。 将LLVM编译成Java字节码是个好主意还是可能的? 或者也许使用不同的编译器后端?
我需要将证书导入到我的JVM密钥库中。 我正在使用以下内容: keytool -import -alias daldap -file somecert.cer 所以我可能需要可能改变我的电话,如: keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
我已经阅读了Clojure和Scala的各种账户,虽然我意识到两者都有自己的位置。 在Clojure和Scala的比较中,我还没有得到一个完整的解释: 1.)这两种语言中的哪一种通常比较快 ? 我意识到,这将从一个语言function到另一个不同,但一般性能的评估将是有帮助的。 例如:我知道Python字典真的很快。 但总的来说,这是一个比Java慢得多的语言。 我不想和Clojure一起去,在这条路上遇到这个问题。 2.)与Java的互操作性如何? 我目前阅读的所有内容都是Scala具有本地集合types,这使得它与一个大的Java代码库集成起来有些笨拙,而Clojure遵循一个简单的以Iterable / Iterator为中心的方式来与Java类进行交互操作。 任何更多的想法/细节呢? 最终,如果clojure和scala之间的距离足够近,我可以尝试两者。 有一点关于Clojure语言看起来很简单。 但是再一次,Scala有一个非常灵活的types系统。 但是,我知道Scala很快(基于多个个人帐户)。 所以,如果Clojure慢得多,我想早点知道。
有没有人试图为JVM实现C#? 作为一名Java开发人员,我一直嫉妒C#,但不愿意放弃JVM的可移植性和成熟性,更不用说为它提供各种各样的工具了。 我知道JVM和CLR之间有一些重要的区别,但是有没有什么是最好的?
我很好奇,为什么Sun决定创build基于JVM栈,而Google决定制作基于DalvikVM寄存器的? 我猜想JVM不能真的假定在目标平台上有一定数量的寄存器可用,因为它应该是平台独立的。 因此,它只是推迟寄存器分配等,到JIT编译器。 (如我错了请纠正我。) 所以,Android的人认为,“嘿,这是无效的,让我们立即注册基于VM …”? 但是,等等,有多种不同的Android设备,Dalvik目标有多less个寄存器呢? Dalvik操作码是否针对一定数量的寄存器进行硬编码? 目前市场上所有的Android设备都拥有相同数量的寄存器吗? 或者,是否有在dex-loading期间执行的寄存器重新分配? 这一切如何融合在一起?
我在C语言中创build了一个编译器(使用lex&bison),用于支持循环,函数内部函数声明,recursion调用等的dynamictypes编程语言。我还创build了一个运行由编译器创build的中间代码的虚拟机。 我现在想的不是编译到我自己的中间代码,而是编译成java字节码。 我看到关于创build一个JVM语言的问题已经被问到,但我没有find答案非常丰富。 所以这是我的问题: 我想为JVM创build一种语言,一定要阅读JVM规范书,你还可以build议哪些其他的书(当然除了Dragon Book)? 我主要关心如何创buildJVM语言的书籍或教程,而不是一般的编译器。 有许多Java库可以读取,写入和更改.class文件,如jclasslib , bcel , gnu字节码等。您会build议哪一个? 另外,你是否知道做相同工作的C库? 我正在考虑看看另一种针对JVM的语言,比如Clojure,Jython或者JRuby。 但是所有这些语言都是非常高级和复杂的(为它们创build一个编译器)。 我正在寻找一个更简单的(我不介意如果它是未知的或未使用的)编程语言,目标的JVM和它的编译器是开源的。 有任何想法吗?
我试图运行一个Java程序,但它采取了一个默认的GMT时区,而不是一个操作系统定义的时区。 我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007) Windows有一个中央时区指定,但是当我运行下面的程序,它给了我一个GMT时间。 import java.util.Calendar; public class DateTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); System.out.println(now.getTimeZone()); System.out.println(now.getTime()); } } 这是输出 sun.util.calendar.ZoneInfo[id="GMT", offset=0, dstSavings=0, useDaylight=false, transitions=0, lastRule=null] Mon Mar 22 13:46:45 GMT 2010 请注意,我不想从应用程序中设置时区。 我希望JVM使用的时区应该是OS中指定的时区。 (我没有发现与JDK和Microsoft Server 2003版本1.4的其他服务器的这个问题)。 任何想法将不胜感激。
HotSpot到底是什么,它与JVM和OpenJDK有什么关系? 这是一个图书馆吗? 它究竟做了什么? 另外,OpenJDK和HotSpot有什么区别?
我正在阅读一篇关于Java的即时编译器 (JIT)优化技术的文档。 其中之一是“循环倒置”。 文件说: 用一个do-while循环replace一个常规do-while循环。 do-while循环在if子句中设置。 这种替代导致两个较less的跳跃。 循环反转是如何工作的?它如何优化我们的代码path? 注意: 如果有人能够用Java代码的例子来解释,以及JIT如何将其优化为本地代码,那么为什么在现代处理器中它是最优的?
JVM用于抛出java.lang.OutOfMemoryError:超出GC开销限制的采样时间是多less? 我知道你可以通过参数GCTimeLimit和GCHeapFreeLimit控制98%和2%,但是什么是采样时间?