漫步云端 Java開發(fā)者的新選擇
原創(chuàng)【51CTO快譯】近年來Web 2.0,AJAX,SaaS和SOA這些詞已經(jīng)沒那么流行了。這一陣子的熱點叫做“云計算”。所有人都在談?wù)撛谠贫私?yīng)用程序或往云端轉(zhuǎn)移。找工作的時候,簡歷上的“熟悉云計算”或“精通云計算 ”也變得很吃香。
什么是云?
每個人對云的定義各自不同。我個人的理解是,從事非IT行業(yè)相關(guān)的公司,將其IT部分托管給專門的IT公司來做。由于他們自己不做IT,將其托管是可以理解的。另外,從事應(yīng)用程序開發(fā)的公司,他們的重點在開發(fā)而非提供運行應(yīng)用程序的設(shè)施及平臺。由于開發(fā)人員和IT設(shè)施管理人員分工不同,此類公司將IT部分托管也是可以理解的。簡而言之就是,你將你的東西托管在其他公司上運行。原來是有專門的托管公司,而現(xiàn)在,托管公司的職責(zé)逐漸被云基礎(chǔ)設(shè)施所替代。云相對于托管公司的好處在于其彈性,當(dāng)應(yīng)用程序快速提高需求時云也能夠很快適應(yīng)。欲了解更加深入的了解云計算,可以參考本站的云計算專題。
云服務(wù)提供方
有了亞馬遜EC2,你可以在虛擬機中安裝你想要的一切。EC2提供了許多,但你仍然需要安裝操作系統(tǒng),網(wǎng)絡(luò)服務(wù)器,網(wǎng)絡(luò)或應(yīng)用程序容器,數(shù)據(jù)庫,以及你部署應(yīng)用程序所需準(zhǔn)備的一切。它提供一個虛擬機,而你所需要做的就是管理這個虛擬機中的一切。很有彈性,同時也有全面管理所面臨的風(fēng)險。對于云中的Java來說再合適不過。
我認(rèn)為Sun也會參與到這競爭中來,因為他們的網(wǎng)格計算應(yīng)用程序的網(wǎng)站Network.com現(xiàn)在的改版信息就寫著“Network.com正在改版中,我們正在添加一些令人振奮的新選擇?,F(xiàn)在我們還未準(zhǔn)備好要展示我們的工作,不過我們歡迎來自您的建議與意見。有問題請隨時聯(lián)系我們。”這是有道理的,因為他們了解硬件,擁有Solaris,擁有Java,還有MySQL。
有了Google App Engine ,你無需使用虛擬機,也無需安裝并管理操作系統(tǒng),軟件和數(shù)據(jù)庫。到目前為止你還只能用Python在上面編程,而數(shù)據(jù)的提取和存儲則通過DataStore(永久有效的服務(wù))。你負(fù)責(zé)開發(fā)和部署你的應(yīng)用程序。你還擁有Google賬號,如Gmail等。不用操作系統(tǒng),服務(wù)器和數(shù)據(jù)庫,但是現(xiàn)在還限于Python和DataStore,由此導(dǎo)致現(xiàn)在的它還不是Java開發(fā)的選擇。不過未來可能會支持更多的語言,最近有消息稱Google下月發(fā)重大新品,App Engine或?qū)⒅С諮ava。Google似乎對Python的喜愛超過Java。Sun也在嘗試將Python整合進來,它找了兩個Python開發(fā)者來開發(fā)Jython,通過它可以在JVM上運行Python。不管怎樣,希望Google會將Java帶到自己的引擎上——不行的話至少也有Jython。
微軟Azure則純粹是微軟的技術(shù)了。Azure是一個開發(fā)、托管及管理的環(huán)境,配合微軟Visual Studio的工具來協(xié)助可伸縮服務(wù)的創(chuàng)造,建設(shè),調(diào)試,運行以及包裝。一段時間內(nèi)它都與Java無緣。
Force.com為Salesforce.com CRM應(yīng)用程序服務(wù),限定在其私有的Apex語言及Visualforce(表現(xiàn)層)。注意:Salesforce.com是一個SaaS(軟件即服務(wù)),F(xiàn)orce.com是針對Salesforce.com CRM應(yīng)用的PaaS(平臺即服務(wù))。SAP的Business ByDesign則是僅僅是SaaS。
Heroku限定使用Ruby on Rails,一款由Amazon EC2支持的語言。
可能有所遺漏,但以上清單中,只有Amazon EC2支持云中的Java。不過,Amazon EC2是一個IaaS(基礎(chǔ)設(shè)施即服務(wù)),還不是PaaS。所以我們需要找一個PaaS,以便于我們從管理OS,服務(wù)器以及網(wǎng)絡(luò)和應(yīng)用的容器中解放出來,專心在Java的開發(fā)中。一個名為Stax的新產(chǎn)品能夠一定程度上解決這個問題。
Java的PaaS提供者
Stax是一款針對Java的PaaS,基礎(chǔ)支持則是亞馬遜EC2??梢詫⑵湎胂蟪蒅oogle應(yīng)用程序引擎,不過是用Java和MySQL數(shù)據(jù)庫。Stax僅限Java,其目的在于令Java的開發(fā),部署以及調(diào)整更加快速,而且你可以將應(yīng)用程序部署在亞馬遜基礎(chǔ)設(shè)施上,而非Stax自己所提供的。Stax提供了建議的測試及生產(chǎn)的部署環(huán)境,一個本地開發(fā)模型,而且和現(xiàn)有的開發(fā)工具,框架及進程都融合的很好。其中包含了內(nèi)置的應(yīng)用程序模板,有流行的Java技術(shù)如Stuts,GWT,Wicket,JRuby on Rails,Jython等——但還不止如此。你可以通過Stax SDK將任意一個可以在網(wǎng)絡(luò)容器中運行的應(yīng)用程序部署于此。本地的Stax運行時是一個安裝設(shè)置十分方便的環(huán)境,并為你的應(yīng)用程序的包裝及部署提供了一些工具。應(yīng)用程序模板不過是將一些常用或有趣的配置整理到一起,使開發(fā)過程更加快速的手段之一。開發(fā)者可以隨自己需求添加配置文件以及原本默認(rèn)模板中沒有的庫。測試版期間的Stax是免費的。
云的特性及局限——Stax可以做什么?
將現(xiàn)有應(yīng)用程序移至云端
運行現(xiàn)有的應(yīng)用程序取決于該應(yīng)用程序的“云友好”程度。Stax并沒有打算取代普遍應(yīng)用托管。Stax將重點放在彈性應(yīng)用程序上,這些應(yīng)用的需求可以通過計算資源的迅速改變而得到滿足。這就是說任意一個應(yīng)用實例可以隨意的來,隨意的走。這便為應(yīng)用程序無差別的設(shè)置了一些設(shè)計限制,其中最大的兩個是:
◆應(yīng)用程序無法依賴于本地文件系統(tǒng)以實現(xiàn)其持久性
◆應(yīng)用程序需要避免依賴本地服務(wù)器的記憶狀態(tài)(除了caching in,這種情況下的應(yīng)用只需要設(shè)計為當(dāng)緩存丟失時從一個如DB的固定地點恢復(fù)緩存即可)
這就意味著現(xiàn)有的應(yīng)用都將與Stax環(huán)境不兼容,不過Stax的創(chuàng)建者兼CEO,Spike Washburn表示說“這樣具有伸縮性的編程手法將是應(yīng)用程序的開發(fā)所需要的,因為無論在大環(huán)境的云上還是在私人的虛擬數(shù)據(jù)中心上,彈性基礎(chǔ)設(shè)施的使用正在與日俱增。
Java應(yīng)用在云中的監(jiān)測,報告,調(diào)試和支持
由于應(yīng)用程序是你開發(fā)的,所以你不需要調(diào)試支持。云需要為開發(fā)者提供一種功能,即有關(guān)他們程序運行所在的服務(wù)器的情況。就此,他們需要如報告/分析和監(jiān)測/警報的API。這樣,開發(fā)者的調(diào)試工作變得更加簡便,并且對應(yīng)用程序運行的狀況也可以了如指掌,以便在第一時間做出反應(yīng)。當(dāng)然了,無論何時,開發(fā)者都需要了解他們自己應(yīng)用程序的內(nèi)部細(xì)節(jié),所以日志就變成調(diào)試工作中無比重要的一部分。Washburn在交談中說到,他們很快將推出監(jiān)測/警報API,并計劃提供更多功能和支持。
在其他應(yīng)用程序服務(wù)器上的部署
Stax在設(shè)計上提供的Java網(wǎng)絡(luò)容器(Tomcat)是與彈性計算云合成一體的。Stax的目標(biāo)是幫助開發(fā)者達(dá)到應(yīng)用程序部署靈活性的一個新的高度,這樣不光方便了應(yīng)用程序在彈性PaaS上部署所需要進行的向上或向下的調(diào)整,而且對于開發(fā)者而言,這種靈活性也方便他們將應(yīng)用程序部署在他們自己的應(yīng)用程序容器中。除了支持這種端到端的應(yīng)用程序生命周期外,Stax還可以用于應(yīng)用程序生命周期其中一部分的支持。比如說,在現(xiàn)在這個眾人投往云端的趨勢下,有些企業(yè)仍然不愿將整個生產(chǎn)線搬到云端上來,但是打算做一些小規(guī)模的開發(fā)以作測試用,所以,應(yīng)用程序在兩種環(huán)境下必須都能夠運行(在Stax上測試,在他們自己的服務(wù)器環(huán)境上做生產(chǎn))。
J2EE應(yīng)用程序以及應(yīng)用程序容器
目前為止,Stax還沒有提供選擇應(yīng)用程序服務(wù)器實現(xiàn)的自由。只有Tomcat網(wǎng)絡(luò)容器。
Spring,JBoss Seam,JSF以及其他
只要能夠在網(wǎng)絡(luò)容器中運行的庫,你都可以往里添加。Stax的初始應(yīng)用模板其實主要是用來練手用,以幫助你熟悉一個系統(tǒng)的建立。里面有少許預(yù)建立好的應(yīng)用程序配置,開發(fā)者用不了多久就能看完。在測試版反饋之后,他們將把新的Java模塊系統(tǒng)(Java Module System)以及/或者OSGi也融合進來,以便于開發(fā)者創(chuàng)建新的應(yīng)用程序方案。
如果你的應(yīng)用程序需要Tomcat以外的支持,或者它需要訪問本地文件系統(tǒng),那么Stax恐怕不適合你。這種情況下你唯一的選擇就是亞馬遜EC2,或者你也可以等待其他的公司(Oracle,IBM?)推出“云中的Java”,看看那上面有沒有你所期待的功能。(譯者按:近日Google已經(jīng)傳出App Engine可能將支持Java的消息,值得關(guān)注)
原文:Java in the Cloud by Hari K. Gottipati
【編輯推薦】