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(),时区没问题则…

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

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

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

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

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

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

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

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

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

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

初级程序员应该怎么办?

你现在工作迷茫?不防看看这几条建议 01、吃透一门编程语言 这个技能看起来似乎没有必要强调,毕竟程序员不懂一种编程语言也说不过去啊。我之所以再次强调是怕你“贪心”,以为技多不压身就拼了命的学很多种编程语言。 有个大二的学生就曾经问我:“你好呀,老哥,有个问题…

【APICloud系列|14】xcode下载地址

下载地址&#xff1a;https://developer.apple.com/download/more/ 这个是使用苹果Mac下载xcode用于上架appstore打包的软件。 Windows的Xcode&#xff1a;在PC上安装Xcode的5种方法 参考帖子&#xff1a;https://blog.csdn.net/qq_36666115/article/details/86485305

kail利用msf工具对MS12-020漏洞进行渗透测试

kail利用msf工具对MS12-020漏洞进行渗透测试 MS12-020全称Microsoft Windows远程桌面协议RDP远程代码执行漏洞 kail利用msf工具对MS12-020漏洞进行渗透测试&#xff1a; 实验环境&#xff1a; 工具&#xff1a;metasploit 靶机两台&#xff1a;windows 7sp1和kali2020 攻…

Spark K-Means

K-Means&#xff08;K均值&#xff09; 介绍 K-Means是被应用的最广泛的基于划分的聚类算法&#xff0c;是一种硬聚类算法&#xff0c;属于典型的局域原型的目标函数聚类的代表。算法首先随机选择k个对象&#xff0c;每个对象初始地代表一个簇的平均值或者中心。对于剩余的每个…

kail利用msf工具对ms17-010(永恒之蓝)漏洞入侵渗透Win7

kail利用msf工具对ms17-010&#xff08;永恒之蓝&#xff09;漏洞入侵渗透Win7 前言&#xff1a; 提到操作系统漏洞&#xff0c;大家肯定听说过耳熟能详的永恒之蓝&#xff08;MS17-010&#xff09;了&#xff0c;他的爆发源于WannaCry勒索病毒的诞生。 该病毒是不法分子利用…

mysql 删除版本信息_linux 删除mysql

写作背景明天项目上线&#xff0c;今天晚上在客户的机房进行网站的部署&#xff0c;在安装mysql的时候出现了一个问题&#xff0c;就是死活安装不上&#xff0c;说已经存在mysql,最后分析错误信息才知道&#xff0c;原来是centos 6.3 自带安装了mysql 5.1&#xff0c;因为我是通…

微信连接WIFI并关注公众号的方法

分享一个改造路由器来实现微信连wifi关注公众已经成为一种高效的引流方法。 前提是先有自己的路由器、认证的公众号&#xff08;服务号或订阅号&#xff09;、开通过门店小程序。 1.进入公众号后以此选择“微信连wifi”→“设备管理”→详情&#xff0c;拿到公众号的三个参数…

kali利用msf工具对ms08-067漏洞入侵靶机(win xp2)

kali利用msf工具对ms08-067漏洞入侵靶机&#xff08;win xp2&#xff09; 漏洞简介 MS08-067漏洞将会影响Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本&#xff0c;甚至还包括测试阶段的Windows 7 Pro-Beta。 如果用户在受影响的系统上收到特制的 RPC 请求&…

tomcat mysql如何优化_Tomcat+Mysql高并发配置优化讲解

1.Tomcat优化配置(1)更改Tomcat的catalina.bat将java变成server模式&#xff0c;增大jvm的内存&#xff0c;在文件开始位置增加setJAVA_OPTS-server -Xms1024m -Xmx2048m -Xss512K -XX:PermSize128m-XX:MaxPermSize256msetCATALINA_OPTS-server -Xms512m -Xmx512m如下图&#x…

DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

最初的界面图如图1-1&#xff08;全选框ID&#xff1a; cb_checkall DEV控件名称&#xff1a;gcCon &#xff09;&#xff1a; 要实现的功能如下图&#xff08;1-2 1-3 1-4&#xff09;及代码所示&#xff1a; 图1-2 图1-3 图1-4 O(∩_∩)O哈哈~ 不要着急哦&#xff0c;看清…

CSDN转载别人文章的操作

说在前面 对于喜欢逛CSDN的人来说&#xff0c;看别人的博客确实能够对自己有不小的提高。有时候看到特别好的博客想转载&#xff0c;但是不能一个字一个字的敲&#xff0c;一张图片一张图片的截图&#xff0c;这样怪麻烦也浪费时间。这时候我们就想转载别人的博客&#xff0c;那…

python编程头文件_python头文件的编程风格

python头文件的编程风格发布时间&#xff1a;2020-09-03 10:23:25来源&#xff1a;亿速云阅读&#xff1a;96作者&#xff1a;小新小编给大家分享一下python头文件的编程风格&#xff0c;希望大家阅读完这篇文章后大所收获&#xff0c;下面让我们一起去探讨吧&#xff01;本文主…

《Code:The Hidden Language Of Computer Hardware and Software》 ——笔记

怎么由逻辑电路实现二进制的加法 首先二进制的加法可以拆解为两个步骤&#xff1a;加与进位。 加法01001110进位01000101加这一步骤可以由异或门来完成&#xff0c;进位这一步骤则可以用与门来完成。 但是由这两个逻辑门只能组成一个半加器&#xff0c;输入2个值&#xff0c;输…

关于一个域名下如何更换网站

说明&#xff1a;建立在有域名、服务器、两个网站的基础之上。 背景&#xff1a; 原来的网站采用的是微企点建站的方式&#xff0c;对于那种拖拉拽不懂编程的人用的&#xff0c;现在自己开发一个更为强大的功能性网站&#xff0c;想把这个新网站替换掉原来的网站&#xff0c;…