nuxeo runtime 2: osgi, glassfish support, etc
DESCRIPTION
Nuxeo Runtime, which enables to deploy Nuxeo’s component-oriented architecture both in server and desktop applications, is evolving alongside the Java EE and OSGi technologies that it leverages. This talk will introduce recent and future works on Nuxeo Runtime: Glassfish support, OSGi support improvement, dependency injection, etc.TRANSCRIPT
Nuxeo Runtime 2Nuxeo Runtime 2recent and future workrecent and future work
Bogdan Stefanescu |
Overview
● What's Nuxeo Runtime?● Requirements● Components● Extensions
● What's next?● HK2 adoption● Dependency injection● More Annotations● Hot Deployment ?
What's Nuxeo Runtime?
● Nuxeo Runtime is the Nuxeo micro kernel. ● The foundation of all Nuxeo applications
● Nuxeo EP, Nuxeo RCP, Nuxeo WebEngine, Nuxeo Shell etc.
● Provides a modules subsystem● OSGI compatible modules (aka bundles)
● Provides a component model● Inspired from OSGI descriptive components ● Provides an extension point model● Provides a service model
Nuxeo Runtime - Requirements
● Nuxeo Runtime was designed to fulfill the following requirements:
● Applications are made from components.● Be able to assemble new applications from specific
set of components.● Be able to add / remove components into an
(optionally running) application.● Be able to deploy and run modules in any OSGi
framework.
● Provide an extension mechanism for components.
Nuxeo Runtime - Components
● Modules are implemented as OSGi bundles● A module may provide zero or more
components● Nuxeo Components are very similar to OSGi
components● Components are described through XML files.● Components are declared in the module
MANIFEST file● Components provides zero or more services
Nuxeo Runtime – Extensions
● Components may expose multiple extension points to let other components extend it
● Components may contribute any number of extensions to other components
● An Extension Point is an abstract concept● You can see it as a registry of things
● Extensions are declared using XML● XML fragments are mapped to real Java Objects
and registered against the target extension point
Nuxeo Runtime – Deployment
Nuxeo Runtime – Extensibility
Serializers
Views
Actions
Editors
MyExtensionPoint
What's next?
● Rewriting Nuxeo Runtime on top of HK2● HK2 is the micro kernel of GlassFish v3● HK2 is very similar with Nuxeo Runtime
● HK2 cool features:● Able to run in any OSGi framework● Provide dependency injection through annotations● Services are declared using annotations
● HK2 missing features:● Extension Points are missing from HK2! :-(
Nuxeo Runtime - HK2
● How extension point issue can be solved?● Already in contact with Sun HK2 developers● We will contribute to HK2 an extension point
mechanism
● Nuxeo Runtime will be an HK2 module ● That will add an extension points mechanism● That will preserve compatibility with existing model
● Nuxeo Modules will still be packaged as OSGi bundles
Nuxeo Runtime - Future
So, what Nuxeo Runtime 2 will provide?● OSGi compatible modules● Extension Points declared through annotations● Extensions declared as XML fragments● Services declared through annotations● Dependency injection through annotations● No more XML to declare things● Only pure configuration will be stored as XML● An HK2 micro kernel
Nuxeo Runtime – Is that all?●
●
●
● Hot Deployment of Modules?
Thank you!Thank you!