2006 年 8 月 31 日
開始學(xué)習(xí)在 java™ 平臺上使用諸如 SPRing、Hibernate 或 MySQL 之類的開放源碼工具時可能非常困難。再加上 Ant 或 Maven,以及與 DWR 一起的小 Ajax,還有 Web 框架 —— 即 JSF,我們必須睜大眼睛盯著如何配置應(yīng)用程序。AppFuse 減少了集成開放源碼項目的痛苦。它可以把測試變成一等公民,讓我們可以從數(shù)據(jù)庫表生成整個 UI,并使用 XFire 來支持 Web 服務(wù)。另外,AppFuse 的社區(qū)也非常健全,這是不同 Web 框架用戶可以一起融洽相處的地方之一。
AppFuse 是一個開放源碼的項目和應(yīng)用程序,它使用了在 Java 平臺上構(gòu)建的開放源碼工具來幫助我們快速而高效地開發(fā) Web 應(yīng)用程序。我最初開發(fā)它是為了減少在為客戶構(gòu)建新 Web 應(yīng)用程序時所花費的那些不必要的時間。從核心上來說,AppFuse 是一個項目骨架,類似于通過向?qū)?chuàng)建新 Web 項目時 IDE 所創(chuàng)建的東西。當(dāng)我們使用 AppFuse 創(chuàng)建一個項目時,它會提示我們將使用開放源碼框架,然后才創(chuàng)建項目。它使用 Ant 來驅(qū)動測試、代碼生成、編譯和部署。它提供了目錄和包結(jié)構(gòu),以及開發(fā)基于 Java 語言的 Web 應(yīng)用程序所需要的庫。
與大部分 “new project” 向?qū)Р煌珹ppFuse 創(chuàng)建的項目從最開始就包含很多類和文件。這些文件用來實現(xiàn)特性,不過它們同時也會在您開發(fā)應(yīng)用程序時被用作示例。通過使用 AppFuse 啟動新項目,我們通常可以減少一到兩周的開發(fā)時間。我們不用擔(dān)心如何將開放源碼框架配置在一起,因為這都已經(jīng)完成了。我們的項目都已提前配置來與數(shù)據(jù)庫進行交互,它會部署到應(yīng)用服務(wù)器上,并對用戶進行認(rèn)證。我們不必實現(xiàn)安全特性,因為這都早已集成了。
當(dāng)我最初開發(fā) AppFuse 時,它只支持 Struts 和 Hibernate。經(jīng)過幾年的努力,我發(fā)現(xiàn)了比 Struts 更好的 Web 框架,因此我還添加了為這些 Web 框架使用的選項。現(xiàn)在,AppFuse 可以支持 Hibernate 或 iBATIS 作為持久性框架。對于 Web 框架來說,我們可以使用 JavaServer Faces(JSF)、Spring MVC、Struts、Tapestry 或 WebWork。
AppFuse 提供了很多應(yīng)用程序需要的一些特性,包括:
這種 “開箱即用” 的功能是 AppFuse 與其他 CRUD 代 框架的區(qū)別之一(CRUD 取自創(chuàng)建、檢索、更新 和刪除 幾個操作的英文首字母),包括 Ruby on Rails、Trails 和 Grails。上面提到的這些框架,以及 AppFuse,都讓我們可以從數(shù)據(jù)庫表或現(xiàn)有的模型對象中生成主頁/細節(jié)頁。
圖 1 闡述了一個典型 AppFuse 應(yīng)用程序的概念設(shè)計:
清單 1 給出了我們在創(chuàng)建 devworks 項目時所使用的命令行交互操作,同時還給出了所生成的結(jié)果。這個項目使用了 WebWork 作為自己的 Web 框架(請參考下面 參考資料 一節(jié)給出的鏈接)。
alotta:~/dev/appfuse mraible$ ant newBuildfile: build.xmlclean: [echo] Cleaning build and distribution Directoriesinit:new: [echo] [echo] +-------------------------------------------------------------+ [echo] -- Welcome to the AppFuse New application Wizard! -- [echo] [echo] To create a new application, please answer the following [echo] questions. [echo] +-------------------------------------------------------------+ [input] What would you like to name your application [myapp]?devworks [input] What would you like to name your database [mydb]?devworks [input] What package name would you like to use [org.appfuse]?com.ibm [input] What web framework would you like to use [webwork,tapestry,spring,jsf,struts]?webwork [echo] Creating new application named 'devworks'... [copy] Copying 359 files to /Users/mraible/Work/devworks [copy] Copying 181 files to /Users/mraible/Work/devworks/extras [copy] Copying 1 file to /Users/mraible/Work/devworks [copy] Copying 1 file to /Users/mraible/Work/devworksinstall: [echo] Copying WebWork JARs to ../../lib [copy] Copying 6 files to /Users/mraible/Work/devworks/lib [echo] Adding WebWork entries to ../../lib.properties [echo] Adding WebWork classpath entries [echo] Removing Struts-specific JARs [delete] Deleting directory /Users/mraible/Work/devworks/lib/struts-1.2.9 [delete] Deleting directory /Users/mraible/Work/devworks/lib/strutstest-2.1.3 [echo] Deleting struts_form.xdt for XDoclet [delete] Deleting directory /Users/mraible/Work/devworks/metadata/templates [echo] Deleting Struts merge-files in metadata/web [delete] Deleting 7 files from /Users/mraible/Work/devworks/metadata/web [echo] Deleting unused Tag Libraries and Utilities [delete] Deleting 2 files from /Users/mraible/Work/devworks/src/web/org/appfuse/webapp [echo] Modifying appgen for WebWork [copy] Copying 12 files to /Users/mraible/Work/devworks/extras/appgen [echo] Replacing source and test files [delete] Deleting directory /Users/mraible/Work/devworks/src/web/org/appfuse/webapp/form [delete] Deleting directory /Users/mraible/Work/devworks/src/web/org/appfuse/webapp/action [copy] Copying 13 files to /Users/mraible/Work/devworks/src [delete] Deleting directory /Users/mraible/Work/devworks/test/web/org/appfuse/webapp/form [delete] Deleting directory /Users/mraible/Work/devworks/test/web/org/appfuse/webapp/action [copy] Copying 5 files to /Users/mraible/Work/devworks/test [echo] Replacing web files (images, scripts, jsps, etc.) [delete] Deleting 1 files from /Users/mraible/Work/devworks/web/scripts [copy] Copying 34 files to /Users/mraible/Work/devworks/web [delete] Deleting: /Users/mraible/Work/devworks/web/WEB-INF/validator-rules-custom.xml [echo] Modifying Eclipse .classpath file [echo] Refactoring build.xml [echo] ---------------------------------------------- [echo] NOTE: It's recommended you delete extras/webwork as you shouldn't need it anymore. [echo] ---------------------------------------------- [echo] Repackaging info written to rename.log [echo] [echo] +-------------------------------------------------------------+ [echo] -- Application created sUCcessfully! -- [echo] [echo] Now you should be able to cd to your application and run: [echo] > ant setup test-all [echo] +-------------------------------------------------------------+BUILD SUCCESSFULTotal time: 15 seconds
新聞熱點
疑難解答