SlideShare a Scribd company logo
1 of 30
Download to read offline
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Enterprise R6 specs are out!
David Bosschaert | Carsten Ziegeler | Adobe R&D
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
About David Bosschaert davidb@apache.org
§  R&D Adobe Ireland
§  Co-chair OSGi Enterprise Expert Group
§  ISO/IEC JTC1 SC38 Cloud Computing committee member for Ireland
§  Apache Felix, Aries PMC member and committer
§  … other opensource projects
§  Cloud and embedded computing enthusiast
2
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
About Carsten Ziegeler cziegeler@apache.org
§  RnD Adobe Research Switzerland
§  Member of the Apache Software Foundation
§  VP of Apache Felix and Apache Sling
§  OSGi Core Platform, OSGi Enterprise, OSGi IoT Expert Groups
§  Member on the board of the OSGi Alliance
§  Book / article author, technical reviewer, conference speaker
3
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Agenda
New and updated specs in OSGi Enterprise R6
§  Asynchronous Services and Promises
§  Declarative Services
§  Http Whiteboard
§  REST Management
§  Portable Contracts
4
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Asynchronous Services and Promises
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Promises
Javascript-style promises, can be used with
Java 5 or later.
§  Asynchronous chaining
§  Very simple programming model
Promises can be used outside of OSGi
framework
	
  
Recommended implementation:
https://svn.apache.org/repos/asf/aries/trunk/
async
6
public	
  class	
  PromisesTest	
  {	
  
	
  
	
  	
  	
  	
  public	
  static	
  void	
  main(String...	
  args)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Starting");	
  
	
  	
  	
  	
  	
  	
  	
  	
  takesLongToDo(21)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .then(p	
  -­‐>	
  intermediateResult(p.getValue()))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .then(p	
  -­‐>	
  finalResult(p.getValue()));	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Async	
  computation	
  kicked	
  off");	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  static	
  Promise<Long>	
  intermediateResult(Long	
  l)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Intermediate	
  result:	
  "	
  +	
  l);	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  takesLongToDo(l	
  *	
  2);	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  static	
  Promise<Void>	
  finalResult(Long	
  l)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println("Computation	
  done.	
  Result:	
  "	
  +	
  l);
	
  	
  	
  	
  	
  	
  	
  	
  return	
  Promises.resolved(null);	
  
	
  	
  	
  	
  }	
  
	
  
	
  	
  	
  	
  public	
  static	
  Promise<Long>	
  takesLongToDo(long	
  in)	
  {	
  
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Async Services
§  Take an existing OSGi Service …
§  … and make it async!
§  Or use an async-optimized one
§  Also works great with Remote Services
§  Recommended implementation:
https://svn.apache.org/repos/asf/aries/trunk/
async
Normal service use:
	
  TimeConsumingService	
  tcs	
  =	
  ...	
  //	
  from	
  Service	
  Registry	
  
	
  System.out.println("Invoking	
  Big	
  Task");	
  
	
  System.out.println("Result:	
  "	
  +	
  tcs.bigTask(1));	
  
	
  //	
  further	
  code	
  
7
§  Async service use
§  via mediator obtained from Async Service
	
  TimeConsumingService	
  tcs	
  =	
  ...	
  //	
  from	
  Service	
  Registry	
  
	
  Async	
  async	
  =	
  ...	
  //	
  Async	
  Service	
  from	
  Service	
  Registry	
  
	
  TimeConsumingService	
  mediated	
  =	
  async.mediate(	
  
	
  tcs,	
  TimeConsumingService.class);	
  
	
  	
  
	
  System.out.println("Invoke	
  Big	
  Task	
  Asynchronously...");	
  
	
  async.call(mediated.bigTask(1))	
  
	
  	
  	
  .then(p	
  -­‐>	
  bigTaskFinished(p.getValue()));	
  
	
  System.out.println("Big	
  Task	
  submitted");	
  
	
  
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Declarative Services
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Declarative Services
§  Powerful component development
§  Managing OSGi dynamics
§  Integrates with Configuration Admin
§  Support for metatype
§  100% Pure Java
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Configuration / Metatype
10
@Component
public class GameControllerImpl implements GameController {
public @interface Config {
int easy_max() default 10;
...
}
private Config configuration;
@Activate
protected void activate(final Config config) {
this.configuration = config;
}
@Designate( ocd = GameControllerImpl.Config.class )
@ObjectClassDefinition(
name = "Game Configuration",
description = "The configuration for the guessing game.")
@AttributeDefinition(name="Easy", description="Maximum value for easy“)
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Metatype based Configuration
§  Apache Felix Web Console
11
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Service References
§  Lookup Strategy
§  Event Strategy
§  Field Strategy
12
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Field Injection
13
@Reference
private GameController game;
@Reference
private List<HighscoreService> highscores;
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Runtime Service
§  Introspection through DTOs
§  Apache Felix Web Console Plugin
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Declarative Services
§  Supports Framework R6
§  Simple, efficient, but powerful
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Http Whiteboard
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Building a Web Application
§  Servlets
§  Resources
§  Filters
§  Listeners
17
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Web Application
18
Servlet B
/scores
Servlet A
/game
Servlet C
/*
Servlet Filters
Resources
/*.js|*.css
Request
Listeners
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Http Whiteboard
19
@Component( service = Servlet.class ,
scope = ServiceScope.PROTOTYPE,
property={"osgi.http.whiteboard.servlet.pattern=/game"})
public class ServletA extends HttpServlet {
@Component( service = Filter.class ,
scope = ServiceScope.PROTOTYPE,
property={"osgi.http.whiteboard.filter.pattern=/*"})
public class MyFilter implements Filter {
@Component( service = ServletRequestListener.class,
property={"osgi.http.whiteboard.listener=true"})
public class MyListener implements ServletRequestListener {
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Web Applications
20
Servlet B
/scores
Servlet A
/game
Servlet C
/*
Servlet Filters
Resources
/*.js|*.css
Request
Listeners
Servlet Filters
Request
Listeners
Resources
/*.js|*.css
Servlet X
/foo
Servlet Z
/*
Servlet Context <mygame>
/play
Servlet Context <app>
/fooapp
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Web Contexts
21
@Component( service = ServletContextHelper.class ,
property={"osgi.http.whiteboard.context.name=mygame",
"osgi.http.whiteboard.context.path=/play"})
public class GameServletContext extends ServletContextHelper {
@Component( service = Servlet.class ,
scope = ServiceScope.PROTOTYPE,
property={"osgi.http.whiteboard.servlet.pattern=/foo",
"osgi.http.whiteboard.context.select=mygame"})
public class ServletB extends HttpServlet {
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Whiteboard Registrations
§  ServletContextHelper
§  Grouping
§  Security
§  Resource Handling
§  Servlets
§  Listeners
§  Resources
§  Filters
§  Error Pages
22
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Http Whiteboard Service
§  Servlet 3.1 API
§  Runtime Service
§  DTOs
§  Introspection
§  Multipe Whiteboard Services possible
§  Different endpoints / apps
23
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
REST
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi REST Management
§  Manage remote OSGi Frameworks
§  using REST/HTTP
§  data in either JSON or XML
§  Control Bundles
§  install / start / stop / uninstall
§  Inspect Service
§  Control Start Levels
§  Clients
§  Raw
§  Java
§  JavaScript
Implementation at
http://git.eclipse.org/c/concierge/org.eclipse.concierge.git
25
Flaming June, by Frederic Lord Leighton, Wikipedia
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
REST Management - Raw
§  List Bundles
	
  	
  	
  	
  	
  	
  $	
  curl	
  http://127.0.0.1:8888/framework/bundles	
  
	
  	
  	
  	
  	
  	
  ["framework/bundle/0","framework/bundle/1","framework/bundle/2","framework/bundle/3","framework/bundle/4"]	
  
26
§  List Services
	
  	
  	
  	
  	
  	
  $	
  curl	
  'http0.0.1:8888/framework/services?filter=(objectClass=*Resolver)'	
  
	
  	
  	
  	
  	
  	
  ["framework/service/15"]	
  
§  Install a Bundle
	
  	
  	
  	
  	
  	
  $	
  curl	
  -­‐i	
  -­‐X	
  POST	
  http://127.0.0.1:8888/framework/bundles	
  -­‐H	
  "Content-­‐Type:	
  application/vnd.osgi.bundle"	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐-­‐data-­‐binary	
  "@/bundles/my-­‐bundle.jar"	
  
	
  	
  	
  	
  	
  	
  framework/bundle/14	
  
§  Get Bundle details
	
  	
  	
  	
  	
  	
  $	
  curl	
  http://127.0.0.1:8888/framework/bundle/14	
  
	
  	
  	
  	
  	
  	
  {"symbolicName":"my-­‐bundle","location":"cf3da656-­‐febd-­‐4e05-­‐aff6-­‐16e6a925f86d","id":14,"state":2,	
  
	
  	
  	
  	
  	
  	
  	
  "lastModified":1445457553149,"version":"1.1.1"}	
  
§  Start a Bundle
	
  	
  	
  	
  	
  	
  $	
  curl	
  -­‐i	
  -­‐X	
  PUT	
  http://127.0.0.1:8888/framework/bundle/14/state	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐H	
  "Content-­‐Type:	
  application/org.osgi.bundlestate+json"	
  -­‐-­‐data	
  '{"state":32}'	
  
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
REST Client APIs
§  Java Client
	
  
RestClientFactory	
  restClientFactory	
  =	
  …	
  //	
  From	
  Service	
  Registry	
  
RestClient	
  restClient	
  =	
  restClientFactory.createRestClient("http://127.0.0.1:8888");	
  
Collection<String>	
  serviceURIs	
  =	
  getRestClient().getServicePaths("(objectClass=*Resolver)");	
  
27
§  JavaScript Client
	
  
var	
  client	
  =	
  new	
  OSGiRestClient('http://127.0.0.1:8888');	
  
client.getBundles({	
  
	
  	
  success	
  :	
  function(res)	
  {	
  
	
  	
  	
  	
  //	
  do	
  something	
  with	
  res,	
  which	
  is	
  an	
  Array	
  of	
  bundle	
  URI	
  strings	
  
	
  	
  },	
  	
  
	
  	
  failure	
  :	
  function(errCode,	
  res)	
  {	
  
	
  	
  	
  	
  //	
  handle	
  failure	
  
}});	
  
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Portable Java Contracts
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Portable Java Contracts
§  Java packages that do not follow semantic versioning, e.g. from the JCP
§  What version range do you import?
§  ?
29
§  Solution: use osgi.contract
§  and Import-Package without version range!
Import-­‐Package:	
  javax.servlet,	
  javax.servlet.http	
  
Require-­‐Capability:	
  osgi.contract;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  filter:="(&(osgi.contract=JavaServlet)(version=3.0))"	
  
§  http://www.osgi.org/Specifications/ReferenceContract
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler

More Related Content

What's hot

Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerJustin Edelson
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM ICF CIRCUIT
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
 
Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)Vendic Magento, PWA & Marketing
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Alberto Lagna
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Diego Zuluaga
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5 connectwebex
 
Bndtools and Maven: A Brave New World - N Bartlett & T Ward
Bndtools and Maven: A Brave New World - N Bartlett & T WardBndtools and Maven: A Brave New World - N Bartlett & T Ward
Bndtools and Maven: A Brave New World - N Bartlett & T Wardmfrancis
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityPeter Lubbers
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play appsYevgeniy Brikman
 
Gruntwork Executive Summary
Gruntwork Executive SummaryGruntwork Executive Summary
Gruntwork Executive SummaryYevgeniy Brikman
 
I Love APIs 2015: Continuous Integration the Virtuous Cycle
I Love APIs 2015: Continuous Integration the Virtuous CycleI Love APIs 2015: Continuous Integration the Virtuous Cycle
I Love APIs 2015: Continuous Integration the Virtuous CycleApigee | Google Cloud
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?glynnormington
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataStacy London
 

What's hot (20)

Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM Maximize the power of OSGi in AEM
Maximize the power of OSGi in AEM
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
Node.js Workshop
Node.js WorkshopNode.js Workshop
Node.js Workshop
 
Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5
 
Bndtools and Maven: A Brave New World - N Bartlett & T Ward
Bndtools and Maven: A Brave New World - N Bartlett & T WardBndtools and Maven: A Brave New World - N Bartlett & T Ward
Bndtools and Maven: A Brave New World - N Bartlett & T Ward
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
HTML5 Real-Time and Connectivity
HTML5 Real-Time and ConnectivityHTML5 Real-Time and Connectivity
HTML5 Real-Time and Connectivity
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play apps
 
Gruntwork Executive Summary
Gruntwork Executive SummaryGruntwork Executive Summary
Gruntwork Executive Summary
 
I Love APIs 2015: Continuous Integration the Virtuous Cycle
I Love APIs 2015: Continuous Integration the Virtuous CycleI Love APIs 2015: Continuous Integration the Virtuous Cycle
I Love APIs 2015: Continuous Integration the Virtuous Cycle
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember DataIn The Trenches With Tomster, Upgrading Ember.js & Ember Data
In The Trenches With Tomster, Upgrading Ember.js & Ember Data
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
JCR and Sling Quick Dive
JCR and Sling Quick DiveJCR and Sling Quick Dive
JCR and Sling Quick Dive
 

Similar to OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler

Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGiDavid Bosschaert
 
BeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationBeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationStijn Van Den Enden
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
 
Service Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C ZiegelerService Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C Ziegelermfrancis
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGiCarsten Ziegeler
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on OpenstackOpen Stack
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Enginecatherinewall
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 BeMyApp
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsChris Bailey
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Managerconnectwebex
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's Howmrdon
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java3Pillar Global
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerNic Raboy
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformWSO2
 
Open Source, infrastructure as Code, Cloud Native Apps 2015
Open Source, infrastructure as Code, Cloud Native Apps 2015Open Source, infrastructure as Code, Cloud Native Apps 2015
Open Source, infrastructure as Code, Cloud Native Apps 2015Jonas Rosland
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopMark Rackley
 

Similar to OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler (20)

Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGi
 
BeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 SpecificationBeJUG Meetup - What's coming in the OSGi R7 Specification
BeJUG Meetup - What's coming in the OSGi R7 Specification
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 
Service Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C ZiegelerService Oriented Web Development with OSGi - C Ziegeler
Service Oriented Web Development with OSGi - C Ziegeler
 
Sightly_techInsight
Sightly_techInsightSightly_techInsight
Sightly_techInsight
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on Openstack
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris Bailey
 
London Hug 20/6 - Vault production
London Hug 20/6 - Vault productionLondon Hug 20/6 - Vault production
London Hug 20/6 - Vault production
 
HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3 HP Helion European Webinar Series ,Webinar #3
HP Helion European Webinar Series ,Webinar #3
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs Nodejs
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
The Web on OSGi: Here's How
The Web on OSGi: Here's HowThe Web on OSGi: Here's How
The Web on OSGi: Here's How
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
 
Cloud Platforms for Java
Cloud Platforms for JavaCloud Platforms for Java
Cloud Platforms for Java
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase Server
 
Rapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 PlatformRapid Application Development with WSO2 Platform
Rapid Application Development with WSO2 Platform
 
Open Source, infrastructure as Code, Cloud Native Apps 2015
Open Source, infrastructure as Code, Cloud Native Apps 2015Open Source, infrastructure as Code, Cloud Native Apps 2015
Open Source, infrastructure as Code, Cloud Native Apps 2015
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint Workshop
 

More from mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
Visualization of OSGi based Software Architectures in Virtual Reality - Lisa ...
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler

  • 1. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Enterprise R6 specs are out! David Bosschaert | Carsten Ziegeler | Adobe R&D
  • 2. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. About David Bosschaert davidb@apache.org §  R&D Adobe Ireland §  Co-chair OSGi Enterprise Expert Group §  ISO/IEC JTC1 SC38 Cloud Computing committee member for Ireland §  Apache Felix, Aries PMC member and committer §  … other opensource projects §  Cloud and embedded computing enthusiast 2
  • 3. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. About Carsten Ziegeler cziegeler@apache.org §  RnD Adobe Research Switzerland §  Member of the Apache Software Foundation §  VP of Apache Felix and Apache Sling §  OSGi Core Platform, OSGi Enterprise, OSGi IoT Expert Groups §  Member on the board of the OSGi Alliance §  Book / article author, technical reviewer, conference speaker 3
  • 4. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Agenda New and updated specs in OSGi Enterprise R6 §  Asynchronous Services and Promises §  Declarative Services §  Http Whiteboard §  REST Management §  Portable Contracts 4
  • 5. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Asynchronous Services and Promises
  • 6. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi Promises Javascript-style promises, can be used with Java 5 or later. §  Asynchronous chaining §  Very simple programming model Promises can be used outside of OSGi framework   Recommended implementation: https://svn.apache.org/repos/asf/aries/trunk/ async 6 public  class  PromisesTest  {            public  static  void  main(String...  args)  {                  System.out.println("Starting");                  takesLongToDo(21)                          .then(p  -­‐>  intermediateResult(p.getValue()))                          .then(p  -­‐>  finalResult(p.getValue()));                  System.out.println("Async  computation  kicked  off");          }            public  static  Promise<Long>  intermediateResult(Long  l)  {                  System.out.println("Intermediate  result:  "  +  l);                  return  takesLongToDo(l  *  2);          }            public  static  Promise<Void>  finalResult(Long  l)  {                  System.out.println("Computation  done.  Result:  "  +  l);                return  Promises.resolved(null);          }            public  static  Promise<Long>  takesLongToDo(long  in)  {  
  • 7. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Async Services §  Take an existing OSGi Service … §  … and make it async! §  Or use an async-optimized one §  Also works great with Remote Services §  Recommended implementation: https://svn.apache.org/repos/asf/aries/trunk/ async Normal service use:  TimeConsumingService  tcs  =  ...  //  from  Service  Registry    System.out.println("Invoking  Big  Task");    System.out.println("Result:  "  +  tcs.bigTask(1));    //  further  code   7 §  Async service use §  via mediator obtained from Async Service  TimeConsumingService  tcs  =  ...  //  from  Service  Registry    Async  async  =  ...  //  Async  Service  from  Service  Registry    TimeConsumingService  mediated  =  async.mediate(    tcs,  TimeConsumingService.class);        System.out.println("Invoke  Big  Task  Asynchronously...");    async.call(mediated.bigTask(1))        .then(p  -­‐>  bigTaskFinished(p.getValue()));    System.out.println("Big  Task  submitted");    
  • 8. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Declarative Services
  • 9. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Declarative Services §  Powerful component development §  Managing OSGi dynamics §  Integrates with Configuration Admin §  Support for metatype §  100% Pure Java
  • 10. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Configuration / Metatype 10 @Component public class GameControllerImpl implements GameController { public @interface Config { int easy_max() default 10; ... } private Config configuration; @Activate protected void activate(final Config config) { this.configuration = config; } @Designate( ocd = GameControllerImpl.Config.class ) @ObjectClassDefinition( name = "Game Configuration", description = "The configuration for the guessing game.") @AttributeDefinition(name="Easy", description="Maximum value for easy“)
  • 11. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Metatype based Configuration §  Apache Felix Web Console 11
  • 12. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Service References §  Lookup Strategy §  Event Strategy §  Field Strategy 12
  • 13. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Field Injection 13 @Reference private GameController game; @Reference private List<HighscoreService> highscores;
  • 14. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Runtime Service §  Introspection through DTOs §  Apache Felix Web Console Plugin
  • 15. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Declarative Services §  Supports Framework R6 §  Simple, efficient, but powerful
  • 16. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Http Whiteboard
  • 17. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Building a Web Application §  Servlets §  Resources §  Filters §  Listeners 17
  • 18. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Web Application 18 Servlet B /scores Servlet A /game Servlet C /* Servlet Filters Resources /*.js|*.css Request Listeners
  • 19. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Http Whiteboard 19 @Component( service = Servlet.class , scope = ServiceScope.PROTOTYPE, property={"osgi.http.whiteboard.servlet.pattern=/game"}) public class ServletA extends HttpServlet { @Component( service = Filter.class , scope = ServiceScope.PROTOTYPE, property={"osgi.http.whiteboard.filter.pattern=/*"}) public class MyFilter implements Filter { @Component( service = ServletRequestListener.class, property={"osgi.http.whiteboard.listener=true"}) public class MyListener implements ServletRequestListener {
  • 20. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Web Applications 20 Servlet B /scores Servlet A /game Servlet C /* Servlet Filters Resources /*.js|*.css Request Listeners Servlet Filters Request Listeners Resources /*.js|*.css Servlet X /foo Servlet Z /* Servlet Context <mygame> /play Servlet Context <app> /fooapp
  • 21. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Web Contexts 21 @Component( service = ServletContextHelper.class , property={"osgi.http.whiteboard.context.name=mygame", "osgi.http.whiteboard.context.path=/play"}) public class GameServletContext extends ServletContextHelper { @Component( service = Servlet.class , scope = ServiceScope.PROTOTYPE, property={"osgi.http.whiteboard.servlet.pattern=/foo", "osgi.http.whiteboard.context.select=mygame"}) public class ServletB extends HttpServlet {
  • 22. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Whiteboard Registrations §  ServletContextHelper §  Grouping §  Security §  Resource Handling §  Servlets §  Listeners §  Resources §  Filters §  Error Pages 22
  • 23. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Http Whiteboard Service §  Servlet 3.1 API §  Runtime Service §  DTOs §  Introspection §  Multipe Whiteboard Services possible §  Different endpoints / apps 23
  • 24. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. REST
  • 25. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. OSGi REST Management §  Manage remote OSGi Frameworks §  using REST/HTTP §  data in either JSON or XML §  Control Bundles §  install / start / stop / uninstall §  Inspect Service §  Control Start Levels §  Clients §  Raw §  Java §  JavaScript Implementation at http://git.eclipse.org/c/concierge/org.eclipse.concierge.git 25 Flaming June, by Frederic Lord Leighton, Wikipedia
  • 26. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. REST Management - Raw §  List Bundles            $  curl  http://127.0.0.1:8888/framework/bundles              ["framework/bundle/0","framework/bundle/1","framework/bundle/2","framework/bundle/3","framework/bundle/4"]   26 §  List Services            $  curl  'http0.0.1:8888/framework/services?filter=(objectClass=*Resolver)'              ["framework/service/15"]   §  Install a Bundle            $  curl  -­‐i  -­‐X  POST  http://127.0.0.1:8888/framework/bundles  -­‐H  "Content-­‐Type:  application/vnd.osgi.bundle"                              -­‐-­‐data-­‐binary  "@/bundles/my-­‐bundle.jar"              framework/bundle/14   §  Get Bundle details            $  curl  http://127.0.0.1:8888/framework/bundle/14              {"symbolicName":"my-­‐bundle","location":"cf3da656-­‐febd-­‐4e05-­‐aff6-­‐16e6a925f86d","id":14,"state":2,                "lastModified":1445457553149,"version":"1.1.1"}   §  Start a Bundle            $  curl  -­‐i  -­‐X  PUT  http://127.0.0.1:8888/framework/bundle/14/state                              -­‐H  "Content-­‐Type:  application/org.osgi.bundlestate+json"  -­‐-­‐data  '{"state":32}'  
  • 27. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. REST Client APIs §  Java Client   RestClientFactory  restClientFactory  =  …  //  From  Service  Registry   RestClient  restClient  =  restClientFactory.createRestClient("http://127.0.0.1:8888");   Collection<String>  serviceURIs  =  getRestClient().getServicePaths("(objectClass=*Resolver)");   27 §  JavaScript Client   var  client  =  new  OSGiRestClient('http://127.0.0.1:8888');   client.getBundles({      success  :  function(res)  {          //  do  something  with  res,  which  is  an  Array  of  bundle  URI  strings      },        failure  :  function(errCode,  res)  {          //  handle  failure   }});  
  • 28. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Portable Java Contracts
  • 29. © 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Portable Java Contracts §  Java packages that do not follow semantic versioning, e.g. from the JCP §  What version range do you import? §  ? 29 §  Solution: use osgi.contract §  and Import-Package without version range! Import-­‐Package:  javax.servlet,  javax.servlet.http   Require-­‐Capability:  osgi.contract;                          filter:="(&(osgi.contract=JavaServlet)(version=3.0))"   §  http://www.osgi.org/Specifications/ReferenceContract