阅读更多

21顶
0踩

编程语言

原创新闻 Martin Flower分析Groovy和JRuby的前景

2007-12-09 16:09 by 见习编辑 robbin 评论(15) 有14981人浏览
Martin Flower最近在自己的网站上面写了一篇分析Groovy和JRuby前景的文章:

http://martinfowler.com/bliki/GroovyOrJRuby.html

Groovy和JRuby是两个目前在JVM平台上面关注程度非常高的动态脚本语言,他们都比较适合用来做为领域专用语言(DSL)嵌入Java企业应用当中。而且目前Groovy和JRuby的发展都相当迅速,社区也比较健康。最近Groovy发布了1.5版本,而JRuby据评测性能已经超过了原生Ruby解析器。

作为Java平台的开发人员,特别是非常关注JVM平台动态脚本语言未来的人,当然非常好奇,究竟Groovy还是JRuby才是真命天子呢?那么让我们看看Martin是怎么看这个问题的:

首先Martin分析了Groovy和JRuby的共同点:

Martin Fowler 写道
Both JRuby and Groovy (and indeed Jython) are modern OO scripting languages. They combine the well-chosen terseness of scripting languages with good solid structures for building larger programs. As such they are suitable both for classical scripting and for writing larger programs. Both are comfortable with dynamic type checking, although Groovy does offer some static facilities too. Both support Closures  which are an important feature for the greater expressiveness that people want from this kind of language.


JRuby和Groovy都是现代动态脚本语言,他们都适合构造结构良好坚固的大型应用。他们既可以用来写小型脚本应用,也适合构造大型应用。他们都具备了动态类型检查、闭包等先进的语法结构。

接着Martin比较了他们的区别:

引用
The biggest difference between them is their broader platform philosophy. Groovy is designed to be a scripting language for Java. As much as possible its syntax tries to match the equivalent in Java. ...... It also works with Java's class library directly.......

JRuby, however, is a Java implementation of the Ruby platform. Ruby can run directly on mainstream operating systems with a C runtime, and is starting to run on .NET's CLR. When you program in JRuby you primarily use Ruby's libraries which are implemented in Java, and may also use Java's libraries at your discretion. If you stick to Ruby's libraries, or at least wrap any foreign elements, you can run Ruby programs on the C, Java, or (in time) .NET runtimes. So you can use JRuby to both run Ruby programs on the JVM and as a language for scripting the JVM.


他们最大区别在于平台策略:Groovy尽量和Java保持一致性,不提供自己的类库,直接使用Java类库,而JRuby目标在跨多个运行平台的一致性,能够运行在操作系统Ruby解析器,JVM和.net平台上面。

引用
One of the big differences between JRuby and Jython is around the libraries. One of the tricky aspects of porting this kind of scripting language to the JVM is that these languages are usually closely intertwined with libraries implemented in C. Porting these libraries to Java involves rewriting the libraries in Java. Jython didn't do much of this, as a result many Python apps can't run in Jython. However the JRuby implementers decided from early on that their goal was to run Rails apps, as a result many libraries including all the Ruby standard libraries needed to be ported.

The fact that JRuby is a Ruby platform on the JVM means that in JRuby you have two kinds of objects - JRuby objects and Java objects. Although there are ways for the two to talk to each other and to convert there is a difference. There are times when you need to know whether you're dealing with a Java string or a JRuby string. With Groovy you don't have that boundary, there are just Java objects.


Martin接着指出来JRuby最大的问题在于:当把ruby整个类库移植到JVM平台的时候,凡是那些依赖于底层操作系统C库的ruby类库全部都需要用Java重写一遍。并且对于JRuby来说,程序员面临着编程方面的复杂性,需要分别处理JRuby类型的对象和Java类型的对象,而Groovy程序员则没有这些烦恼。

Martin认为,目前断言Groovy还是JRuby才会更有前途的问题还为时过早,选择哪种语言,更多是个人实际的需要:

