Java 8中即将推出的函数字面量使用invokedynamic而不是静态编译。这似乎带来了更少的已编译'噪音'在生成的字节码中,我认为这意味着相对较少的编译时间(忽略Scala编译速度较慢的所有其他原因),以及较少的要加载的类。是否有计划将Scala朝这个方向发展?如果没有,能否有人阐述一下Scala团队不打算这样做的原因?这是从这个问题的第9点追问。
您可以在此了解更多信息:http://www.takipioncode.com/2014/01/16/compiling-lambda-expressions-scala-vs-java-8/,或者从Martin Odersky的采访中了解更多信息:http://www.infoq.com/articles/odersky-scala-interview/。我了解到由于Scala的特性,目前这并不容易,甚至可能不可能实现。
invokedynamic
意味着放弃对Java 5和Java 6的支持,并要求至少使用Java 7(更准确地说:放弃对JVM规范版本2的支持,要求使用版本3)。在所有主要的JVM供应商正式终止其Java 6产品之前,您不能在生产JVM语言中这样做。 - Jörg W Mittag