2025-02-10

這篇文章寫在我研究J2SE、J2EE近三年後。前3年我研究瞭J2SE的Swing、Applet、Net、RMI、Collections、 IO、JNI……研究瞭J2EE的JDBC、Sevlet、JSP、JNDI…..不久我發現這些好像太浮淺瞭:首先,我發現自己知道的僅僅是java提 供的大量的API,根本不能很好地使用它; 其次,我根本就沒有學到任何有助於寫程序的知識,此時我也隻不過能寫個幾頁的小程序。出於這個幼稚的想法我研究瞭JDK中Collections、 Logger、IO…..的源代碼,發現這個世界真的很神奇,竟然有如此的高手――利用java語言最最基本的語法,創造瞭這些優秀的 Framework。


從此一發不可收拾,我繼續研究瞭J2EE的部分,又發現這是一個我根本不能理解的方向(曾經有半年停滯不前),為什麼隻有接口沒有實現啊!後來由於 一直使用Tomcat、Derby等軟件突然發現:哦!原來J2EE僅僅是一個標準,隻是一個架構。真正的實現是不同提供商提供的。


接著我研究瞭MOM4J、OpenJMS、Mocki、HSQLD……發現這些就是J2EE的實現啊!原來軟件竟會如此復雜,竟會如此做….規范和 實現又是如何成為一體的呢?通過上面的研究發現:原來J2EE後面竟然有太多太多理念、太多太多的相似!這些相似就是其背後的理念――設計模式!(很幸 運,在我學java的時候,我一般學java的一個方向就會讀一些關於設計模式的書!很幸運,到能領略一點的時候能真正知道這是為什麼!)其實模式就是一 種思維方式、就是一種理念……模式是要運用到程序中的,隻有從真正的項目中才能領會模式的含義……
學得越多,發現懂得越少!在學習過程中發現一些很有用,很值得學習的開源項目,今天在此推薦給大傢。


一、JavaServlet和JSP方向


很多人都是從Servlet和JSP步入J2EE的。它就是J2EE的表現層,用於向客戶呈現服務器上的內容。J2EE很重要的方面。不羅嗦瞭!大 傢都知道的!下面就開始推薦吧!


1. Jakarta Tomcat


Apache基金會提供的免費的開源的Serlvet容器,它是的Jakarta項目中的一個核心項目,由Apache、Sun和其它一些公司(都 是IT界的大鱷哦)及個人共同開發而成,全世界絕大部分Servlet和Jsp的容器都是使用它哦!由於Sun的參與和支持,最新的Servlet和 Jsp規范總能在Tomcat中得到體現。


不過它是一個非常非常全的Serlvet容器,全部源碼可能有4000頁,對於初學者或者一般的老手可能還是比較大瞭!在你有能力時推薦研究!下載 地址:http://jakarta.apache.org/tomcat/index.html


下面推薦兩個小一點的吧!


2. Jetty


Jetty是一個開放源碼的HTTP服務器和Java serverlet容器。源代碼隻有1000頁左右,很值得研究。有興趣可以去http://jetty.mortbay.com/下載看看。我曾經翻瞭 一下,隻是目前沒有時間。(都化在博客上瞭,等博客基本定型,且內容完整瞭,再幹我熱衷的事件吧!)


3. Jigsaw


Jigsaw是W3C開發的HTTP,基於Java 的服務器,提供瞭未來 Web 技術發展的藍圖。W3C知道吧!(太有名氣瞭,很多標準都是它制訂的!有空經常去看看吧!)下載網址:http://www.w3.org/Jigsaw 代碼僅僅1000頁左右。


4. Jo!


Jo!是一個純Java的實現瞭Servlet API 2.2, JSP 1.1, 和HTTP/1.1的Web服務器。它的特性包括支持servlet tag,支持SSI,高級線程管理,虛擬主機,數據緩存,自動壓縮text或HTML文件進行傳輸,國際化支持,自動重新加載Servlet、Jsp,自 動重新加載web工程文件(WARs),支持WAR熱部署和一個Swing控制臺。jo!可以被用做jboss和jakarta avalon-phoenix的web容器。下載地址http://www.tagtraum.com/ 。我極力推薦大傢在研究Tomcat之前研究該軟件,主要是其比Tomcat小多瞭,且開發者提供比較全的手冊。該方向研究這兩個也就可以瞭!


二、JDBC方向


很多人都喜歡JDBC,數據庫嗎!很深奧的東西,一聽就可以糊弄人。其實等你真正研究瞭數據庫的實現後發現,接口其實真的太簡單,太完美瞭!要想設 計如此優秀的框架還是需要學習的。下面就推薦幾個數據庫的實現吧!


1. Hypersonic SQL


Hypersonic SQL開源數據庫方向比較流行的純Java開發的關系型數據庫。好像不是JDBC兼容的,JDBC的很多高級的特性都沒有支持,不過幸好支持ANSI- 92 標準 SQL語法。我推薦它主要是它的代碼比較少1600頁左右,如此小的數據庫值得研究,而且他占的空間很小,大約隻有160K,擁有快速的數據庫引擎。推薦 你的第一個開源數據庫。下載地址:http://hsqldb.sourceforge.net/。


2. Mckoi DataBase


