PDF(Portable Document Format)的文件標準為Adobe公司於1988年所提出,當時主要是針對異質平臺的文件交換而產生,由於PDF的普及,利用PDF文件做為系統的輸 出方式已經是十分常見的應用,並成為全球通用的文件標準之一。相較於微軟Office文件,PDF具有檔案較小的特性,可以保有原文件內容及格式,較不易 被更改,而且也不會因為平臺及印表機的限制而有不同的輸出結果。

當Java遇上PDF…

在Java的開發世界中,只要你曾經思考過如何產生PDF格式文件,iText套件你必然不陌生。iText也是Java開放源碼中十分活躍的套 件之一,發展至今功能成熟且完整,許多知名的開放源碼報表軟體(像是JasperReport、JFreeReport等),甚至商用軟體套件都採用 iText為其PDF文件之產生核心引擎。iText說穿了,就是個PDF文件產生器。

在什麼樣的情境及條件下,以PDF格式來輸出檔案是較佳的選擇呢?

● 需要結合動態網頁產生PDF內容,而非手動方式可以單純完成。

● 網站中提供文件下載功能,但當Office等文件格式檔案容量較大,易造成下載速度過慢時。

● 針對文件內容有保全上的考量,避免內容被修改或列印。

● 講求列印內容之呈現效果,而不想直接以HTML網頁格式進行輸出,造成格式無法有效控制,像是特殊字型的顯示等。

● 提供異質平臺上瀏覽器的可讀性文件,尤其像是Linux、Mac OS等非Windows的作業系統。

雖然iText套件也支援非Java平臺(像.NET),但本書則著重在Java方面的整合開發,因此在本書中,你可以習得如何透過iText結合Java/J2EE發展出具備管理PDF文件的應用系統。書中的所有程式範例你都可以從iText的官方網站下載取得,直接安裝執行搭配閱讀本書可提升學習效率。

簡單5步驟,PDF即可得

也許你對iText套件十分陌生,本書開宗明義免不了對iText套件的發展沿革作概括性的說明。若你只是需要在實務上提供單純格式的文字內容輸 出,本書第二章便有讓你可以快速上手的內容,只要簡單的5個步驟、不到10行的程式碼,便可以幫你快速產生一個標準的PDF文件檔,處理的邏輯與一般文字 檔案的概念一樣,只需要初始化iText所屬的Document物件即可。可以快速上手產生PDF文件,或針對現有PDF文件內容處理。

當然實際專案的狀況中,報表或文件的輸出一定不會只是單純印印文字就作罷,搭配表格圖片、不同字型呈現、分段等多樣化的版面需求應該是免不了的。 書中第二部分則再進一步將文件中的每個元素逐一抽絲剝繭,從第四章操作文字基本元素、第五章處理文章內容中的圖片影像、第六章建構多樣化的表格、第七章的 分欄版面控制等,這些章節都能讓你深入了解如何利用iText掌控每個文件元素,建構出你所想要的PDF文件內容。

第三部分則深入介紹文字及圖片的處理,像是多國語系字型的控制、直書/橫書、特殊發音符號的處理、在頁面上產生線條、多邊形等快取圖案,以及設定顏色等功能。

不只單純瀏覽PDF,還可進階互動

若你對PDF文件需要提供使用者更友善的閱讀感受、在文件產出的同時搭配較優的偏好設定,讓使用者除了獲得應有的文件內容之外,透過互動方式更能清楚掌握到文件所要表達的重要訊息。

第四部分討論利用iText套件處理與瀏覽功能上的相關設定,像是利用書籤或頁面縮圖的導覽方式、快速在原文件中或跨文件跳頁及快速連結的功能、結合瀏覽器的呈現效果等,可以提供使用者更方便的瀏覽體驗。