引用
It's too early, or rather too difficult, to say if one language will win out. Both are pretty young, only just finding their feet on the JVM. On a more personal level, your choice has a lot to do with what you expect to do with it. If you are only interested in running on the JVM, then Groovy could well be the easier choice. You are working directly with Java's library and object model, and the syntax requires less getting used to. A strong reason to prefer Ruby is the fact that it lives in multiple implementations. Ruby is a tool you can use in a lot of other places. As a long time Rubyist, there's not much incentive for me personally to get heavily into Groovy, even though I actually like the language a lot from what I've seen of it.

Rails is an important factor. The Java world is hardly lacking in web frameworks, but Rails is widely liked by those who've used it. I've not got many reports yet about Grails (the Groovy knock-off) so can't give a firm opinion on that. But I can imagine that the ability to deploy web apps with Rails could be a major factor in making JRuby popular. Something else to look at is the growth of RSpec as a new spin on testing environments.


如果你仅仅关注Java语言和类库层面,那么Groovy是比较好的选择。而如果你本人就是一个ruby爱好者,并且在其他各种场合也在使用ruby,那么你基本上不会对Groovy产生什么兴趣,肯定会对JRuby感兴趣。

例外,Rails框架也是一个非常重要的决定因素,Java世界在web框架方面严重缺失,而基于Groovy的Grails框架并没有被广泛使用。因此对于把Rails项目部署到JVM平台来说,JRuby显然是一个很好的选择。此外还有人因为RSpec的吸引使用JRuby的。

引用
With any platform it's as important to consider the people involved in the community as much as any technical factors. Good people can overcome technical weaknesses quickly and a vibrant community is a potent source for big innovations. RubyPeople have formed a particularly strong community, which has already spawned things like Rails, Rake, and Rspec.


最后Martin补充,开发者社区其实也是一个决定性的因素,好的开发群体能够克服技术上的弱势,而社区的发展也是巨大创新的潜在来源。目前Ruby社区是一个非常强大的社区,并且已经衍生出来了Rails,Rake和RSpec这样的项目。

引用
There are plenty of people who dislike the hype around Rails and Ruby. But even if you dislike Ruby, the hype has led to a resurgence of interest in new languages. I doubt if the interest in Groovy would be anywhere near as great as it is if it wasn't for this hype, nor would Jython be awaking from its slumbers. The ruby/rails hype has also generated interest in other exotic JVM languages. The really nice thing here is that the JRuby people have been encouraging their dynamic rivals - recognizing that the point here is to encourage multi-lingual inter-operability and innovation.


最后Martin谈到,即使非常多的人因为围绕在Ruby和Rails周围的鼓吹而非常厌恶它们,但是这种社区的鼓吹也吸引了更多人的关注,从而引发了对新语言的兴趣。Martin不认为Groovy语言能够制造出来这样大的影响力。而Ruby/Rails的鼓吹事实上已经引起了JRuby这种JVM平台变异语言的诞生和更多的关注。并且一个非常好的现象就是,JRuby社区实际上也在鞭策它们的竞争对手-重新认识到多语言互操作性和创新性的的价值。
21
0
评论 共 15 条 请登录后发表评论
15 楼 山风小子 2010-11-21 17:28
Groovy尽量和Java保持一致性,不提供自己的类库??? 
14 楼 kapok_fly 2009-05-29 09:39
废话一堆, 典型的xx文. 没有实际内容
13 楼 foxgst 2008-08-01 13:45
希望ROR对Java社区的Web开发有更大的促进。Grails到底会发展成什么样呢?是不是还要看看底层的支持?感觉Java的Full statck还是太复杂。
12 楼 zhenjw 2008-06-20 13:14
一心一意的好,我看好Groovy
11 楼 fangzhouxing 2007-12-12 16:39
准备学习和使用Groovy,实际感受一下。
10 楼 xilaile 2007-12-11 03:05
赞同lordhong的观点!

>>>>>>>>>>>> 他们最大区别在于平台策略
完全同意!

9 楼 Sam1860 2007-12-10 18:18
@shiren1118
>>Jruby同时具有2大强类,会走火入魔的

