Java语言将淡出 JVM宝座争夺战预热
Java比JVM(Virtual Machine)更有分量的时代已经结束了。
51CTO编辑推荐:7月编程语言排行榜:Java,正在老去的王者
JVM作为一种机制用以提供Java应用在多个不同硬件上的可移植性,而现在它可以运行的语言更多了,从动态语言如JRuby, Jython和Clojure到静态型Scala语言。因此,JVM正在成为一个多元化的平台,开发人员可以充分利用不同语言来满足各自不同的需要。
为什么JVM变得如此有吸引力呢?Sun Microsystems公司Web技术总监认为,这是因为JVM这个Java平台的性能以及它对其他语言的支持。例如,JVM尤其是HotSpot,具有尤其突出的性能。第二个原因是JVM有巨大的Java库。学习一种新语言最难的问题之一就是要汇集所有必要的库并使之可用,而在JVM上,你可以免费得到这一切。因此,许多企业也不会部署任何不适合Java生态系统的东西。
Java平台比Java语言更加重要。Sun公司的Bray强调Java平台已越来越比Java语言本身重要。他说,我个人认为, 长远来看Java平台比Java语言有更多的战略重要性。
对我们而言JVM已经完全成为伟大的产品,因为它在每一个新一代的JVM中都切实地改善了性能,这种性能提升稳定且有必要。 Scala语言的开发者Martin Odersky说。与此同时他指出,在一个公司的基础架构中Scala可以取代Java,比如Sony Pictures。
不过,尽管其他语言在JVM上的使用越来越多,但Java还没有成为JVM中过时的语言。 Bray说,Java仍然是世界上最流行的编程语言,并将继续是企业和未来系统编程的核心语言。
如果这样的事情(指Java不再是企业和系统编程的核心)会发生,那也将是在非常非常遥远的将来。 Odersky说。他指出,Java背后的种种庞大因素使得大多数公司都不愿意改变它。尽管如此,类如Scala和其他一些语言将获得JVM上更多的语言共享,而JVM平台也将变得比现在更加多语言化。 Odersky说道。
JVM将变得更加多语言化的一个原因是Sun的Da Vinci Machine项目,该项目承诺将简化动态语言在JVM上的运行。Bray说,Da Vinci Machine解决[Java Specification Request] 292 ,目的是方便动态语言开发者能在JVM上获得很好的性能,无疑这将增加动态语言社区对JVM平台的吸引力。这项工作值得密切关注。
Clojure的作者Rich Hickey认为,动态语言有利于解决在开始时并不确定答案的问题,如建立Web应用程序,尤其是因为没有一个正确的方式去建立一个Web应用程序;相比之下, Java更适合解决知道答案的问题,当然底层的基础架构尤其适合Java。
同样的,其他语言也给JVM带来了更好的功能。JRuby和Jython的支持者认为他们的语言并非Java的竞争语言而是对Java的补充。一个Jython项目的leader Frank Wierzbicki说,Jython更多的是对JVM上Java语言的补充,它因为将Ruby带入JVM中而进一步提升了这个Java平台。
JRuby。JRuby可以说一直是JVM上的最引人注目的动态语言。它可以追溯到2001年,是Ruby语言的一个解释器。JVM上实现Ruby有两个非常重要原因。首先,它使Java开发者接触到一个更高层次的编程语言, JRuby 的核心开发者Bini说,第二,Ruby有许多有趣的库,比如Rails和RSpec,可用于JVM上 。用于JVM上也意味着当你使用Ruby时,你仍然可以使用所有现有的Java库。JRuby可以像使用Ruby类一样来使用任何Java类。这意味着你综合了Ruby语言生态系统以及Java环境的功能。他说。
Jython。与此同时, Jython所有的方式都回到1998年7月,那时它还被称为JPython。Wierzbicki表示,有大量的Java在那里,Jython提供了一种从高效的Python语言访问代码的方式。例如,Jython一直被测试框架使用作为一个嵌入式的脚本工具。我已经在许多的Python会议如PyCon、EuroPycon以及EuroDjangoCon上说过,而且我也切实地发现许多Python社区的开发者希望能够在JVM上使用Python。他补充说。
Clojure 。JVM上仍是Clojure (发音为closure ),它用来支持JVM上的功能型以及更好的并行程序设计。Hickey称,这将推动多线程应用程序的开发。任何Java有用的地方Clojure都有用。因此它使用Java库和语法支持Java调用。
Scala。首次亮相于2004年,用以提升Java。虽然Java平台提供了诸如类安全性和垃圾处理等功能,但这些仍然不够。他说,我们希望让Java更具表达性,因此人们的开发效率将更高。Scala不同于JVM兼容的其他语言,如JRuby、Jython Clojure ,它部署了一个完善的静态型系统,并提供更多的编程功能。