Tim Fox访谈:Vert.x 2.0有哪些新内容

近年来,移动客户端和社交网络等成为新趋势,迫使Web应用程序处理越来越多的并发连接。这导致了一种基于事件和异步的新服务器架构的出现,已经用在nginx和Node.js中。2011年,Tim Fox开始了Vert.x的开发,它是该结构的一个多语言JVM变种,允许开发人员在一个应用程序中混合使用JavaScript、Groovy、Java和其它语言构建系统。

最近, Vert.x 2.0发布,为了了解它有哪些新内容,InfoQ与Tim取得了联系:

InfoQ您能跟我们谈一下这次Vert.x更新有哪些关键特性吗?

Tim FoxVert.x 2.0有许多新增和改进的内容,但我重点介绍几个主要方面:

首先,我们对核心API进行了广泛而全面的审查和清理,包括增加了许多社区要求的新特性,使这套API更好、更一致而且更有用。

其次,我们创建了一个更加模块化和可扩展的Vert.x。通过引入一个功能强大的新模块系统,它的许多功能现在以模块形式提供,这包括所有的语言支持——核心Vert.x项目只支持Java,其它语言的实现都是以模块形式提供——所以,开发人员只需要安装他们需要的模块。

Vert.x现在更轻量级、更简化——它的分发包只有4.5MB。之所以引入该模块系统,是因为我们希望以此鼓励在社区以分散的方式创建Vert.x模块生态系统。我们还花了大量时间简化类加载系统,使它更高效,并且在应用程序之间共享资源更简单。

第三,我们集中精力简化了使用Vert.x 2.0的开发。它提供了一个Maven原型,使开发人员可以轻松地创建和开始一个Maven项目。对于Gradle用户,它提供了一个Gradle模板项目。它还提供了一个测试框架,允许开发人员编写Vert.x测试,该测试跟JUnit测试类似,但在Vert.x容器中自动运行。

我们还集中精力提升IDE的用户体验,希望它能尽善尽美——开发人员现在可以在他们最喜欢的IDE中运行、调试和测试Vert.x模块,而且不需要任何专门的配置或安装。我们还增加了另一个令人愉快的特性,正在IDE(或者文本编辑器)中运行的Vert.x应用程序可以自动重新部署——所以现在开发人员修改Vert.x代码或者其它文件,无需任何构建步骤或手动重启,就会自动引发正在运行的应用程序重新部署。

InfoQ:Vert.x支持新语言吗?语言设计人员要使他们设计的语言兼容Vert.x是否可能?

Tim除了Java是Vert.x核心项目的一部分外,其它所有的语言实现都是以模块形式提供,这是使Vert.x更加模块化的一部分。任何用户只需创建一个新的模块,而且根本不用修改Vert.x内核,就可以在Vert.x中轻松地创建新语言支持。还有更多关于如何做的信息。这种做法使Vert.x中所有的语言开发可以分散进行。当前,有团队正致力于为Scala和Clojure提供支持——这方面的开发非常先进。

InfoQ:根据您的观察,Vert.x“最喜欢”什么语言?

Tim似乎很多Vert.x用户是来自现有的JVM用户,他们厌烦了当前的应用程序平台,希望尝试一种不同的方法。有些人对在Vert.x中使用Java和JavaScript有极大兴趣,还有一些人则非常愿意在Vert.x中使用其它语言,如Groovy和Ruby。

对于Vert.x的Java用户来说,Java 8是个好东西。它引入了Lambda表达式,调用异步API简单了许多。我也非常期待对Scala和Clojure的支持,这将使我们拥有一种方案,解决其它应用程序平台上正在由Java转向Scala/Clojure的Java开发人员的问题。

InfoQ:我们谈谈Vert.x背后的模块系统。现在有多少模块?是否能使用npm库中的JavaScript包?开发人员贡献模块难度有多大?

Tim这个模块系统还非常新(只有一周),所以还不能期望它有像npm库那样多的模块。但是,Vert.x模块系统的工作原理与npm不同——它没有提供一个集中的模块库,而是允许开发人员使用其它著名的模块库,如Maven中心库和Bintray,Vert.x正好支持它们。

模块系统背后的想法是授权Vert.x社区创建和共享模块,避免集中开发控制太多所产生的瓶颈。

Vert.x还提供了一个模块注册表,用户可以注册他们的模块,其他人可以查找,但这些模块并不会真的存储在那里。用户并不是一定要在注册表中注册他们的组件——那样做只是为了使其它人查找更方便。

Vert.x目前还不支持npm库,但我们可以考虑增加对它的支持。有个团队正致力于提供对Node.js的嵌入式支持(例如,API兼容性)——这是一个极大的特性,用户不需要做任何修改就可以在Vert.x上运行Node.js应用程序,并且提供了一个入口,可以通向更好的Vert.x多语言世界。也许当它发布的时候,会有助于Vert.x支持npm库。

