Translate

Mostrando las entradas con la etiqueta OSGI. Mostrar todas las entradas
Mostrando las entradas con la etiqueta OSGI. Mostrar todas las entradas

domingo, 16 de julio de 2017

El patrón de arquitectura microkernel


Leyendo el libro, "Software Architecture Patterns" les dejo este pequeño resumen:

El patrón de arquitectura microkernel (a veces denominado patrón de arquitectura de plug-in) es un patrón natural para implementar aplicaciones basadas en productos. Una aplicación basada en producto es una que está empaquetada y está disponible para su descarga en versiones como un producto de terceros típico. Sin embargo, muchas compañías también desarrollan y liberan sus aplicaciones empresariales internas, como productos de software, con versiones, notas de lanzamiento y características conectables. Estos son también un ajuste natural para este patrón. El patrón de arquitectura de microkernel le permite agregar funciones de aplicación adicionales como complementos a la aplicación principal, proporcionando extensibilidad, así como separación y aislamiento de características.

Esta arquitectura esta compuesta por 2 componentes, el sistema core y los modulos plug-in. El core contiene la minima funcionalidad y los módulos plug-in son componentes autónomos e independientes que contienen procesamiento especializado, características adicionales y código personalizado que está diseñado para mejorar o ampliar el sistema central para producir capacidades empresariales adicionales. Generalmente, los módulos plug-in deben ser independientes de otros módulos plug-in, pero ciertamente puede diseñar plug-ins que requieran que otros plug-ins estén presentes. De cualquier manera, es importante mantener la comunicación entre plug-ins a un mínimo para evitar problemas de dependencia.

Cuando leemos esto lo primero que se nos viene a la mente es OSGi, porque este estándar nació para darle soporte a este tipo de arquitecturas y el ejemplo más significativo de esta arquitectura sea eclipse.

Dejo link: https://www.oreilly.com/ideas/software-architecture-patterns/page/4/microkernel-architecture

domingo, 9 de septiembre de 2012

Apache Wicket 6.0

Una nueva versión de Apache wicket se ha liberado las novedades son que ahora toda la librería ajax se basa en JQuery lo que va a hacer más fácil de usar y más flexible. Otra mejora es que ahora esta empaquetado de tal forma que hace muy fácil la integración con OSGI.

La verdad que me parece excelente la noticia y me parecen cambios esperados por la comunidad. Nunca me gusto el manejo de ajax de wiket, me parece poco flexible; con esta cambio se gano un seguidor más.

Dejo links:
http://wicket.apache.org/
http://wicket.apache.org/2012/09/05/wicket-6.0.0-released.html

jueves, 8 de marzo de 2012

Apache ServiceMix







Apache ServiceMix es un flexible ESB open source, que integra funcionalidad de diversos productos de Apache como Apache ActiveMQ, Camel, CXF, ODE y Karaf. Provee el funcionamiento de un ESB integrado a una herramienta OSGI.

Las características de Apache ServiceMix son:


  • Mensajería segura gracias a Apache ActiveMQ
  • Mensajería, enrrutamiento y patrones de integración para Empresas con Apache Camel
  • ServiceMix NMR incluye eventos ricos, mensajería y auditoría lo que permite una integración con bajo acoplamiento.
  • Completo WS-BPEL con Apache ODE.
  • Basado en OSGI con la utilización Apache Karaf.


Además es licencia Apache 2.


Dejo Link:

http://servicemix.apache.org/

martes, 23 de noviembre de 2010

Spring Dynamic Modules for OSGi(tm) Service Platforms

Spring Framework es el principal contenedor de aplicaciones Java / JEE. Proporciona un contenedor ligero y un modelo de programación no invasiva, esto es posible gracias al uso de la inyección de dependencia, AOP, abstracciones y portátiles servicio. La Plataforma de Servicios OSGi ofrece un entorno de ejecución de aplicaciones dinámicas en las que los módulos (paquetes) puede ser instalado, actualizado, eliminado sobre la marcha. También cuenta con un excelente apoyo para la modularidad y control de versiones.