本書為iText研發團隊成員Bruno Lowagie所撰寫,除了官方文件外,你可以透過本書獲得最完整、最原汁原味的iText資訊。秉持Manning著重實作細節的一貫作風,你可將本書 視為iText開發的實務手冊,依照章節來找出你在實務上的應用需求,搭配書中的程式碼來解決你的難題。依照程式碼逐行說明的內容,可讓讀者掌握每個實作 細節,相信本書可以讓你立即上手。

當今企業E化已經不是什麼罕見的新聞了,因應企業的營運流程需要利用一些應用系統來提昇作業效率及協同各功能單位的運作,像是常聽到的如企業資源規劃 (ERP)系統,企業資訊門戶網站系統,知識管理系統等。但是這些E化系統的建置成本十分可觀,客製化開發費用不算,光軟體授權費用可能就讓一般的中小企 業無福消受,所以常讓這些企業裹足不前。

從 先前iThome對中小企業所進行的調查顯示,整體看來企業花在IT方面的投資已經有逐年下降的趨勢,在有限的預算中要能有效推動企業E化,的確讓這些資 訊主管他深深感到巧婦難為無米之炊。「又要馬兒好,又要馬兒不吃草」,相信這一直是資訊單位主管心中一直無法磨滅的痛,資訊單位通常都是屬於業務支援單 位,所以在預算及人力的配置上,總是很難被受到重視及優先處理,尤其是在經濟不景氣的今日,成本總是會被錙銖必較,所以如何化腐朽為神奇,有效利用手邊資 源創造非凡價值,就是資訊主管眼前相當重要的任務之一。

不容忽視的LAMP勢力

單 純從建置成本的角度來看,LAMP的確是十分吸引人的,它的開放架構及資源充沛的程式碼,穩定成熟的技術讓許多中小企業愛不釋手,紛紛投入它懷抱。雖然在 維護上及開發上相對於Microsoft的人才較不普遍,但是現在熟悉LAMP平台技術的人才也比過去好找,所以技術也不像以往那樣讓人覺得門檻太高而無 法掌握,尤其在Web 2.0架構行情看漲,如此的技術完全不褪流行。

若您接觸過開放源碼(Open Source),經常下載一些好用的工具及應用系統來使用,您會發覺LAMP技術一直是開放源碼社群裡十分活躍的一群,也因為這些前輩貢獻的成果,讓我們節省了不少時間,可謂是前人種樹後人乘涼,這也正是開放源碼社群的基本精神之一。

在 企業應用層面上,其實開放源碼也有不少現成的應用系統可以幫助企業解決一些作業標準化的問題,讓處理流程更一致,各功能單元之間的互動更緊密而發揮綜效。 這些開放源碼吸取了不少實際的經驗,累積不少使用者反應的問題,在功能上不斷更新改良,讓接受度逐漸提高,這也是開放源碼成功的重要原因。

這些企業應用的開放源碼應用系統,一般而言會有以下特性:

  • 以Web-based為主要設計架構,幾乎都可以搭配一種以上的資料庫系統
  • 由於大多是PHP網頁程式,安裝相當方便,而且依功能提供不同的擴充模組,提供使用上高度的系統彈性
  • 設定方式一般是以網頁方式進行(像是install.php),在第一次執行首頁時會引導設定,協助建立資料庫連結(包括使用者帳號,密碼,指定的資料庫名稱等)及需要使用到的資料表內容,不需要會寫程式也可以輕鬆完成
  • 提供功能強大的管理功能及系統彈性,讓使用者依不同需求的使用者以組態設定的方式即可進行功能調整
  • 字元編碼方式則以UTF-8為主,可以依您所需的語系進行設定,一些發展較為成熟的軟體專案還提供繁體中文的版本,也方便於大家使用。

雖然免費,仍需妥善評估