赞成这个。
我看好Groovy多一点,虽然2个我都不用:p
8 楼 jjx 2007-12-10 12:06
就看jruby 每天都有更新这点,我看好jruby
7 楼 agile_boy 2007-12-10 11:09
定位不同,社区不同,其发展自然也不同,我相信groovy+grails会逐渐被市场接受的。
而且比较赞成lordhong的观点
6 楼 shiren1118 2007-12-10 08:31
Martin接着指出来JRuby最大的问题在于:当把ruby整个类库移植到JVM平台的时候,凡是那些依赖于底层操作系统C库的ruby类库全部都需要用Java重写一遍。并且对于JRuby来说,程序员面临着编程方面的复杂性,需要分别处理JRuby类型的对象和Java类型的对象,而 Groovy程序员则没有这些烦恼。


其实东西都是简单才强大,才容易接受,这大概是java超c++的一个原因吧
我们需要的是比java更强大的语言还是更优化呢?
Jruby同时具有2大强类,会走火入魔的

换因之,ruby社区越强大,未尝不是对groovy的促进!尤其现在各个大巨头比如oracle等的支持,以jjava的家底来看,瘦死的骆驼比马大
5 楼 cddcdd 2007-12-10 08:26
对这个不是很感兴趣
但是不得不佩服日本人的效率,这么快就翻译成日文了
中文的马汀主页很久没有更新了。
4 楼 Allen 2007-12-10 02:18
没有JRuby的话,RoR 2.0估计会等到明年第二季度才会出来……只要竞争不要发展成恶性肿瘤,那肯定是多多益善的咯。
3 楼 lordhong 2007-12-09 22:12
martin选择JRuby是因为Ruby有更广泛的资讯潜力(consulting potential),groovy基于java,基于java的资讯早就做烂了。。。我是基于市场分析,和技术无关,哈哈!
2 楼 coolnight 2007-12-09 21:51
引用
Java世界在web框架方面严重缺失,


