企业Java网站开发工具
前言
有人说用Java开发网站的速度慢而且在美观上还没有C#好,但我个人认为使用Java开发项目可以做到快速开发和高质量开发,因为Java很多的 框架和工具是开源的,而且对于项目本身最重要的也是速度和质量,没有速度和质量谈何项目。或许有人会说我不喜欢使用别人的框架或工具,我喜欢开发自己的工 具,我只能说“不重复发明轮子”。
下面我说一个例子,这个例子是我从网上看到的。
小张是一家小型民营软件公司的程序员,他所在的公司要开发一个新的Web项目。经过协商,决定使用Spring、ibatis和Tapstry。 Jar包去哪里找呢?公司里估计没有人把Spring、ibatis和Tapstry所使用的jar包一个不少地找出来。大家的做法是,先到Spring 的官网上下载Spring的架包,然后去ibatis的网站上把所有列出来的jar包下载下来,对其他的也执行同样的操作。项目还没有开始,WEB- INF/lib下已经有近百个jar包了,带版本号的、有用的、没有的、相冲突的,怎么一个“乱”字了得。
在项目开发过程中,小张不时地发现版本错误和版本冲突问题,他只能硬着头皮逐一解决。项目开发到一半,经理法相最终部署的应用的体积实在太大了,要求小张去掉一些没用的jar包,于是小张只能加班加点地一个个删……
小张隐隐地觉得这些依赖关系需要一个框架或者系统来进行管理
小张喜欢学习流行的技术,前几年Ant十分流行,他学了,并成为了公司这方面的专家。小张知道,Ant打包,无非就是创建目录,复制文件,编译源代 码,使用一堆任务,如copydir、fileset、classpath、ref、target,然后再jar、zip、war,打包成功了。
项目经理发话了:“兄弟们,新项目来了,小张,你来写Anr脚本!”
“是,保证完成任务!”,接着,小张继续创建一个XML文件。Target clean;target compile;target jar;……不知道他是否想过,在他写的这么多的Ant脚本中,有多少是重复的劳动,有多少代码会在一个又一个项目中重现。既然差不多,有些甚至完全一 样,为什么每次都还要重新编写?
终于有一天,小张意识到了这个问题,想复用Ant脚本,于是在开会时他说:“以后就用我写的这个规范的Ant脚本吧,新的项目只要遵循我定义的目录结构就可以可。”经理听后觉得很多道理:“嗯,的确是个进步。”
这是新来的本科生发言了:“经理,用Maven吧,这个在开源社区恨流行,比Ant更方便。”小张一听很惊讶,Maven真比自己的“规范化Ant”强大?其实他不知道自己只是在重新发明轮子,Maven已经有一大把现成的插件,全世界都在用,你自己不用写任何代码!
为什么没有人说“自己写的代码最灵活,所以我不用Spring,我自己实现Ioc;我不用Hibernate,我自己封装JDBC”?
简介
在本节中,我主要介绍下目前开源社区以及企业开发的工具。
Maven
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。而我认为其最重要的特点之一是 快速开发,其可以生产项目的原型(Archetype),如果前面故事讲里的小张发现Maven这个特点时,他一定会有相见恨晚的感觉,因为我也有这感 觉。
Maven很容易掌握,我学会Maven只用了一天的时间,并且写出了自己的原型框架。使用Maven后,你会发现小张的很多问题都自然的解决了, 比如架包问题、版本冲突问题和架包冗余问题等。而且使用Maven后,对某些框架的升级也非常简单。这里不详细介绍Maven,如需学习请自行查看相关资 料。
使用了Maven,在开源社区和企业里就免不了需要安装自己的私服,供社区或企业内部使用,有关这部分请查看Nexus工具部分。
Nexus
官网:http://www.sonatype.org/nexus/
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控 制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。 Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。
这个是比较流行的私服工具,其功能简介如上所说。建议安装成服务,每次开机自动启动,默认占用的端口号是:8081。下面是我电脑上的运行效果图。
图1 Nexus主界面
图2 本地部署上去的架包
图3 中央仓库管理
Hudson
作为最核心的敏捷实践之一——持续集成(Continuous Integration)越来越受到广大开发人员的喜爱和推崇。Hudson 是一个可扩展的持续集成引擎。在社区和企业里,项目都不是个人完成的,每个人完成相应的模块,然后提交到规定的服务器里。一般企业和社区都会派专人对全部 提交的代码进行测试,然后对为通过的返回,然而这个既费人力有费时间。当选择使用Hudson工具时,会发现这一系列的工作可以自动的完成,而不需要人为 干预,对于失败的测试可以通过邮件通知作者。
其主要的特点有:
· 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
· 易于配置-所有配置都是通过其提供的web界面实现。
· 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。
· 生成JUnit/TestNG测试报告。
· 分布式构建支持-Hudson能够让多台计算机一起构建/测试。
· 文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
· 插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。
下面是我电脑上的测试结果:
图 4 从svnserver上构建项目
图5 从本地私服里下载所需架包
图 6 自动编译项目
图7 测试项目
图8 代码质量管理平台
图9 生产代码报告
Sonar
官网:http://www.sonarsource.org/
Sonar是一个开源平台,用于管理Java源代码的质量。从Sonar 1.6 版本开始,Sonar从一个质量数据报告工具,转变成为现在的代码质量管理平台。
主要特点:
代码覆盖:通过单元测试,将会显示哪行代码被选中改善编码规则
搜寻编码规则:按照名字,插件,激活级别和类别进行查询
项目搜寻:按照项目的名字进行查询
对比数据:比较同一张表中的任何测量的趋势
下面是我电脑上的测试结果:
图10 项目报告
图11 项目代码报告
Eclipse
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。
Eclipse的基础是富客户机平台(Rich Client Platform, 即RCP)。RCP包括下列组件:
· 核心平台(启动Eclipse,运行插件)
· OSGi(标准集束框架)
· SWT(可移植构件工具包)
· JFace(文件缓冲,文本处理,文本编辑器)
· Eclipse工作台(即Workbench ,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards))
Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的 AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化 了基于SWT的应用程序的构建。
Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如 支持Java以外的其他语 言。 已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT ),插件开发环境(PDE)等。
Eclipse由各种不同的计划组成。以下列出了部分计划。
· Eclipse计划:本身包括Eclipse平台,Eclipse富客户端平台(RCP)和Java开发工具(JDT)。
· Eclipse测试和性能工具平台(TPTP):提供一个允许软件开发者构建诸如测试调试、概况分析、基准评测等测试和性能工具的平台。
· Eclipse Web工具平台计划 (WTP):用 Java企业版Web应用程序开发工具来扩展Eclipse平台。它由以下部分组成:HTML、JavaScript、CSS、JSP、SQL、XML、 DTD、XSD和WSDL的 源代码编辑器;XSD和WSDL的图形界面编辑器;Java企业版的“项目性质”(project nature)、建构器(builder)和模型(model),与一个Java企业版的导航(navigator);一个Web服务 (Webservice)向导和浏览器,还有一个WS-I测试工具;最后是数据库访问查询的工具与模型。
· Eclipse商业智能和报表工具计划(BIRT):提供Web应用程序(特别是基于Java企业版的)的报表开发工具。
· Eclipse可视化界面编辑器计划(VEP):一个Eclipse下创建图形用户界面代码生成器的框架。
· Eclipse建模框架(EMF):依据使用XMI描述的建模规格,生成结构化数据模型的工具和其他应用程序的代码。
· 图形化编辑器框架(GEF):能让开发者采用一个现成的应用程序模型来轻松地创建富图形化编辑器。
· UML2:Eclipse平台下的一个UML 2.0元模型的实现,用以支持建模工具的开发。
· AspectJ:一种针对Java的面向侧面语言扩展。
· Eclipse通讯框架(ECF):专注于在Eclipse平台上创建通讯应用程序的工作。
· Eclipse数据工具平台计划(DTP)
· Eclipse设备驱动软件开发计划(DSDP)
· C/C++开发工具计划(CDT):努力为Eclipse平台提供一个全功能C和C++的集成开发环境(IDE),它使用GCC作为编译器。
· Eclipse平台COBOL集成开发环境子计划(COBOL):将构建一个Eclipse平台上的全功能COBOL集成开发环境。
· 并行工具平台(PTP):将开发一个对并行计算机架构下的一组工具进行集成的平行工具平台,而且这个平台是可移植的,可伸缩的并基于标准的。
· 嵌入式富客户端平台(eRCP):计划将Eclipse富客户端平台扩展到嵌入式设备上。这个平台主要是一个富客户端平台(RCP)组件子集的集合。它能让桌面环境下的应用程序模型能够大致同样地能运用在嵌入式设备上。
总结
上面仅介绍了部分比较重要工具。当你在开发时用到上述工具时,你会发现Java开发原来是那么高效快速。虽然我未在公司呆过,但我调查过我认识的已 就业的学长,只要比较正规的公司一般都会集成以上工具(当然以上的工具都不是唯一的,有很多同类工具)。当做好一个项目,别人要你列出其的规范性和代码的 安全性时,不管你怎么说,别人都不一定会信服你,但只要你把相应工具生成的结果给他看,里面包含各种测试结果的报表,别人不信服都难(当然也可以通过这个 来规范自己的项目)。
来自:http://blog.csdn.net/wu560130911/article/details/8828046