灵魂腐蚀 发表于 2015-1-18 11:35:22

JAVA编程:与Ola Bini一同切磋JRuby仓酷云

你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。OlaBini议论了JRuby,一种用Java写的,运转在JVM上的Ruby完成。除此以外,Ola还表达了他对Ruby社区的浏览,并分享了他对Ruby社区与Java社区的分歧的地方的意见。他还扼要的会商了关于Ruby的将来的意见,出格是它有潜力交融一些来自Lisp的壮大功效。

团体简介
OlaBini效率于ThoughtWorks,比来写了“JRubyonRails理论”一书,并由Apress出书。他对野生智能、Lisp、Ruby,和分歧言语之前含混的界线十分感乐趣。Ola的博客在http://ola-bini.blogspot.com/
寓目视频:与OlaBini一期切磋JRuby


<br>我叫ObieFernandez,如今正代表InfoQ在QConSanFrancisco采访OlaBini。他无疑是Ruby天下的摇滚明星。请你向不雅众先容一下本人吧。
<br>
我叫OlaBini,来自瑞典,在ThoughtWorks事情。我是JRuby的中心开辟者之一。也是“JRubyonRails理论”的作者,这本书在上个月由Apress出书了。

<br>既然提到了你的书,跟我们先容一下书的内容吧。
这本书对JRubyandRails做了理论性的先容。它是基于项目标,也就是说你不会读到一切的实际,而会看到良多有用的例子来先容JRuby的集成、怎样利用JRuby和Rails,和如何在Rails中分离Java情况中的企业级的工具;做一些工具,好比XML,但不利用Ruby的XML库,另有与企业级使用EJB的互动,诸云云类。

<br>它是依照引导书的布局来编排的吗?
基础上是。它是由4个分歧的项目构成。我们从草案入手下手,渐渐到场愈来愈多的初级特征,一步一步完成一切的功效。

<br>能告知我们你在JRuby团队中的脚色吗?
我都做些甚么呢,一般在团队中我次要卖力扩大部分,由于JRuby必要用C扩大来从头完成一切的盘算部分;这是全部完成中相称年夜的一部分。而这就是我所做的大批事情的一部分。一年半到两年之前,我入手下手从头完成Ruby的YAML库,从当时入手下手我一向在做良多工具。我是卖力ActiveRecordJDBC的成员之一,这个组件让Rails可使用JDBS驱动。我介入了这个完成的一切部分,而这才是关头。比来我也努力于正则表达式引擎,和其别人一样,我次要在修改各类毛病。

<br>你面临了一些应战,一些出格的应战,好比让正则表达式在JRuby中一般事情。你能跟我们先容一下吗?
这里的成绩是Java的正则表达式引擎是一个很好的引擎,可是它不切合Ruby的事情体例。而我们必要让这个完成具有完整的兼容性,不管你能想出甚么举措来出现毛病。我们最入手下手发明的一个真正成绩来自于卖力转换多半据的Rails正则表达式。它在Java中溃散了,由于它利用了接纳递回算法的Java正则表达式引擎来凑合大批的特别正则表达式,了局把仓库给挤爆了。因而我们决意寻觅另外一种计划,我们利用了JRegex一段工夫。当我们发明它时,它已中断更新了。它具有我们必要的一切特征,它比Java正则表达式引擎要快,最主要是的,它自己不是递回的。因而我们很喜好它,并修改了它的一些毛病,用它作为我们次要的正则表达式引擎,用在1.0刊行版和1.01、1.02和1.1beta刊行版中。它是个好的引擎,但我们也入手下手碰到一些它还不敷合用的中央。在那些情形下,我们指了局上,会有一些特别的情形,引擎没法找到了局……一个典范的例子是:好比你有一个很长的字符串,另有一个正则表达式来举行回溯查找,而正则表达式的一部分是常量串。假如在长字符串中找不到这个串,MRI就会在那之前停上去,它不会试图回溯地查找全部字符串,由于不论如何,正则表达式都不成能婚配。而JRegex不是这么做的,因而在某些情形下,有的正则表达式会把我们的引擎弄溃散。

