Java Micro Framework:您无法忽略的新趋势

什么是Java微框架,为什么要使用它们?

Java微框架 每种语言都有权衡。 对于Java,要成为一种安全,经过严格测试,向后兼容的语言,就要在敏捷性和精简性方面做出一些牺牲。 毫无疑问,它有一些冗长和冗长的内容,但是,如果您真的想深入研究或大规模推广,JVM作为后端非常有吸引力。 它功能强大,并已在最恶劣的环境中经过测试。 毕竟,由于某种原因,Java被广泛使用并且可以强力部署。

然而,并不是每个人都接受事物的状态。 有好几个人试图找到解决Java膨胀的方法,并且仍然保持JVM的功能。 第一个浪潮是围绕轻量级Java框架(我们写过其中的一些框架: Dropwizard与Springboot )。 这些为Java提供了轻量级的现代框架,并帮助缩短了开发时间。 现在,最近又出现了第二波浪潮。 那个浪潮是Java微型框架。

新帖:Java Micro Framework:您无法忽略的新趋势http://t.co/l51yQNrzWd pic.twitter.com/v0JAPXfz6Q

— Takipi(@takipid) 2015年6月10日

什么是Java微框架?

随着语言的成熟,每个版本的不可避免的影响是完善的库会不断增长和膨胀。 一点之后,大多数项目实际上不再需要这些库中包含的许多功能。 微型框架正在尝试解决这个问题。 这个想法是创建一个集中的,敏捷的解决方案,使生产过程降至最基本。

微型Java框架本质上是轻量级Java框架之旅的延续。 它们是当今使用Java的最简便的方法。 作为新手,尚未在所有类型的生产环境中部署它们,但是早期的生产部署已显示出巨大的成功。 他们的吸引力很明显,并且这个领域现在充满了兴奋和积极发展。

今天,我将介绍三个可用的更流行的Java微框架:Ninja Framework,Spark和Jodd。

Java微型框架– Github统计信息

Java微型框架– Github统计信息

忍者框架

忍者
Ninja是用于创建Web服务和应用程序的全栈Micro Java框架。 它旨在利用Play和Ruby on Rails的积极方面,并通过纯Java格式交付它们。 它使用MVC概念以简化操作,并具有以一致的方式编写任何大小的应用程序的能力。

作为一个集成的软件堆栈,Ninja附带了许多现成的功能(例如JSON解析,指标支持,HTML渲染),这需要为控制器添加一些注释和定义。 其中许多功能都是基于使Ninja成为对DevOps友好的工具。 这些库的包含使Ninja易于使用。 在可伸缩性方面,Ninja是无状态设计,这使得水平扩展仅需添加服务器即可。

在此功能和易用性之间的权衡是,与该领域的其他一些工具相比,用户选择更少,占用空间更大。 为您选择了开发结构,并自动创建了一组源文件夹和文件。

人气和图书馆:在Github上 ,Ninja撰写本文时拥有809颗星星和288个叉子,与Jodd相当,但在人气上远远落后于Spark。 如果您想贡献,请查看Github页面。 对于HTML渲染,Ninja使用Freemarker。 为了处理JSON和XML,使用了Jackson。 许多核心库由Ninja编写。

入门: Ninja入门非常简单。 它基于Maven,需要Java和Maven才能运行。 Ninja项目通过Maven原型工作,一旦创建,用户就可以使用单个命令来构建新项目。 要启动第一个项目,命令是

mvn archetype:generate -DarchetypeGroupId=org.ninjaframework -DarchetypeArtifactId=ninja-servlet-archetype-simple

输入一些值并移至项目目录后,执行以下操作将在其“ SuperDevMode”中启动Ninja(它将拾取您自动进行的更改):

cd MY_INSTALLED_PROJECT
mvn clean install // to generate the compiled classes the first time
mvn ninja:run // to start Ninja's SuperDevMode

从那里,您可以将项目导入所选的IDE中并开始编码。 有关更多详细信息,请查阅文档 。

要点: Ninja Framework重新设计了Java框架,以提供简单,可伸缩且易于使用的功能。 它提供了许多功能,使用户可以轻松地快速启动和运行。 作为一个完整的堆栈框架,与其他某些选项相比,您确实获得了更大的占用空间和更少的可定制性。

