在近几年,随着计算机硬件性能的提高,脚本语言也受到了开发人员的不追捧。然而,很多流行的脚本语言都是各自为战(如Ruby、Python、Perl等)。它们都拥有自己的解析器和丰富的功能库。然而Sun可能是看到了脚本语言是未来开发语言发展的趋势,因此,为很多常用的脚本语言提供了JVM版本。
由于动态语言和以Java、C#为首的强类型语言有着本质的区别,因此,直接将它们编译成Java的字节码有些困难。因此,Sun想了个更好的方法,直接使用Java语言为这些动态语言来编写解析器。这样以来,不仅可以很容易解决动态语言的跨平台问题,而且也更容易实现。
一、JRuby:JVM的第一件动态语言外衣
第一个进入Sun的视线的是Ruby,Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷地进行面向对象编程。有时使用像Smalltalk、Eiffel或C++这样正式的面向对象语言来开发一些小项目显得有点"小题大作",而Ruby刚好可以满足这些面向对象编程的需求。当然了,您也可以使用Ruby进行普通的面向过程编程。Ruby的文本处理能力极强,与Perl不分伯仲。同时,Ruby的语法简单,还有异常处理以及迭代器等构造,使编程变得更简单了。
同时,Ruby还拥有一个类似Struts的MVC Web框架Rails,利用Rails可以非常快速的开发基于MVC模式的Web程序。Sun看到了Ruby和Rails的发展前景,类此,首先提供了基于JVM的Ruby:JRuby。因此,也可以这么说,JVM + Ruby = JRuby。
Sun不仅提供了JRuby,而且也在自己的NetBeans中提供了很好的Ruby/JRuby支持。
在以前,Sun很少为某种动态语言提供开发环境,而JRuby的特殊待遇可见Sun对JRuby的重视程度非同一般。这也许是Sun在将JVM变成真正的虚拟机(也就是去掉JVM前面的J)的第一步。由于JRuby运行在JVM上,因此,JRuby就理所当然地可以使用JVM及庞大的Java库了。也许这也正是Sun认为JRuby才是Ruby和Rails发展的真正王道的原因。
二、Jython:JVM阵营的又一力作
当Sun看到了JRuby/Ruby的成功后,并不甘心在JVM上只支持Ruby一种动态语言。因此,在支持JRuby后不久,Sun就雇佣了两位Python社会的开发人员来为JVM披上一件新的外衣,这就是Jython。
Jython是Python编程语言100%纯Java实现,它结合了Python和Java虚拟机和库的优点,成为了Java平台的有益补充。
最初的Jython又称为JPython,是一个十足的Java应用程序,它允许使用Python编程语言的语法和大多数特性。和其它编程语言比较,Jython有如下几个优点:
1. Python解释器shell的Jython版本可以对某些想法和API作便利的实验和研究。而不必经历一般的Java编译运行周期。
2. Python被设计成动态且通用的,因此你不必通过使用复杂的库(如用于Java反射和内省的库)来添加这些特性。这使开发更简单,而且它在自动测试框架中特别有用。
3. 部署简捷,提供了及时部署能力,无需花大量时间在打包和编译周期上。
4. 易于学习和使用,技术门槛低,可以轻松地找到大量的使用者。
三、总结
虽然在JVM上运行的这些动态语言在性能上可以略逊于原生的动态语言。但是由于它们可以和JVM无缝连接,因此,这些J…语言天生就具有了和Java语言一样强大的功能。正所谓抱棵大树好乘凉。看来以后Sun还会在JVM中支持更多的动态语言(也许以后会出现JPHP或是JHP,哈哈)。当然,目前除了Sun官方提供的支持,第三方也有了很多关于其他动态语言的支持,如原生的Groovy。还有Tcl、BeanShell等。看来以后JVM这个词要消失了,也许我们以后要直接叫JVM为VM了。但愿这一天会早日到来。