唉唉唉...
1 楼 dnwq 2007-12-09 19:36
好像很有道理

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 用LATEX 排版编程技术书籍的一些个人经验

    用LATEX 排版编程技术书籍的一些个人经验 陈硕 最后更新2013-4-14 版权声明 本作品采用“Creative Commons 署名-非商业性使用-相同方式共享3.0 Unported 许可协议 (cc by-nc-sa)”进行许可。http://creativecommons.org/licenses/by-nc-sa/3.0/ 多年之前我写过一篇书评《〈Word 排版艺术〉读后感——兼谈与LATEX 的比较》¬,其 中写道“如果将来有时间,我把自己用LATEX 排书的经验总结一下,让读者在阅读《Word 排版艺术》的基础上,更容易地把知识应用到LATEX 排版中去。” 我自己排版了《Linux 多 线程服务端编程:使用muduo C++ 网络库》,现在终于可以把账还上了。本文假定读者已 经读过LATEX 的入门文档­ ® 和书籍¯,具备基本的使用技能,这不是一篇入门教程。 排版是一门大学问,我只是一名技术图书的作者,有一些初步的LATEX 使用经验。我 不是专家,出版印刷的行话也不怎么会说。本文的目的是让有志于用LATEX 来排版自己书 的人少走一些弯路。换句话说,这篇文章是讲“我是怎么做的”,不是讲“哪种做法最好”。 另外,遇到LATEX 使用方面的问题请先阅读FAQ °,再上CTeX 论坛± 或水木社区TeX 版² 发帖询问,不要给我写信。(我最多能回答我那本书里某个版面是如何排出来的,无法解 答你的具体问题。)

  • LaTex使用体验

    Latex是一款跟word类似的书写软件,不同与word的是,Latex的文字排版功能非常强大,我觉得特别是在写论文时,Latex尤为便捷。例如,很多编辑社都会给出Latex模板,如图在Latex模板中,包括有一个.tex的主程序文件,一个.cls的格式文件,一个.eps的图片文件。我们只需在tex的主程序文件中进行修改,替换其中的文字内容,无需修改任何格式问题。.........

  • LATEX教程(半个小时学会latex)

    LATEX教程(半个小时学会latex)

  • LaTeX 常用功能

    1. 段首缩进  中文习惯在段首缩进两格,在LaTeX中,/parindent 表示段首缩进的长度,我们将它设置为当前字号的两个大写字母M的宽度,大约正好是两个汉字的宽度:/setlength{/parindent}{2em}LaTeX 默认每节的第一段的段首不缩进,这不符合中文排版习惯。我们希望正文的每一段都要缩进,使用indentfirst宏包就可办到:/usepackage{

  • LaTeX 相对于 Word 有什么优势?

    来源:https://www.zhihu.com/question/20542113编辑:深度学习与计算机视觉声明:仅做学术分享,侵删作者:Zignhttps://www.zhihu.c...

  • LaTeX新人教程,30分钟从完全陌生到基本入门

    对于真心渴望迅速上手LaTeX的人,前言部分可以跳过不看。 本教程面向对LaTeX完全无认知无基础的新人。 旨在让新人能够用最简单快捷的方式,轻松入门,能够迅速使用LaTeX完成基本的文本编辑。 这个教材最终能够达到的水平是能够使用LaTeX写一篇正常的proposal。如果希望有更大需求的提高,那么推荐在熟悉了这一篇文章的内容之后,再自行google或查阅其他稍厚的教材。 尤其旨在破除部...

  • LaTeX实战经验:从零开始快速入门

    本文的长期更新版本在我的新博客:new blog对于理工科的学生来说,尤其是从研究生阶段开始,LaTeX应该会是日常中必不可少的科研工具。目前我并不是一个LaTeX高手,但至少应该算是已经入门LaTeX。所谓入门的要求至少应该是能够完成一些日常写作的要求,比如写个report什么的,遇到一些常见的问题能够Google并解决。此篇为写给一些想快速入门LaTeX的朋友,本人学识与能力有限,以下内容如有纰

  • 【latex】1 环境安装与快速上手

    问题描述 需要使用 latex 编写论文相关算法伪代码,花了不少的时间折腾,这里记录一下吧。 下载与安装 tex 具体来说有两种方法,推荐安装最庞大但是也是最齐全的版本:texlive,比较可怕的是居然 2020 版本居然有 3.7G,推荐使用迅雷下载可能快一些。 下载地址推荐:清华开源软件镜像站tex-live 安装方法也非常简单粗暴: 把下载的 iso 文件解压到任意文件夹。 找到其中的 install-tl-windows.bat 脚本文件,双击安装即可。 下载与安装可能需要一些些时间,请耐心等候

  • Elsevier期刊LaTeX投稿过程中注意的问题

    这两天有一篇投Elsevier的期刊的论文要一审修改后提交,按照这个期刊的Guide for Authors,Revision的时候必须要提交源文件,特别是如果文章用LaTeX准备的时候,需要分开上传很多东西,这里官方的教程(如这里:http://www.elsevier.com/author-schemas/latex-instructions)都说的不是很详细,我简单总结一下,也为需要的朋友提

  • NetBeans安装时卡住

    安装NetBeans11.3时遇到问题,安装界面在同意勾选后,点击下一步时卡住,查看log日志,显示 … use Java that is already selected for the product: C:\Program Files\Java\jdk-11.0.9(在安装NetBeans之前已经安装好了jdk11.0.9) 解决方法:重新下载了一个与NetBeans11.3匹配的jdk10.0.2,安装好后,重新安装NetBeans,顺利安装完成。(最终安装了2个jdk) ...

  • LaTeX从零上手——学习路线

    对于基于网络的服务(Internet-based services)而言,密切监控服务性能并检测异常情况是至关重要的。尽管多年来已经提出了数十种异常检测器(Anomaly detector),然而,要将它们部署到给定的服务仍然是面临很大挑战(**实际应用中的难点需要手动和迭代地调整检测器参数和阈值**)。本文通过一种基于**有监督机器学习**的新方法来解决这一挑战。在作者设计的系统(Opprentice--运维人的学徒)中,运维人员的**唯一手动工作是通过便捷的工具定期对监测数据(performance d

  • LaTeX新手半小时速成手册(不速成你打我

    期末大作业LaTeX排版,一个学期没听课,学了b站半小时完成大作业。写此速成手册以作备忘。 b站链接:小风寒呐 1. primary 一篇论文最主要的构成,以中文为例 1.1 整体框架 1.1.1 声明类 相当于在说:“我想写一篇文章” \documentclass[UTF8]{ctexart} 文章编码:UF8 文章类型:中文 1.1.2 导入包 相当于在说:“我要开始写文章” \usepackage{mathtools,wallpaper} \usepackage{t1enc} \usepackag

  • 对LaTeX一些基本概念的认识

    一个LaTeX命令(宏)的格式为:无参数: \command有n个参数: \command{<arg1>}{<arg2>}...{<argn>}有可选参数:\command[<argopt>]{<arg1>}{<arg2>}...{<argn>}例如:…欧几里德\footnote{欧几里德,…}《几何原本》的…在LaTeX中有环境的概念,例如引用quote环境,摘要abstrct环境,一个La

  • 十分钟上手2022latex安装与入门

    序言:本次下载是为美赛而用,因此我们选择的下载组合为texlive+texstudio 在此提醒大家,类似工具的下载建议大家亲历亲为,不要相信一些诱导性网站,都是非官方的安装。 1.通过清华镜像源下载iso,通过下面卡片链接访问,建议收藏。 清华镜像源https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ 在这里了我遇到一个小问题,提醒一下大家,我们往往要修...

  • LaTex(论文排版)的使用心得及入门教程

    前言 最早接触到LaTex,就是要发论文的时候,之前只知道这是别人推荐的论文编译软件,不同于富文本语言,类似于Markdown格式,是一种文本标记语言,排版真的非常方便、美观,完爆Word,瞬间感觉使用Word简直太Low了。 ...

  • 试比较LaTeX与Word及CTEX的简单使用

    1 . Word Word是一个文字处理软件。Word 提供了许多易于使用的文档创建工具,也提供了丰富的功能供创建复杂的文档使用。 对我来说,Word是一个优秀的处理简单文档的软件。比如有什么通知,打开Word,编辑几行文字,调一下字体大小,十分方便。 但是如果用来写论文的话则并不是十分便利,存在一定的弊端。用Word写论文,要知道这篇论文的格式要求,如:行间距,段间距,各种字号,插图,公式,参考...

  • 让latex写论文更方便的几个工具

    1. LaTeX转word Pandoc 可以转换的文件类型有: reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB, or Haddo

  • Springer的Latex准备及投稿过程记录

    文章目录问题1:GPL Ghostscript 9.50:问题2:Something's wrong--perhaps a missing \item. \item $问题3:Package inputenc Error: Unicode character − (U+2212)(inputenc) not set up for use with LaTeX. ...th}{1}, . . . , 0)}^T$ and $d_{n+i} = − 问题1:GPL Ghostscript 9.50: Proc

  • Latex学习体会

    latex个人学习体会 前言: 我在上信号与系统课程时,为了方便做电子笔记,稍微学习了一下latex的使用,来打出信号与系统的一些公式,比如Fourier Transform等等。错误地方请多多指正。 一、软件安装: 1.CTEX:http://www.ctex.org/CTeXDownload 2.MathType:https://www.mathtype.cn/xiazai.html (注:...

  • latex 真的 很简单!

    是什么? 1. latex是排版软件,功能类似于word,format control 和 formula edit 方面较好。 2.latex是tex的扩展指令集,tex支持DVI(device independent) 文件格式,latex 支持DVI和PDF 文件。 3.版本问题。 linux的version是 tetex, windows上的version是Miktex和 fptex...

Global site tag (gtag.js) - Google Analytics