當您在選擇評估建置這些開放源碼應用系統時,本身的整合性成為十分重要的課題。這些來自不同開發單位的軟體必須要能彼此整合,在資料的串連上能夠具開放彈性,在軟體架構上的評估就需要花點心思。從軟體的功能上,以下幾點可以在評估時列入考量的重點:

  • 應用系統在使用者認證(Authentication)及授權(Authorization)的機制,是否可以與現有的機制整合,而達到SSO的理想?
  • 應用系統本身的資料匯出/匯入機制是否完整?其格式是否支援開放標準?
  • 在功能的擴充上,是否提供方便快速不需要撰寫或透過修改程式碼的方式?
  • 系統功能在操作上,是否能與現有作業流程結合?彼此之間的差異是否造成額外的成本?

而就開放源碼本身的可採用度及發展成熟度,可以依據以下的幾個角度來評估:

  • 該開放源碼的更新版本是否頻率且及時?這反映出版本產生的錯誤及問題是否會被及時修正及解決。
  • 該開放源碼提供的技術資源是否充足?是否被網路社群所熱烈討論?這反映出未來建置遭遇問題時,是否可以方便地尋得解決之道。
  • 與其他軟體專案之間及開發平台的整合程度?這表示它的設計理念是否能處理目前技術的主流地位。
  • 開放源碼本身所採用的技術是否為開放標準或市場主流?相關的專業人員是否容易尋得?
  • 自己是否有相關技術人員可進行後續的功能強化及維護?這影響到自行維運涉及的成本及開發時效性。

以下的章節便針對企業活動中會使用到的應用系統逐一介紹。

網路甘仔店—OSCommerce

開 家網路商店,做做小生意,相信是許多想自行創業的老板們曾經想過的方法。至今消費者對電子商務的接受度已經提高,在技術的成熟度及相關的安全機制亦十分完 備,故企業亦漸漸投入除了在傳統通路以外的網路平台,開發新市場以提高業績。無論與消費者之間旳交易或是廠商間的採購買賣,皆可透過電子商務系統準確迅速 達成交易,無形中節省許多人事、溝通及時間成本。

電子商務平台的取得可以有幾種方式:您可以 透過平台供應商,以租用方式取得完整機制,包括前台(使用者瀏覽之商城內容)、後台(提供商品、訂單、供應商等管理功能)、金流(提供多種線上或離線付款 機制)、物流(提供像是店配、宅配等商品配送方式)。若您自己具備IT專業人員,可自行負責軟硬體環境建置,後台金流物流機制亦有能力自行串接,即可採用 下載開放源碼的方式來架設。

OSCommerce是目前電子商務平台採用度最高的解決方案, 目前提供Web Hosting的服務平台亦大都採用此。國內亦有網路社群(www.kmd.com.tw)已提供中文化版本,搭配的外掛模組亦十分完整。在金流與物流的 機制上亦有符合台灣地區的解決方案模組搭配,方便使用者直接下載安裝使用。

專案管理的好幫手-dotProject

只 要是企業的運作,就免不了專案管理的需求。近年來PMP不斷地被倡導下,除了相關理論基礎的落實之外,搭配的資訊科技工具也是不可或缺的。業界常見的方式 是利用Microsoft Project工具來進行專案管理,在專案團隊的協同運作上還需要搭配Project Server的套件,成本所費不貲。當然開放源碼軟體也有專案管理的解決方案:dotProject。

dotProject 提供了一般專案管理需要使用的功能,從管理企業客戶及聯絡人資料,建立專案及相關任務的人力時程及成本,提供專案甘特圖(Gantt Chart)的呈現,還提供結合專案任務的行事曆,方便每個專案成員每日檢視。除了個人專案管理的功能,在團隊協同運作上,專案經理可以利用此平台的任務 指派,讓每位專案成員從系統的待辦事項(ToDo)及今日工作(Today),便可以明確得知自己負責的任務內容,而每項任務的完成率也可經由每個成員在 系統上的回報,而輕易彙整至專案經理的報告中進而有效控管。

dotProject也提供 SMTP服務的整合,結合電子郵件的發送將專案更新訊息傳遞給相關人員。成員也可以透過內建的討論區功能,針對專案內容進行討論及資訊分享,同時對上傳的 文件檔案亦提供管理的機制。系統亦提供一簡單的工單跟催(Ticket)系統,依據客戶需求型態及問題的嚴重性加以分類記錄,分派後以利後續追蹤及處理。

