ADF: El Framework de desarrollo de Fusion Pedro Gallardo Responsable Área Middleware
Agenda Qué es ADF? Por qué escoger ADF?
Qué es ADF?
ADF es un Meta-framework (Framework de frameworks) No hay duda de que en el mundo JEE hay muchos frameworks y soluciones puntuales de gran calidad, pero son solo islas de funcionalidad (presentación, servicios, datos). Un Meta-framework ofrece un pila tecnológica certificada con la capacidad de satisfacer la mayor parte de los requisitos y con un ciclo de vida muy similar al de la aplicación que va a ser desarrollada.
Frameworks Vs Meta-Frameworks Alcance Los frameworks son soluciones parciales control de flujo de páginas, UI, acceso a base de datos,. Los Meta-frameworks lo cubren todo Coexistencia Classloading, los componentes tienen que compartir la misma versión de las APIs fundamentales,. Con un meta-framework toda la pila tecnológica está certificada.. Abstracción Evitar fontanería Ocultar la complejidad técnica Herramientas Automatización tareas repetitivas...
Qué objetivos persigue ADF? Incremento de Productividad Menor curva de aprendizaje Guerra a la complejidad Todo tipo de desarrolladores Más usabilidad Web 2.0 Ajax, JSF, Multicanal. Desarrollo basado en estándares EJB 3 (JSR-220) JSF (JSR-127): Trinidad Data Binding (JSR-227) Portlets (JSR-168)
Qué es ADF? Frameworks de desarrollo basados en estándares integrados con Herramientas + Tecnología Web 2.0, AJAX, etc Herramientas RAD Frameworks de Desarrollo JEE 6 ADF & Jdeveloper Web 2.0 Portales Colaborativos.. ADF Faces Rich Client WebCenter
JDeveloper herramienta de desarrollo de ADF y mucho más
ADF es el corazón de Fusión Applications
Fusion Applications Componentes La Web ha evolucionado de un modelo de páginas a un modelo de componentes. Tecnologías que lo hacen posible
ADF incorpora un kit de componentes pre construido para la creación de aplicaciones
ADF implementa el patrón MVC ADF
ADF, Arquitectura ADF Metadata Services ADF Swing Java Beans TopLink Queries TopLink Mapping JSP Struts ADF Bindings ADF Data Control EJB Sessions ADF Faces Faces JSF Vista Controllador ADF Modelo ADF BC Web Servicios Services Services de Negocio ADF BC View ADF BC Entity Acceso a Datos Capa Persistencia Servicios de Datos Datos Relacionales Datos XML Datos Legacy Aplicaiones Empaquetadas
ADF, Elección RAD (Visual IDE) ADF Metadata Services ADF Swing Java Beans TopLink Queries TopLink Mapping JSP Struts ADF Bindings ADF Data Control EJB Sessions ADF BC Services ADF Faces ADF BC View ADF BC Entity Faces JSF Web Services Vista Controllador ADF Modelo Servicios de Negocio Acceso a Datos Capa Persistencia Servicios de Datos Datos Relacionales Datos XML Datos Legacy Aplicaiones Empaquetadas
ADF, Elección OO ADF Metadata Services ADF Swing JSP Struts ADF Bindings ADF Data Control ADF Faces Faces JSF Vista Controllador ADF Modelo Java EJB ADF BC Web Servicios Beans Sessions Services Services de Negocio TopLink Queries TopLink Mapping ADF BC View ADF BC Entity Acceso a Datos Capa Persistencia Servicios de Datos Datos Relacionales Datos XML Datos Legacy Aplicaiones Empaquetadas
ADF Faces construido sobre JSF
Que es JSF? Java Server Faces Desarrollado en la Java Community Process (JCP) como la JSR-127 Nickname: Faces Objetivo: Simplificar la creación de GUIs Java y dar soporte a un modelo basado en componentes Inicio: Mayo del 2001 Primera release oficial: Marzo del 2004 Oracle es un primary contributor
Pensamiento sobre JSF The real problem is that the existing standard components are simply too basic to offer any real benefit to users Rething JSF The Real Problem (www.theserverside.com April 2007)
Qué aporta ADF Faces vs JSF? Conjunto de Componetes mayor Más de 100 tipos de componentes Componentes más avanzados Partial-page rendering, etc Distintos kits de rendering Aplicaciones Ask Funcionalidades para Personalizar aplicaciones, look-and-feel Validaciones en el cliente ADF Faces RIA (Rich Internet Architecture) Soporte a ADF model out-of-the-box
Nos lleva a There s one company that deserves praise for actually pushing JSF in the right direction: Oracle. ADF Faces is a fantastic set of widgets with drop-in funtionality. Rething JSF The Real Problem (www.theserverside.com April 2007)
Por qué escoger ADF?
Estándares
Nuestros objetivos Incremento de Productividad Menor curva de aprendizaje Guerra a la complejidad Todo tipo de desarrolladores Más usabilidad Web 2.0 Ajax, JSF, Multicanal Desarrollo basado en estándares EJB 3 (JSR-220) JSF (JSR-127): Trinidad Data Binding (JSR-227) Portlets (JSR-168)
Trinidad MyFaces Implemtación de ADF Faces que Oracle libera a la comunidad http://wiki.apache.org/myfaces/frontpage http://myfaces.apache.org/
Productividad
Contexto tradicional en desarrollo de aplicaciones WEB Menor Productividad Mayor Complejidad Diferentes arquitecturas Diferentes tecnologías Multitud de frameworks dispersos Desarrolladores muy especializados Interfaz de usuario no comparable a escritorio Soluciones no basadas en estándares...pero ahora los Frameworks JAVA y la tecnología WEB han evolucionado!
Productividad y Herramientas Oracle ADF Oracle JDeveloper Frameworks de Desarrollo Automatización de tareas Generar Código Productividad
Oracle JDeveloper 10G
JavaPolis RAD Race Equipos de 2 desarrolladores deben resolver un caso de la vida real y entregar una aplicación acabada en 12 horas No pueden recibir ningún tipo de ayuda externa Sólo los mejores y más experimentados equipos con un sólido conjunto de herramientas de desarrollo tendrán éxito Un jurado de especialistas independientes decide el ganador
JavaPolis RAD Race Ganadores 2005/06 Posición Empresa Matriz Tecnológica Logical CMG Oracle JDeveloper 10g 10.1.2 IDE Struts, JSP, ADF Framework JHeadstart JDeveloper 10g 10.1.3 IDE JavaServer Faces ADF Framework AXI JDeveloper 10g 10.1.2 IDE Framework propio
JHeadStart incrementa de forma drástica la productividad de ADF Demostración http://www.bbr.cat/index.php?option=com_myblog&show=demo-creacion-de-una-aplicacion-con- JDeveloper-y-JHeadStart-10.1.3-paso-a-paso..html&Itemid=53
Matriz comparativa Forms vs ADF vs JHeadStart vs BBRedJav ADF BBRedJav Funcionalidad Forms JHeadStart Productividad
BBRedJav extiende las funcionalidades de ADF con la productividad de JHeadStart Demostración http://www.bbr.cat/presentaciones/videos/enominaadf/enominaadf.html Aplicación desarrollada con: ADF 10g JHeadStart 10.1.3 BBRedJava 10.1.3 Yahoo UI Mootools JS
Patrones de Diseño. Buenas Prácticas
Patrones de diseño en ADF Patrón Model/View/Controller Interface / Implementation Separation Service Locator Inversion of Control Dependency Injection Active Record Data Access Objects Funcionalidad + de 14 patrones de diseño Cleanly separates the roles of data and presentation, allowing multiple types of client displays to work with the same business information. Cleanly separates the API or Interface for components from their implementation class Abstracts the technical details of locating a service so the client and use it more easily A containing component orchestrates the lifecycle of the components it contains, invoking specific methods that the developer can overrides at the appropriate times so the developer can focus more on what the code should do instead when it should get executed. Simplifies application code, and increases configuration flexibility by deferring component configuration and assembly to the container Avoids the complexity of "anything to anything" object/relational mapping, by providing an object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. Avoids unnecessary marshalling overhead by implementing dependent objects as lightweight, persistent classes instead of each as an Enterprise Bean. Isolates persistence details into a single, easy to maintain class.
Patrones de diseño en ADF Patrón Session Facade Value Object Page-by-Page Iterator Fast-Lane Reader (Bean) Factory Entity Facade Value Messenger Continuations Funcionalidad + de 14 patrones de diseño Avoids inefficient client access of Entity Beans and inadvertent exposure of sensitive business information by wrapping Entity Beans with a Session Bean. Avoids unnecessary network round-trips by creating one-off "transport" objects to group a set of related attributes needed by a client program. Avoids sending unnecessary data to the client by breaking a large collection into page-sized "chunks" for display. Avoids unnecessary overhead for read-only data by accessing JDBC API's directly. This allows an application to retrieve only the attributes that need to be displayed, instead of finding all of the attributes by primary key when only a few attributes are required by the client. Typically, implementations of this pattern sacrifice data consistency for performance, since queries performed at the raw JDBC level do not "see" pending changes made to business information represented by Enterprise Beans. Allows runtime instantiation and configuration of an appropriate subclass of a given interface or superclass based on externally-configurable information. Provides a restricted view of data and behavior of one or more business entities. Keeps client value object attributes in sync with the middle-tier business entity information that they represent in a bidirectional fashion. Gives the developer the simplicity and productivity of a stateful programming model with the scalability of a stateless web solution
Estratégico para Oracle
Estratégico para
Estrategia de producto
Estrategia de producto
Para todo tipo de desarrollos
Desarrollo de aplicaciones Web de FrontOffice
Desarrollo de aplicaciones Web de FrontOffice
Desarrollo de aplicaciones Web de FrontOffice Demo ENomina
Desarrollo de aplicaciones Web de FrontOffice Demo ENomina
Desarrollo de aplicaciones Web de FrontOffice Demo ENomina
Desarrollo de aplicaciones de BackOffice
Desarrollo de aplicaciones de BackOffice Demo Outis
Desarrollo de aplicaciones de BackOffice Demo Outis
Desarrollo de aplicaciones de BackOffice
Desarrollo de aplicaciones de BackOffice
Desarrollo de aplicaciones Mixtas ADF & Forms Demo Forms y ADF
Desarrollo de aplicaciones SOA Las tareas son ejecutadas y gestionadas desde el WorkList Application
Para todo tipo de desarrolladores
Escoge tu estilo de desarrollo
Desarrollo JSF Visual
JSF y JDeveloper 10.1.3 Edición Visual de JSF Edición Visual de JSF UI Component Proporciona generación del código de respaldo (doble-click) Mobile WYSIWYG
JSF y JDeveloper 10.1.3 Consola de Edición de Faces Config Consola para Edición productiva de faces-config.xml
JSF y JDeveloper 10.1.3 JSF Page Flow Edición Visual del modelo de navegación de Faces
ADF Faces Components Examples
Multicanal
Desarrollo Multicanal
Desarrollo Multicanal
Desarrollo Multicanal
Es el framework que Oracle utiliza para el desarrollo de sus aplicaciones
Fusion Applications - HCM
Fusion Applications - CRM
Fusion Applications - Projects
ADF Faces RC 11g Data Visualization
Fusion Applications Data Visualization Graph
Fusion Applications Data Visualization Gauge
Fusion Applications Data Visualization Geographic Map
Fusion Applications Data Visualization Pivot Table
Fusion Applications Data Visualization Gantt Chart
Fusion Applications Data Visualization Vista Jerárquica
Conclusiones
Conclusiones ADF es el framework de desarrollo estratégico para Oracle. Framework más productivo para desarrollo web del mercado Construido sobre estándares Pensado para todo tipo de desarrollos Pensado para todo tipo de desarrolladores Existen multitud de casos de éxito
Links de Interés Blog de BBR www.bbr.cat/index.php?option=com_myblog&itemid=53 Comunidad hispana de desarrolladores ADF www.jdeveloperla.com Página oficial de Oracle de ADF www.oracle.com/technology/products/adf/index.htmlhttp://www.oracle.com/te chnology/products/adf/index.html Página oficial de Oracle de ADF Faces RC www.oracle.com/technology/products/adf/adffaces/index.html
pedro.gallardo@bbr.cat C/ Aragó, 182, 4t, 08011 Barcelona Telèfon 934 731 393 Av. Ramon Folch, 13, 3r, 17001 Girona Telèfon 972 413 638 www.bbr.cat