Your SlideShare is downloading. ×
  • Like
  • Save
Hola OSGi
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Hola OSGi

  • 2,569 views
Published

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

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

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,569
On SlideShare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Hola OSGiAgustín Ramos Fonseca
  • 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.
  • 3. Agenda
    Modularización.
    Introducción a OSGi.
    Ejemplos básicos.
    Spring DM.
    Ejemplos con Spring DM.
    Enterprise OSGi.
    Preguntas y respuestas.
    3
  • 4. 4
    Modularización
  • 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.
  • 9. 9
    Introducción a OSGi
  • 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
  • 20. OSGi - Implementaciones
    20
  • 21. 21
    Ejemplo Simple
  • 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
  • 23. Bundle (1/2)
    Ejemplo de MANIFEST:
    Bundle-ManifestVersion: 2
    Bundle-SymbolicName: com.pragprog.HelloWorld
    Bundle-Name: HelloWorld
    Bundle-Version: 1.0.0
    Bundle-Activator: com.pragprog.hello.HelloWorld
    Import-Package: org.osgi.framework
    Export-Package: com.pragprog.hello
    23
  • 24. Ciclo de vida del bundle
    24
  • 25. BundleActivator
    25
    import org.osgi.framework.BundleActivator;
    import org.osgi.framework.BundleContext;
    public class HelloWorld implements BundleActivator {
    public void start(BundleContextctx) throws Exception {
    System.out.println("Hello World!");
    }
    public void stop(BundleContextctx) throws Exception {
    System.out.println("Goodbye World!");
    }
    }
  • 26. ServiceRegistration
    26
    import org.osgi.framework.ServiceRegistration;
    import com.pragprog.hello.service.HelloService;
    public class HelloPublisher implements BundleActivator {
    private ServiceRegistration registration;
    public void start(BundleContext context) throws Exception {
    registration = context.registerService(
    HelloService.class.getName(), new HelloImpl(), null);
    }
    public void stop(BundleContext context) throws Exception {
    registration.unregister();
    }
    }
  • 27. ServiceReference
    27
    public class HelloWorld implements BundleActivator {
    public void start(BundleContext context) throws Exception {
    HelloServicehelloService = getHelloService(context);
    System.out.println(helloService.getHelloMessage());
    }
    public void stop(BundleContext context) throws Exception {
    HelloServicehelloService = getHelloService(context);
    System.out.println(helloService.getGoodbyeMessage());
    }
    private HelloServicegetHelloService(BundleContext context) {
    ServiceReference ref =
    context.getServiceReference(HelloService.class.getName());
    return (HelloService) context.getService(ref);
    }
    }
  • 28. 28
    Spring DM
  • 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
  • 30. Modelo Spring - OSGi
    30
  • 31. Exportación de Servicios
    31
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:osgi= ="http://www.springframework.org/schema/osgi"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/osgi
    http://www.springframework.org/schema/osgi/spring-osgi.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <osgi:serviceref="pigLatinTranslatorService"
    interface=“…..translator.service.TranslatorService" />
    </beans>
  • 32. Consumo de Servicios
    32
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:osgi="http://www.springframework.org/schema/osgi"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/osgi
    http://www.springframework.org/schema/osgi/spring-osgi.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <osgi:referencie id=“translatorService"
    interface=“…..translator.service.TranslatorService" />
    </beans>
  • 33. 33
    Enterprise OSGi
  • 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
  • 36. Objetivo
    36
    Arquitecturas Posibles
  • 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
  • 39. Objetivo
    39
    Conclusiones
  • 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
  • 42. ¡Gracias!
    Twitter : @MachinesAreUs
    Blog : http://machinesareus.blogspot.com
    e-mail : aramos@certum.com