dotProject 的系統管理功能也是十分強大,除了支援多國語系外,每個字詞的對應內容都可以自行修改;另外在功能的擴充上,直接點選需要增加的功能項目即可快速安裝新增 的功能模組,您也可以從dotProject的官方網站上下載其他您需要的擴充模組,輕輕鬆鬆即可強化平台功能,不需要撰寫複雜的程式碼。

協同運作群組軟體平台—eGroupWare

群 組軟體主要是讓一群人之間能共同密切作業而設計的軟體,結合日常活動及作業流程,讓彼此的協同運作更為密切。常見知名的群組軟體解決方案像是IBM Lotus Notes,Microsoft Exchange Server等平台,但其高額的建置成本讓許多企業望塵莫及,而大多數的企業也僅僅將其視為電子郵件系統使用,在投資效益上無法有效發揮。

開 放源碼中的eGroupWare,最新版本提供了數十個發展完整的模組,提供個人資訊管理功能的行事曆、通訊錄、記事本等模組,提供Webmail (FelaMiMail) 模組與現有電子郵件伺服器整合,提供個人文件夾及檔案管理功能,在專案及資源(像是會議室、投影機等公用資源)的管理上也有對應的模組提供使用,讓它能夠 滿足企業多元化的需求。

目前最新版本支援許多新技術,像是結合LDAP、AD等使用者認證機 制、利用XML-RPC與外部應用程式整合、使用SyncML標準與您的行動裝置進行資料同步、AJAX等動態介面讓操作更友善。就這套軟體而言,可以視 其為打雜的好幫手,尤其是對於工作日益繁重的資訊工作者,適當的群組軟體的確是不可或缺的。

密切掌握您的客戶—SugarCRM

常 常可以從一些CRM書籍或研究報告的得到以下類似資訊:開發一個新客戶的成本,大約是維護一個舊客戶的五倍;而對企業貢獻的80%中,都集中在特定20% 的忠實客戶身上。而CRM課題也不再是風聲大雨點小,根據調查報告顯示,它已經是目前中小企業E化中急欲建置的系統之一。然而建置一套知名大廠的CRM解 決方案,動輒百至千萬不等,的確讓這些野心勃勃躍躍欲試的企業們著實潑了一盆冷水。

值得欣慰 的是,在開放源碼的世界裡,當然也不會忘了CRM這個領域,較知名的像是SugarCRM、Vtiger CRM等,都是已經發展完整的應用系統,功能不亞於知名大廠的旗艦產品。SugarCRM是基於業務、行銷、專案、及客戶服務等功能CRM應用系統,它包 含聯絡人資訊管理、成交機會分析管理、客戶活動追蹤管理、圖表及報表分析功能。從企業運作初期的業務活動拜訪,到最後的客戶關係維持,整個流程所需的資訊 管理功能都被完整的包含在內。

本系統提供給不同功能角色的人員同時使用,像是銷售業務人員,行銷活動人員,專案執行人員,總務行政人員,客戶服務人員,及系統管理者等。透過SugarCRM的整合式平台,不同功能之間的資訊均能密切整合,讓協同運作之效益發揮到最大。

每 個使用者登入後的首頁顯示出屬於個人化的重要資訊,讓使用者可以在第一時間查詢所有重要事宜,包括個人待辦事項,待回覆電話,專案任務項目,主管指派事項 等,結合數位儀表版(Dashboard),將個人化首頁(My Portal)的機制發揮到極致,您可以自行調整及設定資訊內容,版面配置等,所有重要資訊一目瞭然。

對 於與桌面應用程式的整合,提供了Microsoft Word及Outlook的軟體插件(Plug-in),讓您可以將現有的Word文件內容直接上傳到SugarCRM系統中使用,結合SugarCRM 中的聯絡人資料進行套表功能。而透過Outlook環境將電子郵件、行事曆、通訊錄等資料與SugarCRM進行同步,在個人資料管理上節省不少重覆作業 的時間。