<br>这么说基础上是你接受JRegex项目了?
是的。我们很喜好它,并把它放进了我们的存档。我们一向在到场、作废并公布各类更新,但因为我们已做了良多工具了,而且我们在引擎中到场的其他一些工具都是专门针对JRuby的,因而我们曾自愿往失落一些不太切合Ruby引擎的特征。

<br>它有允许上的成绩嘛?
没有成绩,它有BSD范例的允许。

<br>甚么是Oniguruma?
Oniguruma是MRI和Ruby1.9接纳的下一代的正则表达式引擎。它是完整国际化的,基础上可以撑持一切你能想到的多字节字符和编码。它还撑持一些真正初级的特征,好比称号组、向前找、向后找之类,能使得递回正则表达式变得很简单。它有一些十分好的特征。同时它也比现有的正则表达式引擎年夜很多。

<br>就是说它比现有的正则表达式引擎具有更多的特征?
是的,没错。

<br>假如它是1.9中的工具,那末它是怎样影响JRuby的呢?JRuby基础上是一个1.8的完成。
我们正在企图并努力于从头计划我们的完成,来兼容1.8和1.9。我们次要看中典范的1.9特征。比方,1.9的case声明承受文本参数并外行间利用它,而不往挪用具有更好体现的triple等式。但这相对Ruby1.8来讲是一个很年夜的变更。我们要做的就是承受一切这些变更,差未几给每个都加上标记,然后你就能够选择要利用1.9的哪部分了。作为让正则表达式兼容1.9的一部合作作,我们有一个团队成员努力于把Oniguruma移植到Java上。这是个成心思的事情,是个很复杂的移植,至今还没有完成,让我们拭目以待。它大概会是我们将来的次要正则表达式引擎。因而我们要做的就是当我们运转在1.8兼容形式时,我们就仅利用1.8这部分,如许就可以失掉和1.8一样的功效了,但愿如许也能办理功能的成绩,也为正则表达式供应扩大性,就像MRI那样事情。

<br>以是你是在一个共同的地位上,因为你在JRuby中的位置,你触及的范畴涵盖Java和Ruby两个阵营,同时也为ThoughtWorks事情。因而你打仗了良多企业级使用的开辟,而且你看到了应战和对JRuby的回收,但你又比我们其别人具有更强的了解力,我是说,关于JRuby未来的使用情形来看。你批准吗?
没错。从我入手下手以离开如今这段工夫很成心思。很分明JRuby很合适企业级使用。在其他很多情形下,人们其实不真的必要运转在Java上的才能,但企业级使用必要。良多时分,好比我们有很年夜的投资银行,他们不同意任何工具进进体系。你不克不及在他们的主框架和盘算机中央里运转任何工具,假如它们不是Java的话。

<br>在那些情况中Ruby能被以为是一个库吗?
在那种情形下,即便告知他们它事实是如何事情的,它事情得很好,由于它运转在Java上,也是白费。可是在很少的情形下,有一次,我的一个同事JoshGraham跟我说了几天前他事情的情形。他为我们做一些JRuby的事情。有一个我们的客户,他也许是说他告知谁人客户:“这只是个Java项目。这些静态的文本文件只不外是设置信息罢了。”我纷歧定批准那种小小的棍骗,但它切实其实起了感化。他们同意我们用更好更快的办法托付更多的功效,而且给客户带来起色。这对两边都有优点。

<br>你以为在甚么情形下JRuby会成为次要的Ruby平台?
我想这不年夜大概。在某些阵营中,Java平台其实不合用。比方一些典范的小范围剧本,你必要敏捷实行,很短工夫内就停止。在这类情形下,JRuby的启动工夫是个成绩,由于你必要先启动一个JVM,然后再启动JRuby,这都必要花很多工夫。对此我们有一些办理计划。比来我们到场了一种叫做“nailgun”的机制,它在一些情形下能年夜幅改善启动功能。以是有良多办法。可是在很多情形下其实不必要这么做。另外一方面,假如JRuby真的变得十分快的话,在很多基准测试中,我们都已比1.9要快了。但在其他基准测试中,比方典范的Rails基准测试,我们年夜多半情形下只快一点,但没有比正轨的Ruby完成快太多。以是我以为假如我们可以改变情势,比拟Rails对这一类年夜型使用程序能年夜幅进步功能的话,则十分有助于JRuby的使用。惋惜Ruby社区其实不那末在乎功能,而更在乎把工具用尽量最好的体例做出来。

