便宜有好货:Oracle免费的便捷Web应用开发框架
APEX
总体来说,APEX是我见过最便捷最高效的开发框架,用起来比PHP还舒服。上手简单,学习成本极低,曾经有个做行政的小女生,在我指导下两天就可以开发出简单的审批管理站点。如果企业要做一些内部应用,APEX是上上之选。
相比起我用过的其他框架,有两个特点是APEX独一无二的:
- 在线编辑,无桌面IDE。
- 使用SQL和PL/SQL语言开发。
下图是APEX开发界面:
APEX依靠数据库来执行业务逻辑及生成html页面。页面的各种布局、控件模板是存储在数据库里的,一个Oracle数据再加一个http server就它所有的东西了,如果使用数据库的PL/SQL Gateway,甚至连独立的http server都不需要。所以物理上APEX就是Oracle数据库的一部分,最近版本的Oracle数据库都带有APEX,默认情况下会随数据库一起安装。
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还带有几十种打包的应用程序,比如项目管理、issue跟踪、报表等,可以快速部署。
费用方面,APEX本身不需求额外的license,如果采购了Oracle的数据库,就可以直接用APEX。如果没有,APEX还支持Oracle XE数据库。
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 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 6、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等服务。
便宜有好货:Oracle免费的便捷Web应用开发框架的更多相关文章
- Oracle免费的便捷Web应用开发框架
Oracle免费的便捷Web应用开发框架 APEX 总体来说,APEX是我见过最便捷最高效的开发框架,用起来比PHP还舒服.上手简单,学习成本极低,曾经有个做行政的小女生,在我指导下两天就可以开发出简 ...
- Oracle 免费的数据库
Oracle 免费的数据库--Database 快捷版 11g 安装使用与"SOD框架"对Oracle的CodeFirst支持 一.Oracle XE 数据库与连接工具安装使用 O ...
- 免费的天气Web Service接口
免费的天气Web Service接口 在android应用当中很多时候需要获取天气的信息,这里提供怎么获取天气信息: 1. http://www.ayandy.com/Service.asmx?wsd ...
- 免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大
https://www.freehao123.com/web-ftp/ 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的 ...
- 《Python Web开发实战》|百度网盘免费下载|Python Web开发
<Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...
- 《Python Web开发学习实录》高清PDF版|百度网盘免费下载|Python Web开发学习实录
<Python Web开发学习实录>高清PDF版|百度网盘免费下载|Python Web开发学习实录 提取码:9w3o 内容简介 Python是目前流行的动态脚本语言之一. 李勇,本书共1 ...
- Oracle 免费的数据库--Database 快捷版 11g 安装使用与"SOD框架"对Oracle的CodeFirst支持
一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...
- LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具
LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群.LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然 ...
- Java-->Tomcat(免费的Java Web服务器)
--> 要在浏览器访问一个Java Web项目,首先需要将这个项目放到服务器中. --> Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器. --> ...
随机推荐
- input 标签实现带提示文字的输入框
方法一:html5配合css3实现带提示文字的输入框(摆脱js): webkit特有的一个css,可以控制里面的文字样式,配合css3的动画效果和伪类,我们就可以很容易做出一个带动画的输入框,在系统登 ...
- Excel VBA自动添加证书(二)
继续上次没有写完的随笔,本来是很想一次性写完的,但是到中午一点了还没有吃东西,其实饿的不行了,还好写博客时会自动保存,中间电脑实然蓝屏,花了二个多小时写的没有点击保存,吓我一下,以为会全没了. 前面讲 ...
- SQL中Where与Having的区别
“Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. “Having”是一个过滤声明,是在查询返回结果集以后对查询 ...
- Log4j 配置数据库连接池(将日志信息保存到数据库)
org.apache.log4j.jdbc.JDBCAppender 是利用传统的 JDBC 连接方法,这种方式连接数据库效率低下,为了解决这个问题,现在自定义一个 Log4j 的 Appender, ...
- DataTableToJson
public static string CreateJsonParameters(DataTable dt,string JsonName) { StringBuilder JsonString = ...
- h5专题常用小代码
今天把做专题常用的js代码总结出来(持续更新),方便以后直接复制使用,不用老敲啊敲 1.屏幕适配JS代码 <script> var phoneScale = parseInt(window ...
- newLISP 10.5.3 发布,类 Lisp 的脚本语言
newLISP 10.5.3 修复了一些 bug ,为 KMEANS 集群分析器增加了一些函数. newLISP是一个类似Lisp语言的.用于一般用途的脚本语言.它具有 LISP 语言所有的魔力,但更 ...
- [自制简单操作系统] 7、多任务(二)——任务管理自动化&任务休眠
前言 >_<" 这里仿照窗口管理的方式将任务管理也修改成相应的管理模式,这样可以灵活的添加多个任务,而不必每次都要修改任务切换函数:此外还在任务休眠做了尝试,通过将任务挂起和唤醒 ...
- [51单片机] TFT2.4彩屏3 [自制动画效果-滑块+吊钩]
>_<:引脚和前面几个连接一样,这里做了一个实用的动画效果,模拟起重机的2维视图. #ifndef __ILI9325_H__ #define __ILI9325_H__ void ILI ...
- 【软件架构】IM架构设计(安卓版)
1. 架构总览 2. 模块介绍 2.1 协议封装与任务流程 2.1.1 协议与任务的封装 协议有协议头(协议头因为格式相同,被抽象出来)和协议体组成,协议有两类:请求协议(request)和回复协议( ...