讓別人也能認識您的公司—Mambo

企業的門面很重要,尤其是在現今網路發達的世界裡,透過企業網站來得到第一印象已經是希鬆平常的事,如何快速建立屬於自己企業特色的門戶網站,提供正確無誤的相關訊息給您的客戶,透過強大的企業門戶網站平台工具來處理是絕對必要的。

在 過去像是行銷部門要公佈最新活動訊息,人事單位要更新徵才資訊,財務單位要公佈財務資訊,總是需要透過資訊單位將資料轉換成網頁格式再佈署至企業網站,若 單純只是靜態網頁的內容,這樣的流程常常會讓內容更新時間加長,而且就資訊單位而言,會覺得這樣毫無技術深度的工作有些無趣。

Mambo 是針對企業需求所設計的門戶網站平台系統,無論是網頁功能選單的編輯,企業最新消息或熱門話題的公佈,都可以不假手網頁設計師,直接以Mambo現有的後 台功能來處理。像是會員管理機制(提供登入、註冊新會員、電子報發送),投票機制(自訂熱門話題供訪客投票),內容管理(提供文章及圖片閱讀、評價、及回 覆機制),橫幅廣告管理(提供上下檔、輪播機制),網站全文檢索(結合知名Google搜尋技術),網站使用統計(點閱率、訪客數等統計報表)。這些功能 都是架設網站的基本要素,您不需要再撰寫任何程式碼,在Mambo中已經完整提供。

RSS格式內容的散播及已經是時勢所趨,Mambo提供了RSS格式產生機制,讓您的網站資訊也能隨者RSS方式,方便迅速地傳送到訂閱者手中。

文件管理不再紊亂無章法-Knowledge Tree

企業經營的過程中,知識累積常常會以文件的形式儲存,但當數量多到一個程度時,如何在短時間找到您要的知識便是令人困擾已久的問題,若未能有一管理良好的知識平台來儲存,在這些寶貴的經驗在傳承上則會面臨很大的問題,加上人力資源的流動,經常造成管理上相當繁重的成本。

Knowledge Tree文件管理平台提供方便操作的Web界面及Client桌面軟體工具。由於企業內部文件格式中多以Microsoft Office為大宗,故針對Microsoft Office文件亦提供軟體插件,可結合Office操作環境與平台整合以方便管理。而透過掃瞄器儲存成影像檔的文件,Knowledge Tree也提供影像文件管理功能,直接與光學掃瞄器結合,可以將掃瞄的影像檔案直接轉成PDF格式,以便於日後索引管理。

在Knowledge Tree中,您可以定義及編輯文檔的架構(像是文件目錄的分類),提供文件內容分享,調閱,進階查詢,版本管理,調閱歷史記錄等基本功能。此系統亦提供工 作流程(Workflow)機制,文件可以結合使用者及群組身份進行權限控管,或是結合工作流程機制提供權責單位進行文件調閱申請及審核作業,可應用在技 術資料室或智產專利相關具機密性之文件管理。

平台亦提供線上討論的機制,內建互動討論區功能可與相關文件串連,有效發揮知識及經驗分享的優點。使用者亦可依其所需訂閱相關議題內容,系統透過電子郵件方式主動通知更新內容,方便使用者之間的互動。

總結

心動了嗎?是不是也手癢想要小試一下身手呢?以上的介紹只是眾多軟體中的冰山一角,開放源碼何其多,仍然有許多會讓您如獲至寶的深刻體驗,介紹了這麼多的應用系統,也許您會覺得十分驚訝,這些功能一點也不亞於業界知名的商業軟體,是否有相見恨晚的感覺呢?

不過這些軟體的取得成本雖然低廉,但企業活動及作業流程亦需要進行適當的調整,導入這些系統才能發揮真正的效益;另外資訊單位日後的維護及系統功能強化亦需要有專才負責,否則可能只是三分鐘熱度,最後流於形式而毀了這些原創者的美意了。

