首先,明確一件事情:
Java 技術(shù)既是一種高級(jí)的面向?qū)ο蟮木幊陶Z(yǔ)言,也是一個(gè)平臺(tái)。
下面的文章來(lái)自:http://www.fedorachina.cn/index.php/topic,53.0.html#top
“五一”上街買了一本《精通Eclipse Web開(kāi)發(fā)——Java體系結(jié)構(gòu)、工具、框架及整合應(yīng)用》,回來(lái)大概看了一下,感覺(jué)不錯(cuò)。于是,把其中的一些概念性的東西總結(jié)出來(lái),希望對(duì)初學(xué)者有益。
一、Eclpise的歷史 Eclipse最初是IBM公司的一個(gè)軟件產(chǎn)品,IBM為它投入了4000萬(wàn)美元的巨資。2001年11月IBM向世界宣布了兩件事,第一件是創(chuàng)建開(kāi)源項(xiàng)目,即IBM將Eclipse捐贈(zèng)給開(kāi)源社區(qū)(真有錢啊

);
另外一件事是成立 Eclipse 協(xié)會(huì)(Eclipse Consortium),這個(gè)協(xié)會(huì)由一些成員公司組成,主要任務(wù)是支持并促進(jìn)
Eclipse 開(kāi)源項(xiàng)目。剛開(kāi)始的時(shí)候,Eclipse的聲譽(yù)并不好,受到業(yè)界的很多批評(píng)。但到了2003年3月,Eclipse
2.1版發(fā)布的時(shí)候,引起了業(yè)界的轟動(dòng)。下載Eclipse的人蜂擁而至,甚至導(dǎo)致了服務(wù)器擁塞。
Eclipse具有出色而有獨(dú)創(chuàng)性的平臺(tái)特性,吸引了眾多公司加入它的平臺(tái),包括Oracle、HP、Sybase、Borland和Redhat等等。
二、Eclipse項(xiàng)目 http://www.eclipse.org/
Eclipse平臺(tái)是一個(gè)開(kāi)放的集成開(kāi)發(fā)工具,擁有強(qiáng)大的開(kāi)發(fā)功能。它是建立在插件機(jī)制(發(fā)現(xiàn)新查插件、集成插件和運(yùn)行插件)之上的。Eclipse平臺(tái)
可以為開(kāi)發(fā)者提供將各種工具無(wú)縫集成的功能,并為集成軟件開(kāi)發(fā)工具的開(kāi)發(fā)、構(gòu)造和運(yùn)行提供基礎(chǔ)模塊,擁有一整套的公共服務(wù)集。
Eclipse軟件開(kāi)發(fā)工具箱(簡(jiǎn)稱SDK)是由Eclipse項(xiàng)目的3個(gè)子項(xiàng)目組合而成。每個(gè)子項(xiàng)目是單一的可下載包。Eclipse軟件開(kāi)發(fā)工具箱為
開(kāi)發(fā)者提供了功能強(qiáng)大的開(kāi)發(fā)環(huán)境和各種開(kāi)發(fā)工具。所有基于Eclipse的工具都在其平臺(tái)上創(chuàng)建。Eclipse平臺(tái)又可以進(jìn)一步劃分為如下幾個(gè)主要部
分。
- Ant——基于Java的編譯工具
- Core——核心庫(kù)
- Debug——通用調(diào)試器
- Scriping——支持腳本
- SWT——標(biāo)準(zhǔn)小窗口工具箱
- UI——用戶界面
- Update——?jiǎng)討B(tài)更新/安裝服務(wù)
- VC——版本化和配置管理
三、常用概念及工具1.SWT http://www.eclipse.org/swt/
SWT(Standard Widget
Toolkit)稱為標(biāo)準(zhǔn)小部件工具。它提供了一個(gè)公共的、獨(dú)立于操作系統(tǒng)的應(yīng)用程序接口。該接口主要用于實(shí)現(xiàn)與底層的本地窗口系統(tǒng)機(jī)密集成。整個(gè)
Eclipse平臺(tái)界面采用了插件機(jī)制插入工具箱,并使用SWT向用戶顯示信息。
2.JFace http://wiki.eclipse.org/index.php/JFace/
JFace是一個(gè)UI工具箱,它用于開(kāi)發(fā)UI功能部件的helper類,用戶要實(shí)現(xiàn)該類是比較困難的。JFace不僅用界面框架來(lái)提供較高級(jí)別的應(yīng)用程序
構(gòu)造,還可以用來(lái)支持對(duì)話框、向?qū)?、操作、用戶首選項(xiàng)和小窗口管理等。JFace是處理許多公用用戶接口編程任務(wù)分類的用戶接口工具集。JFace在它的
API和在實(shí)現(xiàn)上獨(dú)立于窗口系統(tǒng),并與SWT共同工作。
3.CVS http://www.eclipse.org/eclipse/platform-cvs/
CVS(Concurrent Version
System,并發(fā)版本系統(tǒng))是在UNIX中的經(jīng)典的版本控制軟件SCCS和RCS的基礎(chǔ)上發(fā)展起來(lái)的。由于其強(qiáng)大的版本控制功能,目前己成為源代碼開(kāi)發(fā)
組織使用的標(biāo)準(zhǔn)版本控制系統(tǒng)。Eclipse平臺(tái)采用Pserver或SSH協(xié)議來(lái)存取CVS資源庫(kù)。在并發(fā)版本控制系統(tǒng)小組編程環(huán)境下,組內(nèi)成員獨(dú)立地
在各自的工作臺(tái)內(nèi)完成自己的工作。最后通過(guò)CVS資源庫(kù)來(lái)共享他們的工作。
CVS使用分支模型來(lái)支持多個(gè)獨(dú)立卻又相互聯(lián)系的工作流程。所謂分支,就是指一個(gè)開(kāi)發(fā)團(tuán)隊(duì)正在進(jìn)行的項(xiàng)目進(jìn)行共享和集成的地方,它可以被看成是組內(nèi)成員的一個(gè)公共的工作區(qū)間,每個(gè)成員對(duì)項(xiàng)目的更改都會(huì)反應(yīng)到這里。
4.Tomcat http://tomcat.apache.org/
Jakarta
Tomcat服務(wù)器是在Sun公司的JSWDK基礎(chǔ)上發(fā)展起來(lái)的一個(gè)優(yōu)秀的Servlet/JSP容器。它是Apache-Jakarta軟件組織的一個(gè)
子項(xiàng)目。它可以和大部分主流HTTP服務(wù)器一起工作。作為一個(gè)Servlet/JSP容器,Tomcat負(fù)責(zé)處理客戶端的請(qǐng)求,把請(qǐng)求傳送給
Servlet并把結(jié)果返回給客戶端。Tomcat服務(wù)器除了能夠運(yùn)行Servlet和JSP,還提供Web服務(wù)器的功能。Tomcat有三種工作模式,
分別是獨(dú)立的Servlet容器、進(jìn)程內(nèi)的Servlet容器和進(jìn)程外的Servelet容器。
TomcatPlugin是一款優(yōu)秀的控制Tomcat的Eclipse插件。該插件可以實(shí)現(xiàn)在Eclipse的控制臺(tái)中啟動(dòng)和關(guān)畢Tomcat,還可以用來(lái)創(chuàng)建Tomcat工程。
5.MySQL http://www.mysql.com/ MySQL數(shù)據(jù)庫(kù)是眾多的關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品中的一元。它的主要性能如下:
- 提供C、C++、Java、Python、Perl、PHP和TCL的API接口。
- 多平臺(tái):包括Solaris、SunOS、BSDI、SGIIRIX、AIX、DEC UNIX、Linux、FreeBSD、NetBSD、OpenBSD、HPUX、Windows。
- 擁有非常靈活和安全的權(quán)限系統(tǒng),對(duì)密碼進(jìn)行加密,可以處理大型數(shù)據(jù)。
- 提供多種語(yǔ)言支持。
6.Struts http://struts.apache.org/
Struts是一種方便實(shí)用的Web應(yīng)用框架。在Servlet技術(shù)和JSP技術(shù)中,Struts被用來(lái)構(gòu)建Java
Web應(yīng)用程序的開(kāi)源框架。它是屬于Jakarta
Project的一部分。Struts就是一個(gè)MVC框架,它提供了自己的模型、視圖和控制器。模型是由實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組建組
成,在Struts框架中對(duì)應(yīng)的是ActionForm;控制器由ActionServlet和Action來(lái)實(shí)現(xiàn);視圖就是由一組JSP文件構(gòu)成的?,F(xiàn)
分別對(duì)這三個(gè)組件進(jìn)行簡(jiǎn)要介紹:
1)模型(Model)
在Struts的體系結(jié)構(gòu)中,模型分為兩個(gè)部分:系統(tǒng)的內(nèi)部狀態(tài)和可以改變狀態(tài)的操作(事務(wù)邏輯)。內(nèi)部狀態(tài)通常由一組ActinForm
Bean表示。根據(jù)設(shè)計(jì)或應(yīng)用程序復(fù)雜度的不同,這些Bean可以是自包含的并具有持續(xù)的狀態(tài),或只在需要時(shí)才獲得數(shù)據(jù)(從某個(gè)數(shù)據(jù)庫(kù))。大型應(yīng)用程序通
常在方法內(nèi)部封裝事務(wù)邏輯(操作),這些方法可以被擁有狀態(tài)信息的bean調(diào)用。比如購(gòu)物車bean,它擁有用戶購(gòu)買商品的信息,可能還有
checkOut()方法用來(lái)檢查用戶的信用卡,并向倉(cāng)庫(kù)發(fā)定貨信息。小型程序中,操作可能會(huì)被內(nèi)嵌在Action類,它是struts框架中控制器角色
的一部分。當(dāng)邏輯簡(jiǎn)單時(shí)這個(gè)方法很適合。建議用戶將事務(wù)邏輯(要做什么)與Action類所扮演的角色(決定做什么)分開(kāi)。
2)視圖(View) 視圖主要由JSP建立,struts包含擴(kuò)展自定義標(biāo)簽庫(kù)(TagLib),可以簡(jiǎn)化創(chuàng)建完全國(guó)際化用戶界面的過(guò)程。目前的標(biāo)簽庫(kù)包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。
3)控制器(Controller)
在struts中,基本的控制器組件是ActionServlet類中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射(由
ActionMapping類進(jìn)行描述)進(jìn)行定義。對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這
幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,ActionMapping與ActionForward則指定了不同業(yè)務(wù)邏輯或流
程的運(yùn)行方向。struts-config.xml 文件配置控制器。
7.Hibernate http://www.hibernate.org/
Hibernate是一個(gè)基于Java的開(kāi)源的持久化中間件,它在Java應(yīng)用程序和關(guān)系數(shù)據(jù)庫(kù)之間搭建了一座橋梁。它首先要在Java應(yīng)用程序中使用,
而且要負(fù)責(zé)實(shí)現(xiàn)Java對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間的映射。Hibernate對(duì)JDBC做了輕量級(jí)的封裝,同時(shí)向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)訪問(wèn)方式。其
實(shí),Hibernate提供的是ORM(Object/Relation Mapping)映射服務(wù),也就是對(duì)象——關(guān)系映射,把關(guān)系數(shù)據(jù)庫(kù)轉(zhuǎn)化成對(duì)象。
8.Spring http://www.springframework.org/
Spring是輕量級(jí)的J2EE應(yīng)用程序框架。它主要由控制反轉(zhuǎn)(IoC,Inversion of
Control)、面向方面編程(Aspect-Oriented
Programming,AOP)和抽象服務(wù)三部分構(gòu)成,其插件式的架構(gòu)降低了組件之間的依賴性。以下將對(duì)這三部分分別做簡(jiǎn)要介紹。
Spring的核心是個(gè)輕量級(jí)容器(container),實(shí)現(xiàn)了IoC(Inversion of
Control)模式的容器,Spring的目標(biāo)是實(shí)現(xiàn)一個(gè)全方位的整合框架,在Spring框架下實(shí)現(xiàn)多個(gè)子框架的組合,這些子框架之間彼此可以獨(dú)立,
也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案
。Spring的核心概念是IoC,IoC的抽象概念是“依賴關(guān)系的轉(zhuǎn)移”,像“高層模組不應(yīng)該依賴低層模組,而是模組都必須依賴于抽象”是
IoC的一種表現(xiàn),“實(shí)現(xiàn)必須依賴抽象,而不是抽象依賴實(shí)現(xiàn)”也是IoC的一種表現(xiàn),“應(yīng)用程序不應(yīng)依賴于容器,而是容器服務(wù)于應(yīng)用程序”也是IoC的一
種表現(xiàn)。
面向方面編程是當(dāng)今軟件開(kāi)發(fā)的一大模式。它使得構(gòu)建并實(shí)現(xiàn)大型的企業(yè)級(jí)的開(kāi)發(fā)變得更加簡(jiǎn)單。借助Spring AOP,開(kāi)發(fā)者能夠更高效地使用J2EE企業(yè)服務(wù)。
Srping抽象服務(wù),借助于各種J2EE API抽象,把各種不同的J2EE API統(tǒng)一起來(lái)。這樣開(kāi)發(fā)者能夠迅速掌握各種J2EE API的核心內(nèi)容,能夠一致地使用J2EE技術(shù),減少代碼量,精簡(jiǎn)系統(tǒng)。
通過(guò)XML配置文件,開(kāi)發(fā)者們可以在運(yùn)行的時(shí)候連接不同的應(yīng)用組件。目前存在3種依賴注入類型:基于設(shè)置的方法、基于構(gòu)建器的方法和基于接口的注入方法。
Spring的IoC支持前兩種注入方法。因此,通過(guò)Spring開(kāi)發(fā)者可以通過(guò)構(gòu)建器或者設(shè)置值的方法創(chuàng)建對(duì)象,并對(duì)對(duì)象進(jìn)行管理。
9.JBoss http://www.jboss.org/
JBoss服務(wù)器是一個(gè)優(yōu)秀的輕量級(jí)的J2EE應(yīng)用服務(wù)器。作為一個(gè)經(jīng)過(guò)J2EE1.4認(rèn)證的免費(fèi)應(yīng)用服務(wù)器,JBoss是目前市場(chǎng)上使用最廣泛的開(kāi)放源
代碼的應(yīng)用服務(wù)器之一。它的架構(gòu)具有高度的靈活性和易用性,這就使得JBoss成為了剛開(kāi)始從事J2EE開(kāi)發(fā)的新手的理想選擇,也可以作為高級(jí)架構(gòu)師按照
需求來(lái)制定對(duì)應(yīng)服務(wù)的中間件平臺(tái)。雖然JBoss核心服務(wù)僅提供EJB服務(wù)器,而不包括Servlet和Web容器,不過(guò)它可以和Tomcat完美地結(jié)合
在一起來(lái)支持整個(gè)J2EE系統(tǒng)。JBoss采用JMX API來(lái)實(shí)現(xiàn)軟件模塊的集成與管理。關(guān)于JBoss的詳細(xì)資料請(qǐng)參閱其主頁(yè)
http://www.jboss.org 。
10.Lomboz http://forge.objectweb.org/projects/lomboz Lomboz插件是一個(gè)在Eclipse上專門支持J2EE開(kāi)發(fā)的插件,它有以下幾個(gè)主要功能:
- 各種網(wǎng)頁(yè)標(biāo)記和JSP關(guān)鍵字高亮顯示。
- 對(duì)JSP的語(yǔ)法進(jìn)行檢查。
- war文件和EJB檔案(JAR)文件的部署。
- 利用Wizard向?qū)?lái)完成Web應(yīng)用和EJB應(yīng)用的構(gòu)建和部署。
- 利用XDoclet來(lái)完成EJB接口和部署描述符的自動(dòng)生成。
- 利用Wizard向?qū)?lái)新建EJB客戶端測(cè)試程序。
- 在各種容器如Tomcat、JBoss和WebLogic上進(jìn)行調(diào)試。
11.JUnit http://www.junit.org/index.htm JUnit是一個(gè)開(kāi)放源代碼的Java測(cè)試框架,用在編寫和運(yùn)行可重復(fù)的測(cè)試上。它是單元測(cè)試框架xUnit的一個(gè)實(shí)例。JUnit非常小巧,但是功能卻非常強(qiáng)大。對(duì)不同性質(zhì)的被測(cè)試對(duì)象,如Class、JSP、Servlet等,JUnit有不同的使用技巧。
JUnit有如下特性:- 用于測(cè)試希望結(jié)果的斷言
- 用于共享共同測(cè)試數(shù)據(jù)的測(cè)試工具
- 用于方便地組織和運(yùn)行測(cè)試的測(cè)試套件
- 星圖形和文本的測(cè)試運(yùn)行器
JUnit的優(yōu)點(diǎn):- 可以使測(cè)試代碼與產(chǎn)品代碼分開(kāi)。這更有利于代碼的打包發(fā)布和測(cè)試代碼的管理。
- 針對(duì)某一類的測(cè)試代碼,通過(guò)較少的改動(dòng)便可以應(yīng)用另一個(gè)類的測(cè)試,JUnit提供了一個(gè)編寫測(cè)試類的框架,使測(cè)試代碼的編寫更加方便。
- 易于集成到程序的構(gòu)建過(guò)程中。JUnit和Ant的結(jié)合還可以實(shí)施增量開(kāi)發(fā)。
- JUnit的源代碼時(shí)公布的,故而可以進(jìn)行二次開(kāi)發(fā)。
- JUnit具有很強(qiáng)的擴(kuò)展性,可以方便地對(duì)Junit進(jìn)行擴(kuò)展。
12.Ant http://ant.apache.org/Ant(Another Neat Tool)是一款很好的變異部署工具,它是Apache軟件基金會(huì)Jakarta項(xiàng)目中的一個(gè)子項(xiàng)目,它有以下優(yōu)點(diǎn):
- 跨平臺(tái)性:Ant是用純Java語(yǔ)言編寫的,所以具有很好的跨平臺(tái)性。
- 操
作簡(jiǎn)單:Ant是由一個(gè)內(nèi)置任務(wù)和可選任務(wù)構(gòu)成的。Ant運(yùn)行時(shí)需要一個(gè)XML文件(構(gòu)建wenjian)。Ant通過(guò)調(diào)用target樹(shù),就可以執(zhí)行各
種task。每個(gè)task實(shí)現(xiàn)了特定的接口對(duì)象。由于Ant構(gòu)建文件是XML格式的文件,所以很容易維護(hù)和書(shū)寫,而且結(jié)構(gòu)很清晰。
- Ant可以集成到開(kāi)發(fā)環(huán)境中:由于Ant的跨平臺(tái)性和操作簡(jiǎn)單的特點(diǎn),它很容易集成到一些開(kāi)發(fā)環(huán)境中去。
13.通用日志包、Log4j、SimpleLog、NoOpLog
Apache通用日志包是Apache組織的開(kāi)源項(xiàng)目。它負(fù)責(zé)向開(kāi)發(fā)者提供一系列通用的日志接口。用戶可以自由地選擇和實(shí)現(xiàn)通用日志接口。通用日志包目前支持以下幾個(gè)日志器。
- Log4j日志器是一個(gè)開(kāi)放源代碼項(xiàng)目。它由Logger、Appender和Layout這三個(gè)主要的組建構(gòu)成。http://logging.apache.org/
- SimpleLog日志器在通用日志包中自帶了org.apache.commons.logging.impl.SimpleLog日志實(shí)現(xiàn)類。它實(shí)現(xiàn)了Log接口,把日志消息都輸出到系統(tǒng)錯(cuò)誤流System.err中。http://www.simplelog.net/
- NoOpLog日志器在通用日志包中自帶了org.apache.commons.logging.impl.NoOpLog日志實(shí)現(xiàn)類,實(shí)現(xiàn)了Log接口。其輸出日志的方法中不進(jìn)行任何操作。
其中,SimpleLog和NoOpLog日志器是通用日志包自帶的,Log4j日志器是第三方的軟件。
14.MyEclipse
http://www.myeclipseide.com/ MyEclipse是Eclipse的商業(yè)插件,也是一款功能強(qiáng)大的J2EE集成開(kāi)發(fā)環(huán)境,支持代碼編寫、配置、測(cè)試以及除錯(cuò)。
Genuitec發(fā)布了MyEclipse Enterprise Workbench
5.0,更智能、更快捷、更簡(jiǎn)單和更便宜的J2EE工具的新版本的誕生。它的價(jià)格對(duì)于個(gè)人和企業(yè)開(kāi)發(fā)人員來(lái)說(shuō)都是非常有吸引力的。這是J2EE
IDE市場(chǎng)一個(gè)重量級(jí)的選手。通過(guò)增加UML雙向建模工具、WYSIWYG的JSP/Strutsdesigner、可視化的Hibernate/ORM
工具、Spring和Web services支持,以及新的Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā),MyEclipse 5.0繼續(xù)為業(yè)界提供全面的產(chǎn)品。