2. Objetivo 2 Proveer un conocimiento básico de las capacidades de la tecnología OSGi, de las herramientas necesarias en su uso y del tipo de aplicaciones que habilita.
5. Modularización ¿Qué es? Particionar un sistema de acuerdo a ciertas restricciones y principios de diseño, así como una estrategia de desarrollo, gobernando las partes resultantes
6. Beneficios de la modularización Ayuda a atacar problemas de gran tamaño Partiendo el problema y permitiendo resolverlo incrementalmente. Permite distribuir las tareas de desarrollo entre diferentes personas/equipos. Reuso Separación de dominios (Verticales y Horizontales) y de sus implementaciones, permitiendo utilizar las implementaciones en contextos distintos.
7. Beneficios de la modularización Mantenibilidad El entendido común es que sistemas modulares, cuyos módulos presentan alta cohesión y bajo acoplamiento son más fáciles de modificar y extender
8. Modularización La modularización efectiva no se logra mediante el simple uso de un lenguaje o una tecnología. Es necesaria la correcta aplicación de principios y técnicas de diseño, así como el diseño de una estrategia de desarrollo.
10. OSGi - ¿Quées? Es la especificación de un modelo de componentes, caracterizado por: Orientado a Servicios Dinámico Tamaño reducido (~ 1Mb) Alto desempeño (No hay classpath) Portable (desde móviles hasta servidores) Soporta múltiples versiones de clases y servicios. 10
11. OSGi - Arquitectura La unidad de instalación y reutilizaciónes el ‘bundle’. Los bundles exportan e importan clases y servicios a través de un ‘serviceregistry’. Se programan solo POJO’s. Seguridad Bundles Servicios Ciclo de Vida Módulos Entorno de Ejecución Java VM Sistema Operativo Nativo 11
12. ¿Para quésirve? (1/2) Creación de… Sistemas altamente modulares. Con características deseables de flexibilidad, orientación a reuso y mantenibilidad. Arquitecturas basadas en plug-ins. e.g. Eclipse, JIRA. 12
13. ¿Para quésirve? (2/2) Creación de… Líneas de productos. e.g. Servidores de aplicaciones, middleware. Plataforma para cómputo en la nube. e.g.ParemusServiceFabric 13
14. Historia (1/2) Comenzó como un esfuerzo conjunto en el mercado de dispositivos embebidos. OSGi Alliance fundada en 1999 Su éxito le permitió ganar adopción en otros dominios… Eclipse 3.0 basó su modelo de plug-ins sobre OSGi 14
15. Historia (2/2) Versión 4.2 de la especificación liberada en Septiembre del 2009. Primera versión de OSGi Enterprise (4.2) liberada en Marzo del 2010 15
16. OSGi - Adopción 1/2 Miembros de OSGi Alliance: Oracle, IBM, Samsung, Nokia, IONA, Motorola, NTT, Siemens, Hitachi, Deutsche Telekom, Redhat, Ericsson .. y muchos más. Areas de aplicación Automatización Cómputo móvil Servidores de aplicaciones Cómputo en “La Nube” 16
17. OSGi - Adopción 2/2 Actualmente es el fundamento de la nueva generación de servidores de aplicaciones y plataformas SOA. Websphere v6.1 (IBM) GlassFish v3 (Sun) Weblogic v10.3 (Oracle/BEA) JBoss Jonas v5 SpringSourceApplication Server WSO2 Carbon SOA Platform 17
18. OSGi - Beneficios 1/2 Modularidad. Los servicios de la plataforma JEE (EJB, Contenedor de servlets, JMS, Mail, Transacciones, etc) se implementan como servicios OSGi opcionales. Extensibilidad. Consecuencia casi directa de la modularidad. Dinamismo real. Permite instalar / actualizar / desinstalar módulos al vuelo (sin reinicios). Impactando la disponibilidad y flexibilidad de las aplicaciones 18
19. OSGi - Beneficios 2/2 Nativamente orientado a servicios (SOA). Permite la coexistencia controlada de diferentes versiones de una misma clase y servicio. Las clases pueden estar compartidas entre bundles, o completamente aisladas fuera de un contexto. Cada bundle declara sus dependencias y opcionalmente rangos soportados de versiones para las mismas. 19
22. Bundle (1/2) Es un JAR con un MANIFEST especial, que provee: Mejor control sobre la visibilidad del JAR La noción de ‘Activator’ Declaración de dependencias: Hacia otros bundles Hacia paquetes (java) Versionamiento Declaración de servicios ofrecidos por el bundle. ... ¡un mejor JAR ! 22
29. ¿Quéofrece Spring-DM? Aprovechar las capacidades de OSGi Sin abandonar el modelo de programación de Spring. Un nivel más alto de abstracción Todo el poder de OSGi, sin aprender nuevas APIs. 29
34. Enterprise OSGi (1/2) Extensiones del Registro de Servicios. Permite crear bundlesque observan o manipulan actividad del registro de servicios. Soporte de Transacciones Da soporte de operaciones transaccionales tanto a eventos del ciclo de vida de los componentes como a las aplicaciones. OSGi Distribuido Habilita la comunicación entre servicios que se ejecutan en distintas JVM’s. 34
35. Enterprise OSGi (2/2) BlueprintContainer. Estandariza el uso de frameworks como Spring sobre OSGi para proveer un modelo de componentes más completo. Spring DM es la implementación de referencia. Soporte a JPA, JDBC y JMX Todo lo que usamos día a día =) 35
37. ArquitecturasPosibles Arquitecturas de micro-kernel: Define las API’s e implementaciones principales Los componentes van y vienen dinámicamente. A través de plug-ins se provee implementación y extensión de la funcionalidad Además de definir nuevos puntos de extensión 37
38. Lineas de Productos (LP) Definición “Una línea de productos de software es un conjunto de sistemas intensivos en software que comparten un conjunto común y administrado de características, que satisfacen las necesidades específicas de un segmento particular del mercado y que son desarrollados a partir de un conjunto central de bienes (también conocido como “plataforma”) de una manera prescrita” Clements & Northrop 38
40. Conclusiones (1/2) Los sistemas modulares bien implementados tienen grandes beneficios. Flexibilidad, reuso y mantenibilidad. OSGi es el sistema de módulos para tiempo de ejecución más maduro y adoptado en la plataforma Java. Y un sistema de módulos ya no es un lujo, es una necesidad. 40
41. Conclusiones (2/2) Contempla OSGi y Spring DM como alternativa de implementación de tus aplicaciones/plataformas. Ya estás disfrutando de sus beneficios, pero no lo habías notado =) 41