原文: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。感兴趣的读者可以进一步研究。

Java微框架:不可忽视的新趋势--转载的更多相关文章

  1. java web框架发展的新趋势--跨界轻型App

    “跨界(cross over)在汽车界已然成风,将轿车.SUV.跑车和MPV等多种不同元素融为一体的混搭跨界车型,正在成为汽车设计领域的新趋势.从个人而言,当包容.多元的审美要求和物质要求越来越强烈时 ...

  2. [转载] Java集合框架之小结

    转载自http://jiangzhengjun.iteye.com/blog/553191 1.Java容器类库的简化图,下面是集合类库更加完备的图.包括抽象类和遗留构件(不包括Queue的实现): ...

  3. 现如今,最热门的13个Java微服务框架

    曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...

  4. Java微服务框架一览

    引言:本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架. 微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大.更复杂的应用程序,而这 ...

  5. [转载]Java集合框架的常见面试题

    http://www.jfox.info/40-ge-java-ji-he-lei-mian-shi-ti-he-da-an 整理自上面链接: Java集合框架为Java编程语言的基础,也是Java面 ...

  6. 34、Java集合框架List,Map,Set等全面介绍(转载)

      Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构.   Java集合框架的基本接口/类层次结构: java.util.C ...

  7. java基础复习-自定义注解4(结合JDBC技术,打造类表映射微框架)

    写在前面: 1.该框架为自己所写的第一个框架类产品,可能有着许多不足的地方,读者可以到评论区指出.同时,该微框架的源码也会开源至博客中,够后来的学习者借鉴.由于该框架逻辑结构稍些复杂,不可能花大量篇幅 ...

  8. Java集合框架和数组的排序(转载)

    Java集合框架(*Collection)*和数组的排序 ​ 根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还 ...

  9. 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)

    原文链接:http://www.cnblogs.com/outlooking/p/5243415.html 设置步骤如下: 1.点 “window”-> "Preferences&qu ...

随机推荐

  1. 浅谈Spark(1) - Overview

    Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点:但不同于MapReduce的是 ...

  2. Java基础 —— HTML

    HTML:超文本标记语言(HyperText Markup Language) --> 最基础的网页语言 基本结构: <html> //HTML文件的开始 <head> ...

  3. Python 读取文件下所有内容、获取文件名、截取字符、写回文件

    # coding=gbk import os import os.path   #读取目录下的所有文件,包括嵌套的文件夹 def GetFileList(dir, fileList): newDir ...

  4. Unity3D Persistent Storage

    [Unity3D Persistent Storage] 1.PlayerPrefs类以键值对的形式来提供PersistentStorage能力.提供小额存储能力.(做成sst可以提供大规模数据存储) ...

  5. Python基础 基本运算符

    什么是操作符 形如 1+1 = 2 这样的 1 就是操作数 + 就是操作符 python语言支持的操作符: 算数运算符 比较运算符(关系) 赋值运算符 逻辑运算符 位运算符 会员操作符 标志操作符 算 ...

  6. POJ 3659 Cell Phone Network (树dp)

    题目链接:http://poj.org/problem?id=3659 给你一个树形图,一个点可以覆盖他周围连接的点,让你用最少的点覆盖所有的点. dp[i][0]表示用i点来覆盖,dp[i][1]表 ...

  7. HDU 5777 domino (排序,水题)

    题意:小白在玩一个游戏.桌子上有n张多米诺骨牌排成一列.它有k次机会,每次可以选一个还没有倒的骨牌,向左或者向右推倒.每个骨 牌倒下的时候,若碰到了未倒下的 骨牌,可以把它推倒.小白现在可以随意设置骨 ...

  8. JS鼠标滚动事件

    -----------------------------//鼠标滚动事件以下是JS临听鼠标滚动事件 并且还考虑到了各浏览器的兼容----------------------------------- ...

  9. Linux下查看文件和文件夹大小的df和du命令

        转自:http://www.yayu.org/look.php?id=162 当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比 ...

  10. 【Python实战02】共享Python代码到PyPI社区

    之前学习了Python的列表,以及编写了一个函数来进行列表的输出,这次我们就继续来学习如何把我们已经编写好的代码共享到PyPI社区,这里以上篇文章中编写的print_lol函数为例. 函数转换为模块 ...