Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架二則(1)
來(lái)源:易賢網(wǎng) 閱讀:1070 次 日期:2015-08-31 15:25:47
溫馨提示:易賢網(wǎng)小編為您整理了“Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架二則(1)”,方便廣大網(wǎng)友查閱!

APEX

總體來(lái)說(shuō),APEX是我見(jiàn)過(guò)最便捷最高效的開(kāi)發(fā)框架,用起來(lái)比PHP還舒服。上手簡(jiǎn)單,學(xué)習(xí)成本極低,曾經(jīng)有個(gè)做行政的小女生,在我指導(dǎo)下兩天就可以開(kāi)發(fā)出簡(jiǎn)單的審批管理站點(diǎn)。如果企業(yè)要做一些內(nèi)部應(yīng)用,APEX是上上之選。

相比起我用過(guò)的其他框架,有兩個(gè)特點(diǎn)是APEX獨(dú)一無(wú)二的:

在線(xiàn)編輯,無(wú)桌面IDE。

使用SQL和PL/SQL語(yǔ)言開(kāi)發(fā)。

下圖是APEX開(kāi)發(fā)界面:

名單

Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架二則

APEX依靠數(shù)據(jù)庫(kù)來(lái)執(zhí)行業(yè)務(wù)邏輯及生成html頁(yè)面。頁(yè)面的各種布局、控件模板是存儲(chǔ)在數(shù)據(jù)庫(kù)里的,一個(gè)Oracle數(shù)據(jù)再加一個(gè)http server就它所有的東西了,如果使用數(shù)據(jù)庫(kù)的PL/SQL Gateway,甚至連獨(dú)立的http server都不需要。所以物理上APEX就是Oracle數(shù)據(jù)庫(kù)的一部分,最近版本的Oracle數(shù)據(jù)庫(kù)都帶有APEX,默認(rèn)情況下會(huì)隨數(shù)據(jù)庫(kù)一起安裝。

APEX沒(méi)有專(zhuān)門(mén)的數(shù)據(jù)訪(fǎng)問(wèn)層,數(shù)據(jù)操作直接用SQL。一方面是簡(jiǎn)單,另一方面因?yàn)槭菙?shù)據(jù)庫(kù)環(huán)境中在線(xiàn)開(kāi)發(fā),可以直接讀取數(shù)據(jù)庫(kù)對(duì)象,SQL大多是半自動(dòng)化生成。后臺(tái)業(yè)務(wù)邏輯用PL/SQL實(shí)現(xiàn),Oracle的package足夠強(qiáng)大,實(shí)在不行Oracle數(shù)據(jù)庫(kù)還帶有jvm,寫(xiě)java代碼也行;或者它也支持web service,可以調(diào)用外部模塊。

UI方面,非常的MVC化。M包括保存數(shù)據(jù)的item,V用html模板生成布局和控件,C負(fù)責(zé)計(jì)算、驗(yàn)證、數(shù)據(jù)處理、導(dǎo)航等。APEX界面元素包含了常用的list、form、chart、button及各種輸入控件,并且可以自己建plugin,或者用第三方的plugin,甚至可以加入extjs這種js框架。但作為便捷框架,我不提倡做深度自定義開(kāi)發(fā)。form + list其實(shí)已經(jīng)能滿(mǎn)足絕大部分應(yīng)用了,像Siebel這種大型系統(tǒng)的 applet也就那么幾種。

下圖是APEX應(yīng)用樣式:

名單

Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架二則

APEX還帶有幾十種打包的應(yīng)用程序,比如項(xiàng)目管理、issue跟蹤、報(bào)表等,可以快速部署。

費(fèi)用方面,APEX本身不需求額外的license,如果采購(gòu)了Oracle的數(shù)據(jù)庫(kù),就可以直接用APEX。如果沒(méi)有,APEX還支持Oracle XE數(shù)據(jù)庫(kù)。

ADF

ADF有兩大特色:

一是豐富的RIA組件,ADF有上百種UI組件。順便說(shuō)一下,我不是專(zhuān)門(mén)做前端的,接觸過(guò)的RIA框架包括ADF、RichFaces、ExtJs、Dojo、JQuery UI等,但能給我驚艷感的只有ADF和ExtJs。也不是說(shuō)其他的框架不好,只不過(guò)是后來(lái)視野開(kāi)拓了,也就沒(méi)啥感覺(jué)了。

二是可視化、聲明式的開(kāi)發(fā)方式,說(shuō)白了就是在JDeveloper這個(gè)IDE中拖拖控件就能自動(dòng)生成配置文件和代碼。除了復(fù)雜的邏輯處理要寫(xiě)代碼外,ADF將頁(yè)面設(shè)計(jì)、導(dǎo)航、模型層數(shù)據(jù)綁定、數(shù)據(jù)持久層的操作都實(shí)現(xiàn)了控件化。在A(yíng)DF之前,類(lèi)似的技術(shù)我只做過(guò)ASP.NET開(kāi)發(fā),記得當(dāng)年.Net 3.5剛用上Linq to SQL時(shí)還興奮了好一陣,后來(lái)用上ADF,才知道一山還有一山高。

ADF的技術(shù)架構(gòu)分三部分,如下圖:

名單

