跳到主要內容區

第一期-2012.10出刊-暑期實習-陳盟仁

 

2012暑期實習心得分享-陳盟仁(13級,現為清華大學資工系大學部3年級)

實習單位:國家晶片系統設計中心-前瞻技術組

 

Java Framework的簡介及實際應用

摘要

說明闡述使用Java Framework帶來的方便性,並以其中兩個遠近馳名的Java Framework--Hibernate及Struts為例,並帶入初學者的學習角度加以分析。

 

一、簡介

以本人具備基礎的Java撰寫能力與概念,並首次接觸學習Java Framework的初學者心態和角度撰寫本文,希望能夠深入淺出的表達學習之心得。以下將先從Java Framework的基礎概念著手,再以Hibernate和Struts提出應用實例。

 

二、淺談Java Framework

Java Framework的重要性與日俱增,歸於Java語言遍及範圍越來越廣,其方便多樣的API、不同的OOB概念和Open Source開發性的理念,搭配MVC架構、解耦合的特性等等,不同於其他程式語言的建構基礎,比起往日一步一腳印踏出每一行程式碼的紮實寫法,如今懂得在Java Framework之中穿梭自如、靈活運用的高手,才可以算是箇中翹楚。

滋養Java Framework成為獨當一面的格局,和Java的語言特性勢必息息相關,以下將介紹讓OO概念運用到設計層而解開耦合使Java Framework大放異彩的立足點,而下一節更加以闡述能讓Java Framework有廣大的接受度,並且被重視與重用、不容小覷的優點。

 

 

1. 解開耦合的關鍵思維—Model-View-Controller

舊式的網頁開發大多是一體成形的設計方式,達成軟體需求而做系統分析之初,預期以少量程式碼或是高效執行速率為原則直奔終點,用一個程式去對應一個網頁需求,造就了「一個蘿蔔一個坑」的局面。然而,面對軟體程式不斷地更換淘汰版本,舊式的設計方式將程式內部的各部分如前端顯示、後端管理以及模組部分完全融合,具有高難度的功能擴充、程式維護和更新版本等等,儘管邏輯上相近的更改或是功能上相似的需求,仍須對程式大動手術甚至重新設計。

Model-View-Controller(MVC)三層架構模型即是化開程式彼此糾結與依存的解決之道。Model又稱Business Logic商務邏輯,此部分抽象表達業務上的邏輯,同時也是維持企業資料與資料庫聯繫的主要位置;View是與用戶接觸的第一線,顯示介面、外觀設計並更新畫面來回應用戶的要求;Controller則是扮演掌管程式控制權的核心角色,根據用戶要求將控制權分配給相對應的商務邏輯程。此架構源自Smalltalk程式語言,藉著分層的方式解開耦合,提高程式碼的重複使用性(reuse),寫程式由以前「黏合模型」變成「拼裝積木」,尋找並替換相對應的「零件」便可對程式做到擴充、升級、維護等,儘管運用MVC的架構會讓程式寫法比較曲折複雜而稍微加時費工,但以長遠的眼光來看卻是九牛一毛。

   

2. 程式拼裝元件的框架—Java Framework

  MVC架構將程式各層間維繫著既不互相依賴又能善盡溝通的關係,然而程式外的世界就沒有如此盡如人意。以Model層的情況來說,根據使用資料庫的不同如MySQL或Oracle等,光是基礎行為「增刪改查」皆有各自一套寫法,對軟體開發人員而言,一種資料庫代表著一次重頭學習的麻煩,雖然資料庫概念相通,但眾多微小的程式碼差異使得更改也是令人繁瑣頭痛。

  Java Framework又稱框架就像是預先存在的轉接頭,接上不同的元件再透過框架與外部溝通,開發人員只要熟悉轉接頭的習性便能無視外部連接的種類,一概由框架負責處理外部的差異。例如熟用Hibernate的語法便能應付Oracle和MySQL兩大資料庫作查詢時所下達query指令的不同;Struts整合前端對外傳達至瀏覽器的資訊,加強功能且能對應各種Java套件如Ext JS,對於需要在View層上動美容手術、設計特效等動作的人可是一大福音;不只如此,Java Framework還有其他如串聯溝通前端的Struts和協調後端的Hibernate的Spring,藉著框架整合而加快整體執行速度。Java Framework的使用至今已不容忽視,因為其涉及的範圍太廣且省下開發者許多繁瑣步驟,選用適當的工具不僅能讓開發順利、維護方便,甚至可能讓程式設計更加簡潔俐落。

 