《karta and Beyond

《karta and Beyond

若工作與Java關係密切,又常接觸Open Source軟體,必然聽過或用過Apache Jakarta專案中的軟體工具。Apache Jakarta專案包括了許多時下極為流行及功能強大的軟體,像是Ant、Struts、JUnit、Tomcat等,而且不斷地充實專案中整個軟體種類 所涵蓋的廣度,只要是與Java軟體專案有關的,幾乎都跟Jakarta脫離不了關係,最終目的在你只需單純導入Jakarta軟體框架,即可快速發展軟 體專案。

Jakarta金字招牌,品質掛保證
雖然Jakarta的軟體專案不勝枚舉,但其品質卻一點也不馬虎,在市場佔有率及業界開發採用度上,Jakarta的比例仍然是居高不下,一些知 名的商用軟體(Java IDE或是Application Server)都陸續將之納入產品的一部份,或提供對應的整合方案,可見Apache Jakarta已經形成Java開放源碼界的金字招牌,隱然成為業界軟體開發時不成文的標準。

Apache Jakarta專案的出現,使得Java開放源碼正在進行「格式化」發展,一個全面性、完整地涵蓋軟體開發製程需求的思想,慢慢地被Jakarta專案所 一一實現,以物件導向的基本精神持續發展著,發揮軟體模組化及重複使用的特性,讓廣大的Java芸芸眾生可以庇陰在它的福報之下,不斷地成長茁壯。

以宏觀的角度來欣賞Jakarta
本書撰寫的用意是為了讓讀者能更有效率地進行Java軟體專案,介紹的內容不只是這些Jakarta工具在開發階段時個別的使用方法,而對於 Jakarta專案的發展源起,每個工具之間的關連性,同時在引用多項工具時可以發揮的綜效為何,提出建議的最佳實踐方案,並搭配範例說明,可以當成未來 專案模版來使用,無論在觀念上及實作上均有助益。

全書涵蓋幾個軟體發展的中心思想,從軟體建構機制談起,說明Ant工具的使用方式。接下來四個章節探討軟體測試的方法,從自動化單元測試(JUnit)、網站應用系統測試(HTTPUnit)、J2EE系統測試(Cactus),及系統壓力測試(JMeter)等。

在MVC軟體架構的設計原則下,Java Bean元件的設計一直是在架構中佔有高比重成份,搭配BeanUtil協助Java Bean的開發實作,可以有效簡化開發過程並提昇效率。而在XML文件資料的處理上,透過JXPath提供簡便的XML文件走訪機制,亦可對XML內容的 異動更新均可達成。

雖然資料庫系統已經算是成熟的技術,Apache Jakarta仍然提供與資料庫相關的套件,像是純Java開發的資料庫Hsqldb、Object-Relational Mapping工具OJB等。另外,應用系統必備的記錄機制(Log4J)及彈性的系統組態方式(CLI、Digester),以正規表示式 (Regular Expression)、進行文字內容剖析(OBO、Regexp)與大量文字的內容搜尋(Lucene),以及對於流通性相當普遍的Microsoft Office文件檔案處理(POI)亦有專章討論。在Web相關技術方面,Tomcat Server的安裝及設定、Tag Library的引用、Struts與Cocoon等軟體框架的討論亦納入本書範圍。

掌握重點導覽,快速學習
就筆者看來,書名中的「Beyond」之意表示軟體開發並非唯Jakarta獨尊。在討論某特定議題時,除了Jakarta的解決方案之外,仍會視不同的需求討論其他的可行方式。同時希望帶領讀者體會到Jakarta軟體發展的中心思想。

大部份的程式開發人員在接觸Jakarta軟體時,最常閱讀的資料來源不外乎Jakarta官方網站的技術文件,較少以閱讀書籍的方式,差別在於 官網的資訊較新。本書挑出的軟體工具大都是較流行常用且發展成熟,加上Jakarta專案的迅速發展及時空差異,無法完全包含Jakarta所有的軟體專 案。所以想要在最短時間了解Jakarta專案中包括那些常用的工具,每個工具的用途及使用時機為何,本書是個不錯的選擇。

