oracle ola
JRuby核心开发人员Ola Bini坐下来与InfoQ讨论Ruby以及他如何参与JRuby。 在采访中,Bini谈到了开发JRuby的挑战及其未来的发展方向。 除了采访之外,InfoQ还很自豪地展示了Bini的书《实用的JRuby on Rails Web 2.0项目》 。
您是如何参与Ruby和JRuby的?
因此,我一直(对于某些与25岁的人有关的价值观)一直是LISP负责人,但从来没有付账,所以我最终主要从事Java工作。 由于我也是某种语言/编译器极客,所以我一直都在逛各种语言,大约4-5年前我发现了Ruby。 我立即喜欢上它,并开始让我当时的工作场所从所有丑陋的Perl / AWK / Sed / bash脚本切换到使用Ruby。 事情进展得并不顺利,但是我还是开始渗透并将较小的系统任务转换为Ruby。 一段时间后,人们开始注意到并看到好处。 然后,Rails出现了……很长时间以来,Java一直是我们的Web开发平台,但是Rails承诺会提供更好的存储。 我花了18个月的时间和两次申请使工作场所信服(而当我说服时,这不仅意味着我的老板,还意味着管理层-这是困难的部分)。 这就是我的Ruby故事。 据我所知,该雇主现在根据任务在使用50/50 Ruby / Java,所以我想我在那儿给人留下了深刻的印象。
在使用Java的那些年里,我总是试图找到一种更好的方法。 我逐渐意识到,我的问题不是Java或JVM,而是Java语言本身。 看到很多语言,这很明显使Java作为一种语言变得多么残缺。 我知道其瘫痪的原因,但这仍然不能解决我的问题。 所以我想到了Java之上的其他语言。 我成为Jatha项目(Java之上的Common Lisp)的提交人,但是由于种种原因,我感到大多数地方仍然不允许使用Lisp,因此我转向了Ruby(当您获得时,它非常像LISP。下来)。 简而言之,这就是我找到JRuby并开始对其做出贡献的方式。 那差不多是两年前了。
您最喜欢Ruby语言的功能是什么?
我没有一个我真正喜欢的非常大的功能-Ruby的问题是,所有小东西都组合在一起,形成了非常令人愉悦的体验。 但是从语言的角度来看,最重要的功能肯定是作为混入模块和不引人注意的块的模块。
随着JRuby进入更多的开发商店和企业,您是否仍会强烈需要像Java领域那样的框架?
我认为无论您使用哪种语言,框架都是生活的一部分。 我们之所以没有在Ruby中看到许多框架的原因,基本上是因为大多数人都没有解决它的大问题,所以对不同事物的许多框架的需求还没有出现。 当然,当语言更强大时,诸如DI框架或AspectJ之类的东西就会失去其含义。
在书中,您提到在说服您的雇主开始使用Ruby上花了两年多的时间。 今天仍然存在哪些障碍,可能阻碍开发人员说服他们的员工拥抱JRuby?
开始使用Ruby的障碍是由于保守主义以及事实上,尽管Ruby在那时已经存在了很长时间,但它仍然被认为是一种非常新的技术。 公司通常都非常保守,而JRuby也会发生同样的事情-尽管确实使JRuby变得更好,但事实是它在Java上运行。 能够将Java添加到对话中使JRuby更加容易接受。 目前,JRuby的另一个问题是缺少文档-我们有一些文档,但需要做得更好。 希望我的书能对其中的一些有所帮助。
越来越多的Ruby / JRuby IDE可用。 您觉得市场上还缺少某些功能或工具吗? 您是否将IDE用于Ruby开发?
那很有趣。 我实际上根本不使用任何IDE。 我是Emacs的狂热用户。 我无法真正放弃成千上万的将Emacs定制为我选择的环境的E-lisp代码。 也就是说,NetBeans和IntelliJ的Ruby支持中的许多功能看起来都非常酷。 我知道所有其他JRuby核心开发人员一直都在使用NetBeans。
您已经提到在使用AR-JDBC支持时,使用JDBC驱动程序的数据库实现会感到沮丧。 作为JRuby贡献者,您还面临哪些其他挑战?
是的,处理数据库从来都不是我一生中最有趣的部分。 但是实际上,我认为我在博客文章中有些夸张。 如果您了解这些内容,我发现的内容将是很小的-但我喜欢将它们编写出来,以便Google可以为其他人找到。
JRuby本身有一些不同的问题领域,但是这些问题主要是由某些特定的Ruby功能引起的。 例如,ObjectSpace是一种痛苦和资源消耗的问题,因此我们正在考虑默认情况下将其关闭。 而且,Ruby有许多不错的极端情况,它们可能导致怪异的行为甚至错误。 有时,我们不得不削弱JRuby来模仿Ruby行为,这对于所有看到它的人来说似乎都是错误的-我们希望JRuby完全兼容1.8,即使这意味着包括错误。
有人说,依赖注入以及诸如Spring之类的附带框架在Ruby领域中并不那么重要。 您认为这在JRuby领域是否成立?
我同意Ruby本身根本不需要DI框架。 但是JRuby可以很好地利用它,特别是在将Java和Ruby混合使用的边界上。 例如,您可以使用Spring编写Ruby bean脚本。 使用Spring将Ruby代码注入Java的方法在很多地方都使用过(包括Waffle,这是ThoughtWorker的Michael Ward的新网络框架)。 因此,对于JRuby绝对有一个地方。
似乎有孤立的JRuby实例可用于公开可用的生产软件,唯一的例外是Thoughtworks最近发布的Mingle产品。 您为什么认为我们还没有看到更多使用JRuby的示例?
现在,大多数人都处于JRuby产品的开发阶段。 TW开发基于JRuby的产品如此之快的事实是,之前有很多代码是用MRI编写的,然后移植到与JRuby一起使用。 而且,Mingle团队由非常有才华的程序员组成-没有所有这些因素,我认为不可能很快地使Mingle脱颖而出。
现在,我知道一些使用JRuby的网站和项目-大多数处于开发中,并且大多数都还没有谈论它。 但是我希望几个月后会发布一些公告。
什么样的项目最适合JRuby? 哪些项目不合适? 为什么?
好吧,当我们谈论与Java系统集成时,当部署依赖于不习惯Rails部署的IS部门时,JRuby非常适合。 实际上,在所有涉及Java的所有情况下,JRuby都是一件好事。 它还有助于改善总体部署情况。 第二部分很难回答。 如果您正在做一个简单的CRUD Rails应用程序,那么JRuby可能会过大。 当您的应用程序为中型或大型时,您往往会从JRuby中获得更多好处。
在您看来,JRuby领域在不久的将来会发生什么最令人兴奋的事情?
1.1真的很酷。 当我们完成完全的预编译后,JRuby的新市场将打开。 此外,一旦Rails的总体性能提高,我相信许多Rubyists都会引起更多关注。
从更长远的角度来看,我认为Rubinius的工作非常重要,我们可以互相帮助的一切都会令人兴奋-使用Ruby实现大多数核心库,等等。
oracle ola