天天看點

AOM 2.0 M2版本融入IoVC程式設計思想和Elite語言

Apusic OperaMasks(簡稱AOM)是由OperaMasks.org組織(由金蝶中間件公司建立的一個獨立的非盈利性法人實體)所提供的開箱即用的Web Framework,它以JSF為基礎引擎,輔以獨創的原生Ajax技術,同時提供豐富的元件和內建開發環境,使Web開發變得簡單友善。其網站上是這樣描述AOM的:

無論是背景的事務、存儲、分布式計算等基礎服務,還是前端的UI展現與使用者互動,以及背景與前端的會話過程,Apusic OperaMasks都提供了完整的解決方案,有效解決Web開發所面臨的問題:
  • 開箱即用:使用Apusic OperaMasks進行Web開發,開發人員隻需掌握基礎的J2EE知識!
  • 引擎:提供标準的JSF引擎,JSF是已經得到業界認同的一種主流元件技術,能夠很容易适應各種未來需求的變化,其精髓就是“與表現層無關的表現層技術”;
  • 原生Ajax支援:從容器級别對Ajax予以支援,對Apusic OperaMasks使用者來說,要使應用具備Ajax特性,付出的成本是零;
  • Rich Component:Apusic OperaMasks提供給使用者豐富的Rich Components,使用者可以用各種元件來組織資料、展現資料、編輯資料;
  • 開發工具:提供開發工具Apusic Studio的支援,“所見即所得”的可視化設計,一體化的開發、配置、部署、調試、監控的內建開發環境;
  • 跨浏覽器支援:Apusic OperaMasks完全相容業界主流浏覽器,如IE、Firefox等;
  • 開源社群:所有源碼甚至是開發過程自身,全部通過OperaMasks.org開放,代表了J2EE社群開放和靈活的力量!

3月28日AOM釋出了2.0 M2版本,InfoQ中文站在29日CSDN舉辦的軟體技術英雄會期間與其技術總監張勇進行了交流,并就AOM的現狀及未來發展對他進行了采訪。

AOM所要解決的問題是什麼?

如果将網站基于BS架構的分成兩類,第一類是以資訊浏覽為主要的,比如搜狐、新浪這樣的,我們稱之為Web Site;第二類是以BS架構為載體,但所承載的是一種應用,強調的是客戶和系統之間的高互動性,他有非常複雜的操作和流程邏輯,我們将這種應用稱為Web Application。而AOM就是适合做Web Applicationd的一種工具。

為什麼AOM要選擇JSF作為基礎架構?

這是一個機緣巧合的問題,之是以選擇JSF,這是由金蝶當初的定位決定的。作為一家J2EE伺服器提供廠商,在通過了Java EE 5.0認證之後,那麼金蝶就需要有JSF的實作,因為JSF已經是Java EE 5.0的一部分。在做JSF的時候,我們認識到JSF的優雅之處,但是也感覺到其過于理想化和不現實的地方,這也是那些批評JSF的人所引以為诟病的地方。JSF是一個伺服器端程式設計模型,而AJAX是用戶端的,後來袁紅崗創造性地用Render Kit将JSF和AJAX結合起來,應用在AOM中。其實AJAX并沒有什麼什麼創新之處,開發人員在做AJAX應用的時候還是要寫大量的JS代碼。而AOM解決了這個問題,通過JSF的Render将AJAX進行封裝,對開發人員透明,進而隻需要關注業務邏輯。這也是J2EE Without AJAX這個口号的由來。現在通過AOM,你可以做到應用基于JSF,但同時具備AJAX特性。

為什麼JSF沒有形成主流?

第一JSF規範沒有得到業界的接受。因為在規範的制定上,JSF是基于HTTP的,一個很簡單的Hello World示例,都需要傳遞幾十K的位元組,而我們一個普通的Hello World應用幾K就可以了。這一點導緻了JSF沒有迅速成為主流。第二是Java世界已經有了很多可以解決類似問題的架構。

AOM如何克服JSF的弊端?為什麼AOM并沒有被更多人所接納?金蝶在AOM方面有沒有可以分享的案例?

