天天看點

值得研究的J2EE開源項目推薦

導讀:筆者在學習J2EE的過程中發現了一些很有用,而且很值得學習的開源項目,在此推薦給大家。

關鍵詞:J2EE 開源項目 J2SE JBoss SOA EJB

  這篇文章寫在我研究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、容器的狀态設計比較了解了!即學會EJB又能學習其它設計方法何樂而不為哦!下載下傳位址:http://easybeans.objectweb.org/

  2. OpenEJB

  OpenEJB是一個預生成的、自包含的、可移植的EJB容器系統,可以被插入到任意的伺服器環境,包括應用程式伺服器,Web伺服器,J2EE平 台, CORBA ORB和資料庫等等。OpenEJB 被用于 Apple的WebObjects。聽起來很好,我目前沒有研究過。不知道我就不推薦了。下載下傳位址:http://www.openejb.org/

  五、J2EE容器

  上面談了這麼多,都是J2EE的各個方向的。其實J2EE是一個規範,J2EE的産品一般要求專業提供商必須提供它們的實作。這些實作本身就是 J2EE容器。市場上流行的J2EE容器很多,在開源領域流行的隻有很少,很少。其中最著名的是JBoss。

  1. JBoss

  在J2EE應用伺服器領域,Jboss是發展最為迅速的應用伺服器。由于Jboss遵循商業友好的LGPL授權分發,并且由開源社群開發,這使得 Jboss廣為流行。另外,Jboss應用伺服器還具有許多優秀的特質。

  其一,它将具有革命性的JMX微核心服務作為其總線結構

  其二,它本身就是面向服務的架構(Service-Oriented Architecture,SOA)

  其三,它還具有統一的類裝載器,進而能夠實作應用的熱部署和熱解除安裝能力。是以,它是高度子產品化的和松耦合的。Jboss使用者的積極回報告訴我 們,Jboss應用伺服器是健壯的、高品質的,而且還具有良好的性能。為滿足企業級市場日益增長的需求,Jboss公司從2003年開始就推出了 24*7、專業級産品支援服務。同時,為拓展Jboss的企業級市場,Jboss公司還簽訂了許多管道合作夥伴。比如,Jboss公司同HP、 Novell、Computer Associates、Unisys等都是合作夥伴。

  在2004年6月,Jboss公司宣布,Jboss應用伺服器通過了Sun公司的J2EE認證。這是Jboss應用伺服器發展史上至今為止最重要的 裡程碑。與此同時,Jboss一直在緊跟最新的J2EE規範,而且在某些技術領域引領J2EE規範的開發。是以,無論在商業領域,還是在開源社 區,Jboss成為了第一個通過J2EE 1.4認證的主流應用伺服器。現在,Jboss應用伺服器已經真正發展成具有企業強度(即,支援關鍵級任務的應用)的應用伺服器。

  Jboss 4.0作為J2EE認證的重要成果之一,已經于2004年9月順利釋出了。同時,Jboss 4.0還提供了Jboss AOP(Aspect-Oriented Programming,面向方面程式設計)元件。近來,AOP吸引了大量開發者的關注。它提供的新的程式設計模式使得使用者能夠将方面(比如,事務)從底層業務邏 輯中分離出來,進而能夠縮短軟體開發周期。使用者能夠單獨使用Jboss AOP,即能夠在Jboss應用伺服器外部使用它。或者,使用者也可以在應用伺服器環境中使用它。Jboss AOP 1.0已經在2004年10月釋出了。 很有名吧!可以下載下傳一個用一下,下載下傳位址:http://www.jboss.org/

  關于JBoss的使用資料也非常多,甚至比商業軟體的還多。有機會研究吧!

  2. JOnAS

  JOnAS是一個開放源代碼的J2EE實作,在ObjectWeb協會中開發。整合了Tomcat或Jetty成為它的Web容器,以確定符合 Servlet 2.3和JSP 1.2規範。JOnAS伺服器依賴或實作以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。下載下傳位址:http://jonas.objectweb.org/

3.Apache Geronimo

  Apache Geronimo 是 Apache 軟體基金會的開放源碼J2EE伺服器,它內建了衆多先進技術和設計理念。 這些技術和理念大多源自獨立的項目,配置和部署模型也各不相同。 Geronimo能将這些項目和方法的配置及部署完全整合到一個統一、易用的模型中。作為符合J2EE标準的伺服器,Geronimo提供了豐富的功能集 和無責任 Apache 許可,具備“立即部署”式J2EE 1.4容器的各種優點,其中包括:

  1. 符合J2EE1.4标準的伺服器 。

  2. 預內建的開放源碼項目 。

  3. 統一的內建模型 。

  4. 可伸縮性、可管理性和配置管理功能。

  我一直比較推薦Apache的産品。主要是可以任意自由地使用。下載下傳位址:http://incubator.apache.org/projects/geronimo/

  六、其它

  講了這麼多大家可能很厭煩了!是不是很多很多啊!其實不然,我們不會的太多太多了!不會的太多太多了。不管你是不是J2EE高手,還是J2SE高 手,有些東西你要絕對很精明的。例如:1.Java的Collections Framework就是java的資料結構了,不僅要吃透它,還要能按照需要擴充它,利用其思想建立一個自己的資料結構。2.網絡程式設計肯定要會吧,現在以 及以後很多程式都是不在同一台機器上的,不會網絡怎麼行哦!3.IO肯定要會的吧!你的程式難道不用輸入輸出資料啊!整個IO包加NIO也有600多頁的 源代碼哦!4.JDBC你要會吧!資料庫都不會,在你的企業應用中你的資料又儲存到哪裡啊!檔案中――太落後了吧!典型的沒有學過J2EE。盡管資料庫背 後也是采用檔案儲存的。5.Serverlet、JSp你要是做網頁做網站,肯定要做到。問你一個簡單的問題,網頁中如何實作分頁啊!有具體方法的就在本 文章後發言吧!6. Ant要會吧!java語言中釋出的工具,類似與c中的make工具。7.JUnit用過吧!單元測試軟體。你不要啊!你的軟體就沒有bug!你牛!(建 議大家研究研究其源代碼,很有用的架構,包含大量的設計模式,源代碼不到100頁!看了隻能感歎――高手就是高手)細心的朋友可以看到在你使用的很多IDE工具中都有JUnit哦!就是它。

  一切的一切才剛剛開始!有興趣,有需要你可以研究資料庫連接配接池的架構,如:C3P0、Jakarta DBCP、 DBPool….可以研究J2EE架構Spring……. Web架構Struts……持久層架構Hibernate…..甚至開發工具Eclipse…..Sun上司的點對點通信的JXTA…..報表工具 JFreeChart、JasperReports…..分布式網絡程式設計的CORBA、網絡通信的JGROUPS、XML解析的xerces…..(在不 經意間開源已經步入你的電腦,不信啊!你JDK的安裝目錄jdk1.6.0 src com sun org apache就是Xerces,一個XML解析的著名的開源項目)

  不管怎麼樣我還是建議從基本的做起,學精J2SE,熟讀它的源碼,準确了解其設計理念,然後分頭擊破J2EE――一口吃不成一個胖子!不要貪多貪 廣!腳踏實地就可以了!