Enhydra最初由Lutris公司創(chuàng)建于7年前。Lutris公司一直從事IT咨詢開發(fā)工作,在長期的IT實踐中積累了豐富的WEB開發(fā)經(jīng)驗,逐漸形成了一套獨特而有效的開發(fā)策略和工具,這就是Enhydra。實際上,Enhydra的核心--XMLC技術,甚至早于SUN的JSP技術而誕生。即使今天看來,XMLC也比JSP有很大的優(yōu)勢。關于XMLC和JSP的比較,請參考 A Friendly Game of Tug of War: XMLC vs. JSP
1.2 Enhydra的特點
Enhydra是Lutris公司在長期的IT咨詢和開發(fā)實踐中提煉而出,并與1999年1月15日宣布加入Open Source大家族。此后,Enhydra在成千上萬的開發(fā)人員的幫助下,更加趨于完善,形成了如下的特點:
- 開放源代碼。Enhydra的版權許可為EPL(Enhydra Public Licence),類似于MPL(Mozilla Public Licence),相對比較寬松,簡單的說就是:
- 對Enhydra核心的修改必須回饋enhydra.org,以幫助Enhydra更加完善和強壯。
- Enhydra中有幾項Lutris公司所創(chuàng)造的專有技術,但是只要是和Enhydra Application Server一起使用,對這些專有技術的使用就沒有任何的限制。
- 高度的可擴展性和靈活性。Enhydra是100%純Java應用程序,保證了在各個平臺下的可移植性。Enhydra在設計中,還充分考慮了用戶需求的多樣性和多變性,在結構上保證了可以適用不同用戶的需求。
- 勝任各個層面的開發(fā)工作。無論是小型的WEB應用開發(fā)還是大型的WEB工程,都是Enhydra大顯身手的地方。這得益于Enhydra天然地支持3層的WEB應用程序結構,因此enhydra具有非常好的的伸縮性。
早期的Enhdra使用一種叫做JDDI的技術(類似于JSP,但是比JSP出現(xiàn)得要早),在頁面中嵌入Java代碼來生成動態(tài)的頁面。自然,JDDI有和JSP一樣的缺陷,這催生了XMLC,一種革命性的表示技術。
2.1.1 工作原理
XMLC,顧名思義就是把標記語言頁面,比如HTML,XML,WML等等編譯生成一個相應的Java類。這個Java類包含了頁面的完整的DOM樹結構及其操作方法,因而可以處理頁面上的任何元素及其屬性。更重要的是,在XMLC中,巧妙地把動態(tài)內容和HTML中的id元素聯(lián)系起來并在Java類中生成相應的操作方法,比如改變文本的內容和元素的屬性等等。不同于JSP,XMLC沒有引進任何額外的HTML/XML標記元素,只是重用了ID元素。因而,XMLC實際上可以處理任何的標記語言,不僅僅限于XML,HTML等。
XMLC通過3個步驟處理標記語言頁面,如下圖所示:
Figure 1.XMLC原理示意
其工作過程為:
- 校驗輸入文檔(HTML,XML等)是否有效,標記是否合法完整。
- 產(chǎn)生一個DOM樹(Document Object Model),即Java類代表輸入文檔(頁面)。在實際應用中,創(chuàng)建一個這個類的實例,如圖中的salesApp,使用這個類的實例就可以操縱頁面的DOM樹。
- 產(chǎn)生處理動態(tài)內容的Java方法,如圖中的setTextName。動態(tài)內容只需要用ID標記出來即可。可以看出,這種方法極大的簡化Java開發(fā)人員處理頁面動態(tài)內容的工作量。
2.1.2 一流的表示技術
XMLC的簡潔和強悍,奠定了它在表示技術中的領先地位。
- 使用Enhdyra XMLC,界面設計人員和后臺程序開發(fā)人員可以很好地分工協(xié)作。界面設計人員幾乎可以任意修改用戶界面而不會影響后臺程序開發(fā)人員,反之亦然。
- 使用Enhydra XMLC,界面設計人員和后臺程序開發(fā)人員只需要在項目開始時一起商定需要動態(tài)修改的元素及其ID值,其后就幾乎不需要相互碰頭了,分頭去實現(xiàn)就可以。
- 使用Enhydra XMLC,界面設計人員不需要任何的Java知識,只需要專注于界面設計即可。
- 使用Enhydra XMLC,后臺程序人員只需要極少的HTML等標記語言知識,只需要專注于動態(tài)內容的顯示控制和業(yè)務流程的設計即可。
- 使用Enhydra XMLC,可以使用任何你熟悉的HTML編輯軟件,因為XMLC沒有引入任何額外的標記元素。Enhydra XMLC中所重用的ID元素,是HTML 4.0及其以上版本的標準元素。
- Enhydra XMLC把頁面(HTML,XML,WML等)轉換有對等的Java類(DOM樹),就意味著可以從面向對象的角度來操縱整個頁面。
- 使用Enhydra XMLC,使得同時支持WML,XHTML,cHTML/i-mode,voiceXML,J2ME變的非常簡單。
2.1.3 效率
自然,經(jīng)過XMLC的轉換后,要損失一點執(zhí)行效率。但是,Enhydra XMLC已經(jīng)經(jīng)過了很好的性能調整,而且采用了獨特的 Lazy DOM技術,使得XMLC的性能有了顯著提高。相信在硬件發(fā)展日新月異的今天,效率和速度的少許損失,卻能夠換來上面如許多的優(yōu)勢,這筆帳還是非常劃得來的。
XMLC的更多信息,以及和其他表示技術的比較,請參見 XMLC的老家
2.2 DODS--Database Object Design Studio
Enhydra DODS是Enhydra對數(shù)據(jù)庫管理的重要工具,它可以實現(xiàn)數(shù)據(jù)庫(表)到Java類的對應轉換,封裝對數(shù)據(jù)庫的操作,屏蔽各種數(shù)據(jù)庫間的差異,并且提供了一個圖形界面的數(shù)據(jù)庫設計工具,自動生成關于數(shù)據(jù)庫操作的Java類。
下圖是DODS運行時畫面:
Figure 2.DODS運行畫面
DODS目前支持以下類型的數(shù)據(jù)庫:
- 標準數(shù)據(jù)庫,比如MySQL
- Sybase
- Oracle
- Infomix
- Microsoft SQL Server
- Postgresql
- Hsqldb
- IBM DB2
2.2.1 簡單實例
在傳統(tǒng)的JSP程序設計中,涉及到數(shù)據(jù)庫的訪問大致需要有如下的程序片斷:
<%@ page import="java.sql.*" %> <% String connectionURL = "jdbc:mysql://localhost:3306/mydatabase?user=username;password=password"; Connection connection = null; Statement statement = null; ResultSet rs = null; %> <html><body> <% Class.forName("org.gjt.mm.mysql.Driver").newInstance(); connection = DriverManager.getConnection(connectionURL, "", ""); statement = connection.createStatement(); rs = statement.executeQuery("SELECT address FROM user_tbl WHERE name='username'"); out.println(rs.getString("address")+"<br>"); rs.close(); %> </body></html> |
在Enhydra中,同樣的功能使用DODS后邏輯上就清楚多了,步驟如下:
1 創(chuàng)建一個HTML頁面,比如user.html如下:
<html><body> |
2 在Enhydra的business層中,創(chuàng)建一個java文件UserFactory.java,如下所示:
package simpleapp.business; import simpleapp.data.*; import java.util.*; import com.lutris.dods.builder.generator.query.*; public class UserFactory { public static String getAddress(String username) { try { UserQuery dquery = new UserQuery(); dquery.setQueryName(usename); UserDO uDO = dquery.getNextDO(); if(uDO != null) return uDO.getAddress(); } catch (Exception e) { e.printStackTrace(); } return null; } } |
3 這樣就可以在主文件中調用getAddress方法了:
String addr = UserFactory.getAddress("li"); |
看起來似乎繞了不少的圈子,但是這是一個真正的3層結構的程序,而且,數(shù)據(jù)庫的設置、管理、連接和緩沖等的功能,DODS都已經(jīng)為你準備好了,你只要象上面所示的,使用DODS產(chǎn)生的數(shù)據(jù)庫操作類就行了,比如UserQuery等。
2.2.2 DODS的特點
- 圖形化的數(shù)據(jù)庫設計界面。
- 自動產(chǎn)生數(shù)據(jù)表操作類和方法。
- 針對不同的數(shù)據(jù)庫,只需要重新產(chǎn)生相應的類代碼,不需要改動表示層(presentation layer)和事務處理層(business layer)的任何代碼。
- 自動維護支持數(shù)據(jù)庫連接緩沖。
- 自動維護數(shù)據(jù)表列的序列號(oid)。
Director作為WEB服務器的插件,主要實現(xiàn)了如下功能:
- 負載均衡 可以使用Director構造Enhydra的集群環(huán)境。
- 訪問導向 可以將WEB服務器上的某個虛擬目錄影射到某個Enhydra應用程序上,這樣對虛擬目錄的訪問實際上將變?yōu)閷@個Enhydra應用程序的訪問??陀^上起到了去掉Enhydra應用程序端口號這個“小尾巴”的作用。
2.4.1 WEB應用程序開發(fā)模型簡述
WEB應用程序的開發(fā)先后經(jīng)歷了以下幾種模式:
- 單層應用程序模型 在這種模型中,WEB應用中的三個重要元素是緊密結合在一起的,彼此混合起來的。早期的WEB應用程序比較簡單,從設計到開發(fā)都是直線型的,是這種應用模型的必然結果。這種應用模型目前還很容易看到,比如一些簡單的聊天室軟件,表單處理軟件等。
- 兩層應用程序模型 即通常所說的客戶/服務器模型。 在這種模型中,從邏輯上看,服務器端通常提供需要進行復雜運算或者大量數(shù)據(jù)處理的能力,而客戶端通常負責發(fā)出處理請求并顯示服務器傳送過來的處理結果。HTTP協(xié)議就可以看做是客戶/服務器模型的典型。
- 多層應用程序模型 多為3層應用程序模型。在3層WEB應用程序模型中,一般的層次劃分為:表示層、事務邏輯層、數(shù)據(jù)存取層,彼此相互隔離,可以單獨由不同的人或者部門完成。這種模型給應用的設計、開發(fā)和維護都帶來了很多好處,Enhydra對3層WEB應用程序的開發(fā)提供很好的支持。
2.4.2 Enhydra應用程序的3層體系結構
如下圖所示:
Figure 3.Enhydra體系結構
Enhydra開發(fā)環(huán)境不但支持基于3層模式的WEB應用程序開發(fā),而且是作為強烈建議提出的。實際上,Enhydra的核心技術中,XMLC即為Presentation Logic的核心,DODS即為Data Logic的核心。而Enhydra核心中的應用程序管理器,則把Presentation Manager, Session Manager, Database Manager有機的結合起來,構成了Enhydra的應用程序的運行環(huán)境。
所謂Enhydra應用程序框架(Enhydra Application Framework)是指Enhydra提供的一系列Java類,這些類提供了Enhydra應用程序運行時需要的支持環(huán)境。 也就是說,您的Enhydra應用程序可以而且應當通過這些預先設計的Java類來減輕你的編程工作量和增加應用程序的穩(wěn)定性,因為這個應用程序框架已經(jīng)為您實現(xiàn)了很多功能,主要是以下三點:
1 Presentation Manager
Presentation Manager負責處理Enhydra應用程序中presentation object的加載和執(zhí)行,具體的說,就是把某個URL影射為相應的PO(Presentation Ojbect),并且調用PO的run()方法。這里的PO實質上就是處理相應的URL的Java類,比如處理Login.html文件的PO可以定義為Login.java,在Login.java中驗證用戶的身份,并將用戶引導到相應的頁面中去。
每一個Enhydra應用程序都有一個presentation manager的實例。為了提高運行效率,presentation manager會盡量緩存PO及其相關文件(比如圖片等)。另外,presentation manager還負責發(fā)放(產(chǎn)生)session manager所需要的key,session manager依靠這個key來確定和這個頁面(用戶)相關的session對象(SessionData)。
每一個Presentation Manager都是類\newline com.lutris.appserver.server.httpPresentation.HttpPresentationManager的一個實例。在包com.lutris.appserver.server.httpPresentation中包含了presentation manager和PO都會用到的一些類和接口。
2 Session Manager
所謂session是指在一段時間范圍內,某個用戶所保持的狀態(tài),比如是否已經(jīng)登錄,已經(jīng)購買了哪些商品等。當用戶初次訪問一個Enhydra應用程序時,Session Manager會自動為這個用戶產(chǎn)生一個session對象,以保存用戶的狀態(tài)。在應用程序定義的時間間隔內,這個session對象一直存在,直到超過了規(guī)定的時間或者用戶在規(guī)定的時間間隔內沒有動作,session manager會自動刪除這個用戶的session對象。
Enhdydra session manager很靈活。通過創(chuàng)建復雜的session對象,你可以對用戶的行為有更多的控制和了解。
3 Database Manager
Enhydra的Database manager提供了控制和優(yōu)化Enhydra應用程序和數(shù)據(jù)庫的連接,主要是通過以下兩點完成的:
- 使用logical database。實際上是通過JDBC屏蔽了用戶在操作不同數(shù)據(jù)庫時的差異。
- 通過DODS產(chǎn)生的數(shù)據(jù)庫庫操作類,Database manager可以進一步控制對特定的數(shù)據(jù)表是否緩存等來優(yōu)化數(shù)據(jù)庫的操作。
Multiserver是Enhydra應用程序運行環(huán)境管理器。隨同Multiserver一起提供的是Admin Console,可以方便的部署Enhydra應用程序,可以動態(tài)的加載和停止Enhydra應用程序,可以設置Enhydra應用程序的配制和運行參數(shù),甚至可以通過WEB調試Enhydra應用程序。
我們從下面的表格中大致可以了解Enhydra和其他廠商的應用服務器在表示層功能上的差別:
Enhydra 3.5 | WebLogic | WebSphere | Oracle 9i | |
VoiceXML | 是 | via Voice | 是 | |
CHTML/iMode設備 | 是 | 部分支持 | ||
WML/WAP | 是 | 是 | 是 | 是 |
MIDp/J2ME-HTTP | 是 | |||
XML Schema Architechture | 是 | 是 | ||
XHTML/WAP2/iMode3 | 是 | |||
Open-source | 是 |
目前大約有40家應用服務器提供商,我們先看一下商業(yè)的封閉源代碼的應用服務器的特點:
- 費用高昂 封閉源代碼的應用程序服務器都是相當昂貴的,一般都要US$10,000/CPU以上。
- 緊耦合的實現(xiàn)方式 所有封閉源代碼的應用服務器的實現(xiàn)都是緊耦合的,是一個不可分割的整體。這樣的壞處是,即使你有更好的關于某一功能的實現(xiàn),你也沒有辦法替換原來的舊實現(xiàn),只能被動等待提供商的升級。
- 開發(fā)和部署的復雜度高 一般封閉源代碼的應用服務器都需要專門的培訓才能夠入門使用,學習和開發(fā)部署的難度都比較大??匆豢此麄儼嘿F的培訓費用就知道了。
- 專有的編程模式 封閉源代碼的應用服務器一般采用專有的,缺乏靈活性的開發(fā)模式,必須經(jīng)過專門培訓學習這個專有的編程模式。而且,封閉源代碼的應用服務器一般都有歷史包袱,這是產(chǎn)生專有結構的重要原因之一。比如著名的應用服務器提供商ATG,他的產(chǎn)品中就遺留了一些老的落后的結構。
- 隱性的“欺詐” 當你購買Sun的iPlanet的時候,你也許不知道,你同時購買了永遠都用不到的一些過時的功能。這是Sun在融合自己的產(chǎn)品NetDynamics和Netscape的Kiva時留下的“后遺癥”。
- 實際有限的技術支持 封閉源代碼的應用服務器廠商盡管聲稱提供完善的技術支持,但是看看網(wǎng)絡上BEA的用戶的表現(xiàn)吧,隨處可見BEA的用戶在尋求BEA平臺上碰到的開發(fā)問題。他們?yōu)槭裁床蝗で驜EA的技術支持呢?兩個原因:一是他們無法從BEA那里得到及時有效的技術支持;二是BEA的平臺不是一個易用的平臺。
- 有限的無線開發(fā)支持 很多封閉源代碼的應用服務器要有倚賴第三方的軟件提供無線開發(fā)的支持。
讓我們再看看Enhydra是如何解決以上的問題的:
- Enhydra 3的可擴展性和靈活性是極佳的。幾乎所有的模塊都可以根據(jù)實際的需要擴展或者替換。
- Enhydra在設計時充分考慮到了開發(fā)環(huán)境的多樣性,并且可以配合多種集成的開發(fā)環(huán)境一起工作,比如JBuilder, Jdeveloper, SunONE Studio等。實際上,Enhydra幾乎可以和你熟悉的任何環(huán)境一起工作。
- Enhydra的培訓費用很低。Enhydra的特有(專有)概念很少,你在Enhydra中學到的幾乎所有知識都可以用于其他的標準開發(fā)環(huán)境,反之亦然。
- Enhydra3 支持Tomcat 3。2(Servlet 2。2 和 JSP 1。1),Enhdyra應用程序的可移植性非常好。
- Enhydra是Open Source的,即使你分銷基于Enhydra的應用程序,也不需要支付相對于商業(yè)的、封閉源代碼的應用服務器那樣的昂貴的許可費用。
- Enhydra的結構和設計是合理和優(yōu)美的,來自于實踐的總結,沒有任何的歷史包袱。
- Enhydra鼓勵使用3層的應用程序設計。但是,如果要寫一個簡化了的兩層,甚至單層的應用程序也同樣是支持的,具有很好的靈活性。
- 你已經(jīng)擁有了源代碼! 這樣,可以通過閱讀、察看源代碼直接解決一些深層次的問題,也可以在調試程序時借助于源代碼更快的抓住“臭蟲”。
- Enhydra支持應用程序的“熱”部署,即不需要停止整個Multiserver,就可以任意停止或者啟動某個Enhydra應用程序。
- Enhydra提供了appwizard可以自動產(chǎn)生標準的應用程序框架,開發(fā)人員只需要遵照這個框架擴充以適合自己的需要即可,容易上手。
- Enhydra是目前無線應用開發(fā)的最佳武器,由XMLC提供了最佳的技術保證和支持。
這大概是最經(jīng)常被問到的問題了:“Enhydra和WebLogic相比怎樣?”。
- 更好的性能。Enhydra是輕量級的應用服務器。測試標明,Enhydra在吞吐性能、響應時間等多方面是BEA WebLogic的9-15倍之多!
- 更友好的項目管理。Enhydra的資源文件可以放到單獨的目錄中,HTML設計人員和Java開發(fā)人員可以獨立工作,使得項目管理清晰和容易。
- 更容易配置和部署。BEA WebLogic需要復雜的描述文件和重新編譯,而Enhydra只需要一個簡單的文本文件即可,不需要重新編譯,而且任何程序都可以單獨停止和運行,而不會影響其他Enhydra應用程序。
- 內建的無線開發(fā)支持和J2ME支持。Enhydra內建支持HTML,WML(WAP),cHTML(i-mode),XHTML,VoiceXML和J2ME,還有Flash 5 客戶端。而WebLogic必須倚賴第三方軟件的支持。
- 更容易使用新技術。Enhydra受益于開放源代碼社區(qū),可以很快的采用和接納最新的技術并納入到Enhyhdra的體系結構中去。BEA Weblogic做不到這一點。
- 更低的培訓費用。學習Enhydra并不困難,而WebLogic的重點是J2EE的開發(fā),學習和設計的難度大大增加,培訓的費用也很高。
- Enhydra XMLC。XMLC是Enhydra的靈魂和核心,是領先的表示技術的代表。而WebLogic沒有這種領先的技術。
從上面和商業(yè)的應用服務器的比較中我們也可以看出Enhydra的優(yōu)勢來,下面簡單總結一下:
- 得益于開放源代碼策略,受惠于開放源代碼社區(qū)。Enhydra自從開放源代碼后,發(fā)生了很大的變化,比如率先支持了無線開發(fā),修正了若干的Bug,而且在Lutris公司內部發(fā)生了巨大的變化時產(chǎn)生了接手Enhydra項目的合適團隊。
- 靈活的可擴展性。由于是開放源代碼的系統(tǒng),其中的每一個模塊你都可以只有替換和擴展。Enhydra 6.0的目標就是徹底拆開enhydra.jar,使Enhydra只保留一個核心包,其他的工具包均可以單獨置換。
- 最好的無線開發(fā)支持。
- 低的總擁有成本。Enhydra Public Licence允許你開發(fā)基于Enhydra的應用,甚至在Enhyra基礎上構造自己的應用服務器而不需要支付昂貴的許可費用,因而顯著降低了開發(fā)商的總擁有成本。
- 豐富的文檔資料。Enhydra提供了非常好的“Getting Started with Enhydra”等文檔資料,并且郵件列表本身也是Enhydra的寶庫之一。
- 源代碼!
應該說,雖然相對于掌握WebLogic而言,Enhydra的學習難度大為降低,但是熟練掌握Enhydra也不是非常容易的事情,尤其是對于沒有很多的WEB開發(fā)概念和經(jīng)驗的開發(fā)者更是這樣,所以Enhydra的初始學習曲線仍然有些陡峭。但是,只要理解了Enhydra應用程序的基本結構和熟悉了Enhydra提供的API函數(shù),則使用Enhdyra開發(fā)WEB應用就變成了一種享受和必然!
目前Enhydra仍然使用Tomcat 3.2,將來的Enydyra6.0將實現(xiàn)Enhyra體系結構的完全松耦合,使得模塊的獨立性更強,可以隨時更新Tomcat的版本以及其他相關模塊。
5.3 EPL:Enhydra Public License的限制
EPL的限制簡單說就是:
- 如果你改動了Enhydra的核心,則必須將改動的情況匯報Enhydra.org,以使得Enhydra日趨完善。
- 你可以任意使用Enhydra的所有專有技術(比如XMLC),只要是和Enhydra應用服務器一起使用即可。實際上,這條限制已經(jīng)形同虛設,因為象XMLC等Enhdyra的專有技術現(xiàn)在大都已經(jīng)獨立出來了,意味著XMLC等可以獨立使用,不受Enhydra本身的限制。
可以看出,EPL實際上還是相當寬松的。
非常遺憾的是,由于各種原因,Enhydra的發(fā)明者Lutris公司不得不于去年底宣布放棄Enhdyra的繼續(xù)開發(fā),專注于Enhydra Enterprise的開發(fā)和銷售和技術支持。然而,似乎Lutris并沒有取得預期的業(yè)績,經(jīng)營上出現(xiàn)了一些困難。
然而, Enhydra并沒有就此止步! ObjectWeb(www.objectweb.org)接過了enhydra.org站點,法國電信無償提供了T1級別的線路鏈接和服務器,@Together公司接過了Enhydra的繼續(xù)開發(fā),Enhydra繼續(xù)前進中......
目前,Enhydra已經(jīng)推出Enhydra 5.0,新特性如下:
- 融合Tomcat 4.0和大量的補丁。
- 對原來的enhydra.jar進行了分拆,使得各個模塊可以獨立撤換。
- 加強了的session管理。
- 加強了DODS對數(shù)據(jù)庫的支持能力。
- 采用了最新的xmlc。
- 更全面的文檔。
Enhydra作為開發(fā)動態(tài)網(wǎng)站和電子商務的利器,已經(jīng)得到了廣泛的應用。這里有一個列表,列出了一些使用enhydra技術構建的站點: http://enhydra.enhydra.org/community/caseStudies/index.html。
我們有理由相信,Enhydra在開放源代碼社區(qū)的幫助下,在良好的架構設計基礎上,會隨著IT技術的發(fā)展而進步。讓我們展望一下Enhydra的未來吧:
實際上,Lutris公司已經(jīng)實現(xiàn)了Enhydra和J2EE的融合,但是由于Lutris公司的現(xiàn)狀,使得這項工作可能不得不重新開始??梢赃@樣設想,在Enhydra的3層架構基礎上,借助于XMLC和DODS,再融合一個開放源代碼的J2EE服務器,比如JBoss(版權為LGPL),應該可以構造一個極且競爭力的J2EE應用服務器產(chǎn)品。我相信,這是一個非常有前途的產(chǎn)品方向,只是融合的技術難度也是比較大的。
Web Service是分布式應用的未來,如何將Web Service和Enhydra有機地結合在一起,是一個富有挑戰(zhàn)性的課題。如果Web Service能夠融入Enhydra之中,或者如果說Enhydra也可以作為Web Service的容器,則Enhydra的應用開發(fā)領域將更加廣泛,開發(fā)思路將更加開闊。
目前Enhydra在Kelp(kelp.enhydra.org)的幫助下,已經(jīng)可以配合JBuilder,JDeveloper,SunONE Studio等IDE環(huán)境進行開發(fā)工作,這固然是個不錯的策略,但是在以下方面還有欠缺:
- appwizard還有很大的改進余地。
- DODS將來的版本可以生成business layer的模板代碼。
- 對eclipse的支持正在開發(fā)中。
前面我們講過,Enhydra 6.0將演變?yōu)镋nhydra Application Framework,使得Enhydra的模塊間的耦合度更低,這樣更換某個模塊將更加方便,系統(tǒng)的靈活性將得到更大的提高,對于Enhydra的繼續(xù)發(fā)展也是非常有利的。
Enhydra從實踐中來,經(jīng)過了4年實踐的檢驗,經(jīng)過3年開放源代碼社區(qū)的培育,已經(jīng)成熟了,長大為業(yè)界領先的應用服務器,已經(jīng)形成了自己的風格和穩(wěn)定的用戶群,得到了廣大用戶的支持和愛戴,相信不管IT風云如何變幻,Enhydra將乘風破浪,直掛云帆濟滄海!
Enhydra作為優(yōu)秀的、一流的、開放源代碼的應用服務器,自然給我們帶來了無限的商機,關鍵是如何把握機會:
Enhydra具有設計良好的架構,規(guī)范的代碼文檔,對于系統(tǒng)開發(fā)商而言,是一個非常好的參照系統(tǒng)。這里有兩方面的含義:
- 站在“Enhydra的肩膀上”,開發(fā)你自己的應用服務器。應用服務器被譽為“Internet上的操作系統(tǒng)”,可見其重要性和商機所在。前面所說的融合Enhydra和JBoss等,也有這方面的意思。作為系統(tǒng)開發(fā)商,Enhydra正好提供了一個合適的和高的起點。當然,在開發(fā)過程中要遵守Enhydra的版權協(xié)議EPL。
- 開發(fā)基于Enhydra的各種解決方案。Enhydra本身的特點決定了Enhydra在這個領域是大有作為的。
Enhydra天然支持3層WEB應用程序開發(fā),這對于開發(fā)大型的WEB應用非常有利,有利于系統(tǒng)設計和團隊的合作,也有利于較好的控制開發(fā)進度和開發(fā)質量,有利于提高項目開發(fā)成功的概率。
Enhydra作為領先的開放源代碼的應用服務器和應用程序框架,其前途是光明的,感謝Lutris公司開發(fā)人員的卓越設計和對開放源代碼社區(qū)的貢獻!
實際上,Lutris公司的初創(chuàng)者和開放源代碼社區(qū)原本就有很深的淵源,一直保持著和開放源代碼社區(qū)良好的合作關系。相信在開放源代碼社區(qū)的呵護下,在開放源代碼社區(qū)無處不在的仁人志士的幫助下,Enhydra將繼續(xù)保持業(yè)界領先地位!
讓我們拭目以待。
- Participate in the discussion forumon this article by clicking Discuss at the top or bottom of the article.
- http://www.enhydra.org ,Enhydra的老家
- http://www.webdocwf.org,@Together接手Enhydra后創(chuàng)建的Enhydra的新家
- JSP 技術 - 是友還是敵?關于jsp技術的精彩剖析和論述。
- Enhydra FAQ
- The Enhydra Competitive White Paper, David H. Young
- A Friendly Game of Tug of War: XMLC vs. JSP, David H. Young
- 共創(chuàng)軟件雜志創(chuàng)刊號,走近Enhydra , 周冰梅
- 共創(chuàng)軟件雜志創(chuàng)刊號,Enhydra體系結構及開發(fā) , 宿寶臣
作者一直致力于Java在WEB開發(fā)領域的研究,尤其對Enhydra,JBoss,Eclipse非常有興趣,您可以通過 linuxman@263.net和作者聯(lián)系,歡迎批評指正!