很多人都知道,在过去很长一段时间里,是指Java编程语言和Java虚拟机(JVM)。把Java语言被编译成字节码在JVM上运行,而通过这样的技术,Java也被认为是可以在任何环境、操作系统中都可以运行{wn}语言。
但是,Java和JVM的发展轨迹却不相同:Java与C、C++等语言一样,越来越复杂,而{zy1}的性能以及拥有便携性和可扩展性的JVM却逐渐成为最快和xxx的执行平台,JVM现在已经创造了一个新一代的开放编程语言平台。
在写本文之前,我们找到一些可以在JVM上运行的脚本语言,让他们做一些对比,我认为这些开源的语言要比闭源的语言好得多。开发人员在编写程序时都会使用脚本语言。这种语言的狭义概念是使开发人员快速编写程序的语言。这些语言编写出来后一般被认为是可执行或半编译的程序,而不是传统意义编程。我们用另一个广义概念来解释就是这些都是可以在JVM上运行的语言,比Java更加轻便的语言。有些是可以执行的,有些是半编译的,但是都发展迅速。我把定义成JVM上的五虎上将:Groovy、JRuby、Fantom、Jython和Scala。
今天JVM的脚本语言我们可以分为两个重量级。 Groovy和JRuby自然是{dy}阵营。
值得注意的是,Groovy和JRuby的位置也并不牢靠,就在两年前他们的位置还很边缘化。我认为,在未来他们的位置随时会被Scala、Fantom和Jython取代。如果你听我讲完之后,你会觉得Jython的阳光时刻可能已经来了。
JVM的脚本语言五虎上将:
前将军——Groovy - 强大的,高层次,企业级JVM脚本语言。
中将军——JRuby -还有比红宝石更好的吗?
后将军——Scala - 快,多范例programmingJVM脚本语言。
左将军——Fantom - Java和.Net的performanceJVM的脚本语言。
右将军——Jython中 - Python中的JVM的脚本语言。
前将军——Groovy - 强大的,高层次,企业级JVM脚本语言。Groovy是一种面向对象的语言,编译为字节码。其主要特点是它的语法与Java极为相似,但与很多杂乱的设置都删除了。 开发人员可以很使用Groovy,而事实上,Groovy的编译器接受纯Java的语法,Java开发人员学习一个全新的语法的脚本语言。
对Groovy的,简化了代码的诸多方面。尤其语言能力的推断,而不必一个变量的类型明确表示。例如,Groovy可以检查一个变量的初始使用,并确定它是一个整数,字符串等。程序员可以自由地提供这方面的代码只是在Groovy中工作。
Groovy中是最早的脚本语言之一,以提供另一种功能,称为封锁,迫使(现在的公司)提供。封锁使开发者指定的代码作为一个独立的实体,并把它钉住到其他编程业务的一小部分。这使得在描述程序的功能非常简洁,并在其他语言,可以提供一种手段,为创建可作为函数的参数传递给其他对象的功能。
Groovy中还提供高层次的结构处理,如字符串处理标准任务,生成XML,单元测试等等 - 所有这些都可以节省大量的时间开发。事实上,对Groovy的早期就注意到其高级别语法和测试支持的优势,迅速淘汰用于Java代码单元测试。
Groovy中具有独特的历史,开源世界的奇葩。该项目启动于2003年。创始人后来移居到其他项目,在不同时期,都认为Groovy不能成功。不过即使没有他们,开源社区贡献者也对Groovy产生浓厚的兴趣,保持了Groovy前进。一个{lx1}的Web框架,使用Groovy和在他们的支持IDE最终走到世人面前。
Laforge和Grails的开发者以及现在SpringSource和VMware这些企业的支持Groovy的未来是有保证的。尽管JVM的性能优化,但是一些Groovy特性却有很高的成本。同时虽然Groovy语言的受欢迎程度正在上升,它患有长期的弱点,正在慢慢出现:缓慢的运行速度。
Ruby语言有很多在Groovy中的功能,但它使用了更简洁的语法 - 让开发人员得到更多的工作。Ruby面临{zd0}的问题是性能。在多个基准里,它都是排在{zh1}的。这促使许多竞争性项目,以重写Ruby。其中,最成功的是JRuby的。
JRuby项目开始于2001年1月,Ruby的代码直接端口到JVM。2007年,Sun工程师对JRuby进行开发——可以运行Rails的Ruby和交付性能媲美非Java的Ruby。自那时以来,开发人员转移到Ruby on Rails上,在JRuby的工作已持续快速上涨并迅速抓到了商机。在此期间,JRuby的性能是现在这个版本比Ruby发布的1.9版本要快得多。
在语法上,JRuby非常吸引开发人员。它还拥有一个纯面向对象(Java不同,其中有些实体对象都没有)。一名开发人员的使用意味着你可以将立即从编码到执行。JRuby已经是Java平台的巨大库。 Ruby有很多好的代码库,也是众多广为使用标准的Java库。
对Java的运行环境和代码库来说,访问是决定JRuby的未来是至关重要的一环。Ruby一直没有进入在一个大企业,JRuby则可能是存进入大企业。 JRuby中的优点,企业可以在JVM上的应用程序运行,而原生的Ruby虚拟机是一种不成熟的数据中心。此外,由于与Java应用程序集成,企业可以通过采用JRuby和Java软件中还利用到以前开发的Ruby项目中去。
企业是否会赞成的Groovy或JRubyxx取决于科技发展速度。这两种解决方案工作,是由发展商支持的(而不是由志愿人员),有日益扩大的工具供应商长时间的支持,迅速提供工作代码。而以下三种语言现在并不像Groovy和JRuby成功,但他们有一些必定能使他们在未来数年内的取得成功。即使他们没有达到这个水平,他们也都有众多的热情支持者。
后将军——Scala - 快,多范例programmingJVM脚本语言。最初是在2003年发展成为一个研究语言。它经常被描述为一个多范例语言,因为它结合了不同的编程元素。其核心是一个纯粹的面向对象的语言(即,一切都是一个对象)的功能能力。Scala是一个在学术界流行的编程风格有利于职能,没有副作用(函数不改变函数的变量或其他国家使用),{yl}的功能(函数成为使用对象可以传递给其他函数),并尽可能多的使用常量的变量。在Java字符串不能被修改,但是Scala的任改变一在一个xx新的字符串创建现有字符串的结果是可以实现的。
函数编程的研究一直是一部分开发者最喜欢的领域,而Scala可能是函数编程的主流。它对传统的编程方法{zd0}的好处是,它极大地方便并行编程——能够有一个程序的多个部分同时执行。随着多核心处理器成为了现代的标准,代表了并行编程的开发硬件的全部功能的好办法。为此,Scala在JVM中有独特的语言——另一个并行编程结构——内置到语言。
开发者在Scala这里享受过其他语言没有的快乐:奇异的性能优势。语言是编译为优化代码,运行速度基本上和Java没有区别。其余的语言远远地落后于Scala远远执行速度。
当然,Scala确实有缺点。其中{dy}项是有时不透明的语法,每一种语言都有用于生成坚不可摧的代码,但它更容易在Scala这样做。第二个问题是一个二进制兼容性,Scala的维护人员已经发布二进制兼容新版本。如果广泛采用,尤其是在企业开发里,把现有代码重新编译,以便能够与现在的代码兼容,这是Scala发展的一个巨大障碍。不过,对于Scala的好工具相继出现,以及社区的用户是积极和热情。我xx相信Scala会成为JVM语言里最棒的一个。
左将军——Fantom - Java和.Net的performanceJVM的脚本语言。它无论是在JVM或为微软的运行代码时都是{dywe}的。与前面介绍的许多面向对Groovy和JRuby只是与Java库整合,Fantom语言也有对象相同的功能,而且是无缝的:一个特殊的界面交互,需要与现有的Java字节码替换,Fantom弥补了部分没有其自身丰富的代码库这一缺憾。
Fantom这种语言遵循其设计者的想法,最初制定他们的客户需要的实时软件包。Fantom这种语言设计者就像是Groovy的和JRuby的设计师一样,想使编码更容易。他们已经取消了相当数量的代码,但前面推入新的领域作出一些有趣的选择。
例如,所有的整数和浮点值是64位。这意味着,对于所有意图,对算术运算的结果不能造成溢出的领域限制。 Fantom还包括内置的并发——Scala只有对全面的并发这个共同特征的支持。该代码库已经很成熟了,很多语言认为按照Java和.net的标准API的模式是不守秩序。因此,Fantom的API是需要一个特定的功能,只有在Fantom那里才可以找到。作出Fantom网站出色的文件显然更加更容易。
像许多语言一样,Fantom对通过外部工具只有有限的支持。它{wy}的IDE支持是NetBeans。这有可能改变为Fantom社区的增长和其独特的设计和跨平台特性变得更加广为人知。总体来说Fantom有点像马超一样,有点独!
右将军——Jython - Python中的JVM的脚本语言。JPython,是JVM释放最早的脚本语言之一。其目的是Python用于Java平台的实现。在这方面,只是部分成功,因为它没有实现所有Python,而是整个Python语言的一小部分。 Python本身是沿着原来的脚本语言与Perl(1)。它保留了它的普及多年来作为一个{zh0}的通用语言,它被广泛应用于内的Google。
Jython的最初收到了它的主要开发者热情用户,但他主要的创始人离开了项目,去往微软工作之后,Jython开始挣扎。在经历了Jython的创始人离去之后,项目基本在2005至2008年间停滞。在此期间,其他JVM的脚本语言尤其是Groovy,获得了很大的发展,而Jython是否会像黄忠一样慢慢老去、永远无法恢复的原有势头,我们拭目以待!
已投稿到: |
|
---|
- 评论加载中,请稍候...
验证码: