首先,明确一件事情:
Java 技术既是一种高级的面向对象的编程语言,也是一个平台。
下面的文章来自:http://www.fedorachina.cn/index.php/topic,53.0.html#top
“五一”上街买了一本《精通Eclipse Web开发——Java体系结构、工具、框架及整合应用》,回来大概看了一下,感觉不错。于是,把其中的一些概念性的东西总结出来,希望对初学者有益。
一、Eclpise的历史 Eclipse最初是IBM公司的一个软件产品,IBM为它投入了4000万美元的巨资。2001年11月IBM向世界宣布了两件事,第一件是创建开源项目,即IBM将Eclipse捐赠给开源社区(真有钱啊
);
另外一件事是成立 Eclipse 协会(Eclipse Consortium),这个协会由一些成员公司组成,主要任务是支持并促进
Eclipse 开源项目。刚开始的时候,Eclipse的声誉并不好,受到业界的很多批评。但到了2003年3月,Eclipse
2.1版发布的时候,引起了业界的轰动。下载Eclipse的人蜂拥而至,甚至导致了服务器拥塞。
Eclipse具有出色而有独创性的平台特性,吸引了众多公司加入它的平台,包括Oracle、HP、Sybase、Borland和Redhat等等。
二、Eclipse项目 http://www.eclipse.org/
Eclipse平台是一个开放的集成开发工具,拥有强大的开发功能。它是建立在插件机制(发现新查插件、集成插件和运行插件)之上的。Eclipse平台
可以为开发者提供将各种工具无缝集成的功能,并为集成软件开发工具的开发、构造和运行提供基础模块,拥有一整套的公共服务集。
Eclipse软件开发工具箱(简称SDK)是由Eclipse项目的3个子项目组合而成。每个子项目是单一的可下载包。Eclipse软件开发工具箱为
开发者提供了功能强大的开发环境和各种开发工具。所有基于Eclipse的工具都在其平台上创建。Eclipse平台又可以进一步划分为如下几个主要部
分。
- Ant——基于Java的编译工具
- Core——核心库
- Debug——通用调试器
- Scriping——支持脚本
- SWT——标准小窗口工具箱
- UI——用户界面
- Update——动态更新/安装服务
- VC——版本化和配置管理
三、常用概念及工具1.SWT http://www.eclipse.org/swt/
SWT(Standard Widget
Toolkit)称为标准小部件工具。它提供了一个公共的、独立于操作系统的应用程序接口。该接口主要用于实现与底层的本地窗口系统机密集成。整个
Eclipse平台界面采用了插件机制插入工具箱,并使用SWT向用户显示信息。
2.JFace http://wiki.eclipse.org/index.php/JFace/
JFace是一个UI工具箱,它用于开发UI功能部件的helper类,用户要实现该类是比较困难的。JFace不仅用界面框架来提供较高级别的应用程序
构造,还可以用来支持对话框、向导、操作、用户首选项和小窗口管理等。JFace是处理许多公用用户接口编程任务分类的用户接口工具集。JFace在它的
API和在实现上独立于窗口系统,并与SWT共同工作。
3.CVS http://www.eclipse.org/eclipse/platform-cvs/
CVS(Concurrent Version
System,并发版本系统)是在UNIX中的经典的版本控制软件SCCS和RCS的基础上发展起来的。由于其强大的版本控制功能,目前己成为源代码开发
组织使用的标准版本控制系统。Eclipse平台采用Pserver或SSH协议来存取CVS资源库。在并发版本控制系统小组编程环境下,组内成员独立地
在各自的工作台内完成自己的工作。最后通过CVS资源库来共享他们的工作。
CVS使用分支模型来支持多个独立却又相互联系的工作流程。所谓分支,就是指一个开发团队正在进行的项目进行共享和集成的地方,它可以被看成是组内成员的一个公共的工作区间,每个成员对项目的更改都会反应到这里。
4.Tomcat http://tomcat.apache.org/
Jakarta
Tomcat服务器是在Sun公司的JSWDK基础上发展起来的一个优秀的Servlet/JSP容器。它是Apache-Jakarta软件组织的一个
子项目。它可以和大部分主流HTTP服务器一起工作。作为一个Servlet/JSP容器,Tomcat负责处理客户端的请求,把请求传送给
Servlet并把结果返回给客户端。Tomcat服务器除了能够运行Servlet和JSP,还提供Web服务器的功能。Tomcat有三种工作模式,
分别是独立的Servlet容器、进程内的Servlet容器和进程外的Servelet容器。
TomcatPlugin是一款优秀的控制Tomcat的Eclipse插件。该插件可以实现在Eclipse的控制台中启动和关毕Tomcat,还可以用来创建Tomcat工程。
5.MySQL http://www.mysql.com/ MySQL数据库是众多的关系数据库产品中的一元。它的主要性能如下:
- 提供C、C++、Java、Python、Perl、PHP和TCL的API接口。
- 多平台:包括Solaris、SunOS、BSDI、SGIIRIX、AIX、DEC UNIX、Linux、FreeBSD、NetBSD、OpenBSD、HPUX、Windows。
- 拥有非常灵活和安全的权限系统,对密码进行加密,可以处理大型数据。
- 提供多种语言支持。
6.Struts http://struts.apache.org/
Struts是一种方便实用的Web应用框架。在Servlet技术和JSP技术中,Struts被用来构建Java
Web应用程序的开源框架。它是属于Jakarta
Project的一部分。Struts就是一个MVC框架,它提供了自己的模型、视图和控制器。模型是由实现业务逻辑的JavaBean或EJB组建组
成,在Struts框架中对应的是ActionForm;控制器由ActionServlet和Action来实现;视图就是由一组JSP文件构成的。现
分别对这三个组件进行简要介绍:
1)模型(Model)
在Struts的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ActinForm
Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通
常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有
checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色
的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
2)视图(View) 视图主要由JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。
3)控制器(Controller)
在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由
ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这
几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流
程的运行方向。struts-config.xml 文件配置控制器。
7.Hibernate http://www.hibernate.org/
Hibernate是一个基于Java的开源的持久化中间件,它在Java应用程序和关系数据库之间搭建了一座桥梁。它首先要在Java应用程序中使用,
而且要负责实现Java对象和关系数据库之间的映射。Hibernate对JDBC做了轻量级的封装,同时向上层应用提供了面向对象的数据访问方式。其
实,Hibernate提供的是ORM(Object/Relation Mapping)映射服务,也就是对象——关系映射,把关系数据库转化成对象。
8.Spring http://www.springframework.org/
Spring是轻量级的J2EE应用程序框架。它主要由控制反转(IoC,Inversion of
Control)、面向方面编程(Aspect-Oriented
Programming,AOP)和抽象服务三部分构成,其插件式的架构降低了组件之间的依赖性。以下将对这三部分分别做简要介绍。
Spring的核心是个轻量级容器(container),实现了IoC(Inversion of
Control)模式的容器,Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,
也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案
。Spring的核心概念是IoC,IoC的抽象概念是“依赖关系的转移”,像“高层模组不应该依赖低层模组,而是模组都必须依赖于抽象”是
IoC的一种表现,“实现必须依赖抽象,而不是抽象依赖实现”也是IoC的一种表现,“应用程序不应依赖于容器,而是容器服务于应用程序”也是IoC的一
种表现。
面向方面编程是当今软件开发的一大模式。它使得构建并实现大型的企业级的开发变得更加简单。借助Spring AOP,开发者能够更高效地使用J2EE企业服务。
Srping抽象服务,借助于各种J2EE API抽象,把各种不同的J2EE API统一起来。这样开发者能够迅速掌握各种J2EE API的核心内容,能够一致地使用J2EE技术,减少代码量,精简系统。
通过XML配置文件,开发者们可以在运行的时候连接不同的应用组件。目前存在3种依赖注入类型:基于设置的方法、基于构建器的方法和基于接口的注入方法。
Spring的IoC支持前两种注入方法。因此,通过Spring开发者可以通过构建器或者设置值的方法创建对象,并对对象进行管理。
9.JBoss http://www.jboss.org/
JBoss服务器是一个优秀的轻量级的J2EE应用服务器。作为一个经过J2EE1.4认证的免费应用服务器,JBoss是目前市场上使用最广泛的开放源
代码的应用服务器之一。它的架构具有高度的灵活性和易用性,这就使得JBoss成为了刚开始从事J2EE开发的新手的理想选择,也可以作为高级架构师按照
需求来制定对应服务的中间件平台。虽然JBoss核心服务仅提供EJB服务器,而不包括Servlet和Web容器,不过它可以和Tomcat完美地结合
在一起来支持整个J2EE系统。JBoss采用JMX API来实现软件模块的集成与管理。关于JBoss的详细资料请参阅其主页
http://www.jboss.org 。
10.Lomboz http://forge.objectweb.org/projects/lomboz Lomboz插件是一个在Eclipse上专门支持J2EE开发的插件,它有以下几个主要功能:
- 各种网页标记和JSP关键字高亮显示。
- 对JSP的语法进行检查。
- war文件和EJB档案(JAR)文件的部署。
- 利用Wizard向导来完成Web应用和EJB应用的构建和部署。
- 利用XDoclet来完成EJB接口和部署描述符的自动生成。
- 利用Wizard向导来新建EJB客户端测试程序。
- 在各种容器如Tomcat、JBoss和WebLogic上进行调试。
11.JUnit http://www.junit.org/index.htm JUnit是一个开放源代码的Java测试框架,用在编写和运行可重复的测试上。它是单元测试框架xUnit的一个实例。JUnit非常小巧,但是功能却非常强大。对不同性质的被测试对象,如Class、JSP、Servlet等,JUnit有不同的使用技巧。
JUnit有如下特性:- 用于测试希望结果的断言
- 用于共享共同测试数据的测试工具
- 用于方便地组织和运行测试的测试套件
- 星图形和文本的测试运行器
JUnit的优点:- 可以使测试代码与产品代码分开。这更有利于代码的打包发布和测试代码的管理。
- 针对某一类的测试代码,通过较少的改动便可以应用另一个类的测试,JUnit提供了一个编写测试类的框架,使测试代码的编写更加方便。
- 易于集成到程序的构建过程中。JUnit和Ant的结合还可以实施增量开发。
- JUnit的源代码时公布的,故而可以进行二次开发。
- JUnit具有很强的扩展性,可以方便地对Junit进行扩展。
12.Ant http://ant.apache.org/Ant(Another Neat Tool)是一款很好的变异部署工具,它是Apache软件基金会Jakarta项目中的一个子项目,它有以下优点:
- 跨平台性:Ant是用纯Java语言编写的,所以具有很好的跨平台性。
- 操
作简单:Ant是由一个内置任务和可选任务构成的。Ant运行时需要一个XML文件(构建wenjian)。Ant通过调用target树,就可以执行各
种task。每个task实现了特定的接口对象。由于Ant构建文件是XML格式的文件,所以很容易维护和书写,而且结构很清晰。
- Ant可以集成到开发环境中:由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。
13.通用日志包、Log4j、SimpleLog、NoOpLog
Apache通用日志包是Apache组织的开源项目。它负责向开发者提供一系列通用的日志接口。用户可以自由地选择和实现通用日志接口。通用日志包目前支持以下几个日志器。
- Log4j日志器是一个开放源代码项目。它由Logger、Appender和Layout这三个主要的组建构成。http://logging.apache.org/
- SimpleLog日志器在通用日志包中自带了org.apache.commons.logging.impl.SimpleLog日志实现类。它实现了Log接口,把日志消息都输出到系统错误流System.err中。http://www.simplelog.net/
- NoOpLog日志器在通用日志包中自带了org.apache.commons.logging.impl.NoOpLog日志实现类,实现了Log接口。其输出日志的方法中不进行任何操作。
其中,SimpleLog和NoOpLog日志器是通用日志包自带的,Log4j日志器是第三方的软件。
14.MyEclipse
http://www.myeclipseide.com/ MyEclipse是Eclipse的商业插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
Genuitec发布了MyEclipse Enterprise Workbench
5.0,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。它的价格对于个人和企业开发人员来说都是非常有吸引力的。这是J2EE
IDE市场一个重量级的选手。通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM
工具、Spring和Web services支持,以及新的Oracle数据库开发,MyEclipse 5.0继续为业界提供全面的产品。