1、主要就我所了解的主要就我所了解的 J2EE 开发的框架或开发的框架或 开源项目开源项目 做个介绍做个介绍 ,可以根据可以根据需求选用适当的开源组件进行开发需求选用适当的开源组件进行开发 .主要还是以主要还是以 Spring 为核心为核心 ,也总也总结了一些以前结了一些以前 web 开发常用的开源工具和开源类库开发常用的开源工具和开源类库1 持久层持久层 :1)Hibernate这个不用介绍了这个不用介绍了 ,用的很频繁用的很频繁 ,用的比较多的是映射用的比较多的是映射 ,包括继承映射和包括继承映射和父子表映射父子表映射对于对于 DAO 在这里介绍个在它基础上开发的包在这里介绍个在它基础上开发的
2、包 bba96,目前最新版本是目前最新版本是bba96 2.0 它对它对 Hibernate 进行了封装进行了封装 , 查询功能包括执行查询功能包括执行 hsql 或者或者sql 查询查询 /更新的方法,如果你要多层次逻辑的条件查询可以自己组更新的方法,如果你要多层次逻辑的条件查询可以自己组装装 QueryObject.可以参考它做可以参考它做 HibernateDAO.也可以直接利用它也可以直接利用它2) iBATIS另一个另一个 ORM 工具工具 ,Apache 的的 ,没有没有 Hibernate 那么集成那么集成 ,自由度比较大自由度比较大2:SpringMVC原理说明和快速入门原理说
3、明和快速入门 :配置文件为配置文件为 :Spring 的配置文件默认为的配置文件默认为 WEB-INF/xxxx-servelet.xm 其中其中 xxx 为为web.xml 中中 org.springframework.web.servlet.DispatcherServlet 的的servlet-name。Action 分发分发 :Spring 将按照配置文件定义的将按照配置文件定义的 URL, Mapping 到具体到具体 Controller 类,类,再根据再根据 URL 里的里的 action= xxx 或其他参数,利用反射调用或其他参数,利用反射调用 Controller里对应的里
4、对应的 Action 方法。方法。输入数据绑定输入数据绑定 :Spring 提供提供 Binder 通过名字的一一对应反射绑定通过名字的一一对应反射绑定 Pojo,也可以直接,也可以直接从从 request.getParameter()取数据。取数据。输入数据验证输入数据验证Sping 提供了提供了 Validator 接口当然还可以使用开源的接口当然还可以使用开源的 Commons-Validaor 支持最好支持最好Interceptor(拦截器拦截器 )Spring 的拦截器提供接口需要自己编写的拦截器提供接口需要自己编写 ,在这点不如在这点不如 WebWork 做的做的好好 .全面全面
5、(这里提一下这里提一下 WebWork 和和 Struts 的区别最主要的区别在于的区别最主要的区别在于 WebWork在建立一个在建立一个 Action 时是新时是新 New 一个对象而一个对象而 Struts 是是 SingleMoule 所所有的都继承它的一个有的都继承它的一个 Action,所以根据项目需要合适的选择所以根据项目需要合适的选择 .)3:View 层层1) 标签库标签库 :JSP2.0/JSTL由于由于 Webwork 或或 Spring 的标签确实很有限的标签确实很有限 ,一般一般 view 层用层用 JSTL 标标签签 ,而且据说而且据说 JSTL 设计很好速度是所有
6、标签中最快的使用起来也很设计很好速度是所有标签中最快的使用起来也很简单简单2) 富客户端富客户端 :DOJO Widgets, YUI(YahooUI),FCKEditor, Coolest 日历日历控件控件Dojo 主要提供主要提供 Tree, Tab 等富客户端控件等富客户端控件 ,可以用其进行辅助客户端可以用其进行辅助客户端开发开发YahooUI 和和 DOJO 一样它有自己的一套一样它有自己的一套 javascript 调试控制台调试控制台 ,主要支主要支持持 ajax 开发也有很多开发也有很多 Tree,Table,Menu 等富客户端控件等富客户端控件FCKEditor 最流行的文
7、本编辑器最流行的文本编辑器Coolest 日历控件日历控件 目前很多日历控件可用目前很多日历控件可用 ,集成在项目中也比较简单集成在项目中也比较简单 ,这个只是其中的一个这个只是其中的一个 ,界面不错的说界面不错的说 3) JavaScript:Prototype.jsPrototype.js 作为作为 javascript 的成功的开源框架,封装了很多好用的功的成功的开源框架,封装了很多好用的功能能 ,通过它很容易编写通过它很容易编写 AJAX 应用应用 ,现在现在 AJAX 技术逐渐成熟技术逐渐成熟 ,框架资框架资源比较丰富源比较丰富 ,比如比如 YUI,DWR 等等等等 ,也是因为也是因
8、为 JavaScript 没有合适的调没有合适的调试工具试工具 ,所以没有必要从零开始编写所以没有必要从零开始编写 AJAX 应用应用 ,个人认为多用一些成个人认为多用一些成熟的熟的 Ajax 框架实现无刷新更新页面是不错的选择框架实现无刷新更新页面是不错的选择 .4)表格控件表格控件 :Display Tag ,Extreme Table这两个的功能差不多这两个的功能差不多 ,都是都是 View 层表格的生成层表格的生成 ,界面也比较相向界面也比较相向 ,可以可以导出导出 Excel,Pdf,对对 Spring 支持很容易支持很容易 .相比较而言比较推荐相比较而言比较推荐 ExtremeTa
9、ble,它的设计很好功能上比它的设计很好功能上比DisplayTag 多一些多一些 ,支持支持 Ajax,封装了一些拦截器封装了一些拦截器 ,而且最方面的是在而且最方面的是在主页主页 wiki 中有详细的中文使用文档中有详细的中文使用文档 .5):OSCacheOSCache 是是 OpenSymphony 组织提供的一个组织提供的一个 J2EE 架构中架构中 Web 应用应用层的缓存技术实现组件层的缓存技术实现组件 ,Cache 是一种用于提高系统响应速度、改善是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在系统运行性能的技术。尤其是在 Web 应用中,通过缓存页面的输出应用中,
10、通过缓存页面的输出结果,可以很显著的改善系统的稳定性和运行性能。结果,可以很显著的改善系统的稳定性和运行性能。它主要用在处理短时间或一定时间内一些数据或页面不会发生变化它主要用在处理短时间或一定时间内一些数据或页面不会发生变化 ,或将一些不变的统计报表或将一些不变的统计报表 ,缓冲在内存缓冲在内存 ,可以充分的减轻服务器的压力可以充分的减轻服务器的压力 ,防防治负载平衡治负载平衡 ,快速重启服务器快速重启服务器 (通过硬盘缓存通过硬盘缓存 ).6)SiteMeshsitemesh 应用应用 Decorator 模式主要用于提高页面的可维护性和复用性,模式主要用于提高页面的可维护性和复用性,其原
11、理是用其原理是用 Filter 截取截取 request 和和 response,把页面组件把页面组件head,content,banner 结合为一个完整的视图。通常我们都是用结合为一个完整的视图。通常我们都是用 include标签在每个标签在每个 jsp 页面中来不断的包含各种页面中来不断的包含各种 header, stylesheet, scripts and footer,现在,在,现在,在 sitemesh 的帮助下,我们删掉他们轻松达到复的帮助下,我们删掉他们轻松达到复合视图模式合视图模式 .Sitemesh 也是也是 OpenSymphony 的一个项目现在最近的版本是的一个项目
12、现在最近的版本是 2.2,目目前前 OpenSymphony 自从自从 04 年就没有更新的版本了年就没有更新的版本了 感觉它还是比较感觉它还是比较有创新的一种页面组装方式有创新的一种页面组装方式 , OpenSymphony 开源组织的代码一般写开源组织的代码一般写的比较漂亮的比较漂亮 ,可以改其源代码对自己的项目进行适配可以改其源代码对自己的项目进行适配 .测试发现测试发现 Sitemesh 还存在一些问题还存在一些问题 ,比如中文问题比如中文问题 ,它的默认编码是它的默认编码是iso-8859-1 在使用时候需要做一些改动在使用时候需要做一些改动 .7)CSS,XHTML这个不用说了这个
13、不用说了 ,遵循遵循 W3C 标准的标准的 web 页面开发页面开发 .8)分页标签分页标签 : pager-taglib 组件组件Pager-taglib 是一套分页标签库,可以灵活地实现多种不同风格的分是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离页导航页面,并且可以很好的与服务器分页逻辑分离 .使用起来也比使用起来也比较简单较简单 .9)Form: Jodd Form taglibJodd Form taglib 使用比较简单使用比较简单 ,只要把只要把 form 的头尾以包住的头尾以包住就会自动绑定就会自动绑定 mybean, 自动绑定自
14、动绑定 mybean 的所有同名属性到普通的所有同名属性到普通html 标记标记 input, selectbox, checkbox,radiobox.在这些在这些 input 框里不用框里不用再写任何代码再写任何代码 10)Ajax:DWRJ2EE 应用最常用的应用最常用的 ajax 框架框架11)报表报表 图表图表Eclipse BIRT 功能比较强大功能比较强大 ,也很庞大也很庞大 好几十好几十 M,一般没有特别需求一般没有特别需求或别的图表设计软件可以解决的不用它或别的图表设计软件可以解决的不用它JasperReports+ iReport 是一个基于是一个基于 Java 的开源报表
15、工具,它可以在的开源报表工具,它可以在Java 环境下像其它环境下像其它 IDE 报表工具一样来制作报表。报表工具一样来制作报表。 JasperReports 支支持持 PDF、 HTML、 XLS、 CSV 和和 XML 文件输出格式。文件输出格式。 JasperReports是当前是当前 Java 开发者最常用的报表工具。开发者最常用的报表工具。JFreeChart 主要是用来制作各种各样的图表,这些图表包括:饼图、主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图柱状图 (普通柱状图以及堆栈柱状图普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混、线图、区域图、分布图、混合图、
16、甘特图以及一些仪表盘等等。合图、甘特图以及一些仪表盘等等。琴棋报表琴棋报表 ,国产的国产的 重点推荐重点推荐 ,适合中国的情况适合中国的情况 ,开放源代码,使用完全开放源代码,使用完全免费。纯免费。纯 JAVA 开发,适用多种系统平台。特别适合开发,适用多种系统平台。特别适合 B/S 结构的系结构的系统。官方网站有其优点介绍统。官方网站有其优点介绍 ,看来用它还是不错的选择看来用它还是不错的选择 ,最重要的是支最重要的是支持国产呵呵持国产呵呵4:权限控制权限控制 : AcegiAcegi 是是 Spring Framework 下最成熟的安全系统,它提供了强大灵下最成熟的安全系统,它提供了强大
17、灵活的企业级安全服务,如完善的认证和授权机制,活的企业级安全服务,如完善的认证和授权机制, Http 资源访问控资源访问控制,制, Method 调用访问控制等等调用访问控制等等 ,支持支持 CAS(耶鲁大学的单点登陆技术耶鲁大学的单点登陆技术 ,这个单点登陆方案比较出名这个单点登陆方案比较出名 .我也进行过我也进行过配置使用配置使用 ,可以根据项目需要可以根据项目需要 ,如果用户分布在不同的地方不同的系统如果用户分布在不同的地方不同的系统通用一套登陆口令可以用它进行解决通用一套登陆口令可以用它进行解决 ,一般注册机登陆机就是这样解一般注册机登陆机就是这样解决的决的 )Acegi 只是于只是于
18、 Spring 结合最好的安全框架结合最好的安全框架 ,功能比较强大功能比较强大 ,当然还有一当然还有一些其他的安全框架些其他的安全框架 ,这里列举一些比较流行的是我从网上找到的这里列举一些比较流行的是我从网上找到的 ,使用使用方法看其官方文档把方法看其官方文档把 JAAS, Seraph, jSai - Servlet Security, Gabriel, JOSSO, Kasai, jPAM, OpenSAML 都是些安全控制的框架都是些安全控制的框架 真够多的呵呵真够多的呵呵5:全文检索全文检索1) LuceneLucene 是一套全文索引接口是一套全文索引接口 ,可以通过它将数据进行倒
19、排文件处理加可以通过它将数据进行倒排文件处理加入索引文件入索引文件 ,它的索引速度和查询速度是相当快的它的索引速度和查询速度是相当快的 ,查询百万级数据毫查询百万级数据毫秒级出结果秒级出结果 ,现在最火的现在最火的 Apache 开源项目开源项目 ,版本更新速度很快现在已版本更新速度很快现在已经到了经到了 2.0,每个版本更新的都比较大每个版本更新的都比较大 ,目前用的最多的版本应该是目前用的最多的版本应该是1.4.3,但它有个不太方面的地方单个索引文件有但它有个不太方面的地方单个索引文件有 2G 文件限制文件限制 ,现在现在2.0 版本没有这个限制版本没有这个限制 ,我研究的比较多我研究的比
20、较多 ,它的扩展性比较好它的扩展性比较好 ,可以很方可以很方面的扩充其分词接口和查询接口面的扩充其分词接口和查询接口 .基于它的开发的系统很多基于它的开发的系统很多 ,比如最常用的比如最常用的 Eclipse 的搜索功能的搜索功能 ,还有一还有一些开源的软件比如些开源的软件比如 Compass,Nutch,Lius,还有我最近做的还有我最近做的 InSearch(企企业级业级 FTP 文件网页搜索文件网页搜索 ) 6:公共公共 Util 类类主要是主要是 Jakarta-Commons 类库类库 ,其中最常用得是以下几个类库其中最常用得是以下几个类库1) Jakarta-Commons-Lan
21、guage最常用得类是最常用得类是 StringUtils 类类 ,提供了使用的字符串处理的常用方法效提供了使用的字符串处理的常用方法效率比较高率比较高2) Jakarta-Commons-Beantuils主要用主要用 Beantuils 能够获得反射函数封装及对嵌套属性,能够获得反射函数封装及对嵌套属性, map,array 型型属性的读取。属性的读取。3) Jakarta-Commons-Collections里面有很多里面有很多 Utils 方法方法7 日志管理日志管理Log4J任务是日志记录任务是日志记录 ,分为分为 Info,Warn,error 几个层次可以更好的调试程序几个层次
22、可以更好的调试程序8 开源的开源的 J2EE 框架框架1) AppfuseAppfuse 是是 Matt Raible 开发的一个指导性的入门级开发的一个指导性的入门级 J2EE 框架框架 , 它对它对如何集成流行的如何集成流行的 Spring、 Hibernate、 iBatis、 Struts、 Xdcolet、 JUnit等基础框架给出了示范等基础框架给出了示范 . 在持久层,在持久层, AppFuse 采用了采用了 Hibernate O/R映射工具;在容器方面,它采用了映射工具;在容器方面,它采用了 Spring,用户可以自由选择用户可以自由选择Struts、 Spring/MVC,
23、 Webwork, JSF 这几个这几个 Web 框架。框架。2) SpringSide.SpringSide 较完整的演示了企业应用的各个方面较完整的演示了企业应用的各个方面 ,是一个电子商务网是一个电子商务网站的应用站的应用 SpringSide 也大量参考了也大量参考了 Appfuse 中的优秀经验。最重要中的优秀经验。最重要的是它是国内的一个的是它是国内的一个 开源项目开源项目 ,可以了解到国内现在的一些实际技术可以了解到国内现在的一些实际技术动态和方向很有指导意义动态和方向很有指导意义 9:模版模版 Template 主要有主要有 Veloctiy 和和 Freemarker模板用模
24、板用 Servlet 提供的数据动态地生成提供的数据动态地生成 HTML。编译器速度快,输。编译器速度快,输出接近静态出接近静态 HTML 页面的速度。页面的速度。10:工作流工作流我所知道比较出名的主要有我所知道比较出名的主要有 JBpm Shark Osworkflow,由于对它没有由于对它没有过多的研究所以还不是很清楚之间有什么区别过多的研究所以还不是很清楚之间有什么区别 .项目管理软件项目管理软件dotProject:是一个基于是一个基于 LAMP 的的 开源项目开源项目 管理软件。最出名的项目管理软件。最出名的项目管理软件管理软件JIRA: 项目计划,任务安排,错误管理项目计划,任务
25、安排,错误管理Bugzilla:提交和管理提交和管理 bug,和和 eclipse 集成集成 ,可以通过安装可以通过安装 MyEclipse 配配置一下即可使用置一下即可使用BugFree 借鉴微软公司软件研发理念、免费开放源代码、基于借鉴微软公司软件研发理念、免费开放源代码、基于 Web的精简版的精简版 Bug 管理管理CVS:这个就不介绍了都在用这个就不介绍了都在用 .SVN: SubVersion 已逐渐超越已逐渐超越 CVS,更适应于,更适应于 JavaEE 的项目。的项目。Apache 用了它很久后,用了它很久后, Sourceforge 刚刚推出刚刚推出 SVN 的支持。的支持。测
26、试用例测试用例 :主要主要 JUnit 单元测试单元测试 ,编写编写 TestCase,Spring 也对也对 Junit 做了做了很好的支持很好的支持后记后记 :以以 Spring 为主的应用开发可选用的组件中间件真是眼花缭乱为主的应用开发可选用的组件中间件真是眼花缭乱 ,所以针所以针对不同的项目需求可以利用不同的开源产品解决对不同的项目需求可以利用不同的开源产品解决 ,比如用比如用Spring+Hibernate/ iBATIS 或或 Spring+WebWork+Hibernate/ iBATIS 或或Spring+Struts+Hibernate/ iBATIS,合理的框架设计和代码复
27、用设计对合理的框架设计和代码复用设计对项目开发效率和程序性能有很大的提高项目开发效率和程序性能有很大的提高 ,也有利于后期的维护也有利于后期的维护 .一、JavaServlet 和 JSP 方向很多人都是从 Servlet 和 JSP 步入 J2EE 的。它就是 J2EE 的表现层,用于向客户呈现服务器上的内容。J2EE 很重要的方面。不罗嗦了!大 家都知道的!下面就开始推荐吧!1. Jakarta TomcatApache 基金会提供的免费的开源的 Serlvet 容器,它是的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其它一些公司(都 是 IT 界的大鳄哦)及个人共
28、同开发而成,全世界绝大部分 Servlet 和 Jsp 的容器都是使用它哦!由于Sun 的参与和支持,最新的 Servlet 和 Jsp 规范总能在 Tomcat 中得到体现。不过它是一个非常非常全的 Serlvet 容器,全部源码可能有 4000 页,对于初学者或者一般的老手可能还是比较大了!在你有能力时推荐研究!下载 地址:http:/jakarta.apache.org/tomcat/index.html下面推荐两个小一点的吧!2. JettyJetty 是一个开放源码的 HTTP 服务器和 Java serverlet 容器。源代码只有 1000 页左右,很值得研究。有兴趣可以去 ht
29、tp:/ 一下,只是目前没有时间。(都化在博客上了,等博客基本定型,且内容完整了,再干我热衷的事件吧!)3. JigsawJigsaw 是 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,高级线程管理,虚
30、拟主机,数据缓存,自动压缩 text 或 HTML 文件进行传输,国际化支持,自动重新加载 Servlet、Jsp,自 动重新加载 web 工程文件(WARs),支持 WAR 热部署和一个 Swing 控制台。jo!可以被用做 jboss 和 jakarta avalon-phoenix 的web 容器。下载地址 http:/ 。我极力推荐大家在研究Tomcat 之前研究该软件,主要是其比 Tomcat 小多了,且开发者提供比较全的手册。该方向研究这两个也就可以了!二、JDBC 方向很多人都喜欢 JDBC,数据库吗!很深奥的东西,一听就可以糊弄人。其实等你真正研究了数据库的实现后发现,接口其实
31、真的太简单,太完美了!要想设 计如此优秀的框架还是需要学习的。下面就推荐几个数据库的实现吧!1. Hypersonic SQLHypersonic SQL 开源数据库方向比较流行的纯 Java 开发的关系型数据库。好像不是 JDBC 兼容的,JDBC 的很多高级的特性都没有支持,不过幸好支持ANSI- 92 标准 SQL 语法。我推荐它主要是它的代码比较少 1600 页左右,如此小的数据库值得研究,而且他占的空间很小,大约只有 160K,拥有快速的数据库引擎。推荐 你的第一个开源数据库。下载地址:http:/ Mckoi DataBaseMcKoiDB 和 Hypersonic SQL 差不多
32、,它是 GPL 的 license 的纯 Java 开发的数据库。他的 JDBC Driver 是使用 JDBC version 3 的 Specifaction。 他也是遵循 SQL-92 的标准,也尽量支持新的 SQL 特色, 并且支持 Transaction 的功能。两个可以选一个吧!下载地址:http:/ Apache Derby学 Java 的数据库我建议使用 Apache Derby ,研究数据库想成为一个数据库的高手我建议你先研究 Apache Derby。Apache Derby 是一个高质量的、纯 Java 开发的嵌入式关系数据库引擎,IBM 将其捐献给 Apache 开放源
33、码社区,同时 IBM 的产品 CloudSpace 是它对应的产品。Derby 是基于文件系统,具有高度的可移植性,并且是轻量 级的,这使得它非常便于发布。主要是没有商业用户的很好的界面,没有其太多的功能。不过对于我们使用数据库、研究数据库还是极其有用的。对于中小型的企业 说老实话你也不要用什么Oracle、SqlServer 了,用 Derby 就可以了,何况是开源的呢!只要能发挥其长处也不容易啊!下载地 址:http:/incubator.apache.org/derby。不过在没有足够的能力前,不要试图读懂它!注释和源代码 15000 页左右,我一年的阅读量!能读下来并且能真正领会它,绝
34、对高手!你能读完 Derby 的源代码只有两种可能:1.你成为顶尖的高手至少是数据库这部分; 2.你疯了。选择吧!作为我自己我先选择 Hypersonic SQL 这样的数据库先研究,能过这一关,再继续研究 Derby!不就是一年的阅读量吗!我可以化 3 年去研究如何做一个数据库其实还是很值得的!有的人搞 IT 一辈子自己什么都没有做,也根本没有研究别人的东西!作为一个 IT 落后于别国若干年的、从事 IT 的下游产业“外包”的国家的IT 从业人员,我认为还是先研究别人的优秀的东西比较好!可以先研究别人的,然后消化,学为己用!一心闭门造车实在遗憾!三、JMS 方向JMS 可能对大家来说是一个比
35、较陌生的方向!其实 JMS 是一个比较容易理解,容易上手的方向。主要是 Java 消息服务,API 也是相当简单的。不过 在企业应用中相当广泛。下面就介绍几个吧!1. MOM4JMOM4J 是一个完全实现 JMS1.1 规范的消息中间件并且向下兼容 JMS1.0 与1.02。它提供了自己的消息处理存储使它独立于关系数据与语 言,它的客户端可以用任何语言开发。它可以算是一个小麻雀,很全实现也比较简单!它包含一个命名服务器,一个消息服务器,同时提供自己的持续层。设计也相 当的巧妙,完全利用操作系统中文件系统设计的观念。代码也很少,250 页左右,最近我在写该实现的源代码阅读方面的书,希望明年年中能
36、与大家见面!下载地 址:http:/ OpenJMSOpenJMS 是一个开源的 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. 提供可靠消息传输、事务和消息
37、过滤。很好的 JMS 方向的开源项目!我目前也在研究它的源代码!学习它可以顺便研究 JNDI 的实现、以及网络通信的细节。这是我 JMS 方向研究的第二个开 源项目。代码量 1600 页左右吧!下载地址:http:/ ActiveMQActiveMQ 是一个开放源码基于 Apache 2.0 licenced 发布并实现了 JMS 1.1。它能够与 Geronimo,轻量级容器和任 Java 应用程序无缝的给合。主要是Apache 的可以任意的使用和发布哦!个人比较喜欢 Apache 的源代码!下载地址:http:/activemq.codehaus.org/4. JORAMJORAM 一个类
38、似于 openJMS 分布在 ObjectWeb 之下的 JMS 消息中间件。ObjectWeb 的产品也是非常值得研究的!下面我还会给 大家另外一个 ObjectWeb的产品。下载地址:http:/joram.objectweb.org/我个人推荐:OpenJMS 和 ActiveMQ!四、EJB 方向EJB 一个比较“高级”的方向。Sun 公司曾经以此在分布式计算领域重拳出击。不过自从出现了 Spring、Hibernation后似乎没落 了!这个方向单独开源的也比较少,主要 EJB 是和 JNDI、JDBC、JMS、JTS、JTA 结合在一起的是以很少有单独的。下面推荐两个不过好像也要下
39、 载其它类库。1. EasyBeansObjectWeb 的一个新的项目,一个轻量级的 EJB3 容器,虽然还没有正式发布,但是已经可以从它们的 subversion 仓库中检出代码。代 码量比较小 600页左右,熟读它可以对网络编程、架构、RMI、容器的状态设计比较了解了!即学会 EJB 又能学习其它设计方法何乐而不为哦!下载地 址:http:/easybeans.objectweb.org/2. OpenEJBOpenEJB 是一个预生成的、自包含的、可移植的 EJB 容器系统,可以被插入到任意的服务器环境,包括应用程序服务器,Web 服务器,J2EE 平 台, CORBA ORB 和数据
40、库等等。OpenEJB 被用于 Apple 的 WebObjects。听起来很好,我目前没有研究过。不知道我就不推荐了。下载地址:http:/www.openejb.org/五、J2EE 容器上面谈了这么多,都是 J2EE 的各个方向的。其实 J2EE 是一个规范,J2EE的产品一般要求专业提供商必须提供它们的实现。这些实现本身就是 J2EE 容器。市场上流行的 J2EE 容器很多,在开源领域流行的只有很少,很少。其中最著名的是 JBoss。1. JBoss在 J2EE 应用服务器领域,Jboss 是发展最为迅速的应用服务器。由于Jboss 遵循商业友好的 LGPL 授权分发,并且由开源社区开
41、发,这使得 Jboss 广为流行。另外,Jboss 应用服务器还具有许多优秀的特质。其一,它将具有革命性的 JMX 微内核服务作为其总线结构;其二,它本身就是面向服务的架构(Service-Oriented Architecture,SOA);其三,它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。因此,它是高度模块化的和松耦合的。Jboss 用户的积极反馈告诉我 们,Jboss 应用服务器是健壮的、高质量的,而且还具有良好的性能。为满足企业级市场日益增长的需求,Jboss 公司从 2003 年开始就推出了 24*7、专业级产品支持服务。同时,为拓展 Jboss 的企业级市场,Jb
42、oss 公司还签订了许多渠道合作伙伴。比如,Jboss 公司同 HP、 Novell、Computer Associates、Unisys 等都是合作伙伴。在 2004 年 6 月,Jboss 公司宣布,Jboss 应用服务器通过了 Sun 公司的J2EE 认证。这是 Jboss 应用服务器发展史上至今为止最重要的 里程碑。与此同时,Jboss 一直在紧跟最新的 J2EE 规范,而且在某些技术领域引领 J2EE 规范的开发。因此,无论在商业领域,还是在开源社 区,Jboss 成为了第一个通过 J2EE 1.4 认证的主流应用服务器。现在,Jboss 应用服务器已经真正发展成具有企业强度(即,支
43、持关键级任务的应用)的应用服务器。Jboss 4.0 作为 J2EE 认证的重要成果之一,已经于 2004 年 9 月顺利发布了。同时,Jboss 4.0 还提供了 Jboss AOP(Aspect-Oriented Programming,面向方面编程)组件。近来,AOP 吸引了大量开发者的关注。它提供的新的编程模式使得用户能够将方面(比如,事务)从底层业务逻 辑中分离出来,从而能够缩短软件开发周期。用户能够单独使用 Jboss AOP,即能够在 Jboss 应用服务器外部使用它。或者,用户也可以在应用服务器环境中使用它。Jboss AOP 1.0已经在 2004 年 10 月发布了。 很有
44、名吧!可以下载一个用一下,下载地址:http:/www.jboss.org/关于 JBoss 的使用资料也非常多,甚至比商业软件的还多。有机会研究吧!2. JOnASJOnAS 是一个开放源代码的 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 Geron
45、imoApache Geronimo 是 Apache 软件基金会的开放源码 J2EE 服务器,它集成了众多先进技术和设计理念。 这些技术和理念大多源自独立的项目,配置和部署模型也各不相同。 Geronimo 能将这些项目和方法的配置及部署完全整合到一个统一、易用的模型中。作为符合 J2EE 标准的服务器,Geronimo 提供了丰富的功能集 和无责任 Apache 许可,具备“立即部署”式 J2EE 1.4 容器的各种优点,其中包括:1. 符合 J2EE1.4 标准的服务器 。2. 预集成的开放源码项目 。3. 统一的集成模型 。4. 可伸缩性、可管理性和配置管理功能。我一直比较推荐 Apa
46、che 的产品。主要是可以任意自由地使用。下载地址:http:/incubator.apache.org /projects/geronimo/六、其它讲了这么多大家可能很厌烦了!是不是很多很多啊!其实不然,我们不会的太多太多了!不会的太多太多了。不管你是不是 J2EE 高手,还是 J2SE 高 手,有些东西你要绝对很精明的。例如:1.Java 的 Collections Framework 就是java 的数据结构了,不仅要吃透它,还要能按照需要扩展它,利用其思想创建一个自己的数据结构。2.网络编程肯定要会吧,现在以 及以后很多程序都是不在同一台机器上的,不会网络怎么行哦!3.IO 肯定要会
47、的吧!你的程序难道不用输入输出数据啊!整个 IO 包加 NIO 也有 600 多页的 源代码哦!4.JDBC 你要会吧!数据库都不会,在你的企业应用中你的数据又保存到哪里啊!文件中太落后了吧!典型的没有学过 J2EE。尽管数据库背 后也是采用文件保存的。5.Serverlet、JSp 你要是做网页做网站,肯定要做到。问你一个简单的问题,网页中如何实现分页啊!有具体方法的就在本 文章后发言吧!6. Ant 要会吧!java 语言中发布的工具,类似与 c 中的 make 工具。7.JUnit 用过吧!单元测试软件。你不要啊!你的软件就没有 bug!你牛!(建 议大家研究研究其源代码,很有用的框架,
48、包含大量的设计模式,源代码不到 100 页!看了只能感叹高手就是高手)细心的朋友可以看到在你使用的很多 IDE 工具中都有 JUnit 哦!就是它。一切的一切才刚刚开始!有兴趣,有需要你可以研究数据库连接池的框架,如:C3P0、Jakarta DBCP、 DBPool.可以研究 J2EE 框架 Spring. Web 框架 Struts持久层框架 Hibernate甚至开发工具 EclipseSun 领导的点对点通信的 JXTA报表工具 JFreeChart、JasperReports分布式网络编程的 CORBA、网络通信的 JGROUPS、XML 解析的 xerces(在不 经意间开源已经步入你的电脑,不信啊!你 JDK 的安装目录 jdk1.6.0 src com sun org apache 就是 Xerces,一个 XML 解析的著名的开源 项目)不管怎么样我还是建议从基本的做起,学精 J2SE,熟读它的源码,准确了解其设计理念,然后分头击破 J2EE一口吃不成一个胖子!不要贪多贪 广!脚踏实地就可以了!