《JVM话三国 脚本语言之五虎上将》由会员分享,可在线阅读,更多相关《JVM话三国 脚本语言之五虎上将(8页珍藏版)》请在金锄头文库上搜索。
1、 JVM 话三国 脚本语言之五虎上将 【51CTO 独家特稿】蜀汉昭烈帝刘备麾下的五员猛将。建安十六年(219 年)刘备攻取汉中,自立汉中王,册封麾下关羽、张飞、赵云、马超、黄 忠为五虎上将。 在 JVM 中也有五个炙手可热的脚本语言,堪称 JVM 的五虎上将! Groovy 和 JRuby 二将领衔 JVM,Scala、Fantom 和 Jython 三位亦是 JVM 脚 本中的好汉。 很多人都知道,在过去很长一段时间里,Java 技术是指 Java 编程语言和 Java 虚拟机 (JVM)。把Java语言被编译成字节码在 JVM 上运行,而通过这样的技术,Java 也被认为 是可以在任何环
2、境、操作系统中都可以运行万能语言。(51CTO 推荐专题:Java 虚拟机原理 与优化) 五虎上将:关羽、张飞、赵云、马超、黄忠 五种语言特性对比 但是,Java和JVM的发展轨迹却不相同:Java 与 C、C+等语言一样,越来越复杂,而 卓越的性能以及拥有便携性和可扩展性的 JVM 却逐渐成为最快和最有效的执行平台,JVM 现 在已经创造了一个新一代的开放编程语言平台。 在写本文之前,我们找到一些可以在 JVM 上运行的脚本语言,让他们做一些对比,我认 为这些开源的语言要比闭源的语言好得多。开发人员在编写程序时都会使用脚本语言。这种 语言的狭义概念是使开发人员快速编写程序的语言。 这些语言编
3、写出来后一般被认为是可执 行或半编译的程序,而不是传统意义编程。 我们用另一个广义概念来解释就是这些都是可以 在JVM上运行的语言,比Java更加轻便的语言。有些是可以执行的,有些是半编译的,但 是都发展迅速。我把定义成JVM上的五虎上将:Groovy、JRuby、Fantom、Jython 和 Scala。 今天JVM的脚本语言我们可以分为两个重量级。 Groovy 和 JRuby自然是第一阵营。 值得注意的是,Groovy和JRuby 的位置也并不牢靠,就在两年前他们的位置还很边缘 化。我认为,在未来他们的位置随时会被 Scala、Fantom 和 Jython 取代。如果你听我讲完 之后
4、,你会觉得Jython的阳光时刻可能已经来了。 JVM的脚本语言五虎上将: 关羽Groovy - 强大的,高层次,企业级 JVM 脚本语言。 赵云JRuby -还有比红宝石更好的吗? 张飞Scala - 快,多范例 programmingJVM 脚本语言。 马超Fantom - Java 和.Net 的 performanceJVM 的脚本语言。 黄忠Jython 中 - Python 中的 JVM 的脚本语言。 关羽Groovy - 强大的、高层次、企业级 JVM 脚本语言。关羽,字:云长终属: 蜀汉(生卒:?-219)并州河东解县 今山西运城人,官至前将军,封汉寿亭侯,追谥曰壮缪候。Gro
5、ovy是一种面向对象的语言。其主要特点是它的语法与 Java极为相似,但与 很多杂乱的设置都被删除了。Groovy 中是最早的脚本语言之一,具有独特的历史,是开源 世界的奇葩,如果说Java就是蜀国汉昭烈帝刘备的话,那只有忠勇的 Groovy 可称关羽。 Java开发人员可以很快使用Groovy,事实上Groovy的编译器接受纯 Java的语法,Java开 发人员可以很快地学习这个全新的脚本语言Groovy。 (51CTO推荐专题:Groovy开发技术) 前将军关羽 对于Groovy,开发者运用时简化了很多代码。尤其语言能力的推断方面。例如,Groovy 可以检查一个变量的初始使用,并确定它是
6、一个整数,字符串等。程序员可以自由地提供这 方面的代码。 Groovy中是最早的脚本语言之一,它同时还提供另一种功能,称为封锁,由 Sun 公司 Java开发(现在的甲骨文公司)提供。封锁使开发者指定的代码作为一个独立的实体,并 把它运用到其他编程业务中。这使得在描述程序的功能非常简洁,并在其他语言里,可以提 供为创建可作为函数的参数传递给其他对象的功能。 Groovy。构建在强大的Java语言之上并添加了从Python,Ruby 和 Smalltalk 等语言中 学到的诸多特征, 为Java开发者提供了现代最流行的编程语言特性, 而且学习成本很低 (几 乎为零),在开发Web,GUI,数据库
7、或控制台程序时, 通过减少框架性代码大大提高了开 发者的效率。支持单元测试和模拟(对象),可以简化测试。无缝集成所有已经存在的 Java 对象和类库。直接编译成Java字节码,这样可以在任何使用 Java 的地方使用 Groovy。 Groovy中具有独特的历史,开源世界的奇葩。该项目启动于 2003年。创始人后来移居 到其他项目,在不同时期,都认为Groovy 不能成功。不过即使没有他们,开源社区贡献者 也对Groovy产生浓厚的兴趣,保持了 Groovy 前进。一个领先的 Web 框架,使用 Groovy 和 在他们的支持IDE最终走到世人面前。 有Laforge和Grails的开发者以及
8、现在 SpringSource 和 VMware这些企业的支持使 Groovy的未来变得有保证。尽管JVM 的性能优化,但是一些 Groovy 特性却有很高的成本。 同时虽然Groovy语言的受欢迎程度正在上升,它患有长期的弱点,正在慢慢出现:缓慢的 运行速度。她也给了其他脚本语言了机会,五虎上将中的关羽是第一个阵亡的,Groovy 又 会不会被其他语言超越呢? 赵云JRuby - 比红宝石更好的吗?JRuby 是一个Ruby 语言的Java 的端口。赵云, 字:子龙终属:蜀汉(生卒:168-229(62 岁))冀州常山真定 今河北正定人,官至镇 东将军,封永昌亭侯,追谥曰顺平侯。Ruby 本
9、身是一种脚本语言在 1990 年代中期的日本出 现,它已经得到了广泛应用。在JVM中JRuby2004 年才在美国和欧洲 Ruby的杀手锏级别武 器Ruby on Rails。Ruby on Rails使得 Web应用程序装配的各部分更容易设置,Ruby 被迅速投入使用开发小型和中型的企业网站。 Rails的普及导致了 Ruby 的爆炸性增长。常 言道:“马中赤兔,人中吕布。”武功不在吕布之下的赵云当有宝石的称号,五虎上将中 也只有常胜将军常山赵子龙堪比JRuby! 中将军赵云 Ruby语言有很多在Groovy中的功能,但它使用了更简洁的语法让开发人员得到更 多的工作。Ruby面临最大的问题是
10、性能。在多个基准里,它都是排在最后的。这促使许多 竞争性项目,以重写Ruby。其中,最成功的是 JRuby的。 JRuby项目开始于2001年1月,Ruby 的代码直接端口到 JVM。2007 年,Sun 工程师对 JRuby进行开发可以运行Rails的 Ruby 和交付性能媲美非 Java 的 Ruby。自那时以来, 开发人员转移到Ruby on Rails上,在 JRuby 的工作已持续快速上涨并迅速抓到了商机。在 此期间,JRuby的性能是现在这个版本比 Ruby 发布的 1.9 版本要快得多。 JRuby。一个纯Java实现的Ruby 解释器。通过 JRuby,你可以在 JVM 上直接
11、运行 Ruby 程序,调用Java的类库。很多Java编写的 Ruby IDE 都是使用 JRuby 来解释语法的。 对Java的运行环境和代码库来说,访问是决定 JRuby 的未来是至关重要的一环。Ruby 一直没有进入在一个大企业,JRuby则可能是存进入大企业。 JRuby中的优点,企业可以在 JVM上的应用程序运行, 而原生的Ruby虚拟机是一种不成熟的数据中心。 此外, 由于与 Java 应用程序集成, 企业可以通过采用JRuby和Java软件中还利用到以前开发的Ruby项目中去。 最重要的是高司令离开Oracle之后全心投入到 JRuby 开发中去,这个给了 JRuby 开发者极
12、大的信心!就像被横扫N次团队突然来了个 MT! 高司令 blog:“On a New Rord” 主页上截取的图片“高司令和 JRuby 红鼻子小企鹅在一起” 企业是否会支持Groovy或JRuby 完全取决于科技发展速度。Groovy 和 JRuby 目前都是 由发展商支持的(而不是由志愿人员),有日益扩大的工具供应商长时间的支持,迅速提供 工作代码。而以下三种语言现在并不像Groovy和 JRuby 成功,但他们有一些必定能使他们 在未来数年内的取得成功。即使他们没有达到这个水平,他们也都有众多的热情支持者。 张飞Scala - 快,多范例programmingJVM脚本语言。张飞,字:翼
13、德终属:蜀 汉(生卒:?-221)冀州涿郡涿县 今河北涿州人,官至车骑将军,追谥曰桓候。最初 是在2003年发展成为一个研究语言。它经常被描述为一个多范例语言,因为它结合了不同 的编程元素。其核心是一个纯粹的面向对象的语言(即,一切都是一个对象)的功能能力。 Scala是一个在学术界流行的编程风格有利于职能,没有副作用(函数不改变函数的变量或 其他国家使用),一流的功能(函数成为使用对象可以传递给其他函数),并尽可能多的使 用常量的变量。在Java字符串不能被修改,但是 Scala 的任改变一在一个完全新的字符串创建现有字符串的结果是可以实现的。论忠诚张飞不比关云长差得半分,论武艺能喝断桥 的
14、张翼德可给赵云断后,强大的Scala 不就和张飞一样吗? (51CTO推荐专题:专题:Scala 编程语言) 后将军张飞 Scala。一种多范式的编程语言,设计意图是要整合面向对象编程和函数式编程的各种 特性。Scala编程语言近来抓住了很多开发者的眼球。它看起来像是一种纯粹的面向对象编 程语言,而又无缝地结合了命令式和函数式的编程风格。Scala 的名称表明,它还是一种高 度可伸缩的语言。Scala的设计始终贯穿着一个理念:创造一种更好地支持组件的语言。 开发者在Scala这里享受过其他语言没有的快乐: 奇异的性能优势。语言是编译为优化 代码,运行速度基本上和Java没有区别。其余的语言远远
15、地落后于 Scala 远远执行速度。 当然,Scala确实有缺点。其中第一项是有时不透明的语法,每一种语言都有用于生成 坚不可摧的代码, 但它不太容易在Scala上这样做。 第二个问题是一个二进制兼容性, Scala 的维护人员已经发布二进制兼容新版本。如果广泛采用,尤其是在企业开发里,把现有代码 重新编译, 以便能够与现在的代码兼容, 这是Scala发展的一个巨大障碍。 不过, 对于 Scala 的好工具相继出现,以及社区的用户是积极和热情。 我完全相信 Scala 会成为 JVM语言里最 棒的一个。 马超Fantom - Java和.Net 的 performanceJVM的脚本语言。马超
16、,字:孟起终 属:蜀汉(生卒:176-222(47岁))雍州扶风茂陵 今陕西兴平人,官至骠骑将军,封犛 乡侯,追谥曰威侯。 Fantom 前身是 (Fan) 是一个基于 Java 和 .NET 平台的编程脚本引擎,用来在运行时产生 JVM 和 .NET 平台的字节码,该语言是面向对象的,跟 Groovy 和 JRuby 有点类似,可通过特定的接口来集成 Java 的类库。马超天生的守城大将,攻城略 地被C#曹操打得大败,Fantom在 JVM 阵营中的停滞不前不正像马超的后半生吗? 左将军马超 Fantom这种语言遵循其设计者的想法, 最初制定他们的客户需要的实时软件包。 Fantom 这种语言设计者就像是Groovy的和JRuby 的设计师一样,想使编码更容易。他们已经取消 了相当数量的代码,但前面推入新的领域作出一些有趣的选择。 例如,所有的整数和浮点值是64 位。这意味着,对于所有意图,对算