Hola OSGiAgustín Ramos Fonseca<br />
Objetivo<br />2<br />Proveer un conocimiento básico<br />de las capacidades de la tecnología OSGi,<br />de las herramienta...
Agenda<br />Modularización.<br />Introducción a OSGi.<br />Ejemplos básicos.<br />Spring DM.<br />Ejemplos con Spring DM.<...
4<br />Modularización<br />
Modularización<br />¿Qué es?<br />Particionar un sistema de acuerdo <br />a ciertas restricciones y principios de diseño, ...
Beneficios de la modularización<br />Ayuda a  atacar problemas de gran tamaño<br />Partiendo el problema y permitiendo res...
Beneficios de la modularización<br />Mantenibilidad<br />El entendido común es que sistemas modulares, cuyos módulos prese...
Modularización<br />La modularización efectiva no se logra mediante el simple uso de un lenguaje o una tecnología.<br />Es...
9<br />Introducción a OSGi<br />
OSGi - ¿Quées?<br />Es la especificación de un modelo de componentes, caracterizado por:<br />Orientado a Servicios<br />D...
OSGi - Arquitectura<br />La unidad de instalación y reutilizaciónes el ‘bundle’.<br />Los bundles exportan e importan clas...
¿Para quésirve? (1/2)<br />Creación de…<br />Sistemas altamente modulares.<br />Con características deseables de flexibili...
¿Para quésirve? (2/2)<br />Creación de…<br />Líneas de productos.<br />e.g. Servidores de aplicaciones, middleware.<br />P...
Historia (1/2)<br />Comenzó como un esfuerzo conjunto en el mercado de dispositivos embebidos.<br />OSGi Alliance fundada ...
Historia (2/2)<br />Versión 4.2 de la especificación liberada en Septiembre del 2009.<br />Primera versión de OSGi Enterpr...
OSGi - Adopción 1/2<br />Miembros de OSGi Alliance:<br />Oracle, IBM, Samsung, Nokia, IONA, Motorola, NTT, Siemens, Hitach...
OSGi - Adopción 2/2<br />Actualmente es el fundamento de la nueva generación de servidores de aplicaciones y plataformas S...
OSGi - Beneficios 1/2<br />Modularidad.<br />Los servicios de la plataforma JEE                   (EJB, Contenedor de serv...
OSGi - Beneficios 2/2<br />Nativamente orientado a servicios (SOA).<br />Permite la coexistencia controlada de diferentes ...
OSGi - Implementaciones<br />20<br />
21<br />Ejemplo Simple<br />
Bundle (1/2)<br />Es un JAR con un MANIFEST especial, que provee:<br />Mejor control sobre la visibilidad del JAR<br />La ...
Bundle (1/2)<br />Ejemplo de MANIFEST:<br />Bundle-ManifestVersion: 2<br />Bundle-SymbolicName: com.pragprog.HelloWorld<br...
Ciclo de vida del bundle<br />24<br />
BundleActivator<br />25<br />import org.osgi.framework.BundleActivator;<br />import org.osgi.framework.BundleContext;<br /...
ServiceRegistration<br />26<br />import org.osgi.framework.ServiceRegistration;<br />import com.pragprog.hello.service.Hel...
ServiceReference<br />27<br />public class HelloWorld implements BundleActivator {<br />   public void start(BundleContext...
28<br />Spring DM<br />
¿Quéofrece Spring-DM?<br />Aprovechar las capacidades de OSGi<br />Sin abandonar el modelo de programación de Spring.<br /...
Modelo Spring - OSGi<br />30<br />
Exportación de Servicios<br />31<br /><beans xmlns="http://www.springframework.org/schema/beans" <br />xmlns:osgi= ="http:...
Consumo de Servicios<br />32<br /><beans xmlns="http://www.springframework.org/schema/beans" <br />xmlns:osgi="http://www....
33<br />Enterprise OSGi<br />
Enterprise OSGi (1/2)<br />Extensiones del Registro de Servicios.<br />Permite crear bundlesque observan o manipulan activ...
Enterprise OSGi (2/2)<br />BlueprintContainer.<br />Estandariza el uso de frameworks como Spring sobre OSGi para proveer u...
Objetivo<br />36<br />Arquitecturas Posibles<br />
ArquitecturasPosibles<br />Arquitecturas de micro-kernel:<br />Define las API’s e implementaciones principales<br />Los co...
Lineas de Productos (LP)<br />Definición<br />    “Una línea de productos de software es un conjunto de sistemas intensivo...
Objetivo<br />39<br />Conclusiones<br />
Conclusiones (1/2)<br />Los sistemas modulares bien implementados tienen grandes beneficios.<br />Flexibilidad, reuso y ma...
Conclusiones (2/2)<br />Contempla OSGi y Spring DM como alternativa de implementación de tus aplicaciones/plataformas.<br ...
¡Gracias!<br />Twitter : @MachinesAreUs<br />Blog :     http://machinesareus.blogspot.com<br />e-mail :  aramos@certum.com...
Próxima SlideShare
Cargando en…5
×

Hola OSGi

3.016 visualizaciones

Publicado el

Taller dado el 19 de Junio del 2010 en el contexto del evento Spring IO organizado por javamexico.org y springhispano.org

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
3.016
En SlideShare
0
De insertados
0
Número de insertados
330
Acciones
Compartido
0
Descargas
2
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Hola OSGi

  1. 1. Hola OSGiAgustín Ramos Fonseca<br />
  2. 2. Objetivo<br />2<br />Proveer un conocimiento básico<br />de las capacidades de la tecnología OSGi,<br />de las herramientas necesarias en su uso<br />y del tipo de aplicaciones que habilita.<br />
  3. 3. Agenda<br />Modularización.<br />Introducción a OSGi.<br />Ejemplos básicos.<br />Spring DM.<br />Ejemplos con Spring DM.<br />Enterprise OSGi.<br />Preguntas y respuestas.<br />3<br />
  4. 4. 4<br />Modularización<br />
  5. 5. Modularización<br />¿Qué es?<br />Particionar un sistema de acuerdo <br />a ciertas restricciones y principios de diseño, <br />así como una estrategia de desarrollo,<br />gobernando las partes resultantes<br />
  6. 6. Beneficios de la modularización<br />Ayuda a atacar problemas de gran tamaño<br />Partiendo el problema y permitiendo resolverlo incrementalmente. <br />Permite distribuir las tareas de desarrollo entre diferentes personas/equipos.<br />Reuso<br />Separación de dominios (Verticales y Horizontales) y de sus implementaciones, permitiendo utilizar las implementaciones en contextos distintos.<br />
  7. 7. Beneficios de la modularización<br />Mantenibilidad<br />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<br />
  8. 8. Modularización<br />La modularización efectiva no se logra mediante el simple uso de un lenguaje o una tecnología.<br />Es necesaria la correcta aplicación de principios y técnicas de diseño, así como el diseño de una estrategia de desarrollo.<br />
  9. 9. 9<br />Introducción a OSGi<br />
  10. 10. OSGi - ¿Quées?<br />Es la especificación de un modelo de componentes, caracterizado por:<br />Orientado a Servicios<br />Dinámico<br />Tamaño reducido (~ 1Mb)<br />Alto desempeño (No hay classpath)<br />Portable (desde móviles hasta servidores)<br />Soporta múltiples versiones de clases y servicios.<br />10<br />
  11. 11. OSGi - Arquitectura<br />La unidad de instalación y reutilizaciónes el ‘bundle’.<br />Los bundles exportan e importan clases y servicios a través de un ‘serviceregistry’.<br />Se programan solo POJO’s.<br />Seguridad<br />Bundles<br />Servicios<br />Ciclo de Vida<br />Módulos<br />Entorno de Ejecución<br />Java VM<br />Sistema Operativo Nativo<br />11<br />
  12. 12. ¿Para quésirve? (1/2)<br />Creación de…<br />Sistemas altamente modulares.<br />Con características deseables de flexibilidad, orientación a reuso y mantenibilidad.<br />Arquitecturas basadas en plug-ins.<br />e.g. Eclipse, JIRA.<br />12<br />
  13. 13. ¿Para quésirve? (2/2)<br />Creación de…<br />Líneas de productos.<br />e.g. Servidores de aplicaciones, middleware.<br />Plataforma para cómputo en la nube.<br />e.g.ParemusServiceFabric<br />13<br />
  14. 14. Historia (1/2)<br />Comenzó como un esfuerzo conjunto en el mercado de dispositivos embebidos.<br />OSGi Alliance fundada en 1999<br />Su éxito le permitió ganar adopción en otros dominios… <br />Eclipse 3.0 basó su modelo de plug-ins sobre OSGi<br />14<br />
  15. 15. Historia (2/2)<br />Versión 4.2 de la especificación liberada en Septiembre del 2009.<br />Primera versión de OSGi Enterprise (4.2) liberada en Marzo del 2010<br />15<br />
  16. 16. OSGi - Adopción 1/2<br />Miembros de OSGi Alliance:<br />Oracle, IBM, Samsung, Nokia, IONA, Motorola, NTT, Siemens, Hitachi, Deutsche Telekom, Redhat, Ericsson .. y muchos más.<br />Areas de aplicación<br />Automatización<br />Cómputo móvil<br />Servidores de aplicaciones<br />Cómputo en “La Nube”<br />16<br />
  17. 17. OSGi - Adopción 2/2<br />Actualmente es el fundamento de la nueva generación de servidores de aplicaciones y plataformas SOA.<br />Websphere v6.1 (IBM) <br />GlassFish v3 (Sun)<br />Weblogic v10.3 (Oracle/BEA)<br />JBoss<br />Jonas v5<br />SpringSourceApplication Server<br />WSO2 Carbon SOA Platform<br />17<br />
  18. 18. OSGi - Beneficios 1/2<br />Modularidad.<br />Los servicios de la plataforma JEE (EJB, Contenedor de servlets, JMS, Mail, Transacciones, etc) se implementan como servicios OSGi opcionales.<br />Extensibilidad.<br />Consecuencia casi directa de la modularidad.<br />Dinamismo real.<br />Permite instalar / actualizar / desinstalar módulos al vuelo (sin reinicios).<br />Impactando la disponibilidad y flexibilidad de las aplicaciones<br />18<br />
  19. 19. OSGi - Beneficios 2/2<br />Nativamente orientado a servicios (SOA).<br />Permite la coexistencia controlada de diferentes versiones de una misma clase y servicio.<br />Las clases pueden estar compartidas entre bundles, o completamente aisladas fuera de un contexto.<br />Cada bundle declara sus dependencias y opcionalmente rangos soportados de versiones para las mismas.<br />19<br />
  20. 20. OSGi - Implementaciones<br />20<br />
  21. 21. 21<br />Ejemplo Simple<br />
  22. 22. Bundle (1/2)<br />Es un JAR con un MANIFEST especial, que provee:<br />Mejor control sobre la visibilidad del JAR<br />La noción de ‘Activator’<br />Declaración de dependencias:<br />Hacia otros bundles<br />Hacia paquetes (java)<br />Versionamiento<br />Declaración de servicios ofrecidos por el bundle.<br />... ¡un mejor JAR !<br />22<br />
  23. 23. Bundle (1/2)<br />Ejemplo de MANIFEST:<br />Bundle-ManifestVersion: 2<br />Bundle-SymbolicName: com.pragprog.HelloWorld<br />Bundle-Name: HelloWorld<br />Bundle-Version: 1.0.0<br />Bundle-Activator: com.pragprog.hello.HelloWorld<br />Import-Package: org.osgi.framework<br />Export-Package: com.pragprog.hello<br />23<br />
  24. 24. Ciclo de vida del bundle<br />24<br />
  25. 25. BundleActivator<br />25<br />import org.osgi.framework.BundleActivator;<br />import org.osgi.framework.BundleContext;<br />public class HelloWorld implements BundleActivator {<br />public void start(BundleContextctx) throws Exception {<br />System.out.println("Hello World!");<br /> }<br />public void stop(BundleContextctx) throws Exception {<br />System.out.println("Goodbye World!");<br /> }<br />}<br />
  26. 26. ServiceRegistration<br />26<br />import org.osgi.framework.ServiceRegistration;<br />import com.pragprog.hello.service.HelloService;<br />public class HelloPublisher implements BundleActivator {<br /> private ServiceRegistration registration;<br /> public void start(BundleContext context) throws Exception {<br /> registration = context.registerService(<br />HelloService.class.getName(), new HelloImpl(), null);<br /> }<br /> public void stop(BundleContext context) throws Exception {<br />registration.unregister();<br /> }<br />}<br />
  27. 27. ServiceReference<br />27<br />public class HelloWorld implements BundleActivator {<br /> public void start(BundleContext context) throws Exception {<br />HelloServicehelloService = getHelloService(context);<br />System.out.println(helloService.getHelloMessage());<br /> }<br /> public void stop(BundleContext context) throws Exception {<br />HelloServicehelloService = getHelloService(context);<br />System.out.println(helloService.getGoodbyeMessage());<br /> }<br /> private HelloServicegetHelloService(BundleContext context) {<br />ServiceReference ref =<br />context.getServiceReference(HelloService.class.getName());<br /> return (HelloService) context.getService(ref);<br /> }<br />}<br />
  28. 28. 28<br />Spring DM<br />
  29. 29. ¿Quéofrece Spring-DM?<br />Aprovechar las capacidades de OSGi<br />Sin abandonar el modelo de programación de Spring.<br />Un nivel más alto de abstracción<br />Todo el poder de OSGi, sin aprender nuevas APIs.<br />29<br />
  30. 30. Modelo Spring - OSGi<br />30<br />
  31. 31. Exportación de Servicios<br />31<br /><beans xmlns="http://www.springframework.org/schema/beans" <br />xmlns:osgi= ="http://www.springframework.org/schema/osgi"<br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />xsi:schemaLocation="http://www.springframework.org/schema/osgi<br />http://www.springframework.org/schema/osgi/spring-osgi.xsd <br /> http://www.springframework.org/schema/beans <br /> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><br /><osgi:serviceref="pigLatinTranslatorService"<br /> interface=“…..translator.service.TranslatorService" /><br /></beans><br />
  32. 32. Consumo de Servicios<br />32<br /><beans xmlns="http://www.springframework.org/schema/beans" <br />xmlns:osgi="http://www.springframework.org/schema/osgi"<br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />xsi:schemaLocation="http://www.springframework.org/schema/osgi<br />http://www.springframework.org/schema/osgi/spring-osgi.xsd <br /> http://www.springframework.org/schema/beans <br /> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><br /><osgi:referencie id=“translatorService"<br /> interface=“…..translator.service.TranslatorService" /><br /></beans><br />
  33. 33. 33<br />Enterprise OSGi<br />
  34. 34. Enterprise OSGi (1/2)<br />Extensiones del Registro de Servicios.<br />Permite crear bundlesque observan o manipulan actividad del registro de servicios.<br />Soporte de Transacciones<br />Da soporte de operaciones transaccionales tanto a eventos del ciclo de vida de los componentes como a las aplicaciones.<br />OSGi Distribuido<br />Habilita la comunicación entre servicios que se ejecutan en distintas JVM’s.<br />34<br />
  35. 35. Enterprise OSGi (2/2)<br />BlueprintContainer.<br />Estandariza el uso de frameworks como Spring sobre OSGi para proveer un modelo de componentes más completo.<br />Spring DM es la implementación de referencia.<br />Soporte a JPA, JDBC y JMX<br />Todo lo que usamos día a día =)<br />35<br />
  36. 36. Objetivo<br />36<br />Arquitecturas Posibles<br />
  37. 37. ArquitecturasPosibles<br />Arquitecturas de micro-kernel:<br />Define las API’s e implementaciones principales<br />Los componentes van y vienen dinámicamente.<br />A través de plug-ins se provee implementación y extensión de la funcionalidad<br />Además de definir nuevos puntos de extensión<br />37<br />
  38. 38. Lineas de Productos (LP)<br />Definición<br /> “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”<br />Clements & Northrop<br />38<br />
  39. 39. Objetivo<br />39<br />Conclusiones<br />
  40. 40. Conclusiones (1/2)<br />Los sistemas modulares bien implementados tienen grandes beneficios.<br />Flexibilidad, reuso y mantenibilidad.<br />OSGi es el sistema de módulos para tiempo de ejecución más maduro y adoptado en la plataforma Java.<br />Y un sistema de módulos ya no es un lujo, es una necesidad.<br />40<br />
  41. 41. Conclusiones (2/2)<br />Contempla OSGi y Spring DM como alternativa de implementación de tus aplicaciones/plataformas.<br />Ya estás disfrutando de sus beneficios, pero no lo habías notado =)<br />41<br />
  42. 42. ¡Gracias!<br />Twitter : @MachinesAreUs<br />Blog : http://machinesareus.blogspot.com<br />e-mail : aramos@certum.com<br />

×