火花

火花
请勿与Apache Spark混淆,此Spark的目的是设计一个纯Java框架,该框架可用于轻松,简单地创建REST API和/或Web应用程序。 Spark是一种敏捷且精简的框架,大小不到1 MB,可用于快速轻松地开发应用程序。 最初受到Sinatra的启发,Spark已发展成为一个完全实现的Web框架,拥有一个敬业的开发人员社区,该社区继续保持活跃的发布周期。

作为一个微框架,Spark决定让用户选择模板引擎来设计其应用程序。 他们提供的灵活选择库使用户可以为他们的项目选择最佳选项,而不会因生态系统细节而陷入困境或学习困难。 并且由于他们专注于提供小尺寸解决方案,因此几乎不需要任何配置或样板。

与其他选项相比,Spark的灵活性和简单性的折衷是其功能较少。 Spark的目标是尽可能地简化和直接,从而省去了许多额外的工作,例如过多的注释和XML配置。 为了超轻量级,它牺牲了一些潜在有用的功能。

入门: Spark入门非常简单。 它需要Java和Maven才能运行。 第一步是添加一个Maven依赖项:

<dependency><groupId>com.sparkjava</groupId><artifactId>spark-core</artifactId><version>2.2</version>
</dependency>

第二步是导入Spark并开始编码:

import static spark.Spark.*;
public class HelloWorld {public static void main(String[] args) {get("/hello", (request, response) -> "Hello World!");}
}

有关更多详细信息,请查阅文档 。

人气和图书馆:在Github上,截至撰写本文时,Spark拥有2398个星星和542个分支,使其轻松成为我今天在这里重点介绍的三个框架中最受欢迎的框架。 如果您想贡献,请查看Github页面。 Spark提供的灵活性的一部分不是将用户锁定在特定的库中。 例如,对于HTML渲染,可以使用Freemarker,Mustaches,Velocity,Jade,Handlebars,Pebble或Water。 对于您要使用的任何对象,都添加一个Maven依赖项进行设置。

总结: Spark消除了许多Java膨胀,并提供了一个简单而灵活的Web框架,该框架易于设置,可用于创建各种Java项目。 但是,通过细化,您确实会失去一些功能,因此Spark对于大型Web应用程序不是理想的选择。

乔德

乔德

Jodd是Java的微型框架,工具和实用程序的集合,因此它可能无法直接与此处的其他同类工具进行比较。 实际上,例如,Spark可能会作为Jodd的一部分包含在内。 但是Jodd的驱动力是减少许多Java工具和框架的占用空间并降低其运行速度,并提供多种超轻量级框架和工具。 Jodd不会将它们全部组合在一个单独的应用程序中,而是将每个库分解成自己的独立块,从而允许用户选择并选择他们所使用的库。

乔德(Jodd)已经存在了一段时间,在那段时间里,他们只要发现需要就构建了轻量级的工具和实用程序。 通过使工具和框架保持分离并以松散的形式提供它们,Jodd可以为每个单独的零件保留极为集中的范围。 它们具有用于处理请求,用于DI容器,用于解析HTML5等的框架。 像这样的集合似乎违反了简化的微框架的想法,但是整个捆绑包的容量不到1.5 MB,因此占用空间很小。

与乔德(Jodd)的权衡是,它还没有为您完成。 库集合中提供了大多数功能,但是您必须动手并自行设置。 可定制性为用户提供了很多控制和灵活性,但是使用起来却不那么容易。 幸运的是,每个单独的工具既简单又小巧,因此深入研究代码不需要费力地摸索。 Jodd站点上的文档还提供了一些指导和最佳实践。

入门: Jodd是使用Gradle构建的,并且针对Java 1.5及更高版本。 由于Jodd是工具的集合,因此入门并不像其他工具那么简单。 一种选择是下载Jodd软件包以获取所有模块。 另一种选择是通过Git从源代码构建Jodd。 为此,
克隆Jodd Git存储库:

git clone https://github.com/oblac/jodd.git jodd

然后使用以下命令构建项目:

gradlew build

您也可以在Maven中安装Jodd。 为此,请使用以下命令:

gradlew install

有关不同模块的更多详细信息以及如何使用它们的一些示例,请查阅Jodd的文档 。