InfoQ:一个简单的问题……我为什么要越过Node.js选择Vert.x?

Tim有很多理由,而且常常都不必动脑筋去想。Vert.x可以做Node.js能做的任何事,甚至更多。所以,如果你正想用Node.js开发一个应用程序,那么Vert.x肯定值得考虑。我将详细描述Vert.x超过Node.js的几个方面:

一方面是性能——对于很多应用程序,Vert.x可以在性能上轻松击败Node.js。与Vert.x 1.x相比,Vert.x 2.0有许多性能改进(在许多基准测试中,它都比Node.js更快),而且还充分利用了JVM——一个无与伦比的虚拟机——的能力。我们还与Netty团队密切合作——事实上,作为Vert.x核心开发人员之一的Norman Maurer也是Netty的核心开发人员。Netty 4.0用在了Vert.x 2.0中。Norman Maurer为它带来了一些令人印象深刻的性能提升。

另一方面是语言选择。Node.js只支持JavaScript。如果想用JavaScript做所有的事,这样很好,但如果不是,这样就不是很好了。Vert.x支持Java、JavaScript、Ruby、Groovy和Python。还有团队正致力于为Scala和Clojure提供支持。

对Vert.x和Node.js的表面比较是有根据的,但实际上Vert.x远不止是“JVM的Node.js”,它要大很多——它是一个多语言的、分布式应用程序平台。在某种程度上,可以认为Node.js所做的是Vert.x的一个子集,但Vert.x的目标更广。

InfoQ:接下来的问题不仅与2.0版本的发布有关,还与Vert.x的第一个生日有关。一年来,这款软件的成长情况怎么样?用户群有多大?有什么大用户吗?

TimVert.x是一个社区项目,不提供任何付费支持,所以没有一本用于注册的工作簿,然而,我知道当前有许多人将Vert.x用于生产,包括一些知名人士。

InfoQ:请您描述下Vert.x的适用场景。或者反过来说——什么类型的应用程序不适合用Vert.x?

TimVert.x是一个非常通用的应用程序平台,适合于大多数类型的应用程序。它目标广泛,包括移动、Web和企业级应用程序。随着Vert.x生态系统中新功能模块的增加,我们希望Vert.x成为更受应用程序编写人员欢迎的一种选择,否则,他们会考虑更加传统的平台(例如,JavaEE或者Rails)。

我们看到,现在许多人正在考虑使用Vert.x进行Web应用程序开发——尤其是服务器推送类型的应用程序,需要大量有强大性能支撑的连接——由于很好地支持非阻塞,Vert.x在这方面的表现超乎寻常。

InfoQ:在谈论Vert.x(或者Node.js)的时候,人们经常会问我,与通常的JEE栈相比,它有多少实实在在的好处?在上述它适用的场景中,可以节省多少硬件,或处理的流量可以大多少?

Tim关于这点,很难给出一个答案,这个数值很大程度上取决于特定的应用程序。但是,对于吞吐量大的应用程序,例如那些有大量连接的——社交网络应用程序就是一个很好的例子——非阻塞方式是必不可少的,而传统的应用程序平台恰恰没有实现。

但是,这也不全与性能和扩展性有关。实际上,很多应用程序不需要那种级别的扩展性。对于这部分应用程序,Vert.x的优势在于更加轻量化和应用程序开发方法更新鲜。Vert.x非常轻量级而且简单易用,只需要极少的配置——它是一种与JavaEE完全不同的方式,对于开发人员非常有吸引力,似乎是市场的发展方向。它也可以嵌入到现有的Java应用程序中。

InfoQ:为了充分利用异步的概念,需要特殊的操作系统支持吗?

Tim不需要特殊的操作系统支持。

InfoQ:2013年初,有一些关于Vert.x未来的讨论。关于这点和最终结论,您能稍微告诉我们一些信息吗?

Tim一切都解决的很好。核心Vert.x项目正在移到一个中立实体——Eclipse基金会,不再受任何公司控制——那里有同时属于Red Hat和VMWare的开发人员,作为Eclipse项目的核心开发人员。

商标已经转交给Eclipse,而Eclipase正设法将转交带来的痛苦尽可能降低,例如,该项目可以继续在Github上运行。所以,大部分日常活动将照常进行。转交过程预计在未来的数周内完成。

Tim Fox在2011年开始开发Vert.x,那时他在VMWare工作。现在,作为Red Hat的高级首席软件工程师,他仍然领导着Vert.x项目。

查看英文原文:Tim Fox: What's new in Vert.x 2.0

感谢杨赛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(Tim Fox访谈:Vert.x 2.0有哪些新内容)