Art of Java Web Development

Art of Java Web Development

前一陣子有個好友P先生問我:「Struts跟Tapestry兩個Framework那個比較好?」像這樣類似的問題相信您也曾經遇到,後來想到有本書《Art of Java Web Development》恰好可以拿來解答!

就Java這個技術領域來說,Java Servlet、JSP及Custom Tag是最主要的Web開發技術,在MVC(Model,View,Controller)觀念不斷倡導下,許多開放源碼社群便將這樣的觀念落實到Web Framework上,像Struts就是一個典型的例子。但與Web相關的開放原碼框架(Web Framework)種類十分繁多,每個框架都有自己的特色及適用的時機,要好好發揮是需要套用合適的Web Framework,以利未來擴充及維護。

通常知名的Java Web Framework有以下共通特性:
● 採用XML為其組態檔格式,用來控制網頁流程及實作元件之宣告。
● 實作時必須繼承或實作Framework所定義的類別或介面。
● 允許透過標準介面與其他J2EE Framework輕易整合
● 可以自行改寫原始碼,做出適用於自身需求的新框架

介紹加上評估,實作參考價值高

本書內容分三大部份,第一部份先針對Java開發Web應用系統的歷史沿革進行簡要回顧,作者說明欲開發一個頂尖水準的Web應用系統應該注意的 事項,強調設計模式(Design Patterns)的重要性,在架構設計時導入合適的Web框架,並遵循最佳實踐方案(Best Practices)以避免錯誤及降低風險。另外亦提到在實作時使用的相關技術,包括Java Servlet、JSP、及Custom JSP Tag,亦針對這些方式分別評估其利弊及優劣分析,最後便談論Model 2的設計方式,建議讀者以MVC架構您的Web Application。

第二部份便分別介紹時下較知名的Java Web Framework,包括Apache Jakarta專案的 Struts,Tapestry,Velocity,Cocoon,Open Symphony專案的WebWork,JBuilder中的InternetBean Express等。作者設計了一個時程表(Schedule)的範例,包括行程新增、檢視、資料驗證等功能,分別透過這些不同的Web Framework來實作,讓讀者可以方便比較彼此之間實作上的差異性。針對每個Web Framework都會提到該軟體架構,包含的主要組成元件,及作者對這些Framework的評估結果,提供讀者在使用這些框架時之參考。

在了解每個Web Framework的特性之後,相信您心裡對於採用那一個Framework應該有些眉目,但在開發過程中免不了會遭遇到一些常見的問題需要解決,像是網 頁流程設計、使用者界面設計、效能調校、系統資源配置、測試及除錯等議題。第三部份便討論在建構Web應用系統時之最佳實踐方案。在這個部份作者利用電子 商務網站範例(eMotherEarth.com)來說明建議的實作技巧,並搭配程式碼輔助說明。另外亦介紹了相關的Open Source工具(像是JUnit,Log4J)來輔助開發。本部份的章節相當精彩,讀者必然不可錯過!

妥善評估,選擇合適的Framework

至於您要採用那個Framework,評估的重點可以分別由架構本身的擴充性,架構本身研發的速度及維護的週期來檢視,而文件的完整性、社群參與 程度亦是開發人員需要重視之處,是否提供配套的工具軟體(像是一些知名開發平台的Plug-in)對開發效率影響甚鉅;Framework本身是否遵循良 好的設計原則,所採用的技術是否創新,也會是評估的重點。

導入Framework也許會比較費事,因為Framework的價值在於它已完整定義基礎框架及所需的基本元件,開發人員必須遵循它所定義的規則來實作內容。但在規模較大而且經常進行內容更新的的網站系統,導入Framework的效益就很容易被彰顯出來。

