Java微框架:不可忽视的新趋势
任何语言都有优缺点。对Java而言,它安全、经过严格测试、向后兼容,但却牺牲了部分灵活性和简洁性。于是,有人就尝试寻找方法,以便能规避Java的臃肿,同时又利用JVM的强大功能。 第一波努力围绕轻量级Java框架展开 ,而现在,第二波努力已经出现,即Java微框架。近日,软件分析公司Takipi 探讨 了这一新趋势。
随着语言的成熟,每次发布都会增加一些库。时间一久,对于大部分项目而言,包含在这些库中的许多功能都不是它们真正需要的。微框架就是要解决这个问题,其思想是:创建一个专用而又灵活的解决方案,满足生产过程的基本需求。
Java微框架是轻量级Java框架的延续。它们可能是当今最轻量级的Java开发方式。虽然目前应用范围有限,但已经有在生产环境中成功部署的案例。Josh Dreyfuss来自Takipi的产品营销部门, 他介绍了三种当前较为流行的Java微框架。
Ninja 是一个用于创建Web Service和应用程序的全栈Java微框架。它综合 Play 和Ruby on Rails的优点,并以纯Java格式提供。作为一个综合性软件栈,Ninja提供了大量开箱即用的功能,如JSON解析、HTML渲染,使得它简单易 用。在扩展性方面,Ninja采用了无状态设计,只需要增加服务器就可以实现横向扩展。不过,内置大量功能和简单易用的代价是,用户选择减少,工具本身占 用空间较大。总之,Ninja重新设计了Java框架,提供了简单、可扩展、易于使用的功能。感兴趣的读者可以查看Ninja的 入门教程 。
Spark (注意不要同Apache Spark混淆)的设计初衷是,可以简单容易地创建REST API或Web应用程序。它是一个灵活、简洁的框架,大小只有1MB。Spark允许用户自己选择设计应用程序的模板引擎以及选择最适合他们项目的库,比 如,HTML解析功能就有Freemarker、Mustaches、Velocity、Jade、Handlebars、Pebble或Water等选 项可供选择,而且很少需要配置或样板文件。不过,灵活简单的代价是,用户可选的功能减少。总之,Spark剔除了许多Java的臃肿之物,提供了一个最小 化的、灵活的Web框架。但由于精简程度较高,它缺少了一些功能,不适合用于大型Web应用程序的开发。感兴趣的读者可以查看Spark的 入门教程 。
Jodd 是一个Java微框架、工具和公用程序的集合。所以,它同上面两个框架可能不具有直接可比性,比如,Spark可以作为Jodd的一个组件。Jodd的目 标是减少许多Java工具和框架的空间占用,提高它们的速度,提供一个超级轻量级的框架和工具精选集合。Jodd中的每个库都是单独提供的,用户可以选择 使用。这样一个提供若干功能的框架集合似乎与微框架背道而驰,但实际上,Jodd大小总共不过1.5MB。总之,Jodd是一个框架和工具的集合,用户可 以对它们自由组合,形成自己的解决方案。但同时,这种灵活性也增加了使用的复杂度。感兴趣的读者可以查看Jodd的 入门教程 。
下面是上述三种框架的流行度对比:
此外,Dreyfuss还列出了其它一些框架,包括 JHipster 、 Javalite 、 Ratpack 和 Vert.x 。感兴趣的读者可以进一步研究。