Java模塊化,OSGi,以及Azure云計算
對Java的模塊化概念、歷史、來龍去脈進行了很好的介紹。了解模塊化的重要性,區(qū)分編譯時和運行時模塊化的差別,構(gòu)建自己的Plugins來擴展系統(tǒng),JSR 277(現(xiàn)已廢止)到JSR 291,Java 7將是模塊化的。
使用OSGi來理解模塊化的概念,是很好的OSGi入門示例。重點是帶版本的依賴,使得多版本同時運行成為可能,為模塊進化提供了基礎(chǔ)。
精彩的就是這篇動態(tài)模塊化。
只要servlet引擎沒有保持對老版應(yīng)用的引用,這些類就像其他Java對象一樣被垃圾回收器回收了。——可能這是平臺支撐熱部署的關(guān)鍵。
通過查找和綁定,使得每次動態(tài)獲得服務(wù)的引用,確保不會保持老版本的服務(wù)對象。實現(xiàn)的方式可以是context.getService(getServiceReference("java.sql.Driver")),或者用ServiceTracker來實現(xiàn),使用ServiceTracker來管理服務(wù)依賴通常被認(rèn)為是管理關(guān)系的好方法。還可以對服務(wù)的屬性進行過濾,以便選擇所需的服務(wù)。
通過OSGi實現(xiàn)邏輯分離,通過CXF實現(xiàn)物理分離,再用ASF將OSGi和CXF統(tǒng)一成服務(wù),實現(xiàn)可配置的動態(tài)部署。
JSR-294引入了新的可見性關(guān)鍵字“module”,意味著模塊化成為語言特性,模塊之間的可見性限制將會由編譯器來負(fù)責(zé)檢查。
依賴、部署時依賴、可選依賴、依賴沖突,或許模塊之間的關(guān)系就是相互依賴的關(guān)系。
感覺整個Java都在向模塊化發(fā)展,大量的第三方基于OSGi的創(chuàng)新正在不斷涌現(xiàn),新的規(guī)范甚至包括WAB,所以,我們的產(chǎn)品內(nèi)部使用OSGi是完全沒有問題的。
同時,要和其他的應(yīng)用打交道,則要通過WS-*,這是我們表現(xiàn)出完全開放性的一面。
云計算終于來了,不知道是否真的便宜?
Windows Azure Platform是微軟完整的云計算平臺,目前包含了如下3大部分:
- Windows Azure:即運行在云中的一個操作系統(tǒng),對于用戶來說是虛擬且透明的,其中提供了一系列底層服務(wù)。
- SQL Azure:運行于云中的一個關(guān)系數(shù)據(jù)庫,和SQL Server 2008基本一致。
- AppFabric:全名是Windows Azure platform AppFabric,提供了訪問控制、服務(wù)總線等服務(wù),用于把基礎(chǔ)應(yīng)用連接到云中。
云操作系統(tǒng) + 云數(shù)據(jù)庫 + 云平臺,其實,我們提供的ASF+ORG+AC等,相當(dāng)于Azure的云平臺。
Google 的BigTable則是Google的云數(shù)據(jù)庫,Google還多一個云操作系統(tǒng)GFS。
【趙斌原創(chuàng),保留一切權(quán)利,轉(zhuǎn)載請保留引用:www.aygfsteel.com/zhaobin,注明轉(zhuǎn)載除外,謝謝!】