Desarrolla en Java con la misma productividad que en Forms Pedro Gallardo Delgado Responsable de Middleware Alejandro Font Consultor tecnológico
Típicos tópicos y preguntas frecuentes La tecnología Java y J2EE es muy complicada Cuando desarrollas una aplicación J2EE la productividad cae en picado Sólo los grandes jurús de java se pueden enfrentar al desarrollo de aplicaciones empresariales Existe un plan formativo de Oracle que facilite la transferncia de Forms a J2EE?
Oracle JDeveloper 10G
Oracle JDeveloper 10G Java IDE gratis Herramienta para todos los desarrollos J2EE y XML Portal, BPEL, BI y Wireless Service-Oriented Event-Driven Productividad con Opciones Opciones tecnológicas Opciones en estilos de desarrollo Opciones en servidores de aplicaciones
Herramientas de Desarrollo Productividad Oracle ADF Frameworks de Desarrollo Oracle JDeveloper Automatización de tareas Código Java Incremento de productividad
Ciclo de Desarrollo Código Diseño Debug y Test Versioning Análisis Despliegue Tuning
De Forms a Java ADF Guía de JDeveloper y ADF para desarrolladores
De Forms a Java ADF Guía de JDeveloper y ADF para desarrolladores
De Forms a Java ADF El desarrollador Forms está familiarizado con los frameworks Objectos de Aplicación Form, Data Blocks, Relations LOVs, Record Groups Canvases, Windows Visual Builder Crear and Configurar Objectos de Aplicaciones Event-Handler Triggers Extiende el comportamiento por defecto con lógica específica. Libraries Compartidas de Rutinas
De Forms a Java ADF JDeveloper IDE pensado por y para desarrolladores Forms Configuración de la Base de Datos Diseño Base de Datos Scripts de creación sql Componentes de Negocio Conocido como la capa de modelo Componentes de la interficie de usuario Windows, Panels, Pages. Conocido como la capa de Presentación Código compartido Personalizaciones del Framework Rutinas de ayuda
De Forms a Java ADF Plataforma Común de Funcionalidad Lista plana de paquetes PL / SQL Los paquetes contienen Procedimientos y Funciones
De Forms a Java ADF Vista de paquetes en JDeveloper JDK presenta cientos de paquetes Los paquetes contienen clases con funcionalidades ya dadas Organización Jerárquica java.lang.string java.net.url org.w3.dom.element orale.jdbc.resultset Culaquiera puede crear sus propias librerías Enpaquetadas como archivos *.jar contenedoras de Clases.
Mapeando Conceptos de Forms en Servicios de Negocio Canvas Canvas Data Block Item Item Item Item Item Item Item Item Data Block Relation Business Data UI- Related Triggers Validation Triggers Item Item Transactional Triggers
Separamos Conceptualmente la parte de Datos Non-UI Part of Form Data Block Item Item Data Block Relation Business Data Item Item Validation & Transactional Triggers
Si queremos reusar para distintos clientes UI Non-UI Part of Form Data Block Item Item Data Block Relation Business Data Item Item XML Validation & Transactional Triggers
Terminología ADF Business Components Application Module View Object Attrib Attrib Relation View Object Business Data Attrib Attrib XML Validation & Transactional Triggers
Separamos la capa DAO (Query) de la Lógica de Negocio Application Module View Object Entity Object Attrib Attrib View Link Attrib Validation & Transactional Methods Attrib Business Data View Object Entity Object XML Attrib Attrib Attrib Attrib Validation & Transactional Methods
Empezamos con la capa de datos Tablas
Entity Objects Encapsulan Reglas de Negocio
View Objects Encapsulan Queries SQL
Application Module
Capa de Presentación
ADF Faces Components Examples
Oracle JHeadStart
Qué es Oracle JHeadstart? Entorno de Desarrollo Java altamente productivo Principios fundamentales: Definición de aplicaciones al estilo 4GL. Totalmente basado en estándares mundialmente aceptados. Generación automática de código fuente Java y XML. Construido sobre la arquitectura Oracle ADF.
Arquitectura ADF Metadata Services ADF Faces Faces JSF JHeadStart ADF Bindings ADF Data Control ADF BC Services ADF BC View ADF BC Entity Web Services View Controller ADF Model Business Service Data Access Persistence Layer
Proceso de generación JHeadStart Application Definition Wizard Application Definition Velocity templates JSF JSP ADF Faces JSF View Controller ADF BC metadata JHeadStart Application Generator ADF MODEL Data Bindings Data Controls Model Jdeveploper ADF BC Wizard ADF Business Components Business Services
Ventajas Orientación a la productividad. Desarrollo declarativo. Prototipo iterativo. Bajo coste de entrada. Requiere conocimientos limitados para empezar. Rápido aprendizaje. Reducción de costes de desarrollo y mantenimiento. Aplicaciones consistentes. Permite focalizar los recursos más especializados en la Lógica de negocio de la aplicación.
Demostración práctica
Demostración práctica JHeadStart + ADF http://www.bbr.cat/presentaciones/videos/demobbr/demobbr.html
Proyectos significativos
Proyectos significativos
Proyectos significativos
Proyectos significativos
Proyectos significativos
Demos Demostración de generación de aplicación J2EE con JDeveloper y JHeadStart 10.1.3.1. http://www.bbr.cat/presentaciones/videos/demobbr/demobbr.html Demostración de aplicación generada con JDeveloper y JHeadStart 10.1.3 con plantillas y clases personalizadas por BBR. http://www.bbr.cat/presentaciones/videos/flash_gsgvia_demo/flash_gsgvia_demo.html
ADF Faces Rich Client Samples
ADF Faces Rich Client Samples
Integración Forms y ADF
Integración Forms ADF Puntos Clave Integración en la capa de presentación (View-Controller) Integración en la capa de Negocio (Modelo)
Arquitectura APLICACIÓN Forms Server Application Server
Integración Forms - ADF Faces Integración del formulario en una página JSF JSF ADF FACES Contexto Eventos ADF FORMS
Integración Forms - ADF Faces Puntos Clave Comunicación de JSF a Forms- Forms a JSF Productividad-Drag-and-Drop en Jdeveloper Se cede el control de la aplicación a JSF Jinitiator applet no -Applet,JDK
Comunicación: Jsf Forms Forms-Jsf JavaScript Clase applet-liveconnect Custom_PJC PL/SQL Triggers
Ejemplos de Comunicación: Jsf Forms Forms-Jsf De JSF a Forms: Paso de parámetros a Forms Parámetros de inicialización, Maestro/ Detalle Botónes JSF que lanzan eventos Forms commit_form,up,down De Forms a JSF : ParámetroPaso de parámetros a JSF Parámetros de inicialización, Maestro/ Detalle Botónes Forms que lanzan eventos JSF Navegaciones,Procesos Lanzar metodos Javascript Mensajes javascript
Links de Interés http://www.oracle.com/technology/pub/articles/wilfred-adf-forms.html http://www.oratransplant.nl/oracle-forms-as-web-component/ http://www.commit-consulting.com/oraformsfaces/
OraFormsFaces
Integración Forms con SOA (Modelo) UI Jinitiator Applet HTML Javascript Client Forms Server JPC JSF & ADF Faces View MiddleTier JSF Data Binding & Data Control Controller Model ( JSR 227 ) Web Services Service Layer PL / SQL ADF Business Components Business Services BD Data Source
Caso de Estudio - Eurotransplant Migración de una aplicación cliente/servidor a web Necesidad de tener acceso remoto a la apliacción de una forma segura Necesidad de esperiencia de usuarío única Desarrollado usando Jdeveloper y ADF Required off-line application to run in operating theatre with no network access Necesidad de ejecutar aplicaciones off-line Desarrollo de aplicación Swing con JDeveloper y ADF Creación de una extensión de Jdeveloper por parte de Eurotransplant (OraFormsFaces). Reaprovechamiento de su conocimientos Forms/Database
<Insert Picture Here> Wilfred van der Deijl Arquitecto, Eurotransplant Queremos desplegar un modelo evolutivo, no uno revolucionario. En el pasado, la adopción de una nueva tecnología implicaba el abandono de la antigua. Con SOA y Oracle BPEL Process Manager, se demuestra que podemos hacer que nuestros sistemas existentes sean capaces de ser explotados y reusados desde las nuevas arquitecturas orientadas a servicios (SOA).
Más Casos de Estudio Más detalles en Oracle Forms and SOA: The Whys and Hows for your business Eurotransplant Migros TietoEnator Oracle Magazine Nov/Dec 2007: Perform with SOA May/Jun 2007: Journey to the Center of Fusion We Love It (http://weloveit.nl) Informes Gartner
Conclusión
Típicos tópicos y preguntas frecuentes La tecnología Java y J2EE es muy complicada La curva de aprendizaje es elevada pero ahora La curva de aprendizaje es elevada pero ahora existen frameworks, metaframeworks, herramientas declarativas al estilo de 4GL que permiten reducir la curva de aprendizaje y te da productividad desde el minuto cero.
Típicos tópicos y preguntas frecuentes Cuando desarrollas una aplicación J2EE la productividad cae en picado Puedes empezar a pensar en desarrollar Puedes empezar a pensar en desarrollar apliaciones empresariales J2EE con una productividad extremadamente alta. Similar a la de Forms o superior!!
Típicos tópicos y preguntas frecuentes Sólo los grandes gurús de java se pueden enfrentar al desarrollo de aplicaciones empresariales Jdeveloper nace con la vocación de ser una Jdeveloper nace con la vocación de ser una herramienta de desarrollo para todos. Para los grandes gurús y para los desarrolladores noveles que se inician en Java / J2EE. Te permite desarrollar siempre de dos formas. Declarativamente o codificando. Tu elijes tu estilo. Jdeveloper te ofrece libertad.
Típicos tópicos y preguntas frecuentes Existe un plan formativo de Oracle que facilite la transferncia de Forms a J2EE? ADF es el framework idóneo para desarrolladores ADF es el framework idóneo para desarrolladores Forms que quieran iniciarse en el desarrollo de aplicaciones empresariales J2EE. Existe una gran cantidad de contenido en OTN destinado a mapear los conocimientos de Forms a ADF.
Estrategia de Herramientas de Desarrollo Compromiso a largo plazo con Forms Actualiza y integra Desarrolla pensando en servicios Establece una estrategia hacia SOA Piensa en Grande y da pequeños pasos Consigue en J2EE/ADF la misma productividad que en Forms Desarrollo visual declarativo Reaprovecha tu inversión y conocimientos en Forms
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
Patrones de diseño en ADF + de 14 patrones de diseño Patrón Model/View/Controller Interface / Implementation Separation Service Locator Inversion of Control Dependency Injection Active Record Data Access Objects Funcionalidad 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 + de 14 patrones de diseño Patrón Session Facade Value Object Page-by-Page Iterator Fast-Lane Reader (Bean) Factory Entity Facade Value Messenger Continuations Funcionalidad 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.
Trinidad MyFaces Implemtación de ADF Faces que Oracle libera a la comunidad http://wiki.apache.org/myfaces/frontpage http://myfaces.apache.org/