Java Micro Framework:您无法忽略的新趋势
什么是Java微框架,為什么要使用它們?
每種語(yǔ)言都有權(quán)衡。 對(duì)于Java,要成為一種安全,經(jīng)過(guò)嚴(yán)格測(cè)試,向后兼容的語(yǔ)言,就要在敏捷性和精簡(jiǎn)性方面做出一些犧牲。 毫無(wú)疑問(wèn),它有一些冗長(zhǎng)和冗長(zhǎng)的內(nèi)容,但是,如果您真的想深入研究或大規(guī)模推廣,JVM作為后端非常有吸引力。 它功能強(qiáng)大,并已在最惡劣的環(huán)境中經(jīng)過(guò)測(cè)試。 畢竟,由于某種原因,Java被廣泛使用并且可以強(qiáng)力部署。
然而,并不是每個(gè)人都接受事物的狀態(tài)。 有好幾個(gè)人試圖找到解決Java膨脹的方法,并且仍然保持JVM的功能。 第一個(gè)浪潮是圍繞輕量級(jí)Java框架(我們寫(xiě)過(guò)其中的一些框架: Dropwizard與Springboot )。 這些為Java提供了輕量級(jí)的現(xiàn)代框架,并幫助縮短了開(kāi)發(fā)時(shí)間。 現(xiàn)在,最近又出現(xiàn)了第二波浪潮。 那個(gè)浪潮是Java微型框架。
新帖:Java Micro Framework:您無(wú)法忽略的新趨勢(shì)http://t.co/l51yQNrzWd pic.twitter.com/v0JAPXfz6Q
— Takipi(@takipid) 2015年6月10日
什么是Java微框架?
隨著語(yǔ)言的成熟,每個(gè)版本的不可避免的影響是完善的庫(kù)會(huì)不斷增長(zhǎng)和膨脹。 一點(diǎn)之后,大多數(shù)項(xiàng)目實(shí)際上不再需要這些庫(kù)中包含的許多功能。 微型框架正在嘗試解決這個(gè)問(wèn)題。 這個(gè)想法是創(chuàng)建一個(gè)集中的,敏捷的解決方案,使生產(chǎn)過(guò)程降至最基本。
微型Java框架本質(zhì)上是輕量級(jí)Java框架之旅的延續(xù)。 它們是當(dāng)今使用Java的最簡(jiǎn)便的方法。 作為新手,尚未在所有類型的生產(chǎn)環(huán)境中部署它們,但是早期的生產(chǎn)部署已顯示出巨大的成功。 他們的吸引力很明顯,并且這個(gè)領(lǐng)域現(xiàn)在充滿了興奮和積極發(fā)展。
今天,我將介紹三個(gè)可用的更流行的Java微框架:Ninja Framework,Spark和Jodd。
Java微型框架– Github統(tǒng)計(jì)信息
忍者框架
Ninja是用于創(chuàng)建Web服務(wù)和應(yīng)用程序的全棧Micro Java框架。 它旨在利用Play和Ruby on Rails的積極方面,并通過(guò)純Java格式交付它們。 它使用MVC概念以簡(jiǎn)化操作,并具有以一致的方式編寫(xiě)任何大小的應(yīng)用程序的能力。
作為一個(gè)集成的軟件堆棧,Ninja附帶了許多現(xiàn)成的功能(例如JSON解析,指標(biāo)支持,HTML渲染),這需要為控制器添加一些注釋和定義。 其中許多功能都是基于使Ninja成為對(duì)DevOps友好的工具。 這些庫(kù)的包含使Ninja易于使用。 在可伸縮性方面,Ninja是無(wú)狀態(tài)設(shè)計(jì),這使得水平擴(kuò)展僅需添加服務(wù)器即可。
在此功能和易用性之間的權(quán)衡是,與該領(lǐng)域的其他一些工具相比,用戶選擇更少,占用空間更大。 為您選擇了開(kāi)發(fā)結(jié)構(gòu),并自動(dòng)創(chuàng)建了一組源文件夾和文件。
人氣和圖書(shū)館:在Github上 ,Ninja撰寫(xiě)本文時(shí)擁有809顆星星和288個(gè)叉子,與Jodd相當(dāng),但在人氣上遠(yuǎn)遠(yuǎn)落后于Spark。 如果您想貢獻(xiàn),請(qǐng)查看Github頁(yè)面。 對(duì)于HTML渲染,Ninja使用Freemarker。 為了處理JSON和XML,使用了Jackson。 許多核心庫(kù)由Ninja編寫(xiě)。
入門(mén): Ninja入門(mén)非常簡(jiǎn)單。 它基于Maven,需要Java和Maven才能運(yùn)行。 Ninja項(xiàng)目通過(guò)Maven原型工作,一旦創(chuàng)建,用戶就可以使用單個(gè)命令來(lái)構(gòu)建新項(xiàng)目。 要啟動(dòng)第一個(gè)項(xiàng)目,命令是
mvn archetype:generate -DarchetypeGroupId=org.ninjaframework -DarchetypeArtifactId=ninja-servlet-archetype-simple輸入一些值并移至項(xiàng)目目錄后,執(zhí)行以下操作將在其“ SuperDevMode”中啟動(dòng)Ninja(它將拾取您自動(dòng)進(jìn)行的更改):
cd MY_INSTALLED_PROJECT mvn clean install // to generate the compiled classes the first time mvn ninja:run // to start Ninja's SuperDevMode從那里,您可以將項(xiàng)目導(dǎo)入所選的IDE中并開(kāi)始編碼。 有關(guān)更多詳細(xì)信息,請(qǐng)查閱文檔 。
要點(diǎn): Ninja Framework重新設(shè)計(jì)了Java框架,以提供簡(jiǎn)單,可伸縮且易于使用的功能。 它提供了許多功能,使用戶可以輕松地快速啟動(dòng)和運(yùn)行。 作為一個(gè)完整的堆棧框架,與其他某些選項(xiàng)相比,您確實(shí)獲得了更大的占用空間和更少的可定制性。
火花
請(qǐng)勿與Apache Spark混淆,此Spark的目的是設(shè)計(jì)一個(gè)純Java框架,該框架可用于輕松,簡(jiǎn)單地創(chuàng)建REST API和/或Web應(yīng)用程序。 Spark是一種敏捷且精簡(jiǎn)的框架,大小不到1 MB,可用于快速輕松地開(kāi)發(fā)應(yīng)用程序。 最初受到Sinatra的啟發(fā),Spark已發(fā)展成為一個(gè)完全實(shí)現(xiàn)的Web框架,擁有一個(gè)敬業(yè)的開(kāi)發(fā)人員社區(qū),該社區(qū)繼續(xù)保持活躍的發(fā)布周期。
作為一個(gè)微框架,Spark決定讓用戶選擇模板引擎來(lái)設(shè)計(jì)其應(yīng)用程序。 他們提供的靈活選擇庫(kù)使用戶可以為他們的項(xiàng)目選擇最佳選項(xiàng),而不會(huì)因生態(tài)系統(tǒng)細(xì)節(jié)而陷入困境或?qū)W習(xí)困難。 并且由于他們專注于提供小尺寸解決方案,因此幾乎不需要任何配置或樣板。
與其他選項(xiàng)相比,Spark的靈活性和簡(jiǎn)單性的折衷是其功能較少。 Spark的目標(biāo)是盡可能地簡(jiǎn)化和直接,從而省去了許多額外的工作,例如過(guò)多的注釋和XML配置。 為了超輕量級(jí),它犧牲了一些潛在有用的功能。
入門(mén): Spark入門(mén)非常簡(jiǎn)單。 它需要Java和Maven才能運(yùn)行。 第一步是添加一個(gè)Maven依賴項(xiàng):
<dependency><groupId>com.sparkjava</groupId><artifactId>spark-core</artifactId><version>2.2</version> </dependency>第二步是導(dǎo)入Spark并開(kāi)始編碼:
import static spark.Spark.*; public class HelloWorld {public static void main(String[] args) {get("/hello", (request, response) -> "Hello World!");} }有關(guān)更多詳細(xì)信息,請(qǐng)查閱文檔 。
人氣和圖書(shū)館:在Github上,截至撰寫(xiě)本文時(shí),Spark擁有2398個(gè)星星和542個(gè)分支,使其輕松成為我今天在這里重點(diǎn)介紹的三個(gè)框架中最受歡迎的框架。 如果您想貢獻(xiàn),請(qǐng)查看Github頁(yè)面。 Spark提供的靈活性的一部分不是將用戶鎖定在特定的庫(kù)中。 例如,對(duì)于HTML渲染,可以使用Freemarker,Mustaches,Velocity,Jade,Handlebars,Pebble或Water。 對(duì)于您要使用的任何對(duì)象,都添加一個(gè)Maven依賴項(xiàng)進(jìn)行設(shè)置。
總結(jié): Spark消除了許多Java膨脹,并提供了一個(gè)簡(jiǎn)單而靈活的Web框架,該框架易于設(shè)置,可用于創(chuàng)建各種Java項(xiàng)目。 但是,通過(guò)細(xì)化,您確實(shí)會(huì)失去一些功能,因此Spark對(duì)于大型Web應(yīng)用程序不是理想的選擇。
喬德
Jodd是Java的微型框架,工具和實(shí)用程序的集合,因此它可能無(wú)法直接與此處的其他同類工具進(jìn)行比較。 實(shí)際上,例如,Spark可能會(huì)作為Jodd的一部分包含在內(nèi)。 但是Jodd的驅(qū)動(dòng)力是減少許多Java工具和框架的占用空間并降低其運(yùn)行速度,并提供多種超輕量級(jí)框架和工具。 Jodd不會(huì)將它們?nèi)拷M合在一個(gè)單獨(dú)的應(yīng)用程序中,而是將每個(gè)庫(kù)分解成自己的獨(dú)立塊,從而允許用戶選擇并選擇他們所使用的庫(kù)。
喬德(Jodd)已經(jīng)存在了一段時(shí)間,在那段時(shí)間里,他們只要發(fā)現(xiàn)需要就構(gòu)建了輕量級(jí)的工具和實(shí)用程序。 通過(guò)使工具和框架保持分離并以松散的形式提供它們,Jodd可以為每個(gè)單獨(dú)的零件保留極為集中的范圍。 它們具有用于處理請(qǐng)求,用于DI容器,用于解析HTML5等的框架。 像這樣的集合似乎違反了簡(jiǎn)化的微框架的想法,但是整個(gè)捆綁包的容量不到1.5 MB,因此占用空間很小。
與喬德(Jodd)的權(quán)衡是,它還沒(méi)有為您完成。 庫(kù)集合中提供了大多數(shù)功能,但是您必須動(dòng)手并自行設(shè)置。 可定制性為用戶提供了很多控制和靈活性,但是使用起來(lái)卻不那么容易。 幸運(yùn)的是,每個(gè)單獨(dú)的工具既簡(jiǎn)單又小巧,因此深入研究代碼不需要費(fèi)力地摸索。 Jodd站點(diǎn)上的文檔還提供了一些指導(dǎo)和最佳實(shí)踐。
入門(mén): Jodd是使用Gradle構(gòu)建的,并且針對(duì)Java 1.5及更高版本。 由于Jodd是工具的集合,因此入門(mén)并不像其他工具那么簡(jiǎn)單。 一種選擇是下載Jodd軟件包以獲取所有模塊。 另一種選擇是通過(guò)Git從源代碼構(gòu)建Jodd。 為此,
克隆Jodd Git存儲(chǔ)庫(kù):
然后使用以下命令構(gòu)建項(xiàng)目:
gradlew build您也可以在Maven中安裝Jodd。 為此,請(qǐng)使用以下命令:
gradlew install有關(guān)不同模塊的更多詳細(xì)信息以及如何使用它們的一些示例,請(qǐng)查閱Jodd的文檔 。
知名度和圖書(shū)館:在Github上 ,Jodd撰寫(xiě)時(shí)擁有837顆星星和243個(gè)分支,使其與Ninja相當(dāng),但遠(yuǎn)遠(yuǎn)落后于Spark。 如果您想貢獻(xiàn),請(qǐng)查看Github頁(yè)面。 Jodd是實(shí)用程序,框架和工具的集合,因此它使用的庫(kù)是自己的。
總結(jié): Jodd是非常專注且輕量級(jí)的框架和工具的集合。 用戶可以通過(guò)多種方式組合這些庫(kù),以獲取仍可提供許多功能的定制解決方案。 但是,通過(guò)將每個(gè)元素分解為不同的部分,用戶有責(zé)任潛入并按照自己的需要進(jìn)行一切設(shè)置。
結(jié)論
Java微型框架是嘗試在保持Java優(yōu)勢(shì)的同時(shí)解決其弱點(diǎn)的嘗試。 他們專注的裸露方法允許非常輕便的應(yīng)用程序部署,從而幫助開(kāi)發(fā)人員將JVM的功能與更新,更快的語(yǔ)言的敏捷性相結(jié)合。
作為較新的開(kāi)發(fā),定義什么才是Java微型框架可能是一個(gè)意見(jiàn)問(wèn)題。 根據(jù)你想如何定義來(lái)看,有幾個(gè)人可以包括和探索,如JHipster , Javalite , Ratpack和Vert.x 。 如果您過(guò)去使用過(guò)微框架,請(qǐng)?jiān)谙旅娴脑u(píng)論部分中告訴我們您對(duì)微框架的看法。
翻譯自: https://www.javacodegeeks.com/2015/06/java-micro-frameworks-the-new-trend-you-cant-ignore.html
總結(jié)
以上是生活随笔為你收集整理的Java Micro Framework:您无法忽略的新趋势的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微信拉手是什么意思 什么是微信拉手
- 下一篇: openshift_红帽Openshif