APEX总的来说,APEX是我见过最方便高效的开发框架,而且比PHP用起来舒服。简单易学,学习成本极低。从前有一个小女孩,她是一名行政人员。在我的指导下,她用两天时间就可以开发出一个简单的审批管理站点。如果企业想做一些内部应用,APEX是最好的选择。与我用过的其他框架相比,APEX有两个独特之处:在线编辑和无桌面IDE。使用SQL和PL/SQL语言开发。下图是APEX开发界面:APEX依赖数据库执行业务逻辑,生成html页面。页面的各种布局和控件模板存储在数据库中。一个Oracle数据加上一个http服务器就足够了。如果使用数据库的PL/SQLGateway,甚至不需要独立的http服务器。所以在物理上,APEX是Oracle数据库的一部分。最新版本的Oracle数据库自带APEX,默认会随数据库一起安装。APEX没有专门的数据访问层,直接使用SQL进行数据操作。一方面简单,另一方面因为是在数据库环境下在线开发,可以直接读取数据库对象,SQL多半自动生成。后台业务逻辑用PL/SQL实现。Oracle的包已经足够强大了。如果不行,Oracle数据库也有jvm,可以写java代码;或者它也支持web服务,你可以调用外部模块。在UI方面,它非常MVC。M包括存储数据的项目,V使用html模板生成布局和控件,C负责计算、校验、数据处理、导航等。APEX界面元素包括常用的列表、表单、图表、按钮和各种输入控件,并且你可以自己构建插件,也可以使用第三方插件,甚至可以加入extjs等js框架。但是作为一个方便的框架,我并不提倡深度自定义开发。Form+list其实可以满足大部分的应用,像Siebel这样的大系统里面只有几种小程序。下图展示了APEX的应用风格:APEX还附带了几十个打包的应用,如项目管理、问题跟踪、报表等,可以快速部署。在成本方面,APEX本身不需要额外的许可。如果你购买了Oracle数据库,你可以直接使用APEX。如果没有,APEX也支持OracleXE数据库。#p#ADFADF有两大特点:一是丰富的RIA组件,ADF有数百个UI组件。顺便说一下,我不是前端专业的。我接触过的RIA框架有ADF、RichFaces、ExtJs、Dojo、JQueryUI等,但能给我惊喜的只有ADF和ExtJs。不是说其他??框架不好,只是后来视野开阔了,自己也没什么感觉。第二种是可视化和声明式的开发方式。说白了就是在JDeveloperIDE中拖放控件自动生成配置文件和代码。ADF除了编写复杂逻辑处理的代码外,还实现了页面设计、导航、模型层数据绑定、数据持久层操作的控件。在ADF之前,我只是针对类似技术进行ASP.NET开发。记得在.Net3.5第一次使用LinqtoSQL的时候,我激动了一阵子。后来才知道用ADF还是山高。ADF的技术架构分为三个部分,如下图所示:ADF最上面的部分是ADFFaces和ADFController,它是基于JSF技术的。ADFFaces有数百个UI组件,它们广泛使用Ajax功能;组件中的切面可以嵌套其他组件以添加更多功能;提供客户端和服务器端API。ADF控制器扩展了JSF控制器。一是TaskFlow增强了JSF的导航控制,二是增强了JSFLifecycle和ManagedBeanScope。ADF最底层是ADFBusinessComponents(简称ADFBC),负责业务逻辑和ORM。ADFModel介于ADFController和ADFBC之间。ADFModel对ADFBC进行封装,暴露给UI进行数据控制和数据绑定。ADFModel除了ADFBC,还支持EJB、WebService等,ADF采用了类似AM-MVC的模式,现在看来已经相当先进了。使用JDeveloper,开发过程极其顺畅,就像当初看到的教学视频一样,有些应用几乎不用代码就可以开发。ADF虽然看起来很漂亮,但是用了之后感觉坑也不少。***,ADF是一个比较复杂的框架,自带的文档也有上千页,但是还是不够的,还需要了解一些JSF的基础知识。属于那种表面上看傻傻的,但是走下去,发现岔路越来越多了。需要长时间的学习和摸索,才能形成正确的开发模型和规范,也就是所谓的最佳实践。第二,支持新版本的JavaEE。ADF基于JSF(ADFBC不算),但还停留在十年前的JSF1.2时代。声明式开发使用了大量的xml配置文件(JavaEE6基本只使用Annotation),仍然使用JSFManagedBean(JavaEE6是CDIBean)。ADF虽然是自包含的,但遗憾的是不能使用JavaEE6和7中新增的功能和高级开发模式。三是ADF开发环境有待改善。JDeveloper占用大量资源,尤其是可视化编辑界面。使用i7CPU时,复杂的页面会卡住。第四,有bug。虽然这几年从11g到12c之间有好几个版本,但是还是有bug。还遇到了***12.1.3,甘特图的subtask显示问题,浪费了两天,没有结果,最后放弃。所以,对于想尝试ADF的朋友,我的建议是先坚持两个月,再判断是否适合自己。学习ADF的另一个好处是您可以在未来开发其他Oracle应用程序。Oracle已经使用ADF作为其战略开发框架,许多产品线已被ADF风格的界面所取代。例如,SOASuite中的HumanTask需要使用ADF进行开发。在成本上,ADF本身是免费的,但是只能部署到Weblogic上,Weblogic不是免费的(就像APEX一样)。如果想部署到免费的ApplicationServer,比如Glassfish、Tomcat,就用ADFEssential,ADFEssential对Security区域进行了阉割,需要自己寻找解决方案或者第三方解决方案。此外,还有一个ADFFaces的开源简化版本贡献给了ApacheMyFaces。ADF有三个各具特色的兄弟,我顺便介绍一下:1.JHeadstart——根据模板生成ADF程序,简化开发工作。特别适合界面设计经验不多,组件过多导致选择恐惧症的人。2.ADFDesktopIntegration(简称ADFDI)——前端不使用ADFFacesweb界面,而是作为插件集成到Excel中,类似于C/S架构。因为企业内部有大量的数据处理工作,所以Excel比Web界面更有优势。3.MobileApplicationFramework(简称MAF)——一个支持iOS和Andriod系统的混合移动应用开发框架。类似于IBMWorklight的混合框架,MAF应用程序像本地应用程序一样安装在设备上,但内部封装了一个JVM来执行Java代码,移动设备内部的浏览器用于显示UI,ApacheCordova是用于调用设备内部的摄像头、GPS等服务。原文链接:http://www.cnblogs.com/esestt/p/4495744.html
