【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

Java 微框架:不可忽视的新趋势

  • 2015-06-16
  • 本文字数:1334 字

    阅读完需:约 4 分钟

任何语言都有优缺点。对 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 。感兴趣的读者可以进一步研究。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-16 21:5314529
用户头像

发布了 1008 篇内容, 共 374.9 次阅读, 收获喜欢 341 次。

关注

评论

发布
暂无评论
发现更多内容

量化合约机器人APP开发|量化合约机器人软件系统开发

系统开发

十大经典系统架构设计面试题

程序员石磊

架构 面试 架构设计

1分钟get什么是训练数据

澳鹏Appen

人工智能 机器学习 大数据 数据集

使用Python映射,过滤和缩减函数:所有您需要知道的

华为云开发者联盟

Python 函数 映射 内置函数

使用transform制作书本翻页效果

空城机

JavaScript 大前端 4月日更 书本翻页

MySQL性能监控与调优

Sakura

4月日更

Linux df 命令

一个大红包

linux命令 4月日更

5分钟教你学会GaussDB数据分布策略设计

华为云开发者联盟

数据库 分布式数据库 GaussDB GaussDB(for openGauss) 数据分布

Google Analytics

曦语

数据分析

Kafka源码阅读笔记(1)

InfoQ_Springup

kafka

聪明人的训练(十六)

Changing Lin

4月日更

拍乐云入选 2021 爱分析·产业数字化厂商全景报告

拍乐云Pano

RTC

很坑的Could not transfer artifact报错

01Running

maven Mac IDEA

13年Java开发经验精华总结!29大核心知识模块,带你直达架构师!

Java架构追梦

Java 阿里巴巴 架构 全栈知识点

征服耶鲁教授的算法大神程序媛,是如何践行“以人为本”开发智慧社区大脑的?

华为云开发者联盟

算法 音视频 智慧社区 华为智慧园区数字平台 数字平台

web简易视频聊天室+媒体流插入

anyRTC开发者

大前端 音视频 WebRTC RTC

合约量化交易机器人系统开发|合约量化交易机器人APP软件开发

与同事组队,用 3s 把工作节点打通,建立信赖与协作关系。

叶小鍵

这份阿里P8大佬手写的 “Java核心面试精选” 疯传阿里内网

码农之家

Java 编程 程序员 互联网 面试

百度联合清华,全球首个十亿像素数据集来了!

百度大脑

人工智能 百度

深入浅出带你掌握线程、多线程和线程池

华为云开发者联盟

Java 线程 多线程 线程池 操作系统

vue2的$refs在vue3组合式API中的替代方法

devpoint

Vue3 $refs vue2 this.$refs

量化合约交易机器人系统开发|量化合约交易机器人APP软件开发

系统开发

如何利用ipad随时随地开发代码

程序员石磊

ipad 编程 远程

【LeetCode】删除排序链表中的重复元素Java题解

Albert

算法 LeetCode 4月日更

Rust从0到1-枚举-match控制流

rust 枚举 match

11 个非常实用的 Python 和 Shell 拿来就用脚本实例!

JackTian

Python 程序员 Shell linux运维 脚本语言

合约量化机器人系统开发|合约量化机器人软件APP开发

系统开发

HTTPS双向认证

上海派拉基础研发

https HTTP ssl SSL 连接

我们真的可以使世界成为无密码的地方吗?

龙归科技

网络 安全性

微擎的日志文件保存在哪里?如何查看。

微擎应用商城

Java微框架:不可忽视的新趋势_Java_谢丽_InfoQ精选文章