一、JavaServlet和JSP方向
很多人都是从Servlet和JSP步入J2EE的。它?yu)是J2EE的表现层Q用于向客户呈现服务器上的内宏VJ2EE很重要的斚w。不|嗦 ?大家都知道的!下面开始推荐吧!
1. Jakarta Tomcat
Apache基金?x)提供的免费的开源的Serlvet容器Q它是的Jakarta目中的一个核?j)项目,由Apache、Sun和其它一些公? (都是IT界的大鳄??qing)个人共同开发而成Q全世界l大部分Servlet和Jsp的容器都是用它?׃Sun的参与和支持Q最新的Servlet? Jsp规范总能在Tomcat中得C现?/p>
不过它是一个非帔R常全的Serlvet容器Q全部源码可能有4000,对于初学者或者一般的老手可能q是比较大了(jin)!在你有能力时推荐研究! 下蝲地址Qhttp://jakarta.apache.org/tomcat/index.html
下面推荐两个一点的?
2. Jetty
Jetty是一个开放源码的HTTP服务器和Java serverlet容器。源代码只有1000左叻I很值得研究。有兴趣可以去http://jetty.mortbay.com/下蝲看看。我曄M(jin) 一下,只是目前没有旉?都化在博客上?jin),{博客基本定型,且内容完整了(jin)Q再q我热衷的事件吧!)
3. Jigsaw
Jigsaw是W3C开发的HTTPQ基于Java 的服务器Q提供了(jin)未来 Web 技术发展的蓝图。W3C知道?(太有名气?jin),很多标准都是它制订?有空l常ȝ看吧!)下蝲|址Qhttp://www.w3.org/Jigsaw 代码仅仅1000左叟?/p>
4. Jo!
Jo!是一个纯Java的实C(jin)Servlet API 2.2, JSP 1.1, 和HTTP/1.1的Web服务器。它的特性包括支持servlet tag,支持SSIQ高U线E管理,虚拟LQ数据缓存,自动压羃text或HTML文gq行传输Q国际化支持Q自动重新加载Servlet、JspQ自 动重新加载web工程文g(WARs)Q支持WAR热部|和一个Swing控制台。jo!可以被用做jboss和jakarta avalon-phoenix的web容器。下载地址http://www.tagtraum.com/ 。我极力推荐大家在研ITomcat之前研究该YӞ主要是其比Tomcat多?jin),且开发者提供比较全的手册。该方向研究q两个也可以了(jin)!
二、JDBC方向
很多人都喜欢JDBCQ数据库?很深奥的东西Q一听就可以p弄人。其实等你真正研I了(jin)数据库的实现后发玎ͼ接口其实真的太简单,太完了(jin)!? 惌计如此优U的框架还是需要学?fn)的。下面就推荐几个数据库的实现?
1. Hypersonic SQL
Hypersonic SQL开源数据库方向比较行的纯Java开发的关系型数据库。好像不是JDBC兼容的,JDBC的很多高U的Ҏ(gu)都没有支持Q不q幸好支持ANSI- 92 标准 SQL语法。我推荐它主要是它的代码比较?yu)?600左叻I如此的数据库值得研究Q而且他占的空间很,大约只有160KQ拥有快速的数据库引擎。推? 你的W一个开源数据库。下载地址Qhttp://hsqldb.sourceforge.net/?/p>
2. Mckoi DataBase
McKoiDB 和Hypersonic SQL差不多,它是GPL 的license的纯Java开发的数据库。他?JDBC Driver 是?JDBC version 3 ?Specifaction?他也是遵?SQL-92 的标准,也尽量支持新?SQL 特色, q且支持 Transaction 的功能。两个可以选一个吧!下蝲地址Qhttp://mckoi.com/database/?/p>
3. Apache Derby
学Java的数据库我徏议用Apache Derby Q研I数据库x(chng)Z个数据库的高手我你先研究Apache Derby。Apache Derby是一个高质量的、纯 Java开发的嵌入式关pL据库引擎QIBM® 其捐献lApache开放源码社区,同时IBM的品CloudSpace是它对应的品。Derby是基于文件系l,h高度的可UL性,q且是轻? U的Q这使得它非怾于发布。主要是没有商业用户的很好的界面Q没有其太多的功能。不q对于我们用数据库、研I数据库q是极其有用的。对于中型的企? 说老实话你也不要用什么Oracle、SqlServer?jin),用Derby可以了(jin)Q何冉|开源的?只要能发挥其长处也不Ҏ(gu)?下蝲? 址Qhttp://incubator.apache.org/derby?/p>
不过在没有够的能力前,不要试图L?注释和源代码15000左叻I我一q的阅读?能读下来q且能真正领?x)它Q绝寚w?你能d Derby的源代码只有两种可能Q?.你成为顶的高手――至是数据库这部分;2.你疯?jin)。选择?!!!作ؓ(f)我自己我先选择Hypersonic SQLq样的数据库先研IӞ能过q一养I再l研IDerby!不就是一q的阅读量吗!我可以化3q去研究如何做一个数据库其实q是很值得?有的人搞 IT一辈子自己什么都没有做,也根本没有研I别人的东西!
作ؓ(f)一个IT落后于别国若q年的、从事IT的下?#8220;外包”的国家的IT从业人员Q我认ؓ(f)q是先研I别人的优秀的东西比较好!可以先研I别? 的,然后消化Q学为己?一?j)闭门造R实在遗憾!
三、JMS方向
JMS可能对大家来说是一个比较陌生的方向!其实JMS是一个比较容易理解,Ҏ(gu)上手的方向。主要是Java消息服务QAPI也是相当单的? 不过在企业应用中相当q泛。下面就介绍几个?
1. MOM4J
MOM4J是一个完全实现JMS1.1规范的消息中间gq且向下兼容JMS1.0?.02。它提供?jin)自q消息处理存储使它独立于关pL据与 语言Q它的客L(fng)可以用Q何语a开发。它可以是一个小麻雀Q很全实C比较?它包含一个命名服务器Q一个消息服务器Q同时提供自q持箋(hu)层。设计也 相当的y妙,完全利用操作pȝ中文件系l设计的观念。代码也很少Q?50左叻I最q我在写该实现的源代码阅L面的书,希望明年q中能与大家见面!下蝲 地址Qhttp://mom4j.sourceforge.net/index.html?/p>
2. OpenJMS
OpenJMS是一个开源的Java Message Service API 1.0.2 规范的实玎ͼ它包含有以下Ҏ(gu):(x)
1. 它既支持点到?point-to-point)(PTP)模型和发?订阅(Pub/Sub)模型?
2. 支持同步与异步消息发??/p>
3. JDBC持久性管理用数据库表来存储消息 ?/p>
4. 可视化管理界面?/p>
5. Applet支持?/p>
6. 能够与Jakarta Tomcatq样的Servlet容器l合?/p>
7. 支持RMI, TCP, HTTP 与SSL协议?/p>
8. 客户端验??/p>
9. 提供可靠消息传输、事务和消息qo(h)?/p>
很好的JMS方向的开源项?我目前也在研I它的源代码!学习(fn)它可以顺便研IJNDI的实现、以?qing)网l通信的细节。这是我JMS方向研究的第? 个开源项目。代码量1600左叛_!下蝲地址Qhttp://openjms.sourceforge.net/index.html
3. ActiveMQ
ActiveMQ是一个开放源码基于Apache 2.0 licenced 发布q实C(jin)JMS 1.1。它能够与GeronimoQ轻量容器和QJava应用E序无缝的给合。主要是Apache的可以Q意的使用和发布哦!个h比较喜欢Apache 的源代码!下蝲地址Qhttp://activemq.codehaus.org/
4. JORAM
JORAM一个类gopenJMS分布在ObjectWeb之下的JMS消息中间件。ObjectWeb的品也是非常值得研究?下面我还 ?x)给大家另外一个ObjectWeb的品。下载地址Qhttp://joram.objectweb.org/
我个人推荐:(x)OpenJMS和ActiveMQ!
四、EJB方向
EJB一个比?#8220;高”的方向。Sun公司曄以此在分布式计算领域重拳出击。不q自从出C(jin)Spring、Hibernation……后似? 没落?q个方向单独开源的也比较少Q主要EJB是和JNDI、JDBC、JMS、JTS、JTAl合在一L(fng)是以很少有单独的。下面推荐两个不q好像也 要下载其它类库?/p>
1. EasyBeans
ObjectWeb的一个新的项目,一个轻量的EJB3容器Q虽然还没有正式发布Q但是已l可以从它们的subversion仓库中检Z 码。代码量比较?yu)?00左叻I熟读它可以对|络~程、架构、RMI、容器的状态设计比较了(jin)解了(jin)!卛_?x)EJB又能学习(fn)其它设计Ҏ(gu)何乐而不为哦!下蝲? 址Qhttp://easybeans.objectweb.org/
2. OpenEJB
OpenEJB是一个预生成的、自包含的、可UL的EJB容器pȝQ可以被插入CQ意的服务器环境,包括应用E序服务器,W(xu)eb服务 器,J2EEq_Q?CORBA ORB和数据库{等。OpenEJB 被用? Apple的WebObjects。听h很好Q我目前没有研究q。不知道我就不推荐了(jin)。下载地址Qhttp://www.openejb.org/
五、J2EE容器
上面谈了(jin)q么多,都是J2EE的各个方向的。其实J2EE是一个规范,J2EE的品一般要求专业提供商必须提供它们的实现。这些实现本w就? J2EE容器。市(jng)Z行的J2EE容器很多Q在开源领域流行的只有很少Q很。其中最著名的是JBoss?/p>
1. JBoss
在J2EE应用服务器领域,Jboss是发展最速的应用服务器。由于Jboss遵@商业友好的LGPL授权分发Qƈ且由开源社区开发,q 得Jbossqؓ(f)行。另外,Jboss应用服务器还h许多优秀的特质?/p>
其一Q它?yu)具有革命性的JMX微内核服务作为其ȝl构;
其二Q它本n是面向服务的架?Service-Oriented ArchitectureQSOA);
其三Q它q具有统一的类装蝲器,从而能够实现应用的热部|和热卸载能力。因此,它是高度模块化的和松耦合的。Jboss用户的积极反馈告诉我 们,Jboss应用服务器是健壮的、高质量的,而且q具有良好的性能。ؓ(f)满企业U市(jng)场日益增长的需求,Jboss公司?003q开始就推出? 24*7、专业产品支持服务。同Ӟ为拓展Jboss的企业?jng)场QJboss公司q签订了(jin)许多渠道合作伙伴。比如,Jboss公司同HP? Novell、Computer Associates、Unisys{都是合作伙伴?/p>
?004q?月,Jboss公司宣布QJboss应用服务器通过?jin)Sun公司的J2EE认证。这是Jboss应用服务器发展史上至今ؓ(f)止最? 要的里程。与此同ӞJboss一直在紧跟最新的J2EE规范Q而且在某些技术领域引领J2EE规范的开发。因此,无论在商业领域,q是在开源社 区,Jboss成ؓ(f)?jin)第一个通过J2EE 1.4认证的主应用服务器。现在,Jboss应用服务器已l真正发展成h企业强度(卻I支持关键UQ务的应用)的应用服务器?/p>
Jboss 4.0作ؓ(f)J2EE认证的重要成果之一Q已l于2004q?月顺利发布了(jin)。同ӞJboss 4.0q提供了(jin)Jboss AOP(Aspect-Oriented ProgrammingQ面向方面编E?lg。近来,AOP吸引?jin)大量开发者的x(chng)。它提供的新的编E模式得用戯够将斚w(比如Q事?从底层业务? 辑中分离出来Q从而能够羃短Y件开发周期。用戯够单独用Jboss AOPQ即能够在Jboss应用服务器外部用它。或者,用户也可以在应用服务器环境中使用它。Jboss AOP 1.0已经?004q?0月发布了(jin)?很有名吧!可以下蝲一个用一下,下蝲地址Qhttp://www.jboss.org/
关于JBoss的用资料也非常多,甚至比商业Y件的q多。有Z(x)研究?
2. JOnAS
JOnAS是一个开放源代码的J2EE实现Q在ObjectWeb协会(x)中开发。整合了(jin)Tomcat或Jetty成ؓ(f)它的Web容器Q以保W合 Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java APIQJCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。下载地址Qhttp://jonas.objectweb.org/
3.Apache Geronimo
Apache Geronimo ?Apache 软g基金?x)的开放源码J2EE服务器,它集成了(jin)众多先进技术和设计理念? q些技术和理念大多源自独立的项目,配置和部|模型也各不相同? Geronimo能将q些目和方法的配置?qing)部|完全整合到一个统一、易用的模型中。作为符合J2EE标准的服务器QGeronimo提供?jin)丰富的功能? 和无责Q Apache 许可Q具?#8220;立即部v”式J2EE 1.4容器的各U优点,其中包括Q?/p>
1. W合J2EE1.4标准的服务器 ?/p>
2. 预集成的开放源码项??/p>
3. l一的集成模??/p>
4. 可~性、可理性和配置理功能?/p>
我一直比较推荐Apache的品。主要是可以L自由C用。下载地址Qhttp://incubator.apache.org /projects/geronimo/
六、其?/p>
讲了(jin)q么多大家可能很厌烦(ch)?是不是很多很多啊!其实不然Q我们不?x)的太多太多?不会(x)的太多太多了(jin)。不你是不是J2EE高手Q还是J2SE 高手Q有些东西你要绝对很_明的。例如:(x)1.Java的Collections Framework是java的数据结构了(jin)Q不仅要吃透它Q还要能按照需要扩展它Q利用其思想创徏一个自q数据l构?.|络~程肯定要会(x)吧,现在? ?qing)以后很多程序都是不在同一台机器上的,不会(x)|络怎么行哦!3.IO肯定要会(x)的吧!你的E序N不用输入输出数据?整个IO包加NIO也有600多页? 源代码哦!4.JDBC你要?x)?数据库都不会(x)Q在你的企业应用中你的数据又保存到哪里啊!文g中――太落后?jin)?典型的没有学qJ2EE。尽数据库? 后也是采用文件保存的?.Serverlet、JSp你要是做|页做网站,肯定要做到。问你一个简单的问题Q网中如何实现分页?有具体方法的在? 文章后发a?6. Ant要会(x)?java语言中发布的工具Q类gc中的make工具?.JUnit用过?单元试软g。你不要?你的软g没有bug!你牛!(? 议大家研I研I其源代码,很有用的框架Q包含大量的设计模式Q源代码不到100?看了(jin)只能感叹――高手就是高?l心(j)的朋友可以看到在你用的很多 IDE工具中都有JUnit?是它?/p>
一切的一切才刚刚开?有兴,有需要你可以研究数据库连接池的框Ӟ如:(x)C3P0、Jakarta DBCP? DBPool….可以研究J2EE框架Spring……. Web框架Struts……持久层框架Hibernate…..甚至开发工具Eclipse…..Sun领导的点对点通信的JXTA…..报表工具 JFreeChart、JasperReports…..分布式网l编E的CORBA、网l通信的JGROUPS、XML解析的xerces…..(在不 l意间开源已l步入你的电(sh)脑,不信?你JDK的安装目录jdk1.6.0 src com sun org apache是XercesQ一个XML解析的著名的开?目)
不管怎么hq是从基本的做vQ学_J2SEQ熟d的源码,准确?jin)解其设计理念,然后分头ȝJ2EE――一口吃不成一个胖?不要贪多 贪广!脚踏实地可以了(jin)!