按照MicroProfile路線圖的未來規(guī)劃,后續(xù)的MicroProfile 1.3版計劃在2017年12月15日發(fā)布,會新增下列API:
Open Tracing 1.0一種跨越不同微服務(wù)的分布式追蹤系統(tǒng)(類似Zipkin),可用于解決延遲問題。TypeSafe REST Client 1.0一種可供消耗REST服務(wù)的類型安全方式。MicroProfile 2.0計劃在2018年3月31日發(fā)布,將包含對下列Java EE 8 API的升級:
JSON-B 1.0 JSON-P 1.1 CDI 2.0 JAX-RS 2.1MicroProfile自從2016年9月發(fā)布時,就承諾將在Java中采用微服務(wù)。有關(guān)此次發(fā)布最新版的詳細(xì)信息可參閱MicroProfile 1.2規(guī)范。
IBM CDI和MicroProfile開發(fā)主管Emily Jiang,以及Payara公司Java中間件顧問Michael Croft向InfoQ介紹了本次發(fā)布的新版本。
InfoQ:你們對于新增的EE4J項(xiàng)目有何看法?
Emily Jiang:新增的EE4J項(xiàng)目是開源領(lǐng)域一個了不起的創(chuàng)新。所有社區(qū),包括由于許可條款限制而無法使用Java EE TCK的社區(qū),都能從中獲益。該項(xiàng)目已經(jīng)盡可能保持敏捷、靈活、開放、兼容,Java開發(fā)者當(dāng)然是最大的受益者。希望該項(xiàng)目的新版發(fā)布節(jié)奏可以進(jìn)一步加快,借此徹底終結(jié)Java EE四年甚至五年為單位的發(fā)布周期。TCK的開放可以讓所有應(yīng)用程序服務(wù)器獲益,尤其是原本因?yàn)樵S可費(fèi)用緣故,未能進(jìn)行TCK認(rèn)證的程序。
希望能有越來越多的Java容器和框架社區(qū)以開放和公開為背景展開合作,與Java開發(fā)者進(jìn)行更坦率的交流。每個開發(fā)者都能對項(xiàng)目做貢獻(xiàn),提出或討論問題。我很看好新的EE4J項(xiàng)目,并且希望繼續(xù)為項(xiàng)目的發(fā)展貢獻(xiàn)自己的力量。
Michael Croft:我本人對此很激動,我覺得過去多年來,業(yè)界發(fā)生的很多事情已經(jīng)證明了開源軟件的力量,尤其是類似Oracle和IBM這樣的重量級選手也開始投身社區(qū)工作。對于JSF,一些專家組成員已經(jīng)提出要以社區(qū)的力量推動相關(guān)規(guī)范繼續(xù)發(fā)展。對于EE4J,入門的門檻已經(jīng)大幅降低,我們已經(jīng)通過郵件列表和GitHub獲得了大量的反饋。
InfoQ:在EE4J的貢獻(xiàn)中,你們覺得MicroProfile扮演了什么角色?
Jiang:MicroProfile已經(jīng)誕生多年。在一年時間里,已經(jīng)成功發(fā)布了MicroProfile 1.0(CDI 1.2、JAX-RS 2.0、JSON-P 1.0)、MicroProfile 1.1(Config 1.0)和MicroProfile 1.2(Config 1.1、Fault Tolerance 1.0、Health 1.0、Metrics 1.0和JWT 1.0)。已經(jīng)發(fā)布的規(guī)范為Java EE提供了眾望所歸的微服務(wù)開發(fā)功能。例如Config JSR是JCP在十多年前提出的,但提出之后除了兩次失敗的嘗試,從來沒被接受過。
與之相對的,MicroProfile Config只用了幾個月就公開發(fā)布了,并且獲得了大量反饋。MicroProfile社區(qū)很有創(chuàng)新精神,完全是由開發(fā)者推動的,一切都維持開放和透明。這里取得的所有成果都為敏捷、開放、靈活和兼容設(shè)立了絕佳的典范。在類似目標(biāo)以及Eclipse的推動下,未來的EE4J也將能輕松接納MicroProfile技術(shù)。
Croft:圍繞MicroProfile的諸多努力都是為了以更快的節(jié)奏實(shí)現(xiàn)創(chuàng)新。從最開始,MicroProfile的目標(biāo)就在于獨(dú)立發(fā)展,同時依然維持與Java EE的密切關(guān)系,畢竟MicroProfile是基于Java EE API發(fā)展起來的。
MicroProfile的角色早已通過MicroProfile開發(fā)出的第一個API彰顯出來了:配置(Config),在最初公布了要遷移至Eclipse之后,該API就以JSR的形式順利提交。很明顯,這兩個項(xiàng)目可以通過很多方式相互關(guān)聯(lián),不過目前依然保持了這樣的形式。
我覺得,MicroProfile已經(jīng)具備繼續(xù)發(fā)展所需的一切。它已經(jīng)在很大程度上實(shí)現(xiàn)了與Java EE/EE4J的兼容,而MicroProfile發(fā)展出的任何規(guī)范都會直接提交至EE4J。
InfoQ:隨著MicroProfile 1.3的發(fā)布,Open Tracing API 1.0和Open API 1.0能為大家?guī)硇┦裁矗?/strong>
Jiang:MicroProfile Open Tracing定義了一種追蹤微服務(wù)請求跨越服務(wù)邊界流動的模型。請求在多個服務(wù)之間流動,這是微服務(wù)架構(gòu)中一種常見的情況。這個規(guī)范定義了一種基于opentracing.io的API,并定義了相關(guān)的行為,可以讓服務(wù)輕松參與到啟用了分布式追蹤的環(huán)境中。該規(guī)范還定義了一種更簡單的方法,可以讓微服務(wù)通過注釋使用分布式追蹤能力。此外該規(guī)范還提供了一個很棒的功能,可以讓JAX-RS應(yīng)用程序無需更改代碼,即可自動參與到分布式追蹤工作中。
MicroProfile Open API主要是為了提供一個統(tǒng)一的Java API,該API由OpenAPI v3規(guī)范定義,所有 應(yīng)用程序開發(fā)者都可以使用它暴露自己的API文檔。由于OpenAPI v3規(guī)范本身是語言中立的,因此基于Java的Open API也可直接被應(yīng)用程序服務(wù)器所采用。這個規(guī)范基于SmartBear的Swagger庫,而SmartBear也是MicroProfile成員。MicroProfile Open API規(guī)范還將進(jìn)一步完善API,以更好地滿足微服務(wù)開發(fā)需求。
除了MicroProfile Open Tracing API和Open API,MicroProfile最近還創(chuàng)建了另一個規(guī)范:MicroProfile REST Client,計劃將與MicroProfile 1.3一同發(fā)布。該規(guī)范提供了一種類型安全的方法,可通過HTTP調(diào)用RESTful服務(wù)。這個規(guī)范主要側(cè)重于REST客戶端,目的在于簡化客戶端的創(chuàng)建,而客戶端與服務(wù)器之間的通信可由服務(wù)器應(yīng)用程序處理。
Croft:在最近一次的“兩周電話討論”中,還真的討論過這一點(diǎn)。MicroProfile 1.3目前計劃在12月發(fā)布,并通過狀態(tài)報告幫助每個項(xiàng)目了解截止期限信息。目前與OpenAPI的情況類似,OpenTracing和Typesafe REST Client API很可能會包含在即將發(fā)布的新版中。OpenAPI規(guī)范相當(dāng)龐大,因此主要的挑戰(zhàn)還在于TCK。該規(guī)范本身可以兼容由Swagger發(fā)起的第3版OpenAPI規(guī)范,很多開發(fā)者其實(shí)已經(jīng)熟悉它了。
Typesafe REST Client主要是為了向開發(fā)者提供一種類型安全的方法,通過定義到程序的接口來使用遠(yuǎn)程REST服務(wù)。具體目的與OpenAPI規(guī)范有些重合,但圍繞這一領(lǐng)域的所有重要討論都已被延后到1.0版發(fā)布之后。此外還有一個領(lǐng)域可能有待討論:需要通過某種方式從OpenAPI定義生成REST客戶端接口,這樣才能更自然地融入現(xiàn)有工具中。
最后,OpenTracing讓MicroProfile獲得了OpenTracing標(biāo)準(zhǔn),并可兼容諸如Zipkin或Jaeger等追蹤方面的實(shí)現(xiàn)。
InfoQ:Java SE新的發(fā)布周期是否會影響MicroProfile和/或EE4J的開發(fā)?
Jiang:Java SE提速后的新發(fā)布周期會對MicroProfile和EE4J的開發(fā)產(chǎn)生非常積極的影響,這意味著我們新制定或更新的規(guī)范也可以快速用上新增的最新版Java SE功能。目前MicroProfile的編程模型要求至少具備Java 8,一些很棒的功能,例如FunctionalInterface、默認(rèn)的接口實(shí)現(xiàn)等已經(jīng)廣泛應(yīng)用在MicroProfile規(guī)范中。
Croft:我們的客戶圍繞Java SE有很多問題,但這些問題主要與Payara Server或Payara Micro有關(guān)。我覺得,Java SE可以通過相同的方式做出改變,并且對EE4J和MicroProfile的實(shí)現(xiàn)產(chǎn)生遠(yuǎn)大于規(guī)范本身的影響。
然而MicroProfile最初的目標(biāo)在于創(chuàng)新,著眼于未來,因此我希望在2018年能圍繞Java SE的變化展開一些討論,畢竟Java 8將于明年9月壽終正寢,而Java 11(目前的叫法)將成為新的LTS版本。
InfoQ:你們覺得Java 9什么時候可以兼容MicroProfile?
Jiang:我們還沒有在MicroProfile的GoogleGroup上討論過這個問題。對于Java 9,一個重要問題在于,由于發(fā)布周期加快為六個月,可能無法獲得像Java 8那么長的支持時間。因此以后的情況還無法確定。這也會對MicroProfile產(chǎn)生一定的影響。MicroProfile什么時候能夠采納Java 9,這取決于諸如Open Liberty、Wildfly Swarm、TomEE以及Payara等應(yīng)用程序服務(wù)器什么時候能支持Java 9。
Croft:與Java 9+的兼容主要是實(shí)現(xiàn)方面的問題,畢竟已經(jīng)有很多現(xiàn)有的模塊系統(tǒng),例如Payara Server中的OSGi以及其他一些系統(tǒng)。我懷疑對于Java 9可能不會有官方的支持了,因?yàn)镴ava 9并不是LTS版本,因此對后續(xù)Java版本的官方支持可能會從9月開始選擇Java 11。
InfoQ:您目前在IBM主要負(fù)責(zé)什么?也就是說,您的日常工作具體在做些什么?
Jiang:作為IBM的MicroProfile開發(fā)主管兼CDI架構(gòu)師,我會積極參與有關(guān)MicroProfile的討論并從事與各種規(guī)范有關(guān)的工作。同時我還負(fù)責(zé)管理該規(guī)范在Open Liberty中的具體實(shí)現(xiàn)方式。我還管理著MicroProfile Config和Fault Tolerance規(guī)范的開發(fā),并參與了其他規(guī)范,例如Metrics、Health、REST Client、Open Tracing等的相關(guān)工作。作為MicroProfile社區(qū)有影響力的成員,我還盡可能完善整個社區(qū)的工作方式,以確保MicroProfile保持敏捷和精益。我十分看好MicroProfile編程模型,并在很多會議(Devoxx US、Devoxx UK、JAX London、Voxxed Belgrade、EclipseCon Europe)上推廣MicroProfile,并就如何在后續(xù)版本中進(jìn)行改進(jìn)收集反饋。此外我還是Configuration JSR共同規(guī)范的負(fù)責(zé)人,主要負(fù)責(zé)MicroProfile Config現(xiàn)有成果的標(biāo)準(zhǔn)化工作,并確保Config JSR和MicroProfile Config的同步,借此Config JSR的新功能也可以盡快實(shí)現(xiàn)到MicroProfile Config中。
InfoQ:那么Croft您目前在Payara主要承擔(dān)什么職責(zé),日常工作都在做些什么?
Croft:我的職責(zé)非常廣泛!目前我擔(dān)任Payara支持團(tuán)隊(duì)的主管,因此首要職責(zé)主要圍繞我們的客戶,其次是整個社區(qū)。我有幸能與我自己團(tuán)隊(duì),以及我們公司開發(fā)團(tuán)隊(duì)中一些非常天才的人以及專職人員共事。我們會共同為產(chǎn)品提供商業(yè)支持,寫文檔和博客文章,在會議上發(fā)言,為MicroProfile社區(qū)做貢獻(xiàn),提供社區(qū)支持,方方面面都包括在內(nèi)!雖然工作很繁忙,但能獲得大量用戶的反饋也讓我們覺得獲益匪淺。
參考資料
Java EE的未來,問答David Blevins:Eclipse Foundation、EE4J和MicroProfile,InfoQ發(fā)布(2017年10月20日) 借助Eclipse MicroProfile加快對Java微服務(wù)的采用,InfoQ發(fā)布(2017年11月8日) Eclipse MicroProfile:對輕量級現(xiàn)代化Enterprise Java平臺的探索,作者:就職于Devoxx Belgium的Mike Croft(2017年11月9日) 構(gòu)建彈性微服務(wù)?你需要的是Eclipse MicroProfile Fault Tolerance!,作者:Emily Jiang(2017年11月16日)閱讀英文原文:What's New in MicroProfile 1.2