Spring DN hace que sea fácil crear aplicaciones que se puedan implementar en un entorno de ejecución de OSGi, y que pueden aprovechar los servicios que ofrece el marco OSGi

Spring DN es un proyecto para hacer más fácil la construcción de aplicaciones que corren en un framework OSGI. Una aplicación hecha con spring DN provee un perfecto camino para la separación de la aplicación en módulos. usando OSGI podemos levantar en caliente un modulo y a la vez tener diferentes versiones de los modulos levantado.
OSGi 4.2 introduce the Blueprint Service especificación basada en Spring Dynamic Modules.

Dejo el link:

lunes, 22 de noviembre de 2010

Apache Aries


El proyecto Aries ofrecerá un conjunto de componentes enchufables (plugins) Java que permite a una aplicación empresarial utilizar estos plugins usando modelo de programación OSGi . Esto incluye la implementación y extensión de las especificaciones definidas por OSGi Alliance Enterprise Expert Group (EEG)

Apache Aries nos permitirá consumir por medio de OSGI módulos que nos brinden la persistencia JPA por ejemplo. Pluging que le den valor agregado a la aplicaciones o frameworks que nos ayuden a desarrollar podrán ser utilizados usando OSGI.

OSGi es una tecnología de modularidad madura de Java, que es muy usado en muchos ambientes, pero, en el ámbito empresarial, ha sido tradicionalmente más explotados por la parte interna, infraestructura runtime. Esto es principalmente debido a la falta de un claro modelo de programación empresarial OSGi, y la falta de aplicación e implementación de OSGi para la tecnología JEE.
Especificaciones OSGi son dictadas y mantenidas por la OSGi Alliance, que reconoce este estado de cosas hace varios años y estableció un grupo de expertos en aplicaciones enterprice dentro de la Alianza para centrarse específicamente en las necesidades de aplicaciones empresariales. El objetivo de este proyecto es entregar implementaciones de código abierto de estas tecnologías centradas en la aplicación para permitir el desarrollo de componentes, en beneficio de la modularidad de OSGi en combinación con modelos de programación basados en estándares, que pueden ser desplegados en tiempo de ejecución.

Es un objetivo del proyecto Aries proporcionar un hogar natural para las implementaciones de código abierto de las actuales y futuras especificaciones OSGi EEG, incluyendo la oportunidad para el desarrollo colaborativo de pruebas de cumplimiento, y un entorno para demostrar la composición de estas tecnologías y explorar áreas EEG donde carecen de cobertura de las especificaciones. Otro objetivo de este proyecto es aprovechar la experiencia adquirida a informar a las contribuciones a OSGi requisitos EEG y documentos de especificaciones.

Apache Aries esta en la incubadora esperemos que pronto salga de ahí y nos sorprenda con nuevos módulos para nuestra aplicación.

OSGI y SCA


Antes de empezar vamos a describir estas tecnologías.

OSGI (Open Services Gateway Initiative), podríamos definirlo como un sistema (o framework) modular para Java que establece las formas de crear módulos y la manera en que estos interactuaran entre sí en tiempo de ejecución. OSGI intenta solventar los problemas del tradicional "classloader" de la máquina virtual y de los servidores de aplicaciones Java. En OSGI, cada módulo tiene su propio classpath separado del resto de
classpath de los demás módulos.

SCA (Service Component Architecture) es un estándar de OASIS originalmente creado por diferentes vendedores como BEA, IBM, Oracle, SAP, etc. La especificación SCA define como crear un componente y como estos componentes interactúan para formar una aplicación. Los componentes en SCA pueden ser construidos en Java o en otros lenguajes y además permite interactuar con otras tecnologías como JEE, Spring o BPEL. SCA define un mecanismo común de ensamblaje que indica como los componentes son combinados dentro de la aplicación.
El objetivo de SCA es a nivel alto o de negocios en ca
mbio el objetivo de OSGI esta centrado en la modularidad por lo tanto es de más bajo nivel.