ADF最上面的是ADF Faces和ADF Controller,這部分是基于JSF的技術(shù)。ADF Faces有上百種UI組件,大量使用了Ajax特性;組件內(nèi)的facet嵌套其他組件可以添加更多功能;提供客戶(hù)端和服務(wù)端API。ADF Controller對(duì)JSF Controller進(jìn)行了擴(kuò)展,首先是Task Flow增強(qiáng)了JSF導(dǎo)航控制,其次還對(duì)JSF的Lifecycle和Managed Bean Scope進(jìn)行了增強(qiáng)。

ADF最下面是ADF Business Components(簡(jiǎn)稱(chēng)ADF BC),負(fù)責(zé)業(yè)務(wù)邏輯及ORM。

ADF Controller和ADF BC之間是ADF Model。ADF Model將ADF BC封裝后暴露給UI使用,實(shí)現(xiàn)數(shù)據(jù)控制和數(shù)據(jù)綁定。除了ADF BC,ADF Model還支持EJB、Web Service等。

ADF使用類(lèi)似AM-MVC的模式,在現(xiàn)在看來(lái)還是相當(dāng)先進(jìn)的。配合JDeveloper,開(kāi)發(fā)過(guò)程極其流暢,確如我最初看到的教學(xué)視頻那樣,有些應(yīng)用幾乎可以做到無(wú)代碼開(kāi)發(fā)。

雖然ADF看上去似乎很美好,但我用下來(lái)覺(jué)得坑也不少。第一,ADF算是比較復(fù)雜的框架,它自身的文檔就有上千頁(yè),但還不夠,還需要了解一些JSF的基礎(chǔ)知識(shí)。它屬于那種表面上看上去很傻瓜,走下去才發(fā)現(xiàn)岔路越來(lái)越多,需要很長(zhǎng)時(shí)間邊學(xué)習(xí)邊摸索,才能形成正確的開(kāi)發(fā)模式和規(guī)范,即所謂的best practice。第二,對(duì)Java EE新版本支持問(wèn)題。ADF是基于JSF的(ADF BC不算),但還停留在十年前JSF 1.2的時(shí)代,申明式開(kāi)發(fā)大量使用xml配置文件(Java EE 6基本只用Annotation),還在使用JSF Managed Bean(Java EE 6是CDI Bean)。盡管ADF自成體系,但Java EE 6、7陸續(xù)加入的新功能和先進(jìn)的開(kāi)發(fā)模式都沒(méi)法用上,實(shí)在是可惜。第三,ADF的開(kāi)發(fā)環(huán)境還有待改進(jìn),JDeveloper占用資源比較多,特別是可視化的編輯界面,復(fù)雜的頁(yè)面用i7的cpu還會(huì)卡頓。第四,還有bug。盡管這幾年經(jīng)過(guò)11g、12c中間好幾個(gè)版本,但bug還是有。最新的12.1.3我還碰到了,甘特圖的子任務(wù)顯示問(wèn)題,浪費(fèi)了兩天時(shí)間,無(wú)果,最終放棄。

所以,對(duì)想嘗試ADF的朋友,我的忠告是堅(jiān)持用上兩個(gè)月,再判斷它是否適合你。學(xué)習(xí)ADF另一個(gè)好處就是以后可以做Oracle其他應(yīng)用的開(kāi)發(fā),Oracle已經(jīng)把ADF作為它戰(zhàn)略性開(kāi)發(fā)框架,很多產(chǎn)品線(xiàn)已經(jīng)替換成了ADF樣式的界面。比如說(shuō)SOA Suite中的Human Task就需要用ADF開(kāi)發(fā)。

費(fèi)用方面,ADF本身是免費(fèi)的,但它只能部署到Weblogic,Weblogic不是免費(fèi)的(跟APEX一個(gè)道理)。如果你想部署到免費(fèi)的Application Server,比如Glassfish、Tomcat,用ADF Essential,ADF Essential閹割了Security這塊,需要找自己解決或找第三方的方案。此外,還有個(gè)開(kāi)源的、簡(jiǎn)化版本的ADF Faces捐獻(xiàn)給Apache MyFaces。

ADF有三個(gè)比較有特色的兄弟,順便介紹下:

1. JHeadstart – 根據(jù)模板生成ADF程序,簡(jiǎn)化開(kāi)發(fā)工作。特別適合那些對(duì)界面設(shè)計(jì)沒(méi)啥經(jīng)驗(yàn)、太多組件導(dǎo)致選擇恐懼癥的人。

2. ADF Desktop Integration(簡(jiǎn)稱(chēng)ADF DI) - 前端這部分不用ADF Faces的Web界面,而是作為一個(gè)插件整合到Excel中,類(lèi)似于C/S架構(gòu)。因?yàn)槠髽I(yè)內(nèi)部有很多數(shù)據(jù)處理的工作,Excel比Web界面有優(yōu)勢(shì)。

名單

3. Mobile Application Framework(簡(jiǎn)稱(chēng)MAF) - hybrid移動(dòng)應(yīng)用開(kāi)發(fā)框架,支持iOS和Andriod系統(tǒng)。跟IBM Worklight的hybrid框架類(lèi)似,MAF應(yīng)用像原生應(yīng)用安裝在設(shè)備上,但內(nèi)部打包了一個(gè)JVM執(zhí)行Java代碼,用移動(dòng)設(shè)備內(nèi)部的瀏覽器顯示 UI,用Apache Cordova調(diào)用設(shè)備內(nèi)部的攝像頭、GPS等服務(wù)。

Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架

Oracle免費(fèi)的便捷Web應(yīng)用開(kāi)發(fā)框架

名單

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)