我們對規範的細節做了改進。在狀态方面我們花了很大的力氣來消除狀态。在JSF規範裡面狀态是有6步的,而AOM裡面又多加了一步Build Tree。在生命周期這一部分做了動作。現在這個資料的傳輸量就比較小。

雖然現在我們在JSF之上做了很多的擴充,但基本沒有違背JSF這個規範。至于日後AOM是否要脫離JSF,發展成一個獨立的解決方案,還是繼續遵循JSF,我們在考慮,但還沒有做最終的決定。我們希望其他更多的個人和企業參與到這個決定中來。

至于AOM為什麼目前沒有被更多人所接納,我認為有兩個因素,第一個因素是推廣力度不夠;第二是國人對國人自己的民族軟體還缺乏信任。

在網上我們已經放了一些關于 使用AOM的案例;金蝶規劃的下一代ERP産品會考慮基于JSF來設計。

為什麼AOM是開源的架構,但是卻隻放在自己的網站上,而沒有放在大家更為常用的國際性的網站,如SourceForge上等?AOM采取的是什麼開源協定?

之是以放在自己的網站上是因為當時考慮到在國内通路SourceForge等這樣的網站速度很慢,而且穩定性也不是特别好。而我們自己的網絡環境比較好,另外大部分開發人員是金蝶自己的員工。其實AOM的CVS是對外公開的,我們很希望有更多的人能夠參與進來,而不是成為金蝶一家公司的事情。

而且,我們也沒有提供比較好的英文文檔,因為我們的團隊裡面絕大部分人員都是中國人,雖然有一些海歸人士,但是使用的語言還是中文,這是我們比較欠缺的地方。另外因為開發上的壓力比較大,是以在文檔化方面做的并不理想。即使我們将AOM國際化了,我在也沒有能力在國際上去推廣。我們計劃在08年7月份正式走向國際化,有可能會任命一個國際化産品經理。

AOM現在采用的是 LGPL。從前是GPL,但因為有很多廠商不習慣用這個協定,即自己在AOM之上做了開發要必須将自己的源代碼再次公開,限制比較多。是以現在改用LGPL了。

AOM下一步打算做哪些事情?

最近我們釋出了一個裡程碑式的版本,也就是AOM 2.0M2,包含以下新的特點:
  1. 元件更加豐富。不僅有Tree、Table等這些常用的元件,還有各種各樣的布局元件。要知道在HTML裡面寫布局是非常麻煩的,Table、DIV等嵌來嵌去,很羅嗦,通過我們提供的布局元件可以很好地解決這些問題。
  2. AOM 2.0裡面融入了我們新的程式設計思想——IoVC(Inversion of View-Control,即“視圖控制反轉”,換言之:它能夠把對“View【即 UI 視圖】的控制力”注入到你的背景業務邏輯中。這樣一來,你在編寫業務邏輯的過程中,對View擁有足夠的控制力,進而能夠将展現層與業務邏輯完全的解耦),這是我們想着重強調的。通過這個程式設計思想,能夠讓你的整個系統可維護性和可擴充性得到顯著增強。
  3. 然後就是和Elite這個語言的結合,這是一個集指令式和函數式風格為一身的面向對象的程式設計語言,既有高階函數(first-class functions)、清單推導(list-comprehension)、模式比對(pattern-matching)、延時求值(lazy-evaluation)等函數式語言所具有的語言特征,又具有和Java相近的文法結構。
  4. 最後就是對AOM 2.0從前的一些不足之處做得修正。

另外,AOM 2.0M2中包含了一個Apusic Studio 5.1 M5,它是一個All In One的版本。

由于2.0裡面包括了很多創新性的地方,目前我們不會在上面再做創新,而是要将2.0穩定下來。我們現在在規劃3.0,比如是否要往Web Site方面努力,以及是否要讓 ELite和AOM有更好的結合等。

如果想進一步了解Apusic OperaMasks,可以從他們的網站上閱讀更多的資訊。

繼續閱讀