Scala在专有JVM上运行良好吗?

Lar*_*ann 25 jvm scala jrockit

我的公司有一个庞大的遗留Java代码库,我们的许多客户都运行WebSphere和WebLogic.我们正在考虑开始使用Scala但是无法确认Scala(2.9.X)与IBM的JDK(以及BEA的JRockit)运行良好.

由于这些JVM通过了TCK,我会说它应该可以工作,但鉴于我多年来对不同JVM的各种问题,我有点紧张.与其他JVM一起使用scala时是否有任何问题需要注意?

  1. 要使用(或避免)的任何编译器标志?
  2. 我应该在热点或客户JVM上使用Scala编译代码吗?
  3. 混合使用不同版本的Scala/Java在不同JVM上编译的JAR有什么问题吗?

欢迎任何战争故事,链接和建议.

Pet*_*rey 13

无论您使用何种JVM,Scala编译器都应生成相同的字节代码.我希望Scala可以在所有三个平台上运行,但是HotSpot已经尝试针对动态语言进行优化,并且可能稍好一些.(可能还不够担心)

近年来,这些平台之间的差异越来越小,在不久的将来我希望它们都直接基于OpenJDK(因为IBM已经同意现在支持OpenJDK)JRockit和Hotspot团队已经合并了一段时间以来甲骨文拥有两者.

但是,如果您没有运行最新版本的JDK,则可能会遇到一些问题.

JVM很好地相互通信,我会考虑在自己的JVM中运行Scala来隔离您可能遇到的任何问题.


Dan*_*ral 5

是的,Scala适用于非Sun JVM.例如,考虑源代码中的这两条注释:

 //print SourceAnnotation in a predefined way to insure
 // against difference in the JVMs (e.g. Sun's vs IBM's)

    // on IBM J9 1.6 do not use ForkJoinPool
Run Code Online (Sandbox Code Playgroud)

这些并不多.毕竟,各种JVM 应该兼容 - 并进行测试.但是,在出现问题的同时,采取行动确保事情顺利进行.