Jooby框架簡(jiǎn)化Java Web開(kāi)發(fā)流程
譯文【51CTO.com快譯】說(shuō)起Web開(kāi)發(fā)工作,Ruby擁有Sinatra框架而Node.js擁有Express.js。如今,Java也擁有了自己的微Web框架——Jooby。
作為Edgar Espina開(kāi)發(fā)出的成果,Jooby提供模塊化無(wú)狀態(tài)應(yīng)用程序開(kāi)發(fā)機(jī)制,且能夠使用包括Netty、Jetty以及Undertow在內(nèi)的多種NIO(即非阻塞IO)服務(wù)器。
根據(jù)Espina的說(shuō)法,Jooby的核心取向在于“簡(jiǎn)化”。“盡管Java是一種簡(jiǎn)單而易于學(xué)習(xí)的編程語(yǔ)言,但利用Java構(gòu)建Web應(yīng)用程序則是一項(xiàng)艱巨的挑戰(zhàn),”他通過(guò)一封郵件指出。“Java社區(qū)已經(jīng)做出大量工作,旨在簡(jiǎn)化Web應(yīng)用程序的開(kāi)發(fā)流程……然而相較于Ruby或者Node,利用Java開(kāi)發(fā)Web應(yīng)用程序仍然比較困難。Jooby的出現(xiàn)正是為了彌合這一空白,并通過(guò)提供客觀、簡(jiǎn)單且易于學(xué)習(xí)的微Web框架簡(jiǎn)化Java環(huán)境下的Web開(kāi)發(fā)任務(wù)。”
Jooby的核心在于模塊,這些模塊的構(gòu)建目的在于從外部庫(kù)中提取功能。“這些模塊非常精簡(jiǎn)且能夠通過(guò)多種方式對(duì)外部庫(kù)進(jìn)行引導(dǎo)與配置,但它們并不會(huì)帶來(lái)新的抽象層或者通過(guò)定制化API實(shí)現(xiàn)庫(kù)內(nèi)功能的訪問(wèn)。相反,它們可以直接依原樣對(duì)各類庫(kù)組件進(jìn)行提取,”Espina表示。“這也是Jooby與其它Java Web框架之間的***差別所在。”
Jooby提供多種默認(rèn)選項(xiàng)以解決應(yīng)用程序開(kāi)發(fā)工作中的各類典型問(wèn)題,例如數(shù)據(jù)庫(kù)訪問(wèn)、驗(yàn)證、會(huì)話、模板引擎以及電子郵件等等。這使其擁有極為出色的易用性,Espina指出,“但與此同時(shí),它也擁有相當(dāng)優(yōu)秀的靈活性與模塊化程度,經(jīng)驗(yàn)豐富的用戶能夠?qū)⒉煌K進(jìn)行混合與匹配,從而滿足自身實(shí)際需要甚至編寫自己的整合方案。”
Jooby當(dāng)中的無(wú)狀態(tài)應(yīng)用程序開(kāi)發(fā)機(jī)制使其能夠在不造成任何重大影響的前提下實(shí)現(xiàn)規(guī)模擴(kuò)展,特別是在開(kāi)發(fā)人員配合頭/JWT(即JSON Web Token)驗(yàn)證機(jī)制構(gòu)建REST API的情況下。當(dāng)然,在某些用例當(dāng)中,開(kāi)發(fā)人員可能需要保存用戶信息。“對(duì)于這類用例,大家可以使用HTTP會(huì)話,”Espina解釋稱。
Jooby提供一套內(nèi)存內(nèi)HTTP會(huì)話,但開(kāi)發(fā)人員也可以選擇其它不同后端,例如Redis、HazelCast以及MongoDB。該HTTP會(huì)話的設(shè)計(jì)傾向?yàn)楸M可能精簡(jiǎn),同時(shí)要求開(kāi)發(fā)人員認(rèn)真考量是否要加以使用,因?yàn)槠渲辉试S匹配原語(yǔ)與字符串這兩類數(shù)據(jù)。
這套框架擁有兩套編程模式。其一為腳本編程模式,在這里開(kāi)發(fā)人員能夠?qū)?yīng)用程序定義并編寫為單一文件。而對(duì)于大型且復(fù)雜度較高的應(yīng)用程序,Jooby支持MVC。“在這里,大家可以將自己的應(yīng)用程序拆分為多個(gè)層,并創(chuàng)建一個(gè)或者多個(gè)控制器類,”Espina告訴我們。
Jooby面世至今已經(jīng)有大約18個(gè)月了,而其1.0.0正式版本預(yù)計(jì)將在今年年初發(fā)布。面向Java 8以及更高版本,Jooby還能夠與Nashorn項(xiàng)目協(xié)作,這意味著我們可以將Jooby擴(kuò)展至JavaScript開(kāi)發(fā)領(lǐng)域。“這是一套Java框架,因此其始終運(yùn)行在JVM之上; 但從開(kāi)發(fā)人員的角度來(lái)看,它也可以作為一套JavaScript框架發(fā)揮作用,”Espina指出,他還計(jì)劃在未來(lái)逐步加入對(duì)其它JVM語(yǔ)言的支持能力。
原文標(biāo)題:Jooby framework simplifies Java Web development
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】