J2EE學習中一些值得研究的開源項目

摘要:這篇文章寫在我研究J2SE、J2EE近三年後。前3年我研究了J2SE的Swing、Applet、Net、RMI、Collections、 IO、JNI……研究了J2EE的JDBC、Sevlet、JSP、JNDI…..不久我發現這些好像太浮淺了:首先,我發現

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

今後一發不可收拾,我繼續研究了J2EE的部分,又發現這是一個我根本不能理解的方向(曾經有半年停滯不前),爲何只有接口沒有實現啊!後來因爲 一直使用Tomcat、Derby等軟件忽然發現:哦!原來J2EE僅僅是一個標準,只是一個架構。真正的實現是不一樣提供商提供的。java

接着我研究了MOM4J、OpenJMS、Mocki、HSQLD……發現這些就是J2EE的實現啊!原來軟件竟會如此複雜,竟會如此作….規範和 實現又是如何成爲一體的呢?經過上面的研究發現:原來J2EE後面居然有太多太多理念、太多太多的類似!這些類似就是其背後的理念――設計模式!(很幸 運,在我學java的時候,我通常學java的一個方向就會讀一些關於設計模式的書!很幸運,到能領略一點的時候能真正知道這是爲何!)其實模式就是一 種思惟方式、就是一種理念……模式是要運用到程序中的,只有從真正的項目中才能領會模式的含義……
學得越多,發現懂得越少!在學習過程當中發現一些頗有用,很值得學習的開源項目,今天在此推薦給你們。web

1、JavaServlet和JSP方向sql

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

1. Jakarta Tomcatapache

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小多了,且開發者提供比較全的手冊。該方向研究這兩個也就能夠了!

2、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從業人員,我認爲仍是先研究別人的優秀的東西比較好!能夠先研究別人的, 而後消化,學爲己用!一心閉門造車實在遺憾!

3、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!

4、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/

5、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*七、專業級產品支持服務。同時,爲拓展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能將這些項目和方法的配置及部署徹底整合到一個統1、易用的模型中。做爲符合J2EE標準的服務器,Geronimo提供了豐富的功能集 和無責任 Apache 許可,具有「當即部署」式J2EE 1.4容器的各類優勢,其中包括:

1. 符合J2EE1.4標準的服務器 。

2. 預集成的開放源碼項目 。

3. 統一的集成模型 。

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

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

6、其它

講了這麼多你們可能很厭煩了!是否是不少不少啊!其實否則,咱們不會的太多太多了!不會的太多太多了。無論你是否是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――一口吃不成一個胖子!不要貪多貪 廣!腳踏實地就能夠了!

相關文章
相關標籤/搜索