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