SlideShare a Scribd company logo
Introduction to OSGi
Neil Bartlett –   2009 12 23
❶
Brief Intro to OSGi
OSGi: The Module
System for Java
Standard Java


JARs are Deployment
Units
                       ABC.JAR
They are Not Modules
What’s Missing?

Meaningful name

Version

Vendor
                  ABC.JAR
Exports

Dependencies
Dependencies

JARs do have dependencies

They are implicit.

A dependency is an assumption.

“I assume module X (version Y) is on the
classpath. If not I will crash and burn.”
Module = “Bundle”
Just a JAR + Metadata

Meaningful name

Version

Vendor
                  org.foo.mylib
                  Manifest-Version: 1.0


Exports
                  Bundle-SymbolicName: com.mylib
                  Bundle-Name: My Library Bundle
                  Bundle-Vendor: Neil Bartlett
                  Bundle-Version: 1.0.0
                  Import-Package: javax.swing, org.w3c.dom
                  Export-Package: com.mylib1.ui;version=“1.0.0”,
                    com.mylib1.util;version=“1.0.0”
                  Bundle-RequiredExecutionEnvironment: J2SE-1.5

Dependencies
MANIFEST.MF
Manifest-Version: 1.0
Bundle-SymbolicName: com.mylib
Bundle-Name: My Library Bundle
Bundle-Vendor: Neil Bartlett
Bundle-Version: 1.0.0
Import-Package: javax.swing, org.w3c.dom
Export-Package: com.mylib.ui;version=“1.0.0”,
  com.mylib.util;version=“1.0.0”
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Works Outside OSGi
Dependency Graphs
Imports..... and Exports


              }   {
com.foo.bar            com.mylib

javax.swing           com.mylib.ui

org.wibble            com.mylib.util
Package Resolution


             com.foo.bar
                           A
Package Resolution


    com.foo.bar   com.foo.bar
B                               A
Package Resolution


    com.foo.bar   com.foo.bar
B                               A
Versioned Dependency


             com.foo.bar
             [1.2.0,1.4.0)   A
Versioned Dependency


    com.foo.bar   com.foo.bar
B      1.4.5      [1.2.0,1.4.0)   A
Versioned Dependency


B
    com.foo.bar
       1.4.5

                  ✘   com.foo.bar
                      [1.2.0,1.4.0)   A
Versioned Dependency


     com.foo.bar   com.foo.bar
B’     1.3.12      [1.2.0,1.4.0)   A
Versioned Dependency


     com.foo.bar   com.foo.bar
B’     1.3.12      [1.2.0,1.4.0)   A
Side-by-Side Versions


     com.foo.bar   com.foo.bar
B                                  X
        1.4.5      [1.4.0,1.5.0)



     com.foo.bar   com.foo.bar
B’                                 Y
       1.3.12      [1.2.0,1.4.0)
Side-by-Side Versions


     com.foo.bar   com.foo.bar
B                                  X
        1.4.5      [1.4.0,1.5.0)



     com.foo.bar   com.foo.bar
B’                                 Y
       1.3.12      [1.2.0,1.4.0)
How it Works
Bundle-SymbolicName: com.mylib1
Bundle-Version: 1.2.0
Export-Package:
  com.mylib1.ui;version=“1.2.0”,
  com.mylib1.util;version=“1.2.0”



Bundle-SymbolicName: com.app1
Bundle-Version: 2.2.3.alpha
Import-Package:
  com.mylib1.ui;version=“[1.2.0,1.3.0)”
  com.mylib1.util;version=“[1.2.0,1.3.0)”
Private Internals


Exports must be stated explicitly

Packages not listed in “Export-Package” are not
available to other bundles
Versions
Standard numbering scheme with well-defined
ordering.

major.minor.micro.qualifier

First three numeric, last alphanumeric

Eg 1.0.0.beta2

Unspecified ! 0.0.0
Version Ranges
Open, closed or implicit

[1.0.0, 2.0.0] ! 1.0.0 ! version ! 2.0.0

[1.0.0, 2.0.0) ! 1.0.0 ! version < 2.0.0

    Informally “1.*”

1 ! [1.0.0, ")

Unspecified ! [0.0.0, ")
Our Promise*: No More
NoClassDefFoundErrors!
Dynamic!
Dynamic

Install Bundles

Update Bundles

Uninstall Bundles

... all “on the fly”
❷
OSGi in Infrastructure
OSGi is the King of
Infrastructure
All Major JEE Application Servers use OSGi

Most ESBs use OSGi

2 of 3 Open Source IDEs use OSGi

Even Build Tools (Maven and Hudson) Moving to
OSGi
Where are the
“Business” Apps?
OSGi for Applications
Until Recently, Application Servers used OSGi “on
the inside”

Now SpringSource dm Server, Paremus Infiniflow,
WAS 7, GlassFish v3 and WebLogic DM all expose
OSGi

Application Developers can Finally Deploy OSGi
bundles to their OSGi servers!
Why is OSGi Attractive
for Application
Development?
❸
The Failure of Object
Oriented Programming
OOP Was Meant to
Enable Reuse
HARDER THAN
 EXPECTED!
“Building a new system
would be a snap. Just get a
  few classes, bunch them
      together... and voila!”
                  – Peter Kriens
What Went Wrong??
Tight Coupling
COMPLEXITY
Classes coupled to
Other Classes
Packages coupled to
Other Packages
Packages coupled to
JARs
JARs coupled to More
JARs
Which are coupled to
yet more JARs...
Dependency Injection?
DI Frameworks


Provide “Late Binding” of Implementations to
Interfaces

But Not Late Enough!
Spring Framework


<bean id="MyBean" class="org.example.MyBean">
	 <property name="dataSource" ref="OracleDataSource"/>
</bean>

<bean id="OracleDataSource" class="...">
	 <property name="..." />
</bean>
Traditional Spring
Static DI


“Beans” are wired together once, at start-up

They cannot be rewired

Limited support for optional dependencies
FRAGILE
One Solution: Give Up!
Reuse is Hard, So Don’t
Try!
Leave Code in One
Place, and Call
Remotely
(...also known as “SOA”)
❹
Component Oriented
Programming
What is a
“Component”?
The Usual Analogy:
LEGO?
Not Really...


Dead Lumps of Plastic

Many Copies of the Same Thing
BIOLOGY
BIOLOGY
Dr Alan Kay

Inventor of Object
Oriented Programming
& Smalltalk

“I thought of objects
being like biological
cells...”
Components


Do Something, or Provide Something

Aware of and Adapt to their Environment

Have a Life-cycle (birth to death).
“Do” Something

Open a socket

Monitor a device

Poll a queue

Display a GUI

.... etc.
“Provide” Something


Publish a Service – may be used by other
components
The “Environment”


The “Environment” of a Component means:

 Services provided by other Components

 Resources, Devices, Network etc
Components Adapt to
their Environment
Good Environment


Most services are available

The component flourishes
Harsh Environment


Some non-essential services are unavailable

Component adapts and survives
Very Harsh Environment


Essential services are unavailable

Component hibernates or dies
Composition


Components Use other Components

In this way, whole Systems are Composed

Resilient, Elastic Systems
❺
Developing
Components
Services

Components provide Services

Registered with a Service Registry

Services are POJOs!

Looked up by Java interface name
In-Process SOA
                       Service
                       Broker




                Find
                                 Register


                                 Service
                                 Contract
                                            Service
 Service                                    Provider
Consumer
           Client        Bind     Service
Plain Old Java Objects
The Glue Between
Components
Dynamics Make
Services Slippery
We Don’t Code Directly
against Services (it’s too hard!)
Let a Framework
Handle the Hard Stuff
Choice of Frameworks

Declarative Services (DS)

Blueprint (from Spring-DM)

iPOJO

Guice Peaberry
Framework Interop

Perfect Interoperability of these Frameworks!

No need to choose “The One True Framework”

Use 3rd-party components implemented with
other frameworks.
Examining DS


Dynamic dependency injection (DI)

... and “uninjection”
Starting Point...
import javax.sql.DataSource;

public class DbMailbox implements Mailbox {

    private DataSource dataSource;

    void setDataSource(DataSource ds) { /*...*/ }
    void unsetDataSource(DataSource ds) { /*...*/ }

    public long[] getAllMessages() {
       // ...
    }
}
Starting Point...
                                          No OSGi API Used
import javax.sql.DataSource;

public class DbMailbox implements Mailbox {

    private DataSource dataSource;

    void setDataSource(DataSource ds) { /*...*/ }
    void unsetDataSource(DataSource ds) { /*...*/ }

    public long[] getAllMessages() {
       // ...
    }
}
Starting Point...
                                             No OSGi API Used
import javax.sql.DataSource;

public class DbMailbox implements Mailbox {

    private DataSource dataSource;

    void setDataSource(DataSource ds) { /*...*/ }
    void unsetDataSource(DataSource ds) { /*...*/ }

    public long[] getAllMessages() {
       // ...
    }
}                                    JavaBeans Style => Testable
Make it a Component
import javax.sql.DataSource;

@Component
public class DbMailbox implements Mailbox {

    private DataSource dataSource;

    @Reference(service = DataSource.class)
    void setDataSource(DataSource ds) { /*...*/ }
    void unsetDataSource(DataSource ds) { /*...*/ }

    public long[] getAllMessages() {
       // ...
    }
}
Annotations


@Component – Create a Component of this type.

  Service is automatically published

@Reference – Use the specified service
Add Life-cycle

@Activate
void start() {
   thread = new Thread();
   thread.start();
}

@Deactivate
void stop() {
   thread.interrupt();
}
Make it Configurable
@Activate
void start(Map<String, Object> configuration) {
   thread = new Thread();
   thread.start();
}

@Modified
void modify(Map<String, Object> newConfiguration) {
   // This method is optional
}

@Deactivate
void stop() {
   thread.interrupt();
}
Optional Reference

@Reference(service = LogService.class, optional = true)
void setLogService(LogService log) { /* ... */ }
void unsetLogService(LogService log) { /* ... */ }
Multiple Reference

@Reference(service = MailboxListener.class, multiple = true)
void addListener(MailboxListener listener) { /* ... */ }
void removeListener(MailboxListener listener) { /* ... */ }
❻
DEMO
Mailbox Reader




Mailbox




           Fixed
          Mailbox
Mailbox Reader




                           MailboxListener




Mailbox




            Growing
            Mailbox
Mailbox Reader




                                MailboxListener




  Mailbox




                 Trades
                                                   Order Entry
                 Mailbox




                                            Matching
EventHandler
                                            Service




                                                  Trade Matching
               Event Broker
                                                      Engine




                   EventAdmin

More Related Content

What's hot

JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
Charles Nutter
 
Java servlets
Java servletsJava servlets
Java servlets
yuvarani p
 
Different Types of Containers in Spring
Different Types of Containers in Spring Different Types of Containers in Spring
Different Types of Containers in Spring
Sunil kumar Mohanty
 
Tornado - different Web programming
Tornado - different Web programmingTornado - different Web programming
Tornado - different Web programming
Dima Malenko
 
Java Programming - 08 java threading
Java Programming - 08 java threadingJava Programming - 08 java threading
Java Programming - 08 java threading
Danairat Thanabodithammachari
 
JDK1.6
JDK1.6JDK1.6
JDK1.6
india_mani
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
Oliver Busse
 
JVM
JVMJVM
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
Rafael Winterhalter
 
Servlet and servlet life cycle
Servlet and servlet life cycleServlet and servlet life cycle
Servlet and servlet life cycle
Dhruvin Nakrani
 
Tomcat + other things
Tomcat + other thingsTomcat + other things
Tomcat + other things
Aravindharamanan S
 
JAVA Servlets
JAVA ServletsJAVA Servlets
JAVA Servlets
deepak kumar
 
Tornadoweb
TornadowebTornadoweb
Tornadoweb
Osman Yuksel
 
Java Enterprise Edition
Java Enterprise EditionJava Enterprise Edition
Java Enterprise Edition
Francesco Nolano
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
PROIDEA
 
The Basic Concept Of IOC
The Basic Concept Of IOCThe Basic Concept Of IOC
The Basic Concept Of IOCCarl Lu
 
Chapter 3 servlet & jsp
Chapter 3 servlet & jspChapter 3 servlet & jsp
Chapter 3 servlet & jspJafar Nesargi
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpikeos890
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentation
sourabh aggarwal
 

What's hot (20)

JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for Dummies
 
Java servlets
Java servletsJava servlets
Java servlets
 
Different Types of Containers in Spring
Different Types of Containers in Spring Different Types of Containers in Spring
Different Types of Containers in Spring
 
Tornado - different Web programming
Tornado - different Web programmingTornado - different Web programming
Tornado - different Web programming
 
Java Programming - 08 java threading
Java Programming - 08 java threadingJava Programming - 08 java threading
Java Programming - 08 java threading
 
JDK1.6
JDK1.6JDK1.6
JDK1.6
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
JVM
JVMJVM
JVM
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modules
 
Java adv
Java advJava adv
Java adv
 
Servlet and servlet life cycle
Servlet and servlet life cycleServlet and servlet life cycle
Servlet and servlet life cycle
 
Tomcat + other things
Tomcat + other thingsTomcat + other things
Tomcat + other things
 
JAVA Servlets
JAVA ServletsJAVA Servlets
JAVA Servlets
 
Tornadoweb
TornadowebTornadoweb
Tornadoweb
 
Java Enterprise Edition
Java Enterprise EditionJava Enterprise Edition
Java Enterprise Edition
 
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
Sprytniejsze testowanie kodu java ze spock framework (zaawansowane techniki) ...
 
The Basic Concept Of IOC
The Basic Concept Of IOCThe Basic Concept Of IOC
The Basic Concept Of IOC
 
Chapter 3 servlet & jsp
Chapter 3 servlet & jspChapter 3 servlet & jsp
Chapter 3 servlet & jsp
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentation
 

Viewers also liked

A Digital Bill of Rights for the Internet, by the Internet
A Digital Bill of Rights for the Internet, by the InternetA Digital Bill of Rights for the Internet, by the Internet
A Digital Bill of Rights for the Internet, by the Internet
Mashable
 
Student equity: policy and practice
Student equity: policy and practiceStudent equity: policy and practice
Student equity: policy and practice
Australian Centre for Student Equity and Success
 
I Love APIs Europe 2015: Business Sessions
I Love APIs Europe 2015: Business SessionsI Love APIs Europe 2015: Business Sessions
I Love APIs Europe 2015: Business Sessions
Apigee | Google Cloud
 
20161022 mt azure_handson
20161022 mt azure_handson20161022 mt azure_handson
20161022 mt azure_handson
Six Apart
 
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
AgileTaichung
 
ProcessingとMaxMSPの連携
ProcessingとMaxMSPの連携ProcessingとMaxMSPの連携
ProcessingとMaxMSPの連携
Aki Sato
 
Projeto: Uma careta para as drogas!
Projeto: Uma careta para as drogas!Projeto: Uma careta para as drogas!
Projeto: Uma careta para as drogas!Ivonilde Lima
 
Three Hurrahs for Hyperlocal Journalism
Three Hurrahs for Hyperlocal JournalismThree Hurrahs for Hyperlocal Journalism
Three Hurrahs for Hyperlocal Journalism
Ted Mann
 
與太陽公公的七天對話
與太陽公公的七天對話與太陽公公的七天對話
與太陽公公的七天對話
YesYou GotIt
 
Guia de estudio segundo parcial (tercera parte)
Guia de estudio segundo parcial (tercera parte)Guia de estudio segundo parcial (tercera parte)
Guia de estudio segundo parcial (tercera parte)Ariel Aranda
 
variational bayes in biophysics
variational bayes in biophysicsvariational bayes in biophysics
variational bayes in biophysics
chris wiggins
 
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
Paola Furlanetto
 
How OFTEN to POST on Your Blog
How OFTEN to POST on Your BlogHow OFTEN to POST on Your Blog
How OFTEN to POST on Your Blog
Julie Sylvia Kalungi
 
Metrics that matter: Making the business case that documentation has value
Metrics that matter: Making the business case that documentation has valueMetrics that matter: Making the business case that documentation has value
Metrics that matter: Making the business case that documentation has value
Publishing Smarter
 
Haben oder sein partizip 2
Haben oder sein   partizip 2Haben oder sein   partizip 2
Haben oder sein partizip 2cgrobert83
 
WikiPathways: how open source and open data can make omics technology more us...
WikiPathways: how open source and open data can make omics technology more us...WikiPathways: how open source and open data can make omics technology more us...
WikiPathways: how open source and open data can make omics technology more us...
Chris Evelo
 
Agile & Lean for Project Delivery
Agile & Lean for Project DeliveryAgile & Lean for Project Delivery
Agile & Lean for Project Delivery
MMT Digital
 
Spines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integracionesSpines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integraciones
Spines
 

Viewers also liked (18)

A Digital Bill of Rights for the Internet, by the Internet
A Digital Bill of Rights for the Internet, by the InternetA Digital Bill of Rights for the Internet, by the Internet
A Digital Bill of Rights for the Internet, by the Internet
 
Student equity: policy and practice
Student equity: policy and practiceStudent equity: policy and practice
Student equity: policy and practice
 
I Love APIs Europe 2015: Business Sessions
I Love APIs Europe 2015: Business SessionsI Love APIs Europe 2015: Business Sessions
I Love APIs Europe 2015: Business Sessions
 
20161022 mt azure_handson
20161022 mt azure_handson20161022 mt azure_handson
20161022 mt azure_handson
 
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
Agile Tour Taichung 201601 從趨勢科技的agile之旅談改變的導入
 
ProcessingとMaxMSPの連携
ProcessingとMaxMSPの連携ProcessingとMaxMSPの連携
ProcessingとMaxMSPの連携
 
Projeto: Uma careta para as drogas!
Projeto: Uma careta para as drogas!Projeto: Uma careta para as drogas!
Projeto: Uma careta para as drogas!
 
Three Hurrahs for Hyperlocal Journalism
Three Hurrahs for Hyperlocal JournalismThree Hurrahs for Hyperlocal Journalism
Three Hurrahs for Hyperlocal Journalism
 
與太陽公公的七天對話
與太陽公公的七天對話與太陽公公的七天對話
與太陽公公的七天對話
 
Guia de estudio segundo parcial (tercera parte)
Guia de estudio segundo parcial (tercera parte)Guia de estudio segundo parcial (tercera parte)
Guia de estudio segundo parcial (tercera parte)
 
variational bayes in biophysics
variational bayes in biophysicsvariational bayes in biophysics
variational bayes in biophysics
 
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
ASI 07 - How Auditing Radio campaigns helps Improve Planning and Buying Effic...
 
How OFTEN to POST on Your Blog
How OFTEN to POST on Your BlogHow OFTEN to POST on Your Blog
How OFTEN to POST on Your Blog
 
Metrics that matter: Making the business case that documentation has value
Metrics that matter: Making the business case that documentation has valueMetrics that matter: Making the business case that documentation has value
Metrics that matter: Making the business case that documentation has value
 
Haben oder sein partizip 2
Haben oder sein   partizip 2Haben oder sein   partizip 2
Haben oder sein partizip 2
 
WikiPathways: how open source and open data can make omics technology more us...
WikiPathways: how open source and open data can make omics technology more us...WikiPathways: how open source and open data can make omics technology more us...
WikiPathways: how open source and open data can make omics technology more us...
 
Agile & Lean for Project Delivery
Agile & Lean for Project DeliveryAgile & Lean for Project Delivery
Agile & Lean for Project Delivery
 
Spines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integracionesSpines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integraciones
 

Similar to Introduction to OSGi (Tokyo JUG)

basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
sujatha629799
 
Griffon Presentation
Griffon PresentationGriffon Presentation
Griffon Presentation
Kelly Robinson
 
Iz Pack
Iz PackIz Pack
Iz Pack
Inria
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
bobmcwhirter
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Jonathan Fine
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
Sadayuki Furuhashi
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
David Padbury
 
OSGi bootcamp - part 1
OSGi bootcamp - part 1OSGi bootcamp - part 1
OSGi bootcamp - part 1
Jan Willem Janssen
 
React native
React nativeReact native
Kotlin. One language to dominate them all.
Kotlin. One language to dominate them all.Kotlin. One language to dominate them all.
Kotlin. One language to dominate them all.
Daniel Llanos Muñoz
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
Mariusz Nowak
 
TorqueBox
TorqueBoxTorqueBox
TorqueBox
bobmcwhirter
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the Cloud
James Thomas
 
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
Yevgeniy Brikman
 
Java programming material for beginners by Nithin, VVCE, Mysuru
Java programming material for beginners by Nithin, VVCE, MysuruJava programming material for beginners by Nithin, VVCE, Mysuru
Java programming material for beginners by Nithin, VVCE, Mysuru
Nithin Kumar,VVCE, Mysuru
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
Ioannis Canellos
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic Beanstalk
Amazon Web Services
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
Serge Huber
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
 
React Basic and Advance || React Basic
React Basic and Advance   || React BasicReact Basic and Advance   || React Basic
React Basic and Advance || React Basic
rafaqathussainc077
 

Similar to Introduction to OSGi (Tokyo JUG) (20)

basic_java.ppt
basic_java.pptbasic_java.ppt
basic_java.ppt
 
Griffon Presentation
Griffon PresentationGriffon Presentation
Griffon Presentation
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
 
Plugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGemsPlugin-based software design with Ruby and RubyGems
Plugin-based software design with Ruby and RubyGems
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
OSGi bootcamp - part 1
OSGi bootcamp - part 1OSGi bootcamp - part 1
OSGi bootcamp - part 1
 
React native
React nativeReact native
React native
 
Kotlin. One language to dominate them all.
Kotlin. One language to dominate them all.Kotlin. One language to dominate them all.
Kotlin. One language to dominate them all.
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
 
TorqueBox
TorqueBoxTorqueBox
TorqueBox
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the Cloud
 
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
 
Java programming material for beginners by Nithin, VVCE, Mysuru
Java programming material for beginners by Nithin, VVCE, MysuruJava programming material for beginners by Nithin, VVCE, Mysuru
Java programming material for beginners by Nithin, VVCE, Mysuru
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic Beanstalk
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
React Basic and Advance || React Basic
React Basic and Advance   || React BasicReact Basic and Advance   || React Basic
React Basic and Advance || React Basic
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 

Introduction to OSGi (Tokyo JUG)