Los Micro-Kernels se volvieron cada vez más populares (jboss, glassfish, ...). OSGi ha estandarizado muchos de los "servicios del núcleo" (registro, configuración, aprovisionamiento) de móviles, y ahora comienza a entrar en la empresas. Considerando que el enfoque JEE fue en la infraestructura de middleware, OSGi provee muchas ventajas que quedaban a cargo de los desarrolladores. La Carga dinámica (Dynamic loading) de OSGi hace perfecto los micro-núcleo, dado que no es necesario bajar el servidor para cargar un modulo, el nucleo tiene solo lo necesario y los módulos se van cargando a medida que se los demande.

La composición de los servicios/componetes se llevará a cabo y se expone como un servicio de negocios con múltiples puntos finales. Este es el lugar donde podemos ver que la pareja OSGi / SCA aporta mucho y ayuda a centrarse en su negocio. Módulos OSGi para gestionar los componentes técnicos para mantener los principios DRY (Don't Repeat Yourself) y SCA para exponer punto final de negocios con conexión automática y la seguridad habilitada.


Este esquema tomado de la página de Apache Tuscany expresa como SCA cablea los servicios de negocio. Como SOA típico, expondrá su "contrato". Dentro de SCA, va a configurar, además, cómo quieres que lo exponga (usando RMI, WS o cualquier tipo de protocolo).
Al hacerlo, le permiten decidir el protocolo en la fase de implementación, no en la fase de desarrollo. Esto hace que su software sea muy flexible y le permiten centrarse en el código de negocio.

Gestión de módulos y componentes y hay dependencias requieren el uso de una herramienta automatizada (Maven, nexus).

Apache Tuscany es una implementación de SCA que en su versión 2.0 traera el esquema OSGI. Apache Tuscany 2.0 fue totalmente reescrito para soportar OSGi.

viernes, 12 de febrero de 2010

Spring y OSGI, algo más?


Se preguntan ¿Qué es OSGi? y supongo que todos hemos usado eclipse alguna vez y con eclipse, equinox. Equinox es un contenedor OSGi implementado por eclipse.

Bueno en pocas palabras eso es OSGI, OSGi proporciona funciones más parecidas a un contenedor web, pero es más versátil. OSGi te permite crear aplicaciones a partir de componentes.

Que es spring? Si no saben que es spring, no han leído otros posts. Spring es el framework que provee inyección de dependencias y programación orientada a aspecto. Y me quedo corto, porque spring soluciona muchos problemas que nos topamos en el desarrollo con subproyectos: spring security, spring Ldap, spring MVC, etc.

Si fueron un poco observadores, notaron que osgi es una tecnología que nos permite desplegar módulos o componentes y spring nos permite trabajar con diferentes tecnologías de forma más fácil.

Spring Dynamic Modules hace más fácil escribir aplicaciones Spring que puedan ser deployeadas en un entorno OSGI, y que puedan aprovechar las ventajas de los servicios que ofrece OSGi.

Spring's OSGi soporta también hacer más simple y más productiva el desarrollo de aplicaciones OSGi. Parar aplicaciones empresariales, la combinación de Spring Dynamic Modules y the OSGi platform provee:

Mejor separación de la logica de la aplicación en modulos.
La habilidad de desplegar diferentes versiones, de los modulos.
La habilidad de descubrir dinámicamente y usar servicios provistos por otros módulos en el sistema.
La habilidad de instalar, modificar y desinstalar módulos on fly.
Puede usar spring dentro y entre los modulos.
Un modelo de programación simple y familiar para los desarrolladores de aplicaciones empresariales.

Spring Dynamic Modules 1.0 soporta JDK 1.4 (y superiores) y OSGi R4 (y superiores). Los paquetes desplegados para usar con Spring Dynamic Modules deben especificar "Bundle-ManifestVersion: 2" en el manifest (OSGi R4). Además soporta Equinox 3.2.x, Felix 1.0.3+ y Knopflerfish 2.1.x .


Dejo links:

domingo, 9 de agosto de 2009

¿Qué es OSGi?


Se preguntan ¿Qué es OSGi? y supongo que todos hemos usado eclipse alguna vez y con eclipse, equinox. Equinox es un contenedor OSGi implementado por eclipse.

Equinox, es el contenedor en donde viven los plugins, donde pueden convivir entre ellos y comunicarse con el core de eclipse.

Bueno en pocas palabras eso es OSGI, OSGi proporciona funciones más parecidas a un contenedor web, pero es más versatil. Un contenedor web (Tomcat) te permite cargar varias aplicaciones que trabajan de manera independiente. El aislamiento de las aplicaciones se logra a través de diferentes "class loaders" (cargadores de clases?). De esta forma, una aplicación queda aislada de los efectos de otras -ya que las clases son cargadas en memoria de manera independiente-. OSGi proporciona dicha función, pero no pone restricciones en las aplicaciones (no tienen que ser servlets o aplicaciones web). OSGi es más flexible. OSGi permite que aplicaciones cooperen con otras a través de interfaces declaradas en archivos de configuración. Así, por ejemplo, puedes cargar dos aplicaciones que comparten las mismas componentes comunes, sin que las clases se carguen independientemente en memoria pero sin que una afecte a la otra.

En otras palabras, OSGi te permite crear aplicaciones a partir de componentes. Estos componentes son cargados en distintos class loaders. Dos ( o mas componentes) pueden interactuar entre si únicamente a través de interfaces declaradas explícitamente en archivos de configuración (en xml).

OSGi te permite el cargar o descargar componentes. O cargar diferentes versiones de dos componentes y reemplazar los componentes existentes de manera dinámica. (Tal como Tomcat te permite el cargar y descargar una aplicación web, pero con mucha mayor flexibilidad)

OSGi es utilizado en teléfonos celulares y PDA; me parece que fue esta industria la que creo el concepto y las primeras especificaciones. El aislamiento proporcionado por OSGi permite que la falla en una aplicación o componente no afecte a las aplicaciones que no los usan.

Si has desarrollado plugins para Eclipse entonces ya te abras dado cuenta de que aporta OSGi. Netbeans usa un framework con funcionalidad similar, pero no es OSGi. Mientras que Eclipse esta basado en OSGi (por lo menos el kernel de Eclipse). Cabe mencionar que OSGi no tiene ninguna relación con desarrollo de IDEs o GUIs, pero que el concepto utilizado por Eclipse y/o Netbeans para cargar los plugins es similar a la funcionalidad proporcionada por OSGi.

OSGi también proporciona especificaciones para seguridad. (Por ejemplo, para cargar únicamente componentes que han sido firmados y verificados en su integridad).

Sin embargo, yo no he notado que se generalice el uso de OSGi. (Basta con buscar empleo con la palabra OSGi como termino de búsqueda para darse cuenta que aun no se usa mas que en ciertos nichos o en en algunos start-up).

OSGi es solo una especificación. Hay diferentes implementaciones. Wikipedia puede darte más información al respecto.

Existen varios frameworks OSGI como equinox, o apache felix. Ahí les dejo los links.



miércoles, 15 de julio de 2009

Apache Camel

Encontre estos tutoriales de apache camel: http://www.tecsisa.com/index.igw?item=1631

Muy bueno!!!


Apache Camel es una implementación de los patrones para integración empresarial descritos en el libro Enterprise Integration Patterns de Gregor Hohpe y Bobby Woolf hecha en Spring.
Estos patrones de diseño permiten integrar sistemas heterogéneos usando sistemas de Mensajería. Actualmente Apache Camel soporta un gran número de transportes de mensajería, como JMS, ActiveMQ, CXF Bus, JBI e incluso HTTP simple.