J2EE开发之常用开源框架介绍
J2EE开发之常用开源框架介绍
主要就我所了解的 J2EE
开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发。主要还是以
Spring
为核心 ,也总结了一些以前
web
开发常用的开源工具和开源类库
1 持久层:
1 ) Hibernate
这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射
对于 DAO
在这里介绍个 在它基础上开发的包
bba96
,目前最新版本是
bba96 2.0
它对
Hibernate
进行了封装, 查询功能包括执行
hsql
或者
sql
查询
/
更新的方法,如果你要多层次逻辑的条件查询可以自己组装
QueryObject.
可以参考它做
HibernateDAO.
也可以直接利用它
2 ) iBATIS
另一个 ORM
工具,
Apache
的,没有
Hibernate
那么集成,自由度比较大
2 : SpringMVC
原理说明和快速入门:
配置文件为:
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
里对应的
Action
方法。
输入数据绑定:
Spring
提供
Binder
通过名字的一一对应反射绑定
Pojo
,也可以直接从
request.getParameter
()取数据。
输入数据验证
Sping
提供了
Validator
接口当然还可以使用开源的
Commons-Validaor
支持最好
Interceptor (拦截器)
Spring
的拦截器提供接口需要自己编写,在这点不如
WebWork
做的好。全面
(这里提一下 WebWork
和
Struts
的区别最主要的区别在于
WebWork
在建立一个
Action
时是新
New
一个对象而
Struts
是
SingleMoule
所有的都继承它的一个
Action
,所以根据项目需要合适的选择。)
3 : View 层
1 ) 标签库: JSP2.0/JSTL
由于 Webwork
或
Spring
的标签确实很有限,一般
view
层用
JSTL
标签,而且据说
JSTL
设计很好速度是所有标签中最快的使用起来也很简单
2 ) 富客户端: DOJO Widgets , YUI ( YahooUI ), FCKEditor , Coolest 日历控件
Dojo
主要提供
Tree
,
Tab
等富客户端控件,可以用其进行辅助客户端开发
YahooUI
和
DOJO
一样它有自己的一套
javascript
调试控制台,主要支持
ajax
开发也有很多
Tree
,
Table
,
Menu
等富客户端控件
FCKEditor
最流行的文本编辑器
Coolest
日历控件 目前很多日历控件可用,集成在项目中也比较简单,这个只是其中的一个,界面不错的说……
3 ) JavaScript : Prototype.js
Prototype.js
作为
javascript
的成功的开源框架,封装了很多好用的功能,通过它很容易编写
AJAX
应用,现在
AJAX
技术逐渐成熟,框架资源比较丰富,比如
YUI
,
DWR
等等,也是因为
JavaScript
没有合适的调试工具,所以没有必要从零开始编写
AJAX
应用,个人认为多用一些成熟的
Ajax
框架实现无刷新更新页面是不错的选择。
4 )表格控件: Display Tag , Extreme Table
这两个的功能差不多,都是 View
层表格的生成,界面也比较相向,可以 导出
Excel
,
,对
Spring
支持很容易。
相比较而言比较推荐 ExtremeTable
,它的设计很好功能上比
DisplayTag
多一些,支持
Ajax
,封装了一些拦截器,而且最方面的是在主页
wiki
中有详细的中文使用文档。
5 ): OSCache
OSCache
是
OpenSymphony
组织提供的一个
J2EE
架构中
Web
应用层的缓存技术实现组件,
Cache
是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在
Web
应用中,通过缓存页面的输出结果,可以很显著的改善系统的稳定性和运行性能。
它主要用在处理短时间或一定时间内一些数据或页面不会发生变化,或将一些不变的统计报表,缓冲在内存,可以充分的减轻服务器的压力,防治负载平衡,快速重启服务器(通过硬盘缓存)。
6 ) SiteMesh
sitemesh
应用
Decorator
模式主要用于提高页面的可维护性和复用性,其原理是用
Filter
截取
request
和
response
,把页面组件
head
,
content
,
banner
结合为一个完整的视图。通常我们都是用
include
标签在每个
jsp
页面中来不断的包含各种
header
,
stylesheet
,
scripts and footer
,现在,在
sitemesh
的帮助下,我们删掉他们轻松达到复合视图模式。
Sitemesh
也是
OpenSymphony
的一个项目现在最近的版本是
2.2
,目前
OpenSymphony
自从
04
年就没有更新的版本了……感觉它还是比较有创新的一种页面组装方式,
OpenSymphony
开源组织的代码一般写的比较漂亮,可以改其源代码对自己的项目进行适配。
测试发现 Sitemesh
还存在一些问题,比如中文问题,它的默认编码是
iso-8859-1
在使用时候需要做一些改动。
7 ) CSS , XHTML
这个不用说了,遵循 W3C
标准的
web
页面开发。
8 )分页标签: pager-taglib 组件
Pager-taglib
是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离。使用起来也比较简单。
9 ) Form : Jodd Form taglib
Jodd Form taglib
使用比较简单,只要把html 的头尾以form包住,就会自动绑定 mybean
, 自动绑定
mybean
的所有同名属性到普通
html
标记
input
,
selectbox
,
checkbox
,
radiobox
……在这些
input
框里不用再写任何代码…
10 ) Ajax : DWR
J2EE
应用最常用的
ajax
框架
11 )报表 图表
Eclipse BIRT
功能比较强大,也很庞大……好几十
M
,一般没有特别需求或别的图表设计软件可以解决的不用它
JasperReports+ iReport
是一个基于
Java
的开源报表工具,它可以在
Java
环境下像其它
IDE
报表工具一样来制作报表。
JasperReports
支持
、
HTML
、
XLS
、
CSV
和
XML
文件输出格式。
JasperReports
是当前
Java
开发者最常用的报表工具。
JFreeChart
主要是用来制作各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
琴棋报表 ,国产的……重点推荐,适合中国的情况,开放源代码,使用完全免费。纯 JAVA
开发,适用多种系统平台。特别适合
B/S
结构的系统。官方网站有其优点介绍,看来用它还是不错的选择,最重要的是支持国产呵呵
4 :权限控制: Acegi
Acegi
是
Spring Framework
下最成熟的安全系统 ,它提供了强大灵活的企业级安全服务,如完善的认证和授权机制,
Http
资源访问控制,
Method
调用访问控制等等,支持
CAS
(耶鲁大学的单点登陆技术,这个单点登陆方案比较出名。我也进行过配置使用,可以根据项目需要,如果用户分布在不同的地方不同的系统通用一套登陆口令可以用它进行解决,一般注册机登陆机就是这样解决的)
Acegi
只是于
Spring
结合最好的安全框架,功能比较强大,当然还有一些其他的安全框架,这里列举一些比较流行的是我从网上找到的,使用方法看其官方文档把…
JAAS
,
Seraph
,
jSai - Servlet Security
,
Gabriel
,
JOSSO
,
Kasai
,
jPAM
,
OpenSAML
都是些安全控制的框架……真够多的呵呵
5 :全文检索
1 ) Lucene
Lucene
是一套全文索引接口,可以通过它将数据进行倒排文件处理加入索引文件,它的索引速度和查询速度是相当快的,查询百万级数据毫秒级出结果,现在最火的
Apache
开源项目,版本更新速度很快现在已经到了
2.0
,每个版本更新的都比较大,目前用的最多的版本应该是
1.4.3
,但它有个不太方面的地方单个索引文件有
2G
文件限制,现在
2.0
版本没有这个限制,我研究的比较多,它的扩展性比较好,可以很方面的扩充其分词接口和查询接口。
基于它的开发的系统很多,比如最常用的 Eclipse
的搜索功能,还有一些开源的软件比如
Compass
,
Nutch
,
Lius
,还有我最近做的
InSearch
(企业级
FTP
文件网页搜索)
6 :公共 Util 类
主要是
Jakarta-Commons
类库,其中最常用得是以下几个类库
1 ) Jakarta-Commons-Language
最常用得类是 StringUtils
类,提供了使用的字符串处理的常用方法效率比较高
2 ) Jakarta-Commons-Beantuils
主要用 Beantuils
能够获得反射函数封装及对嵌套属性,
map
,
array
型属性的读取。
3 ) Jakarta-Commons-Collections
里面有很多 Utils
方法
7 日志管理
Log4J
任务是日志记录,分为 Info
,
Warn
,
error
几个层次可以更好的调试程序
8 开源的 J2EE 框架
1 ) Appfuse
Appfuse
是
Matt Raible
开发的一个指导性的入门级
J2EE
框架, 它对如何集成流行的
Spring
、
Hibernate
、
iBatis
、
Struts
、
Xdcolet
、
JUnit
等基础框架给出了示范。 在持久层,
AppFuse
采用了
Hibernate O/R
映射工具;在容器方面,它采用了
Spring
,用户可以自由选择
Struts
、
Spring/MVC
,
Webwork
,
JSF
这几个
Web
框架。
2 ) SpringSide
。 SpringSide
较完整的演示了企业应用的各个方面,是一个电子商务网站的应用
SpringSide
也大量参考了
Appfuse
中的优秀经验。最重要的是它是国内的一个开源项目,可以了解到国内现在的一些实际技术动态和方向很有指导意义…
9 :模版 Template
主要有
Veloctiy
和
Freemarker
模板用 Servlet
提供的数据动态地生成
HTML.
编译器速度快,输出接近静态
HTML
页面的速度。
10 :工作流
我所知道比较出名的主要有 JBpm Shark Osworkflow
,由于对它没有过多的研究所以还不是很清楚之间有什么区别。
项目管理软件
dotProject
:是一个基于
LAMP
的开源项目管理软件。最出名的项目管理软件
JIRA
: 项目计划,任务安排,错误管理
Bugzilla
:提交和管理
bug
,和
eclipse
集成,可以通过安装
MyEclipse
配置一下即可使用
BugFree
借鉴微软公司软件研发理念、免费开放源代码、基于
Web
的精简版
Bug
管理
CVS
:这个就不介绍了都在用。
SVN
:
SubVersion
已逐渐超越
CVS
,更适应于
JavaEE
的项目。
Apache
用了它很久后,
Sourceforge
刚刚推出
SVN
的支持。
测试用例 :主要 JUnit
单元测试,编写
TestCase
,
Spring
也对
Junit
做了很好的支持