SlideShare a Scribd company logo
1 of 98
Download to read offline
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 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
 

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

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 Module System for Java Applications

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
 
React Basic and Advance || React Basic
React Basic and Advance   || React BasicReact Basic and Advance   || React Basic
React Basic and Advance || React Basicrafaqathussainc077
 

Similar to Introduction to OSGi Module System for Java Applications (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

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
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
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 

Recently uploaded (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
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
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 

Introduction to OSGi Module System for Java Applications