Scala 对JVM本身的发展有实际影响吗?
IamSungod
2009-12-20
JDK 6的JSR 223: Scripting for the Java Platform,JDK 7的JSR 292 invokedynamic
这些东西对Scala 有帮助吗? |
|
night_stalker
2009-12-21
主要作用是加快 JRuby 等动态语言的方法调用速度。对 Scala 应该没帮助。
|
|
RednaxelaFX
2009-12-21
JSR 223对Scala来说并没有多少意义,除非你确定你的需求是“用文本形式的Scala源码作为某个Java应用的脚本”。JSR 223的主要意义是为脚本引用提供一个统一的接口来规范它们的“eval()”的形式,使Java应用在需要脚本功能时可以通过统一接口去调用各个脚本引擎。
另一方面,JSR 292对Scala的意义就大多了。JSR 292里除了invokedynamic还有许多东西,包括尾调用的直接支持、匿名类等。尾调用优化对函数式语言的意义很明显了,以前没有JVM的支持时需要靠语言编译器自己来处理;匿名类有个重要好处就是降低PermGem的压力:例如原本每个lambda都得编译为一个完整的、独立的类,实现对应的Function接口;实际上多数lambda的结构都是类似的,关键只是其中的apply方法不同而已;为了一个方法的差异就要付出整个类的开销显得不划算。有了匿名类,这些结构相似的“类”就可以合为一个,各个apply方法看起来就像是没有跟任何有名字的类绑定在一起一样——所谓的“自主方法”。这样lambda用起来就更轻量了。 |
|
fineqtbull
2009-12-21
恩,不错,不知道Scala2.8里是否会用上JSR292的尾调用和匿名类功能。听FX一说看似对Scala的编译速度和运行时速都会有不小的改善。
|
|
RednaxelaFX
2009-12-21
如果Scala 2.8在JDK 7之前出的话多半是用不上了……想想看,JDK 7现在的说法是明年下半才出……Scala有足够时间再做个迭代了 XD
|
|
jackEye
2010-03-16
2.8什么时候出里?
|
|
Eastsun
2010-03-16
4月份可能还会有个beta版
正式版估计也得6月份之后吧 |
|
igotti
2010-04-27
膜拜FX大。
|