SlideShare une entreprise Scribd logo
1  sur  98
Télécharger pour lire hors ligne
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
Introduction to OSGi (Tokyo JUG)
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...
Introduction to OSGi (Tokyo JUG)
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

Contenu connexe

Tendances

JavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesJavaOne 2011 - JVM Bytecode for Dummies
JavaOne 2011 - JVM Bytecode for DummiesCharles Nutter
 
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 programmingDima Malenko
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
Getting started with Java 9 modules
Getting started with Java 9 modulesGetting started with Java 9 modules
Getting started with Java 9 modulesRafael Winterhalter
 
Servlet and servlet life cycle
Servlet and servlet life cycleServlet and servlet life cycle
Servlet and servlet life cycleDhruvin Nakrani
 
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_presentationsourabh aggarwal
 

Tendances (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
 

En vedette

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 InternetMashable
 
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 SessionsApigee | Google Cloud
 
20161022 mt azure_handson
20161022 mt azure_handson20161022 mt azure_handson
20161022 mt azure_handsonSix 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 JournalismTed 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 biophysicschris 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
 
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 valuePublishing 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 DeliveryMMT Digital
 
Spines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integracionesSpines.me: automatizaciones e integraciones
Spines.me: automatizaciones e integracionesSpines
 

En vedette (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
 

Similaire à Introduction to OSGi (Tokyo JUG)

Iz Pack
Iz PackIz Pack
Iz PackInria
 
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 ColumnsJonathan 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 RubyGemsSadayuki 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 backendDavid Padbury
 
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 RightMariusz Nowak
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the CloudJames 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 ScalaYevgeniy 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, MysuruNithin Kumar,VVCE, Mysuru
 
Running Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkRunning Microservices on AWS Elastic Beanstalk
Running Microservices on AWS Elastic BeanstalkAmazon Web Services
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutesSerge 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
 
Новый InterSystems: open-source, митапы, хакатоны
Новый InterSystems: open-source, митапы, хакатоныНовый InterSystems: open-source, митапы, хакатоны
Новый InterSystems: open-source, митапы, хакатоныTimur Safin
 

Similaire à 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
 
Новый InterSystems: open-source, митапы, хакатоны
Новый InterSystems: open-source, митапы, хакатоныНовый InterSystems: open-source, митапы, хакатоны
Новый InterSystems: open-source, митапы, хакатоны
 

Dernier

Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 

Dernier (20)

Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 

Introduction to OSGi (Tokyo JUG)