Java 什么是Scala';中国未来的平台关注人们应该做好什么准备?

Java 什么是Scala';中国未来的平台关注人们应该做好什么准备?,java,.net,scala,jvm,llvm,Java,.net,Scala,Jvm,Llvm,目前Scala只在JVM上运行,CLR的实现已经过时 但目前有一些声音说,微软有兴趣为最新的.NET Scala端口提供资金 考虑到甲骨文方面缺乏任何计划或监督,如何处理Java/JVM/生态系统,Scala开发人员如何做好准备,最终可能没有合适的平台来运行Scala 是否有计划在将来实现Scala虚拟机的“独立”实现,将Scala的功能映射到某些字节码/虚拟机,而不必在当前虚拟机实现中忍受所有这些遗留错误(没有泛型、协变数组、奇怪的注释、没有尾部调用等)?Scala的当前实现非常关注JVM。S

目前Scala只在JVM上运行,CLR的实现已经过时

但目前有一些声音说,微软有兴趣为最新的.NET Scala端口提供资金

考虑到甲骨文方面缺乏任何计划或监督,如何处理Java/JVM/生态系统,Scala开发人员如何做好准备,最终可能没有合适的平台来运行Scala


是否有计划在将来实现Scala虚拟机的“独立”实现,将Scala的功能映射到某些字节码/虚拟机,而不必在当前虚拟机实现中忍受所有这些遗留错误(没有泛型、协变数组、奇怪的注释、没有尾部调用等)?

Scala的当前实现非常关注JVM。Scala库中的大部分依赖于Java标准库中的类,Java类也向用户程序公开

如果在其他平台(如CLR或LLVM)上有Scala实现,那么为当前面向Java的Scala实现编写的程序将不会自动与这些其他实现兼容(除非这些实现竭尽全力支持Java中可用的类)

我同意Randall的观点,JVM不会很快消失;它可能是最成功和最广泛的虚拟机平台,部署在数十亿台设备上,从智能卡和手持设备到最大的服务器。事实上,Java编程语言可能比JVM本身消失得更快。没有理由担心JVM在可预见的未来会消失


即使在不太可能发生的情况下,这真的重要吗?您仍然可以在其他平台上使用您最喜欢的编程语言Scala进行编程。

这里是关于VM的另一个视图:

纵观全局,这并不是Sun最辉煌的时刻,但在JDK/相关事物上使用GPL许可证实际上造成了这样一种美妙的局面,即整个JVM平台完全独立于Oracle。我的意思是,虚拟机与Java无关,垃圾收集器与Java无关,最重要的是Java程序员与Java无关,因此与Oracle无关


作为一名Java程序员,我想说我们赢了——如果Oracle决定为了更大的利润而放弃Java世界中的一切,我们可以抓住VM和Scala这样的现代语言,让Larry Ellison驾驶他的游艇去日落。我不太担心JVM因Oracle管理不善而死亡,正如埃斯科所说

到目前为止,我确实以另一种方式担心JVM:JVM不是作为多语言平台构建的。在JVM上运行的大多数语言都使用动态类型,并且在某种程度上摆脱了编译成字节码的复杂性

Scala正在编译成字节码,是由编写Java编译器(1.1-1.4)的人(Odersky)在考虑JVM的情况下构建的。Scala是唯一一种由熟悉JVM的人编写的语言,我们不知道他这么做有多难


我担心JVM最终会因为一开始不是一个多语言平台而越来越不受欢迎。

也有关于Scala的LLVM实现的讨论,但我不知道细节。如果问题涉及Java(以及扩展JVM)“消失”的可能性我认为发生这种情况的可能性微乎其微。请看这里的第33页:可以将最新的Scala(atm v2.8)与.NET一起使用:Scala已经在CLR上可用,尽管它是一个非常旧的版本(我认为是1.4)。我同意你最后的评论,不管是JVM还是CLR,Scala都会在那里。他们在一些事情上打了BSD?我以为是GPL。对不起!我一定是疯了。编辑以符合事实。从事JVM工作的工程师非常清楚,支持Java以外的其他语言非常重要。Java 7正在努力将
invokedynamic
字节码之类的东西添加到JVM中,以更好地支持动态语言。他们引入invokedynamic是因为他们不必考虑它将如何影响Java,他们需要针对.NET及其DLR的营销效果,因为动态语言并不会真正威胁Java在虚拟机中的地位。在我看来,承诺看起来不同。。。