<br>让我们来谈谈这两个社区之间的区分吧。既然你跨足于这两个社区,并且你在介入JRuby之前已做了那末多的事情,那末你以为Java使用开辟社区和Ruby使用开辟社区之间的次要区分是甚么?
这个成绩真的很难。我只晓得我十分酷爱Ruby社区。毫无疑问Ruby社区是我曾介入的最好的社区,它十分棒,可是欠好和Java开辟者社区举行对照。他们属于完整分歧的天下。我熟悉的Java使用开辟者次要都是在企业级范畴。我以为年夜多半Ruby开辟者都更有热情。这类热情和自大感在Ruby社区和Java社区中是分歧的。我的团体感到是,我发明Ruby开辟者都很入神于他们所做的事变,并且都为此而自满。而关于Java开辟者来讲,就算有人切实其实对社区做了很年夜的奉献,他们更倾向于以为那是他们事情的一部分。即便他们有热情,也和Ruby开辟者不年夜一样。

<br>你以为你未来会如何?你已在ThoughtWorks有必定位置了,你也介入了JRuby。这就是你今朝最好的成绩吗?仍是方针更高?
我如今就做得很高兴。JRuby切实其实很主要,但并不是要闭幕一切的编程情况。并且我真的但愿能看到Lisp能尽力回回,那样我也很愿意投进个中。我如今切实其实没偶然间做一切喜好做的事变,但我晓得我想做甚么。并且我以为把一种言语好比Ruby交融到Java如许的平台上,而且再交融进一些Lisp的壮大功效长短常成心思的事。如果我未来偶然间的话,我会很愿意坐上去把分歧言语的特征全体混在一同,创建起Ruby曾创建的工具,并把Ruby带进下一代言语,要比如今的Ruby还好。我如今不晓得那会是甚么模样的,但我晓得必定会比Ruby要好。等着看看Ruby2.0是甚么模样的吧,那必定很成心思,很好玩,但我仍是以为一定会有更好的。

<br>固然。听起来很使人冲动,我敢一定不但是我在等候这些将来的开展和立异的。十分感激你承受InfoQ的采访,祝你统统好运!
感谢。
来自:http://www.infoq.com/cn/interviews/ola-bini-discusses-jruby-cn

没有那个大公司会傻了吧唧用.net网页编程开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net网页编程不行,限制在window系统,又是捆绑,鄙视微软之!

若天明 发表于 2015-1-21 10:38:44

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

深爱那片海 发表于 2015-1-24 15:35:39

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

小妖女 发表于 2015-1-28 14:39:26

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

金色的骷髅 发表于 2015-1-29 15:40:27

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

飘飘悠悠 发表于 2015-2-4 20:12:43

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

兰色精灵 发表于 2015-2-23 11:07:46

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

精灵巫婆 发表于 2015-2-28 19:34:46

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

飘灵儿 发表于 2015-3-10 06:39:21

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

蒙在股里 发表于 2015-3-10 18:22:11

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

愤怒的大鸟 发表于 2015-3-17 09:04:46

是一种使网页(Web Page)产生生动活泼画面的语言

因胸联盟 发表于 2015-3-24 04:06:16

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

老尸 发表于 2015-3-27 08:09:18

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

小魔女 发表于 2015-4-20 11:22:04

Java 编程语言的风格十分接近C、C++语言。

第二个灵魂 发表于 2015-4-21 18:08:21

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

不帅 发表于 2015-4-21 19:13:02

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

仓酷云 发表于 2015-4-30 00:42:02

是一种为 Internet发展的计算机语言

爱飞 发表于 2015-4-30 09:13:46

是一种使用者不需花费很多时间学习的语言

简单生活 发表于 2015-5-3 22:13:43

是一种使网页(Web Page)产生生动活泼画面的语言

分手快乐 发表于 2015-7-7 04:10:55

是一种使网页(Web Page)产生生动活泼画面的语言
页: [1]
查看完整版本: JAVA编程:与Ola Bini一同切磋JRuby仓酷云