在JVM上运行的五大脚本语言

fmms 10年前
     <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;">        遵循软件开发工具,在过去十年中的任何人都知道,长期的“Java”指的是一双的技术:Java编程语言和Java虚拟机(JVM)。Java语言被编译成字节码在JVM上运行。通过这种设计,JAVA提供可移植性。</p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>然而,语言和JVM,已越来越多地在相反的方向移动。语言已变得越来越复杂,而JVM已经成为最快和最有效的执行平台之一。Java的许多基准,等于如编译语言生成的二进制代码的性能C和C + +的。日益复杂的语言和卓越的性能,可移植性和可扩展性的JVM已经创建了一个开放的新一代编程语言。这些语言缺乏Java的语法超载(通常称为“仪式” 轻蔑) - 也就是多余的代码量做实际工作的代码前,需要手摇的,可以书面 - 但利用JVM的。</p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><strong><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>[PDT的Eclipse,NetBeans中,NuSphere PhpED的,和Zend Studio导致Web开发的一个IDE的能力领域。见“ <a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333578158144157">InfoWorld的审查:8个PHP的电动工具</a> “|有了所见即所得的原型环境和预先设定的图形组件,快速Web开发工具可以帮助你更快地构建应用程序-但缺乏灵活性。见“<a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333578967183042">InfoWorld的审查:用于快速Web开发工具</a> “]</strong></p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>在这篇文章中,我研究这些语言的少数,比较和对比,并确定他们满足特别的需求。我自己是自由和开放源码JVM语言限制。令人惊讶的是,闭源的商业世界,有几相媲美的产品。一个突出的是冷聚变标记语言,这是Adobe的冷聚变的Web应用程序开发环境的一部分。</p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>技师上存在分歧,究竟是一种脚本语言。在其最窄的定义,它是一种语言,使开发人员编写的快速方案。这些方案一般解释或半编译的,而不是在传统的方式编制。这项检讨在选择的语言,我用了一个更广泛的定义,这是任何JVM语言简单,比Java代码。一些编译,其他半编译的,但都是适合快速发展。我把重点放在语言是用Groovy,JRuby,FANTOM,Jython中,和Scala。还有其他几个候选人,Clojure的分别是,JavaFX的 NetRexx,我简要地覆盖在年底。</p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>今天JVM的脚本语言,自然分成两组,基于他们的采用率。Groovy和JRuby落入流行的阵营,而 其他有特殊的球员 - 也就是说,他们呼吁,目前一个小社会。这一点很重要,但要注意,Groovy和JRuby也特殊的球员,两年前,因此没有理由相信利基语言是永久降级的边缘。我认为出现的可能性,有利于斯卡拉,然后FANTOM,最后的Jython。正如我解释后,我觉得Jython的时刻已经在阳光下可能来来去去。</p>    <p style="text-align:left;padding-bottom:0px;line-height:1.7em;margin-top:0px;font-family:'Lucida Grande',Arial,sans-serif;margin-bottom:10px;padding-top:0px;"><a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333579772484899">JVM脚本语言第1号:Groovy的-强大的,高层次的,企业的友好</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333580578407341">JVM脚本语言第2号:JRuby的 -比Ruby更好的Ruby?</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333581383806581">JVM脚本语言第3号:Scala-快速,多范例编程</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333582189987291">JVM脚本语言第4号:FANTOM - Java和网加性能。</a><br /> <a style="text-align:left;line-height:20px;outline-style:none;font-family:'Lucida Grande',Arial,sans-serif;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333582189987291">JVM脚本语言第4号:Jython - JVM上的Python。</a></p>    <div style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;line-height:18px;width:537px;font-family:'Lucida Grande',Arial,sans-serif;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;" class="tc-compareGrid">     <div style="border-bottom:#ab1700 5px solid;padding-bottom:5px;background-color:#4a4a4a;padding-left:10px;padding-right:10px;color:#ffffff;font-size:13px;font-weight:bold;padding-top:5px;" class="tc-compareGrid-title">      顶部的脚本语言在JVM上     </div>     <table style="padding-bottom:0px;margin:0px;padding-left:0px;width:537px;padding-right:0px;border-collapse:collapse;padding-top:0px;" class="ke-zeroborder" border="0">      <tbody style="border-top:#cccccc 1px solid;">       <tr style="background-color:#ffffed;height:45px;font-size:13px;font-weight:bold;" class="headerRow">        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"> </th>        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333579772484899">Groovy</a></th>        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333580578407341">JRuby</a></th>        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="text-align:left;line-height:20px;outline-style:none;font-family:'Lucida Grande',Arial,sans-serif;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333581383806581">Scala</a></th>        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333582189987291">FANTOM</a></th>        <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333586696003682">Jython</a></th>       </tr>       <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">样式/打字</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO /动态</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO /动态</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">面向对象,功能/静态</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">00 /静态</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO /动态</td>       </tr>       <tr>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">蓝本</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Java</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Ruby</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">N / A</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">N / A</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Python</td>       </tr>       <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">执行</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">编译</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">编译,解释</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">编译</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">半编译</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">编译</td>       </tr>       <tr>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">平台(S)</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM,NET CLR</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>       </tr>       <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">与Java的整合</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">优秀</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">优秀</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">优秀</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">公平</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">优秀</td>       </tr>       <tr>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">执行速度</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">公平</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">公平</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">优秀</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">非常好</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">放慢</td>       </tr>       <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">工具支持</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">广泛</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">公平</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">广泛</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">小</td>        <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">小</td>       </tr>      </tbody>     </table>    </div>    <br />    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;">  原文<a href="/misc/goto?guid=4958333587488326526">http://www.infoworld.com/d/developer-world/top-five-scripting-languages-the-jvm-855?page=0,0</a>如下:</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>Anyone who has followed software development tools during the last decade knows that the term "Java" refers to a pair of technologies: the Java programming language and the Java Virtual Machine (JVM). The Java language is compiled into bytecodes that run on the JVM. Through this design, Java delivers its vaunted portability.</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>The language and the JVM, however, have been increasingly moving in opposite directions. The language has grown more complex, while the JVM has become one of the fastest and most efficient execution platforms available. On many benchmarks, Java equals the performance of binary code generated by compiled languages such as C and C++. The increasing complexity of the language and the remarkable performance, portability, and scalability of the JVM have created an opening for a new generation of programming languages. These languages lack Java's syntax overload (often referred to disparagingly as its "ceremony") -- that is, the amount of excess code that needs to be cranked out before the code that does the actual work can be written -- but take advantage of the JVM.</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><strong><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>[ Eclipse PDT, NetBeans, NuSphere PhpED, and Zend Studio lead a capable field of IDEs for Web developers. See "<a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333578158144157">InfoWorld review: Eight PHP power tools</a>" | With WYSIWYG prototyping environments and preconfigured graphical components, rapid Web development tools can help you build applications faster -- but with less flexibility. See "<a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333578967183042">InfoWorld review: Tools for rapid Web development</a>" ]</strong></p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>In this article, I examine a handful of these languages, comparing and contrasting them, and identifying the needs they satisfy particularly well. I limit myself to the JVM languages that are free and open source. The closed source, commercial world, surprisingly, has few comparable offerings. The one standout is Cold Fusion Markup Language, which is part of Adobe's Cold Fusion Web application development environment.</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>Technologists differ on what exactly is a scripting language. In its narrowest definition, it's a language that enables the developer to write quick programs. These programs are generally interpreted or semicompiled, rather than compiled in the traditional manner. In choosing the languages for this review, I used a broader definition, which is any JVM language that is simpler to code in than Java. Some are compiled, others are semicompiled, but all are suitable for rapid development. The languages I've focused on are Groovy, JRuby, Fantom, Jython, and Scala. There are a few other candidates, namely Clojure, JavaFX, and NetRexx, which I cover briefly at the end.</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><span style="text-align:left;line-height:20px;font-family:'Lucida Grande',Arial,sans-serif;">        </span>The JVM scripting languages today naturally divide into two groups based on their rate of adoption. Groovy and JRuby fall into the popular camp, while the others are niche players -- that is, they appeal to a small community at present. It's important to note, however, that both Groovy and JRuby were also niche players two years ago, so there is no reason to believe that a niche language is relegated permanently to the margins. I believe that the likelihood of emergence favors Scala, then Fantom, and finally Jython. As I explain later, I think Jython's moment in the sun has probably come and gone.</p>    <p style="padding-bottom:0px;line-height:1.7em;margin-top:0px;margin-bottom:10px;font-size:1em;padding-top:0px;"><a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333579772484899">JVM scripting language No. 1: Groovy -- powerful, high-level, enterprise-friendly</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333580578407341">JVM scripting language No. 2: JRuby -- a better Ruby than Ruby?</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333581383806581">JVM scripting language No. 3: Scala -- fast, multiparadigm programming</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333582189987291">JVM scripting language No. 4: Fantom -- Java and .Net plus performance</a><br /> <a style="outline-style:none;color:#0066cc;font-weight:bold;text-decoration:none;" href="/misc/goto?guid=4958333586696003682">JVM scripting language No. 5: Jython -- Python for the JVM</a></p>    <div style="border-bottom:#ab1700 5px solid;padding-bottom:5px;background-color:#4a4a4a;padding-left:10px;padding-right:10px;color:#ffffff;font-size:13px;font-weight:bold;padding-top:5px;" class="tc-compareGrid-title">     Top scripting languages on the JVM    </div>    <table style="padding-bottom:0px;margin:0px;padding-left:0px;width:537px;padding-right:0px;border-collapse:collapse;padding-top:0px;" class="ke-zeroborder" border="0">     <tbody style="border-top:#cccccc 1px solid;">      <tr style="background-color:#ffffed;height:45px;font-size:13px;font-weight:bold;" class="headerRow">       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"> </th>       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333579772484899">Groovy</a></th>       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333580578407341">JRuby</a></th>       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333581383806581">Scala</a></th>       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333582189987291">Fantom</a></th>       <th style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;padding-left:5px;padding-right:5px;border-top-style:none;border-right:#4a4a4a 1px solid;padding-top:5px;"><a style="outline-style:none;color:#0066cc;text-decoration:none;" href="/misc/goto?guid=4958333586696003682">Jython</a></th>      </tr>      <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Style / typing</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO / Dynamic</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO / Dynamic</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO, Functional / Static</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO / Static</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">OO / Dynamic</td>      </tr>      <tr>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Modeled on</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Java</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Ruby</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">N/A</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">N/A</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Python</td>      </tr>      <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Execution</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Compiled</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Compiled, Interpreted</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Compiled</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Semicompiled</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Compiled</td>      </tr>      <tr>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Platform(s)</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM, .Net CLR</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">JVM</td>      </tr>      <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Integration with Java</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Excellent</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Excellent</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Excellent</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Fair</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Excellent</td>      </tr>      <tr>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Execution speed</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Fair</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Fair</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Excellent</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Very Good</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Slow</td>      </tr>      <tr style="border-bottom:#cccccc 1px solid;padding-bottom:0.1em;background-color:#e8e8e8;padding-left:0.6em;padding-right:0.6em;padding-top:0.1em;" class="odd">       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;font-size:13px;vertical-align:top;border-top:#4a4a4a 1px solid;font-weight:bold;border-right:#4a4a4a 1px solid;padding-top:5px;" class="productName">Tool support</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Extensive</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Fair</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Extensive</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Little</td>       <td style="border-bottom:#4a4a4a 1px solid;text-align:left;border-left:#4a4a4a 1px solid;padding-bottom:5px;line-height:1.5em;padding-left:5px;padding-right:5px;vertical-align:top;border-top:#4a4a4a 1px solid;border-right:#4a4a4a 1px solid;padding-top:5px;">Little</td>      </tr>     </tbody>    </table> 转自:http://blog.csdn.net/lufeng20/article/details/7368254