圖二 School-Member-Department表格簡單關係示意圖

 

三、實用Java Framework

Java Framework具有非常多種類與不同面向的功能,而“Struts + Spring + Hibernate”可說是J2EE的框架實用組合之一,其中單獨框架可以各司其職,又能攜手合作達到意想不到的效果,無論三者其一都不是一朝一夕且能融會貫通,以下以較易入手的Struts和Hibernate為初學應用。

 

1. Hibernate 3.x解開表格複雜關係

 

1.1 Hibernate簡介

  資料儲存是具有一定規模的網站無可避免的需求,資料庫的維持與使用勢必成為一大關鍵,然而,資料庫表單和物件之間並非正好是一對一的對應,Java設計上的邏輯直覺常把物件化視為理所當然,忽略了轉換的重大難題。Hibernate除了上一章提到能處理各式資料庫的差異,還提供多種轉換管道,使其在轉換資料庫表單和Java物件上得心應手,著實克服資料進出資料庫的一大課題。

 

1.2 表格勾搭表格的複雜關係

表格是關聯式資料庫中最多的、唯一的、最重要的主角,不先弄清表格的關係便覺窒礙難行。行(row)與列(column)簡單的對照關係充分記錄所有資訊,藉著表格擁有的id與其他表格產生關聯,如圖二所示為例,這是一個簡單的成員(Member)、學校(School)、系所(Department)對應關係,學校有代表學校的id(SSid)和各項學校資訊如名稱、位置、性質等等,同樣地,系所有代表系所id(DDid)和各項系所資訊,唯有成員除了成員id(MMid)和各項資訊以外也有代表該成員就讀學校的id(MSid)以及就讀系所的id(MDid),進而產生多種關係。

 

圖三 tiles簡易示意圖

 

  一對多(one-to-many)如一間學校對應多位學生,意指很多成員就讀相同學校(MSid相同);多對一(many-to-one)則是一對多的反面;較特別的,多對多(many-to-many)像是多間學校對應多個系所,透過成員表格中兩項id的對照作為媒介,便能找出一間學校擁有之系所及一種系所隸屬之學校。Hibernate運用xml檔案設定表格間以上三種關係,並提供多樣資料結構如Bag, Set等使用,設定方法簡單不做敘述,只要先清楚表格勾搭表格的複雜關係,表格的應用問題便自然迎刃而解。

 

2. Struts 1.x

  Struts內建的tiles提供瀏覽器視窗拼裝的框架,例如不更改位置的菜單(menu)配上因應使用者不同需求所顯示出的主體(body),是最基本的網頁介面。使用tiles在切換body時可以省去整個網頁刷新的過程,使得使用者不會眼花撩亂,網頁整體固定的框架也不需重新適應使用,對於開發人員來說,拼裝的方式讓複雜的介面能夠分離、簡單化,只需更換介面不同的部分,重複的部分則維持原樣,例如索引、標誌、返回首頁等等,進而提高重複使用率。

  要使用tiles必須先了解struts定義檔、tiles定義檔、Action和JSP之間複雜的連動關係,如圖三所示。首先,藉著URL上自訂的parameter判別使用之Action,一旦連結產生,查詢Action內前往下個頁面的名稱,由struts定義檔分發到因應顯示的畫面,再到tiles定義檔內取出該顯示畫面的組成配方,提取不同格式大小的JSP拼湊並顯示至瀏覽器上。藉著兩個設定檔的應用和Action搭配,能完全簡化原本冗長複雜的JSP,分成多個元件方便了開發維護的動作。

 

四、結論

  Java Framework的領域十分廣大,以上的說明和Hibernate、Struts舉例都只是粗淺概論,皮毛而已,然而若能先掌握核心概念,對於初學者來說也是成功地跨出一大步,掌握Java Framework解耦合的架構,在程式設計上投以長遠眼光,無論擔當任何位置,跟進新的技術,累積新的知識,才能使得網頁設計不落人後。

 

五、參考文獻

[1]  黃菁斌, “設計與實作以設計樣式為基礎之題庫管理系統”,國立中央大學資訊工程學系碩士論文, 1999年7月.

 

 

 

 

上一篇 第一期-2012.10出刊-暑期實習-郭俊廷                下一篇 第一期-2012.10出刊-暑期實習-高俊生

瀏覽數: