JAVA项目开发笔记(1):使用工具和框架介绍

转载请注明出处(Cooper的专栏    http://blog.csdn.net/cooper_lyt

  • JSF:1.2 使用javaEE中自带的,这东东比struts先进很多,而且已经成为javaEE5的API的一部分了,所以是扔掉struts的时候了。  
  • Ajax4Jsf(已从项目中移除,改为RichFaces) 使JSF支持Ajax的一个框架(个人觉的叫一个库更合适),使用这东东可以不写javaScript和xmlrequest就可以实现Ajax(当然也支持你写javaScript)。原来是开源的,现在被jboss收购了,不知jboss搞什么鬼,昨天想去官网上下载一份,可到到网站上就是死活没找到下载链接。
  • FaceLets 对Jsf支持很好的一个界面框架,有像Tiles的功能,不过比Tiles更强大,例如可以定义自定义组件(实际上是组合现有组件,有点像Delphi里的Frame),Tiles对JSF支持不好,还要对每个已经在XML配置文件中配置好的页面再建一个JSP页来供JSF传发。Facelets要求项目中的页面是xml格式的可以使用xhtml或Jspx(myEclipse默认是xhtml的),用这种方式已经不能再写jsp片断代码了,也就是说<%..%>、<%!..>等都不能用了,有人肯定会问如果用xml方式的jsp 可以不,当时我也这么想,后来试了试又到网上查了查资料,得到的答案是不可以,用xmlns:jsp="http://java.sun.com/jsp/Page" 引用标记库再用<jsp:.../>这种也不行.Facelets不支持会直接把你写的<jsp:.../>这种代码直接发现客户端页面上。既然这种方法不行,那你一定会想到用Jstl,jsf1.2版以后开始支持Jstl,以前版本的jsf的el表达式和Jstl表达式有冲突,不能同时使用。这种方法还是可以的,不过你也不要高兴的太早了,facelet只支持少数几个Jstl表达式(好像是5个),像<c:if><c:forEach><c:cath>等等少数几个。如果你使用其它,会在运行时报错说在c=http://java.sun.com/jstl/core 标记库中找不到定义。既然是这样为什么还要用它呢,一开始我也为这个问题而烦恼,后来我终于想通了(英雄中的对白:“我悟了”)FaceLets和jsf配合要做的就是要实现显示逻辑和业务逻辑的解耦,所以没必要有在页面中写java代码片断的必要(不过这种方法我还是不喜欢,我喜欢的是可以让我写,但是我不写,就像AVP中说的“安全套这东东我宁愿带着它不用,而不想在要用它的时候找不到它”)试想一下你可以在delphi的dfm(窗体文件)中写代码吗!?注:可能同学们注意到了我总会拿delphi作比喻,原因有二1.我是Delphi程序员出身;2.jsf和FaceLets想实现的就是RAD(Rapid Application Development,快速应用开发工具),而Delphi正是这方面的精品,在我使用的过程中发现它的开发方式和Delphi相象的地方很多,不知道jsf的项目的设计人员里是否也有delphi程序员。
  • Spring:2.0 使用myeclipse库里的
  • Hibernate 使用myeclipse库里的

   这两样东东没的说的,连EJB3的开发都大量借鉴了这两个框架(EJB3以前版本的EJB 存在很多已知的BUG,听说EJB3已经大大改观,看来是学习的时候了)

  • Shark(TWS) 工作流引擎,不明白什么是工作流引擎的同学一定要去网上查一下,几乎所有的MIS系统都有这方面的需求,简单的说就是实现灵活设定要办一件事或业务的流程。 使用1.1.2版本因为2.0版本是已经商业化的版本(同学们要注意1.XX和2.XX的API大部分都做了改动而且2.0不会向后兼容,也就是说你要是和我一样选了1.XX的版本,想要升级到2.0还是很麻烦的,反之用了2.XX的做开发后要在1.XX上使用也不是件简单的事情,所以大家一定要注意版本的选择),1.1.2还是开源免费的,就是中文资料很少,我在网上找来找去也只找到很少的几个篇文章,用这东东开发的方式可以有几种:Corba方式、WebService方式、API方式。我选了API方式,因为只有这种开发还有点资料(虽然很少)而且Shark里自带的一个Demo也是这种方式,另外Shark也有一份Shark API的英文javadoc,本来准备使用shark1.1但是后来发现shark1.1是不支持jotm的(除非自已修改shark的代码)而shark2.0是支持的。而这个问题是致命的因为我不可能把我的业务表也加到shark的库中去,所以还是决定选用shark2.0,即使shark2.0的资料比1.0的还少。 别外注意Shark2.0的商业名为TWS到官网下载的和启动时都显示是这个,不用怀疑下错了,这就是shark2.0
  • jawe(TWE)  工作流设计器 白话就是画工作流的。和Shark一起来工作的(称和砣的关系),说是这两样东东都符合wfmc标准,就是说不一定非要这哥俩合作,只要是符合标准的都可以,TEW 是2.0版本以后的商业化名。 
  • TomCat 一个优秀的Serverlet容器,可惜的是不支持JTA(Java Transaction API,Java分布式事务),而在我的项目中又需要这个功能(也说是说一个事务可能要跨多个数据库),本来想用JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,可是后来发现JTA还要JDBC数据库驱动的支持,不过在我的试验中发现SqlServer 发布的的JDBC驱动好像是不支持(我怎么试也不好用,希望高人指点一下),所以有第二套方案就是使用EJB容器(WebShare、WebLogic、JBoss等),因为EJB容器好像可以将不支持JAT的JDBC驱动模拟为支持JAT的驱动,不过我会尽量不使用这套方案的,因为没必要使用EJB容器来做Serverlet容器就可以做的工作(当然我也见过很多很傻的招标文件就点名要WebShare、WebLogic等但却不要求分布式,就是鼓力各软件开发商做这种小脚穿大鞋的做法,我们也不得不这么做,这里我错了,在使用了这种j2ee服务器后发现的确是TOMCAT所不能比拟的。关于JTA本人还有待进一步学习研究,以后会把成果写成文章继续发布的。
  • JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分,为其提供JTA分布式事务的功能。
  • SVN 以前的版本控制我使用的是winCVS 的可是cvs的新版本总是有问题,我又找不到一个稳定的版本,试了好多个版本都有问题(中文、删除等问题),后来svn进入了我的视线。这东东和cvs是同一个作者,而且都是开源免费的,具说是由于作者对CVS不满意,但是又改不了,只好重新做了这一套开源的SVN(这是什么样的精神,什么样的人品,与之相比真是.....汉啊,是我等学习楷模),SVN和CVS相比最大的特点好像是加入了目录级别的控制,另外我使用的这一版本再用了一段时间后也没发现在CVS 中出现的BUG,对中文的支持也很好。
  • Log4j 日志工具,没什么可说的,几乎所有的开源框架中都用这东东,不过log4j与Shark集成起来还说点说到,请参见我blog中的框架融合部分的文章。
  • 数据库 Oracle 还是 SQL Server2000 现在还没定,本人对MSSQL是很熟悉的,可是MSSQL性能方面不如Oracle,Oracle本人又不是很熟悉。不过这个也没关系,因为项目中使用的Shark和Hibernate都对数据库的操作逻辑进行了封装,想要换数据库只要改动配置文件中的几个设置就行了,很方便。
  • Eclipse+MyEclipse 这个组合相信大家都不会陌生吧,唯一可惜的是MyEclipse不是免费的(不会太贪吧),其实也有开源免费的来代替MyEclipse的主要功能如lomboz等,只是配起来不是很方便,也不如MyEclipse功能来的多和好,所以就还是选了MyEclipse。
  • Crystal Reports 水晶报表 这个For Eclipse  的版本叫做 CR4E(Crystal Reports for Eclipse) 现在还是1.XX版,正在学习研究中,已放弃这个烂东东,现在用Birt
  • Eclipse其它插件 1.Properties Editor 编辑java的属性文件,并可以自动存盘为Unicode格式 JSF 国际化使用;2. Subclipse SVN的Eclipse客户端插件。
  • RichFaces 3.2.2这是个jBoss出的开源的一套基于ajax4jsf的组件库,包含很多jsf组件(标签)而且支持ajax,这套东东是我后来进入到我的视线的,一用发现真是个好东西,由于是基于ajax4jsf所以项目中不可以再有ajax4jsf(会产生冲突),所以在我的项目中移除了ajax4jsf,实际上它们就是一种东西,只是版本不同罢了,因为jboss收购了ajax4jsf后升级出了RichFaces,这也解释了为什么jboss 的官网上不再提供ajax4jsf的下载,网上有它一个demo网站大家可以看一下(http://livedemo.exadel.com/richfaces-demo/richfaces/contextMenu.jsf?c=contextMenu)你可能会发现这个网站很慢,我想这应该是有意设计成这样的(页面上用了好多很大的图片),用意就是用来体现它的ajax功能(这样很容易误导大家认为richface很慢,其实不是这样,做的很慢是为了体现它是很快的,有点别嘴啊),在使用上可以参考我相关的文章。

转载请注明出处(Cooper的专栏    http://blog.csdn.net/cooper_lyt

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值