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





















