企業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