McKoiDB 和Hypersonic SQL差不多,它是GPL 的license的純Java開發的數據庫。他的 JDBC Driver 是使用 JDBC version 3 的 Specifaction。 他也是遵循 SQL-92 的標準,也盡量支持新的 SQL 特色, 並且支持 Transaction 的功能。兩個可以選一個吧!下載地址:http://mckoi.com/database/。


3. Apache Derby


學Java的數據庫我建議使用Apache Derby ,研究數據庫想成為一個數據庫的高手我建議你先研究Apache Derby。Apache Derby是一個高質量的、純 Java開發的嵌入式關系數據庫引擎,IBM® 將其捐獻給Apache開放源碼社區,同時IBM的產品CloudSpace是它對應的產品。Derby是基於文件系統,具有高度的可移植性,並且是輕量 級的,這使得它非常便於發佈。主要是沒有商業用戶的很好的界面,沒有其太多的功能。不過對於我們使用數據庫、研究數據庫還是極其有用的。對於中小型的企業 說老實話你也不要用什麼Oracle、SqlServer瞭,用Derby就可以瞭,何況是開源的呢!隻要能發揮其長處也不容易啊!下載地 址:http://incubator.apache.org/derby。


不過在沒有足夠的能力前,不要試圖讀懂它!註釋和源代碼15000頁左右,我一年的閱讀量!能讀下來並且能真正領會它,絕對高手!你能讀完 Derby的源代碼隻有兩種可能:1.你成為頂尖的高手――至少是數據庫這部分; 2.你瘋瞭。選擇吧!!!!作為我自己我先選擇Hypersonic SQL這樣的數據庫先研究,能過這一關,再繼續研究Derby!不就是一年的閱讀量嗎!我可以化3年去研究如何做一個數據庫其實還是很值得的!有的人搞 IT一輩子自己什麼都沒有做,也根本沒有研究別人的東西!


作為一個IT落後於別國若幹年的、從事IT的下遊產業“外包”的國傢的IT從業人員,我認為還是先研究別人的優秀的東西比較好!可以先研究別人的, 然後消化,學為己用!一心閉門造車實在遺憾!


三、JMS方向


JMS可能對大傢來說是一個比較陌生的方向!其實JMS是一個比較容易理解,容易上手的方向。主要是Java消息服務,API也是相當簡單的。不過 在企業應用中相當廣泛。下面就介紹幾個吧!


1. MOM4J


MOM4J是一個完全實現JMS1.1規范的消息中間件並且向下兼容JMS1.0與1.02。它提供瞭自己的消息處理存儲使它獨立於關系數據與語 言,它的客戶端可以用任何語言開發。它可以算是一個小麻雀,很全實現也比較簡單!它包含一個命名服務器,一個消息服務器,同時提供自己的持續層。設計也相 當的巧妙,完全利用操作系統中文件系統設計的觀念。代碼也很少,250頁左右,最近我在寫該實現的源代碼閱讀方面的書,希望明年年中能與大傢見面!下載地 址:http://mom4j.sourceforge.net/index.html。


2. OpenJMS


OpenJMS是一個開源的Java Message Service API 1.0.2 規范的實現,它包含有以下特性:
1. 它既支持點到點(point-to-point)(PTP)模型和發佈/訂閱(Pub/Sub)模型。


2. 支持同步與異步消息發送 。


3. JDBC持久性管理使用數據庫表來存儲消息 。


4. 可視化管理界面。


5. Applet支持。


6. 能夠與Jakarta Tomcat這樣的Servlet容器結合。


7. 支持RMI, TCP, HTTP 與SSL協議。


8. 客戶端驗證 。


9. 提供可靠消息傳輸、事務和消息過濾。


很好的JMS方向的開源項目!我目前也在研究它的源代碼!學習它可以順便研究JNDI的實現、以及網絡通信的細節。這是我JMS方向研究的第二個開 源項目。代碼量1600頁左右吧!下載地址:http://openjms.sourceforge.net/index.html


3. ActiveMQ


ActiveMQ是一個開放源碼基於Apache 2.0 licenced 發佈並實現瞭JMS 1.1。它能夠與Geronimo,輕量級容器和任Java應用程序無縫的給合。主要是Apache的可以任意的使用和發佈哦!個人比較喜歡Apache 的源代碼!下載地址:http://activemq.codehaus.org/


4. JORAM


JORAM一個類似於openJMS分佈在ObjectWeb之下的JMS消息中間件。ObjectWeb的產品也是非常值得研究的!下面我還會給 大傢另外一個ObjectWeb的產品。下載地址:http://joram.objectweb.org/


我個人推薦:OpenJMS和ActiveMQ!


四、EJB方向


EJB一個比較“高級”的方向。Sun公司曾經以此在分佈式計算領域重拳出擊。不過自從出現瞭Spring、Hibernation……後似乎沒落 瞭!這個方向單獨開源的也比較少,主要EJB是和JNDI、JDBC、JMS、JTS、JTA結合在一起的是以很少有單獨的。下面推薦兩個不過好像也要下 載其它類庫。


1. EasyBeans


ObjectWeb的一個新的項目,一個輕量級的EJB3容器,雖然還沒有正式發佈,但是已經可以從它們的subversion倉庫中檢出代碼。代 碼量比較小600頁左右,熟讀它可以對網絡編程、架構、RMI、容器的狀態設計比較瞭

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *