便宜有好貨:Oracle免費的便捷Web應用開發框架

APEX

整體來講,APEX是我見過最便捷最高效的開發框架,用起來比PHP還舒服。上手簡單,學習成本極低,曾經有個作行政的小女生,在我指導下兩天就能夠開發出簡單的審批管理站點。若是企業要作一些內部應用,APEX是上上之選。html

相比起我用過的其餘框架,有兩個特色是APEX獨一無二的:前端

  1. 在線編輯,無桌面IDE。
  2. 使用SQL和PL/SQL語言開發。

下圖是APEX開發界面:java

APEX開發界面

APEX依靠數據庫來執行業務邏輯及生成html頁面。頁面的各類佈局、控件模板是存儲在數據庫裏的,一個Oracle數據再加一個http server就它全部的東西了,若是使用數據庫的PL/SQL Gateway,甚至連獨立的http server都不須要。因此物理上APEX就是Oracle數據庫的一部分,最近版本的Oracle數據庫都帶有APEX,默認狀況下會隨數據庫一塊兒安裝。web

APEX沒有專門的數據訪問層,數據操做直接用SQL。一方面是簡單,另外一方面由於是數據庫環境中在線開發,能夠直接讀取數據庫對象,SQL大可能是半自動化生成。後臺業務邏輯用PL/SQL實現,Oracle的package足夠強大,實在不行Oracle數據庫還帶有jvm,寫java代碼也行;或者它也支持web service,能夠調用外部模塊。數據庫

UI方面,很是的MVC化。M包括保存數據的item,V用html模板生成佈局和控件,C負責計算、驗證、數據處理、導航等。APEX界面元素包含了經常使用的list、form、chart、button及各類輸入控件,而且能夠本身建plugin,或者用第三方的plugin,甚至能夠加入extjs這種js框架。但做爲便捷框架,我不提倡作深度自定義開發。form + list其實已經能知足絕大部分應用了,像Siebel這種大型系統的 applet也就那麼幾種。瀏覽器

下圖是APEX應用樣式:架構

APEX應用樣式

APEX還帶有幾十種打包的應用程序,好比項目管理、issue跟蹤、報表等,能夠快速部署。oracle

費用方面,APEX自己不需求額外的license,若是採購了Oracle的數據庫,就能夠直接用APEX。若是沒有,APEX還支持Oracle XE數據庫。app

 

 

 

ADF

第一次接觸ADF大概是08年,ADF 11g剛推出的時候。當時看了它的一個視頻教程,被驚到了。至於爲何被驚到,各位看看下面的視頻。框架

如視頻展現,ADF有兩大特點:

一是豐富的RIA組件,ADF有上百種UI組件。順便說一下,我不是專門作前端的,接觸過的RIA框架包括ADF、RichFaces、ExtJs、Dojo、JQuery UI等,但能給我驚豔感的只有ADF和ExtJs。也不是說其餘的框架很差,只不過是後來視野開拓了,也就沒啥感受了。

二是可視化、聲明式的開發方式,說白了就是在JDeveloper這個IDE中拖拖控件就能自動生成配置文件和代碼。除了複雜的邏輯處理要寫代碼外,ADF將頁面設計、導航、模型層數據綁定、數據持久層的操做都實現了控件化。在ADF以前,相似的技術我只作過ASP.NET開發,記得當年.Net 3.5剛用上Linq to SQL時還興奮了好一陣,後來用上ADF,才知道一山還有一山高。

ADF的技術架構分三部分,以下圖:

ADF架構

ADF最上面的是ADF Faces和ADF Controller,這部分是基於JSF的技術。ADF Faces有上百種UI組件,大量使用了Ajax特性;組件內的facet嵌套其餘組件能夠添加更多功能;提供客戶端和服務端API。ADF Controller對JSF Controller進行了擴展,首先是Task Flow加強了JSF導航控制,其次還對JSF的Lifecycle和Managed Bean Scope進行了加強。

ADF最下面是ADF Business Components(簡稱ADF BC),負責業務邏輯及ORM。

ADF Controller和ADF BC之間是ADF Model。ADF Model將ADF BC封裝後暴露給UI使用,實現數據控制和數據綁定。除了ADF BC,ADF Model還支持EJB、Web Service等。

ADF使用相似AM-MVC的模式,在如今看來仍是至關先進的。配合JDeveloper,開發過程極其流暢,確如我最初看到的教學視頻那樣,有些應用幾乎能夠作到無代碼開發。

雖然ADF看上去彷佛很美好,但我用下來以爲坑也很多。第一,ADF算是比較複雜的框架,它自身的文檔就有上千頁,但還不夠,還須要瞭解一些JSF的基礎知識。它屬於那種表面上看上去很傻瓜,走下去才發現岔路愈來愈多,須要很長時間邊學習邊摸索,才能造成正確的開發模式和規範,即所謂的best practice。第二,對Java EE新版本支持問題。ADF是基於JSF的(ADF BC不算),但還停留在十年前JSF 1.2的時代,申明式開發大量使用xml配置文件(Java EE 6基本只用Annotation),還在使用JSF Managed Bean(Java EE 6是CDI Bean)。儘管ADF自成體系,但Java EE 六、7陸續加入的新功能和先進的開發模式都無法用上,實在是惋惜。第三,ADF的開發環境還有待改進,JDeveloper佔用資源比較多,特別是可視化的編輯界面,複雜的頁面用i7的cpu還會卡頓。第四,還有bug。儘管這幾年通過11g、12c中間好幾個版本,但bug仍是有。最新的12.1.3我還碰到了,甘特圖的子任務顯示問題,浪費了兩天時間,無果,最終放棄。

因此,對想嘗試ADF的朋友,個人忠告是堅持用上兩個月,再判斷它是否適合你。學習ADF另外一個好處就是之後能夠作Oracle其餘應用的開發,Oracle已經把ADF做爲它戰略性開發框架,不少產品線已經替換成了ADF樣式的界面。好比說SOA Suite中的Human Task就須要用ADF開發。

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

ADF有三個比較有特點的兄弟,順便介紹下:

1. JHeadstart – 根據模板生成ADF程序,簡化開發工做。特別適合那些對界面設計沒啥經驗、太多組件致使選擇恐懼症的人。

2. ADF Desktop Integration(簡稱ADF DI) - 前端這部分不用ADF Faces的Web界面,而是做爲一個插件整合到Excel中,相似於C/S架構。由於企業內部有不少數據處理的工做,Excel比Web界面有優點。

3. Mobile Application Framework(簡稱MAF) - hybrid移動應用開發框架,支持iOS和Andriod系統。跟IBM Worklight的hybrid框架相似,MAF應用像原生應用安裝在設備上,但內部打包了一個JVM執行Java代碼,用移動設備內部的瀏覽器顯示UI,用Apache Cordova調用設備內部的攝像頭、GPS等服務。

相關文章
相關標籤/搜索