知名度和图书馆:在Github上 ,Jodd撰写时拥有837颗星星和243个分支,使其与Ninja相当,但远远落后于Spark。 如果您想贡献,请查看Github页面。 Jodd是实用程序,框架和工具的集合,因此它使用的库是自己的。

总结: Jodd是非常专注且轻量级的框架和工具的集合。 用户可以通过多种方式组合这些库,以获取仍可提供许多功能的定制解决方案。 但是,通过将每个元素分解为不同的部分,用户有责任潜入并按照自己的需要进行一切设置。

结论

Java微型框架是尝试在保持Java优势的同时解决其弱点的尝试。 他们专注的裸露方法允许非常轻便的应用程序部署,从而帮助开发人员将JVM的功能与更新,更快的语言的敏捷性相结合。

作为较新的开发,定义什么才是Java微型框架可能是一个意见问题。 根据你想如何定义来看,有几个人可以包括和探索,如JHipster , Javalite , Ratpack和Vert.x 。 如果您过去使用过微框架,请在下面的评论部分中告诉我们您对微框架的看法。

翻译自: https://www.javacodegeeks.com/2015/06/java-micro-frameworks-the-new-trend-you-cant-ignore.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot mysql时区设置_java/springboot/mysql时区问题解决方案

解决步骤&#xff1a;先理清楚逻辑数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回给前端或者页面-->展示第一步:先查mysql所以先进入mysql控制台&#xff0c;select now(),时区没问题则…

无法获取签名信息,请上传有效包(110506)

此篇文章将要介绍安卓App提交应用商店时遇到的两个小问题的相关介绍&#xff0c;具体代码请看下文 陆陆续续做了一个半月左右的「喵呜天气」终于在今天下午成功提交到应用商店&#xff08;腾讯应用宝&#xff09;。期间遇到两个小问题&#xff0c;记录如下&#xff1a; 1、上…

工作一个月有感

一年前的自己肯定想不到现在的工作内容&#xff0c;那时候的自己还抱着 effective c&#xff0c;刷着 leetcode&#xff0c;准备实习生面试呢。我一直以为自己毕业后要做 c 服务器端开发&#xff0c;而现在已与当初的想法越走越远了&#xff0c;我把书架上 c 的书收了起来&…

mysql 数据如何存储,MySQL如何存储数据

I looked around google but didnt find any good answers. Does it store the data in one big file? What methods does it use to make data access quicker them just reading and writing to a regular file?解决方案Does it store the data in one big file?Some DBMS…

openshift_红帽Openshift:入门–云中的Java EE6

openshift现在有一段时间&#xff0c;我正在研究“云”。 研究它的功能&#xff0c;它可以做什么&#xff0c;为什么我们应该切换到“云”&#xff0c;进行交谈&#xff0c;与Realmaolmen的云专家maartenballiauw等人交谈。 我已经在Google App Engine&#xff08;用于Java&…

【APICloud系列|10】最新苹果APP上架App Store流程(超详细)

2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好,app能正常运行再上架

.Net面试经验,从北京到杭州

首先简单说下&#xff0c;本人小本&#xff0c;目前大四软件工程专业&#xff0c;大三阴差阳错地选了.Net方向&#xff0c;也是从大三开始接触.Net。自认为在学生中.net基础还可以&#xff0c;嘿嘿&#xff0c;吹一下。 大四第一学期学校安排去北京培训&#xff0c;培训了两个月…

proxifier访问https错误_教你实现IE访问https网站不出错方法

不同的系统出现的问题是不一样的&#xff0c;有小伙伴在电脑账打开我们的网站的时候发现不能正常的打开我们的电脑出现&#xff0c;是否只查看安全传送的网页内容的错误的提示&#xff0c;那我们遇到这个问题应该怎么处理访问https网站呢&#xff0c;今天小编就来跟大家分享一下…

Gradle入门:集成测试

因为Java项目的标准项目布局仅定义了一个测试目录&#xff08; src / test &#xff09;&#xff0c;所以我们没有将集成测试添加到Gradle构建中的标准方法。 如果要使用标准项目布局&#xff0c;则可以使用以下选项之一将集成测试添加到Gradle构建中&#xff1a; 我们可以将…

