基于JVM的语言正在开始流行
这是Reuven Lerner在去年写的一篇博文,文章主要介绍了一些新兴的基于JVM的脚本语言。结合本文可以对Bruce的博文《C++和JAVA传统中积极的一面》有一个很好的理解。译者认为,语言始终都是一门工具,软件设计最重要的东西是来自于设计者的创造性,但是随着Java语言的出现,他的半动态的特性,ClassLoader,反射,动态代理,都是提高开发者创造性的前提,正是因为这些特性,才会出现新的的编程模式和范式——反转控制和依赖注入,面向方面的编程(AOP)。试想如果Java不提供ClassLoader,反射,动态代理机制的API,如何能实现依赖查找和依赖注入和动态AOP? 你能用C++来反转控制,依赖查找吗,能对容器中的组件做进行生命周期管理吗?为了说明程序员创造性和语言的这个关系,我引用Dion Hinchcliffe博文中的一张图来说明:
基于JVM的语言正在开始流行
当Sun Microsystems公司在1995年第一次揭开Java的面纱的时候,就是非常难被定义的。这是因为JAVA是由多个部分构成:首先,它当然是一个面向对象语言。同时JAVA也是一个定义标准的语言(或多个标准,包括移动设备,标准,和企业三个版本)。最后,Java是一个虚拟机(”JVM”),一个Java程序能够执行的软件环境。如果你有一个JVM,虽然这个JVM只能用来运行Java的程序——但是,JVM能在运行在你能想到的每一个平台之上,这使得Java成为一个具有高移植性的语言。
在Java世界的一个令人着迷的趋势就是:在最近的几年里使用JVM来运行非Java的程序在程增长的趋势。毕竟,如果创造了一门新的语言,你就必须在特定的平台上实现它。如果你想你的语言能在不同的平台上移植,那么你就需要为每一个平台实现一个版本。但是,相比而言,如果你将语言实现在JVM上,那么你就能让你的语言运行在任何系统的JVM上,这就意味着几乎所有平台都可以运行。
于是现在就有了许多的基于JVM的新增语言。其中4个最流行的是发布在开源许可证之下的。考虑到如今Java也是开发源码了,这意味着你可以使用一个全开源体系,并且这个体系是可以移植的。因为这些语言都在JVM之上实现的,所以你就可以同时访问Java的标准库。这意味着如果有一个第三方的的Java库,而且你精于Python,那么你就可以使用Jython在你的源代码中访问这些Java库。
早期的基于JVM的脚本语言,就我所知,是Jython,之前被称为JPython。Jython,从名字你就可以猜到,是一个基于JVM的Python语言实现。Jython完全兼容Python2.2的标准版本(这个标准版本的Python也被称为CPython),这意味着Jython将会没有Python的一些新特性。最近发布的Jython版本是2007年月发布的,但是Sun雇佣了两位早期Jython非常知名的开发者,并且现在Jython可以运行Django应用程序框架,因此验证其兼容Python的能力