Oracle正在向REST 和 JSON傾斜以使Java EE 適應微服務和云的現(xiàn)代趨勢。
作為一種提供Web服務通信的機制,似乎REST從很久以前就搶過了SOAP的風頭。SOAP 因其復雜性已經(jīng)飽受非議,而REST結合了JSON 和 HTTP,針對Web服務的交付提供了比其更為簡單的手段。
簡短截說,快進到現(xiàn)在,Oracle在它的Java EE升級計劃中正在將REST 和 JSON作為關鍵一環(huán)。在社區(qū)抗議Oracle忽視的企業(yè)平臺之后,該公司去年開始針對微服務和云平臺更新Java EE。在這些計劃中,初步成果為定于今年八月推出的Java EE 8。
“大家現(xiàn)在構建微服務的時候,往往傾向于做成基于REST的,以便向JAX-RS(Java API for RESTful Web Services,針對RESTful Web服務的Java API)靠攏,這個關鍵的規(guī)范正在升級中,”Oracle的產(chǎn)品管理副總裁Mike Lehman說。
JAX-RS要更新為規(guī)范JAX-RS 2.1,它所關注的能力包括:Server-Sent Events (SSE)、JSON-B與上下文的集成以及依賴注入(CDI)。Java EE 8的一個亮點是JAX-RS 2.1,從而可以更容易地進行REST通信,Lehman說它是粗粒度服務之間通信的典型方法,幾乎就是默認選擇。
一名前 Oracle Java EE 傳道者仍積極地認為REST是微服務之錨。
“REST其實是大多數(shù)微服務的關鍵組成部分,”Reza Rahman(他是一個Java EE興趣小組 Java Guardians 的領導者,在CapTech擔任高級架構顧問)說,“因此,JAX-RS 2.1( Java EE 8中的REST API )做了一系列改進。”
在近期的Java開發(fā)人員調(diào)查中,大家交口稱贊針對 Java EE 的REST和微服務。Oracle在去年年底調(diào)查了1700位用戶,發(fā)現(xiàn)REST和HTTP2是 Java EE中最為需求的兩項技術。Oracle在十二月份中的報告稱,大多數(shù)針對這兩項技術的API都已經(jīng)完成了,其中包括JAX-RS 2.1。另外,為更新各種不同的Java規(guī)范提案,Glassfish應用服務器的工作也在進行中,它提供了EE的參考實現(xiàn)。
在一次連帶進行的調(diào)查中,Java EE Guardians和DZone發(fā)現(xiàn)44%的受訪者正在尋求標準化的特性,比如能對微服務架構有所幫助的uber-JARs(特色是Java編程和依賴)、發(fā)現(xiàn)、度量、斷路器和艙壁。而27%的受訪者認為Java已經(jīng)完全適合用于構建實際的微服務了。只有4%的受訪者覺得微服務“不過是個噱頭”。
Java用戶還把 JSON-B放到了一個非常高的優(yōu)先級上,JSON-B是用于綁定JSON的Java API。這個JSON數(shù)據(jù)交換格式提供了在線上格式化數(shù)據(jù)的機制,Lehman說。為此, Java EE 8 的特色將是JSON-B 1.0(用于綁定JSON對象到Java語言),以及提供解析API的JSON-P (JSON with Padding) 1.1。
“程序員編寫一個微服務去調(diào)用另一個微服務,然后以REST訪問載荷數(shù)據(jù)進行處理,這些特性會成為適用于這些程序員的方式,”Lehman說。
雖然HTTP2不是專門面向微服務的,但Java EE 8也針對這個規(guī)范進行了改善,它提供標準的HTTP2 API。
對于云來說,Java EE和Java自身僅僅是云平臺上的運行環(huán)境,Lehman說。“他們需要與公共云平臺進行交互的能力”,比如數(shù)據(jù)庫訪問,他補充道。
Java提供了與這些進行交互的編程API,比如REST 和 JSON。
“我們在Java EE 8中以及任何微服務平臺中所想做的,是確保它們可以輕松與云服務進行交互,存儲、持久層管理和監(jiān)控,如此等等,”Lehman說。
Oracle還有一個 Java EE 9的目標,定于2018年,它的定位是增加可擴展性、獨立的服務和鍵值對存儲支持的能力。不過,Rahman擔心Java EE 9是否得到了正確的關注。
“就我個人而言,對Java EE 9的關注使我擔心我們是不是過早地標準化了還不應被標準化的特性,”Rahman說。他援引了一些特性進行例證,比如動態(tài)配置Java EE應用的新版API、針對OAuth/OpenID 連接的支持、服務健康度檢查,以及基于Java SE 9的模塊化。
然而Lehman并不贊同Rahman對Java EE 9的說法,所以他重申Oracle暫時專注于Java EE 8。“我們正在傾全力推出EE 8,現(xiàn)在這是我們主要的關注點,”他說。
Java EE 的當前版本Java EE 7發(fā)行于2013年6月,它增加了對HTML5的支持。Java EE7支持JAX-RS 2.0,適用于RESTful應用的。