【APICloud系列|11】使用APPuploader申请ios开发证书及ios发布证书教程

开发证书用于app测试。申请ios开发证书 发布证书用于上架。ios发布证书 我开发的APP使用APICloud,简单走一下编译的流程&#xff0c;然后直接上架到APP store.完整的开发&#xff0c;window电脑&#xff0c;安卓手机&#xff0c;苹果手机&#xff0c;mac电脑还是很有必要的。…

orchard mysql_如何在Orchard CMS 1.3.10中使用MySQL数据库?

您正在讨论的错误是因为DatabaseOptions属性是一个布尔值。您需要更改该属性以接受字符串值。安装控制器中有一些地方需要更改该属性的使用方式...但是&#xff0c;最重要的部分是实现DataServicesProvider。我将我添加到核心&#xff0c;但我认为你可以把它作为一个功能放在设…

UIButton-初识IOS

今天&#xff0c;我学到了所有app经常用到的UIButton控件&#xff0c;废话不多说&#xff0c;这些都是我学习的时候总结的一些&#xff0c;希望可以帮到以后的初学者&#xff0c;IOS初学不应该直接拖拽&#xff0c;感觉不易于理解&#xff0c;所以我总结的基本上全是纯代码编辑…

【APICloud系列|12】ios真机调试时如何添加新设备的udid?

很多开发者在真机调试测试ios应用时,会看到需要添加udid,搞不清这个是什么东西应该怎么获取。 udid就是手机的一个串号,相当于手机的身份证,具有唯一性。 下面介绍如何获取udid并添加到开发者中心后台。 有两种方式可以获取udid ios app真机调试到上架App Store完整…

python rtf转txt_将DOC、RTF格式文件批量转为TXT格式文件

Windows 下将目录下所有文件下的文件 拷贝到一个目录中&#xff1a;搜索"."安装python 及 win32com模块 pip install pypiwin32创建LDA_RTF_TXT.pyfrom glob import globimport shutilimport osimport warningswarnings.filterwarnings(actionignore,categoryUserWar…

记录常用工具

查看没有用过的资源 Improving Your Code with lint 转载于:https://www.cnblogs.com/a0000/p/4443712.html

UA Web挑战会议:针对初创公司的SpringIO

在本周&#xff0c;我在“后端”部分的UA Web挑战会议上发表了讲话。 我在演讲中选择了一个奇怪的话题-“面向初创企业的SpringIO”。 结果是什么&#xff1f; 我将在下面总结。 在过去三年中&#xff0c;我开发了各种个人Web项目。 我再也没有称它们为“初创企业”&#xff0…

前端开发必备的1个CSS框架

常言道&#xff1a;工欲善其事&#xff0c;必先利其器&#xff0c;项目紧&#xff0c;框架还是很有必要的。 1. Bootstrap 最初被称为Twitter Blueprint的Bootstrap&#xff0c;是作为内部团队使用的工具而创建的。它是最著名的前端框架之一。自公开发布以来&#xff0c;Boot…

C语言杂记1

C语言杂记 注意signed int 与 unsigned int 之间的比较&#xff0c;与运算因为当int 型变量为-1时很可能被升级成无符号整型&#xff0c;就导致取反1这种运算的产生&#xff0c;出现无法控制的很大的数。 malloc(strlen(str))绝对错误地语句&#xff0c;考虑字符串需要1. NULL …

python 小说分析_谁还没看过几本金庸小说?用Python分析一下当年最爱看的主角是谁...

jieba用起来非常简单&#xff0c;短短几行代码就完成了分词工作(下图)&#xff0c;可是...仔细一看发现哪里不对了“段誉”作为一个姓名没有被单独分出来&#xff0c;而是和其他一些动词连在一起&#xff0c;另外也有一些角色名字被拆分成了两个甚至更多的单词&#xff0c;例如…

【APICloud系列|13】移动端适配通揽

一、为什么要移动端适配? 一般情况下设计稿的设计师按照 375 的尺寸设计,然而,在现在移动终端(就是手机)快速更新的时代,每个品牌的手机都有着不同的物理分辨率,这样就会导致,每台设备的逻辑分辨率也不尽相同,此时 375 的设计稿,如果想要还原那基本是不可能了,因为如…