



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文由ailaopodett贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 JVM 话三国 脚本语言之五虎上将 【51CTO 独家特稿】蜀汉昭烈帝刘备麾下的五员猛将.建安十六年(219 年)刘备攻取汉中,自立汉中王,册封麾下关羽,张飞,赵云,马超,黄 忠为五虎上将. 在 JVM 中也有五个炙手可热的脚本语言,堪称 JVM 的五虎上将! Groovy 和 JRuby 二将领衔 JVM,Scala,Fantom 和 Jython 三位亦是 JVM 脚 本中的好汉. 很多人都知道,在过去很长一段时间里,Java 技术是指 Java 编程语言和 Java 虚拟机 (JVM).把 Java 语言被编译成字节码在 JVM 上运行,而通过这样的技术,Java 也被认为 是可以在任何环境,操作系统中都可以运行万能语言. (51CTO 推荐专题:Java 虚拟机原理 与优化) 五虎上将:关羽,张飞,赵云,马超,黄忠 五种语言特性对比 但是,Java 和 JVM 的发展轨迹却不相同:Java 与 C,C+等语言一样,越来越复杂,而 卓越的性能以及拥有便携性和可扩展性的 JVM 却逐渐成为最快和最有效的执行平台, JVM 现 在已经创造了一个新一代的开放编程语言平台. 在写本文之前,我们找到一些可以在 JVM 上运行的脚本语言,让他们做一些对比,我认 为这些开源的语言要比闭源的语言好得多. 开发人员在编写程序时都会使用脚本语言. 这种 语言的狭义概念是使开发人员快速编写程序的语言. 这些语言编写出来后一般被认为是可执 行或半编译的程序, 而不是传统意义编程. 我们用另一个广义概念来解释就是这些都是可以 在 JVM 上运行的语言,比 Java 更加轻便的语言.有些是可以执行的,有些是半编译的,但 是都发展迅速.我把定义成 JVM 上的五虎上将:Groovy,JRuby,Fantom,Jython 和 Scala. 今天 JVM 的脚本语言我们可以分为两个重量级. Groovy 和 JRuby 自然是第一阵营. 值得注意的是,Groovy 和 JRuby 的位置也并不牢靠,就在两年前他们的位置还很边缘 化.我认为,在未来他们的位置随时会被 Scala,Fantom 和 Jython 取代.如果你听我讲完 之后,你会觉得 Jython 的阳光时刻可能已经来了. JVM 的脚本语言五虎上将: 关羽Groovy - 强大的,高层次,企业级 JVM 脚本语言. 赵云JRuby -还有比红宝石更好的吗? 张飞Scala - 快,多范例 programmingJVM 脚本语言. 马超Fantom - Java 和.Net 的 performanceJVM 的脚本语言. 黄忠Jython 中 - Python 中的 JVM 的脚本语言. 关羽Groovy - 强大的,高层次,企业级 JVM 脚本语言.关羽,字:云长终属: 蜀汉(生卒:?-219)并州河东解县 今山西运城人,官至前将军,封汉寿亭侯,追谥 曰壮缪候.Groovy 是一种面向对象的语言.其主要特点是它的语法与 Java 极为相似,但与 很多杂乱的设置都被删除了.Groovy 中是最早的脚本语言之一,具有独特的历史,是开源 世界的奇葩,如果说 Java 就是蜀国汉昭烈帝刘备的话,那只有忠勇的 Groovy 可称关羽. Java 开发人员可以很快使用 Groovy,事实上 Groovy 的编译器接受纯 Java 的语法,Java 开 发人员可以很快地学习这个全新的脚本语言Groovy. (51CTO 推荐专题:Groovy 开发技术) 前将军关羽 对于 Groovy,开发者运用时简化了很多代码.尤其语言能力的推断方面.例如,Groovy 可以检查一个变量的初始使用,并确定它是一个整数,字符串等.程序员可以自由地提供这 方面的代码. Groovy 中是最早的脚本语言之一,它同时还提供另一种功能,称为封锁,由 Sun 公司 Java 开发(现在的甲骨文公司)提供.封锁使开发者指定的代码作为一个独立的实体,并 把它运用到其他编程业务中.这使得在描述程序的功能非常简洁,并在其他语言里,可以提 供为创建可作为函数的参数传递给其他对象的功能. Groovy. 构建在强大的 Java 语言之上并添加了从 Python, Ruby 和 Smalltalk 等语言中 学到的诸多特征, Java 开发者提供了现代最流行的编程语言特性, 为 而且学习成本很低 (几 乎为零),在开发 Web,GUI,数据库或控制台程序时, 通过减少框架性代码大大提高了开 发者的效率.支持单元测试和模拟(对象),可以简化测试.无缝集成所有已经存在的 Java 对象和类库.直接编译成 Java 字节码,这样可以在任何使用 Java 的地方使用 Groovy. Groovy 中具有独特的历史,开源世界的奇葩.该项目启动于 2003 年.创始人后来移居 到其他项目,在不同时期,都认为 Groovy 不能成功.不过即使没有他们,开源社区贡献者 也对 Groovy 产生浓厚的兴趣,保持了 Groovy 前进.一个领先的 Web 框架,使用 Groovy 和 在他们的支持 IDE 最终走到世人面前. 有 Laforge 和 Grails 的开发者以及现在 SpringSource 和 VMware 这些企业的支持使 Groovy 的未来变得有保证.尽管 JVM 的性能优化,但是一些 Groovy 特性却有很高的成本. 同时虽然 Groovy 语言的受欢迎程度正在上升,它患有长期的弱点,正在慢慢出现:缓慢的 运行速度.她也给了其他脚本语言了机会,五虎上将中的关羽是第一个阵亡的,Groovy 又 会不会被其他语言超越呢? 赵云JRuby - 比红宝石更好的吗?JRuby 是一个 Ruby 语言的 Java 的端口.赵云, 字:子龙终属:蜀汉(生卒:168-229(62 岁)冀州常山真定 今河北正定人,官至镇 东将军,封永昌亭侯,追谥曰顺平侯.Ruby 本身是一种脚本语言在 1990 年代中期的日本出 现,它已经得到了广泛应用.在 JVM 中 JRuby2004 年才在美国和欧洲 Ruby 的杀手锏级别武 器Ruby on Rails.Ruby on Rails 使得 Web 应用程序装配的各部分更容易设置,Ruby 被迅速投入使用开发小型和中型的企业网站. Rails 的普及导致了 Ruby 的爆炸性增长.常 言道:马中赤兔,人中吕布.武功不在吕布之下的赵云当有宝石的称号,五虎上将中 也只有常胜将军常山赵子龙堪比 JRuby! 中将军赵云 Ruby 语言有很多在 Groovy 中的功能, 但它使用了更简洁的语法让开发人员得到更 多的工作.Ruby 面临最大的问题是性能.在多个基准里,它都是排在最后的.这促使许多 竞争性项目,以重写 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 上直接运行 Ruby 程序,调用 Java 的类库.很多 Java 编写的 Ruby IDE 都是使用 JRuby 来解释语法的. 对 Java 的运行环境和代码库来说,访问是决定 JRuby 的未来是至关重要的一环.Ruby 一直没有进入在一个大企业,JRuby 则可能是存进入大企业. JRuby 中的优点,企业可以在 JVM 上的应用程序运行, 而原生的 Ruby 虚拟机是一种不成熟的数据中心. 此外, 由于与 Java 应用程序集成, 企业可以通过采用 JRuby 和 Java 软件中还利用到以前开发的 Ruby 项目中去. 最重要的是高司令离开 Oracle 之后全心投入到 JRuby 开发中去,这个给了 JRuby 开发者极 大的信心!就像被横扫 N 次团队突然来了个 MT! 高司令 blog:On a New Rord 主页上截取的图片高司令和 JRuby 红鼻子小企鹅在一起 企业是否会支持 Groovy 或 JRuby 完全取决于科技发展速度. Groovy 和 JRuby 目前都是 由发展商支持的(而不是由志愿人员),有日益扩大的工具供应商长时间的支持,迅速提供 工作代码.而以下三种语言现在并不像 Groovy 和 JRuby 成功,但他们有一些必定能使他们 在未来数年内的取得成功.即使他们没有达到这个水平,他们也都有众多的热情支持者. 张飞Scala - 快,多范例 programmingJVM 脚本语言.张飞,字:翼德终属:蜀 汉(生卒:?-221)冀州涿郡涿县 今河北涿州人,官至车骑将军,追谥曰桓候.最初 是在 2003 年发展成为一个研究语言.它经常被描述为一个多范例语言,因为它结合了不同 的编程元素.其核心是一个纯粹的面向对象的语言(即,一切都是一个对象)的功能能力. Scala 是一个在学术界流行的编程风格有利于职能,没有副作用(函数不改变函数的变量或 其他国家使用),一流的功能(函数成为使用对象可以传递给其他函数),并尽可能多的使 用常量的变量.在 Java 字符串不能被修改,但是 Scala 的任改变一在一个完全新的字符串 创建现有字符串的结果是可以实现的.论忠诚张飞不比关云长差得半分,论武艺能喝断桥 的张翼德可给赵云断后,强大的 Scala 不就和张飞一样吗? (51CTO 推荐专题:专题:Scala 编程语言) 后将军张飞 Scala.一种多范式的编程语言,设计意图是要整合面向对象编程和函数式编程的各种 特性.Scala 编程语言近来抓住了很多开发者的眼球.它看起来像是一种纯粹的面向对象编 程语言,而又无缝地结合了命令式和函数式的编程风格.Scala 的名称表明,它还是一种高 度可伸缩的语言.Scala 的设计始终贯穿着一个理念:创造一种更好地支持组件的语言. 开发者在 Scala 这里享受过其他语言没有的快乐: 奇异的性能优势. 语言是编译为优化 代码,运行速度基本上和 Java 没有区别.其余的语言远远地落后于 Scala 远远执行速度. 当然,Scala 确实有缺点.其中第一项是有时不透明的语法,每一种语言都有用于生成 坚不可摧的代码, 但它不太容易在 Scala 上这样做. 第二个问题是一个二进制兼容性, Scala 的维护人员已经发布二进制兼容新版本.如果广泛采用,尤其是在企业开发里,把现有代码 重新编译, 以便能够与现在的代码兼容, 这是 Scala 发展的一个巨大障碍. 不过, 对于 Scala 的好工具相继出现, 以及社区的用户是积极和热情. 我完全相信 Scala 会成为 JVM 语言里最 棒的一个. 马超Fantom - Java 和.Net 的 performanceJVM 的脚本语言.马超,字:孟起终 属:蜀汉(生卒:176-222(47 岁)雍州扶风茂陵 今陕西兴平人,官至骠骑将军,封犛 乡侯,追谥曰威侯. Fantom 前身是 (Fan) 是一个基于 Java 和 .NET 平台的编程脚本引 擎,用来在运行时产生 JVM 和 .NET 平台的字节码,该语言是面向对象的,跟 Groovy 和 JRuby 有点类似,可通过特定的接口来集成 Java 的类库.马超天生的守城大将,攻城略 地被 C#曹操打得大败,Fantom 在 JVM 阵营中的停滞不前不正像马超的后半生吗? 左将军马超 Fantom 这种语言遵循其设计者的想法, 最初制定他们的客户需要的实时软件包. Fantom 这种语言设计者就像是 Groovy 的和 JRuby 的设计师一样,想使编码更容易.他们已经取消 了相当数量的代码,但前面推入新的领域作出一些有趣的选择. 例如,所有的整数和浮点值是 64 位.这意味着,对于所有意图,对算术运算的结果不 能造成溢出的领域限制. Fantom 还包括内置的并发Scala 只有对全面的并发这个共同 特征的支持.该代码库已经很成熟了,很多语言认为按照 Java 和.net 的标准 API 的模式是 不守秩序.因此,Fantom 的 API 是需要一个特定的功能,只有在 Fantom 那里才可以找到. 作出 Fantom 网站出色的文件显然更加更容易. 像许多语言一样,Fantom 对通过外部工具只有有限的支持.它唯一的 IDE 支持是 NetBeans.这有可能改变为 Fantom 社区的增长和其独特的设计和跨平台特性变得更加广为 人知.总体来说 Fantom 有点像马超一样,有点独! 黄忠Jython - Python 中的 JVM 的脚本语言.黄忠字:汉升终属:蜀汉(生 卒:148-220(73 岁)荆州南阳 今河南南阳人,官至后将军,追谥曰刚侯. JPython, 是 JVM 释放最早的脚本语言之一.其目的是 Python 用于 Java 平台的实现.在这方面,只是 部分成功,因为它没有实现所有 Python,而是整个 Python 语言的一小部分. Python 本身 是沿着原来的脚本语言与 Perl(1).它保留了它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 狂犬病传播途径
- 安全教育学习培训课件
- 农业品牌打造2025年资金申请助力农民增收研究报告
- 安全教育培训需求表课件
- 历年会计岗面试题及答案
- 乐陵幼儿面试题库及答案
- 兰州物业面试题库及答案
- 跨境仓储面试题库及答案
- 安全教育培训课时计算课件
- 新能源行业安全管理报告:2025年创新技术提升安全预警能力
- 2025-2026学年广美版(2024)小学美术二年级上册教学计划及进度表
- 2025年手电筒行业研究报告及未来行业发展趋势预测
- 设备使用与保养培训课件
- 兵团连队职工考试试题及答案解析
- 2025兵团连队职工考试试题及答案解析
- 2025-2026学年接力版(2024)小学英语四年级上册(全册)教学设计(附目录)
- 滕州市2025年(中小学、幼儿园)教师招聘试题及答案
- 2025年检验科生物安全考核试题(附答案)
- 无人机高精度航拍-洞察及研究
- 摄影后期教学课件
- 教育直播平台直播教学与2025年教育信息化政策解读报告
评论
0/150
提交评论