SlideShare una empresa de Scribd logo
1 de 42
Hola OSGiAgustín Ramos Fonseca
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.
Agenda Modularización. Introducción a OSGi. Ejemplos básicos. Spring DM. Ejemplos con Spring DM. Enterprise OSGi. Preguntas y respuestas. 3
4 Modularización
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
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.
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
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 Introducción a OSGi
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
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
¿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
¿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
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
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
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
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
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
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
OSGi - Implementaciones 20
21 Ejemplo Simple
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
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
Ciclo de vida del bundle 24
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!");   } }
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();    } }
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 Spring DM
¿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
Modelo Spring - OSGi 30
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>
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 Enterprise OSGi
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
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
Objetivo 36 Arquitecturas Posibles
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
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
Objetivo 39 Conclusiones
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
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
¡Gracias! Twitter : @MachinesAreUs Blog :     http://machinesareus.blogspot.com e-mail :  aramos@certum.com

Más contenido relacionado

Similar a Hola OSGi

Trabajo grupal 1 taller-prog-distribuida
Trabajo grupal 1 taller-prog-distribuidaTrabajo grupal 1 taller-prog-distribuida
Trabajo grupal 1 taller-prog-distribuidaRJ Manayay Chavez
 
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...Oliver Fierro
 
Tecnologias futuras
Tecnologias futurasTecnologias futuras
Tecnologias futurasrocyvero
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentesUlises Cruz
 
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...Sofia2 Smart Platform
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
Introducción a la programación visual
Introducción a la programación visualIntroducción a la programación visual
Introducción a la programación visualmiguelangelvillelli
 
Curso de programación básico de android
Curso de programación básico de androidCurso de programación básico de android
Curso de programación básico de androidENANITOS120
 
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridad
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridadWolfram sistemmodeler: Modelado de sistemas críticos de seguridad
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridadjairml
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9Eudris Cabrera
 
Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cein
 

Similar a Hola OSGi (20)

00463531f7b1b6cf3f000000
00463531f7b1b6cf3f00000000463531f7b1b6cf3f000000
00463531f7b1b6cf3f000000
 
Trabajo grupal 1 taller-prog-distribuida
Trabajo grupal 1 taller-prog-distribuidaTrabajo grupal 1 taller-prog-distribuida
Trabajo grupal 1 taller-prog-distribuida
 
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...Bootcamp   gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
Bootcamp gdg cloud scl - introduccion a arquitectura cloud en gcp - oliver ...
 
Tecnologias futuras
Tecnologias futurasTecnologias futuras
Tecnologias futuras
 
Desarrollo de software basado en componentes
Desarrollo de software basado en componentesDesarrollo de software basado en componentes
Desarrollo de software basado en componentes
 
Diapositiva
DiapositivaDiapositiva
Diapositiva
 
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...
Análisis del TCO del Uso de Sofia2 como backend vs desarrollo a medida sobre ...
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
Introducción a la programación visual
Introducción a la programación visualIntroducción a la programación visual
Introducción a la programación visual
 
Curso de programación básico de android
Curso de programación básico de androidCurso de programación básico de android
Curso de programación básico de android
 
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridad
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridadWolfram sistemmodeler: Modelado de sistemas críticos de seguridad
Wolfram sistemmodeler: Modelado de sistemas críticos de seguridad
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Ug rloor
Ug rloorUg rloor
Ug rloor
 
Ug rloor
Ug rloorUg rloor
Ug rloor
 
UG-RLOOR
UG-RLOORUG-RLOOR
UG-RLOOR
 
Ug rloor
Ug rloorUg rloor
Ug rloor
 
Primeros pasos con java 9
Primeros pasos con java 9Primeros pasos con java 9
Primeros pasos con java 9
 
Gps
GpsGps
Gps
 
Gps
GpsGps
Gps
 
Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2Cesnavarra 2008-boletín 2
Cesnavarra 2008-boletín 2
 

Más de Agustin Ramos

Exploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerExploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerAgustin Ramos
 
From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017Agustin Ramos
 
Pairwise and property based testing
Pairwise and property based testingPairwise and property based testing
Pairwise and property based testingAgustin Ramos
 
Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasAgustin Ramos
 
¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?Agustin Ramos
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskellAgustin Ramos
 
Técnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseñoTécnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseñoAgustin Ramos
 
Acercándose a la entrega continua
Acercándose a la entrega continuaAcercándose a la entrega continua
Acercándose a la entrega continuaAgustin Ramos
 
Modelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaModelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaAgustin Ramos
 
Arquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que noArquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que noAgustin Ramos
 
Arqueología de software
Arqueología de softwareArqueología de software
Arqueología de softwareAgustin Ramos
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Agustin Ramos
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoAgustin Ramos
 
La nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingenieroLa nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingenieroAgustin Ramos
 
Modularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraModularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraAgustin Ramos
 

Más de Agustin Ramos (15)

Exploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with ArcheometerExploring Elixir Codebases with Archeometer
Exploring Elixir Codebases with Archeometer
 
From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017From Elixir to Akka (and back) - ElixirConf Mx 2017
From Elixir to Akka (and back) - ElixirConf Mx 2017
 
Pairwise and property based testing
Pairwise and property based testingPairwise and property based testing
Pairwise and property based testing
 
Sistemas Tolerantes a Fallas
Sistemas Tolerantes a FallasSistemas Tolerantes a Fallas
Sistemas Tolerantes a Fallas
 
¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?¿En qué la estamos regando en pruebas de software?
¿En qué la estamos regando en pruebas de software?
 
Programación funcional con haskell
Programación funcional con haskellProgramación funcional con haskell
Programación funcional con haskell
 
Técnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseñoTécnicas basadas en matriz de estructura de diseño
Técnicas basadas en matriz de estructura de diseño
 
Acercándose a la entrega continua
Acercándose a la entrega continuaAcercándose a la entrega continua
Acercándose a la entrega continua
 
Modelos de paralelismo y concurrencia
Modelos de paralelismo y concurrenciaModelos de paralelismo y concurrencia
Modelos de paralelismo y concurrencia
 
Arquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que noArquitecturas que crecen y arquitecturas que no
Arquitecturas que crecen y arquitecturas que no
 
Arqueología de software
Arqueología de softwareArqueología de software
Arqueología de software
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
 
La nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingenieroLa nueva imagen del gurú - El maestro artesano dentro del ingeniero
La nueva imagen del gurú - El maestro artesano dentro del ingeniero
 
Modularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidraModularización efectiva - domando a la hidra
Modularización efectiva - domando a la hidra
 

Último

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (19)

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Hola OSGi

  • 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
  • 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
  • 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); } }
  • 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>
  • 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
  • 42. ¡Gracias! Twitter : @MachinesAreUs Blog : http://machinesareus.blogspot.com e-mail : aramos@certum.com