本書原則上是對每個Web Framework進行概要性介紹及適用性評估,由於篇幅有限,更細部的實作方式不會在本書過多著墨,您可以參考對應的專書或技術文件,Manning的《In Action》系列書籍即可以提供您滿意的答案。

Jakarta Commons Cookbook

Jakarta Commons Cookbook

軟體設計就像是烹調一道色香味全的佳餚一樣,是否能讓饕客食指大動,無論是食材的調配或是佐料的選擇都是十分重要的因素。由於Java軟體專案開發的過程中,除了JDK本身提供的標準套件外,開發人員常會因應特定需要額外再引用特定目的且功能較強的程式庫,來加速專案開發的進行。這些套件經常出現在各種軟體專案開發中,而且功能會被重覆使用,故Apache軟體基金會特別在Jakarta專案下成立Commons這個子專案,收錄軟體專案中常用的輕量級軟體元件,讓開發人員能得到更全面性的解答。

問題導向式的文章架構,簡潔而不死板
只要曾經使用Java為開發應用程式為主要語言,想必聽過Jakarta Commons這個開放軟體專案,它所包含的軟體套件眾多,平常大家也許只用到其中知名的幾個,例如在使用Struts及Hibernate框架時會搭配的BeanUtil套件,與HTTP網路處理有關的HTTPClient及WebDAV。

《Jakarta Commons Cookbook》的定位為實作手冊,但不會單調地依套件逐一列示(不像程式庫手冊一般)。每個主題先以問題描述啟始,再提供如何以Jakarta Commons套件解決此問題的方法,並佐以程式碼輔助說明,這些程式碼即可套用在你的軟體專案中,提供讀者在程式實作時更明確的指引,最後再舉出與此主題有關的其他解法並比較討論,讓讀者更能以不同的角度思考。

主題明確的內容規劃,讓你快速找到你要的烹調法
全書共分為12個章節,每個章節中再針對不同的問題別細分。第1章《Supplements to the Java Platform》討論針對JDK套件補強的部份,讓開發人員在使用上更直覺更方便。第2章《Manipulating Text》討論對文字及字串的處理。第3章《JavaBean》便提供針對對JavaBean的功能支援。第4章《Functors》介紹了一系列的工具套件。

第5章《Collections》介紹Commons裡提供一些資料結構用法,以及對JDK現有的資料結構提供進階的操作方式。第6章《XML》介紹如何運用Digester來處理XML文件,以及使用Betwixt將JavaBean與XML文件之間進行轉換。第7章《Application Infrastructure》介紹透過Configuration管理系統組態的方式,另外介紹如何利用CLI剖析命令列下的指令結構,本章亦提到 Logging的用法,以及跟Log4J的差異。第8章《Math》介紹在Common Lang及Commons Math中關於數值運算的套件。

第9章《Templating》介紹輕量級的樣版引擎JEXL,如何運用EL表示式來進行套版設計,同時也討論介紹Jakarta Velocity及FreeMarker與JEXL的異同。第10章《IO and Networking》包括了許多處理串流(Stream)與檔案的工具套件,利用正規表示式(Regular Expression)對檔案與目錄的操作,以及一些常見網路傳輸協定(FTP、POP、SMTP)的Client物件。第11章《HTTP and WebDAV》教你善用HTTPClient及WebDAV Client來進行網路上的資料傳輸。第十二章《Searching and Filtering》則介紹如何運用JXPath,Lucence快速搜尋。

闡述物件可重用性及介面標準化的設計精神
讀者在閱讀本書時也許會發現書中套件的版本已經不是最新版本,但Jakarta Commons強調的是介面一致性及版本向前相容的精神,所以未來新版出現時對舊版的程式撰寫方式亦能有效支援。

除了本書以外,你也可以搭配參考其他相關主題的書籍,例如《Applied Software Engineering Using Apache Jakarta Commons》、《Pro Jakarta Commons》。準備好試試烹調一份美味的Java大餐了嗎?

Follow

Get every new post delivered to your Inbox.