原文:http://www.infoq.com/cn/news/2015/06/Java-Spark-Jodd-Ninja?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

任何语言都有优缺点。对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还列出了其它一些框架,包括JHipsterJavaliteRatpackVert.x。感兴趣的读者可以进一步研究。

最新文章

  1. js 中文乱码解决方法
  2. DNS解析过程
  3. 看过《大湿教我写.net通用权限框架(1)之菜单导航篇》之后发生的事(续)——主界面
  4. null 之AddAll、Add和Boolean
  5. 9款经典华丽的CSS3分享按钮
  6. HUFFMAN 树
  7. c++,extern “c”
  8. gitflow 在windows下的安装方法
  9. [译]TCP和UDP的区别
  10. [线性筛]P1865 A % B Problem
  11. hive权威指南<一>
  12. 使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)
  13. javascript小记一则:今天在写VS2005——.NET程序时,写的一个JS图片示例案例
  14. mac IDE输入光标变成块状 改为竖线
  15. linux CentOS 安装 nginx
  16. 三、CSS样式——链接
  17. ORACLE重装之后恢复数据库,相当于sqlserver的附加数据库
  18. Android动态添加Fragment
  19. mysql 超时时间
  20. git将本地内容传送到远程仓库出现![rejected] master -> master (fetch first)错误

热门文章

  1. (转)PHP开发框架浅析
  2. Azure Cloud中的Log4Net设置
  3. tableView 显示区域偏移
  4. es6转码器-babel
  5. jquery让一个点击事件刷新页面就自己执行一次的方法
  6. 游戏模块分析总结(2)之UI、操作篇
  7. AutoCAD.NET二次开发错误集锦
  8. HDU1963Investment(DP)
  9. magiczoom 插件去版本(放大镜效果)
  10. ActiveMQ集成到Spring