Transcript
Page 1: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

1

Why OSGi matters for Enterprise Java Infrastructures

Santosh Kumar

Page 2: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

2

Agenda

• Introduction to OSGi

• Why is OSGi technology important

• How OSGi matters for Infrastructure

• OSGi Enterprise spec

• OSGi in Cloud

• Q&A

Page 3: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

3

Take away from this session• Overall understanding to view OSGi as THE

module system for Java

• Understanding of what this OSGi Enterprise spec is all about

• Should be able to start experimenting with it themselves using one of the available implementations

OSGiKey for Infrastructure

Page 4: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

4

What is OSGi

OSGi - Open Services Gateway initiative– Technology is the dynamic module system for

Java™.– Provides a service-oriented, component-based

environment for developers– Offers standardized ways to manage the software

lifecycle.– Support for building modular

dynamic and extensible systemsOSGi

Consider as Universal Middleware

Page 5: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

5

Lets put things in perspective…

The Complexity & Scale of Software requires:

1. Service Oriented

As complexity and size increases Need for higher level of abstract programming

Page 6: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

6

Why OSGi?2. Modularity

• Java Platform Modularity– Classes encapsulate data– Packages contain classes– Jars contain packages

• Class visibility:private, package private, protected,public

• No “jar scoped” access modifiers.• No means for a jar to declare its dependencies.• No versioning.• Jars have no modularization characteristics

– At runtime, global classpath to search

Jar as unit does not have modularity

Page 7: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

7

Why OSGi?

3. Versioning– Enterprise Apps have isolated

classpaths but… – Across apps - each archive typically

contains all the libraries required by the application

Common libraries/frameworks get installed with each application

Multiple copies of libraries in memory

– Within apps - 3rd party libraries consume other libraries leading to version conflicts

p lankto n.v1

p lankto n.v2

Page 8: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

8

Overall Architecture

= serviceHardware

Driver Driver Driver

Operating System

Java

OSGi

Fram

eworkModule (Bundle)

OSGi as module system

Page 9: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

9

OSGi –The Dynamic Module System for Java

OSGi specifies a modular architecture for dynamic component based systems

• Execution Environment

• Module Layer

• Life Cycle Layer

• Service LayerOSGi introduces

Bundles

as modules

Page 10: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

10

Module layer

• Bundle - unit of module

• Packaged as JAR - classes + manifest + resources

- Versioning support

- Dependency specification

- JAR with MIME type : application/vnd.osgi.bundle

• OSGi enforces modularity in bundles

Bundle as module represents separation of concerns

Page 11: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

11

OSGi ClassLoading

• Each bundle has its own classloader / classpath. More efficient for large systems

• Multiple versions of bundles supported concurrently

Page 12: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

12

Service Layer• Defines a publish/find/bind service model

– Fully dynamic– Intra VM– service registry

• A service is a normal Java object published under one or more Java interfaces with additional metadata with the service registry

• Bundles can register services, search for them, or receive notifications when their registration state changes.

• Service lifecycle is highly dynamic– Service may be published or unpublished at any time

Page 13: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

13

Service Orientation

Service ProviderService Provider

Service RegistryService Registry

Service ConsumerService Consumer

Service Description

publish find

interact

OSGi intrinsically supports SOA

Page 14: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

14

Life Cycle

• API to control the security and life cycle operations of bundles

• Install, uninstall, start, stop bundles dynamic without restarting applications

Page 15: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

15

What does the OSGi Framework provide?

• Horizontal Software Integration Platform

• Component Oriented Architecture– Module (Bundles)

– Package sharing and version management

– Life-cycle management and notification (events)

• Service Oriented Architecture– Publish/find/bind intra-VM service model

– Life-cycle notification (events)

Page 16: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

16

Framework Features• Runs multiple applications and services

• Single VM instance

• Separate class loader per bundle

– Class loader network

– Independent namespaces

– Class sharing at the Java package level

• Lifecycle management of bundles

• Intra VM publish/find/bind service model

• Java Permissions to secure framework

Page 17: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

17

Where OSGi is used

• Equinox

– Reference implementation of core framework and various services

– Base runtime for all of Eclipse (rich client, server side and embedded)

• Felix - Ships with GlassFish

• Application servers : Websphere, JBoss etc

• SOA Virtualization Platform : TIBCO Active Matrix

widespread use in desktop and servers

Page 18: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

18

Does Enterprise Java need OSGi?• Current challenges

– Lots of Libraries To Manage

– Designed for Extensibility

– Dynamic Deployment, Uptime

– Well-defined coherent modules

– Simplify unit of reuse

Page 19: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

19

OSGI in Enterprise

• Integration of established Java Enterprise Edition technologies into an OSGi Environment

• Multiple, interoperable, dependency injection based component models

• Distributed service model for multiple service platforms and external heterogeneous systems

• Database persistence support

• Enterprise-class life cycle and configuration management

Page 20: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

20

OSGi Enterprise Spec V4.2• Brings Enterprise technologies and OSGi together - OSGi

Enterprise Expert Group (EEG)

• Using existing Java SE/EE specifications:

– JTA, JPA, JNDI, JMX, WebApps, SCA

– Framework integrates with the Java EE programming model

• Adds Spring-derived component model and dependency injection container – Blueprint Container

Embeded Desktop Enterprise

Page 21: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

21

What’s happening with OSGi EE

• Apache “Aries” - new Apache incubator project

– deliver set of pluggable Java components enabling an enterprise OSGi application programming model.

• Eclipse Enterprise Modules (“Gemini”)

– collection of subprojects, each of which is an implementation or integration of an enterprise-level technology

• Virgo - Dynamic Enterprise Application Platform

– provide a runtime platform for development of server-side enterprise applications

Page 22: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

22

Blueprint Components and Service

• Specifies a Dependency Injection container, standardizing established Spring conventions

• Specifies components can be wired together within a bundle

• Components can be published as services to the service registry

• Components configuration and dependencies injected them Blueprint component container ( part of the runtime environment)

• Configuration and dependencies declared in XML “module blueprint”

Page 23: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

23

Blueprint Components and Service

•Extended for OSGi: publishes and consumes components as OSGi services

• Blueprint standardizes the configuration metadata, and brings governance to the specification of the component model.

• Simplifies unit test outside either Java EE or OSGi r/t.

• The Blueprint DI container is a part of the server runtime (compared to Spring which is part of the application.)

dependencies injected

publishesservice

consumesservice

Blueprint managed bundle Blueprint managed bundle

Blueprint Components ( POJO)

Page 24: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

24

The Java Persistence API• JPA is a POJO based Object Relational Mapping Framework

– defines an API for persisting

objects into a Relational Database

– API for retrieving Objects

from the database

• JPA - rich API for mapping

arbitrarily complex objects to the underlying database tables

Page 25: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

25

The JPA Service Specification

An OSGi specification for making JPA work in an OSGi frameworkCore concepts:

> Persistence Bundle : An OSGi bundle containing managed classes a persistence descriptor and a Meta-Persistence manifest header

> Meta-Persistence header : – A header that defines the locations of persistence descriptors in a bundle

> EntityManagerFactory service : An EntityManagerFactory available as an OSGi service

> Persistence Client : A bundle that makes use of an EntityManagerFactory service.

> EntityManagerFactory builder : A factory for incomplete persistence units

Page 26: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

26

Remote Services

• Extending the OSGi framework to configure existing distributed computing software systems

• Describes how to distribute OSGi services

• Ability for OSGi services to invoke services running in other JVMs

• Support enterprise application topologies for availability, reliability, and scalability

Enables Distributed OSGi

Page 27: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

27

Web Applications Specification• Defines how to support the Servlet 2.5 and

JavaServer Pages (JSP) 2.1 specifications in OSGi

• Provide deployment of existing and new web applications to Servlet containers operating on the OSGi service platform

• Specification defines the Web Application Bundle, a bundle that performs the same role as the WAR in Java EE

Page 28: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

28

Web Applications Specification• WAB uses the OSGi life cycle and class/resource loading rules

instead of the standard Java EE environment

• Details web application packaged as a WAR may be installed into an OSGi Service Platform

Page 29: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

29

SCA Configuration

• Provides an assembly model for distributed applications and systems using a service oriented architecture

• Components that are assembled can be written in different technologies for example Java EE, BPEL, C++, and scripting languages

• Execute on different machines, and can communicate through different protocols and technologies

• Declarative application metadata to enable reflection of an SCA component type definition

Page 30: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

30

SCA Configuration

• Remote Services specification provides an extendable model for configuration types

• SCA Configuration Type Specification defines such a configuration type

Page 31: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

31

OSGi on CloudInvestigation underway to find possibility of using OSGi in the

context of cloud computing (RFP 133 Cloud Computing)

IaaSInfrastructure as a

Service

PaaSPlatform as a Service

SaaSSoftware as a Service

Page 32: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

32

OSGi on Cloud

Value of OSGi : ability to address the following

- Dependency management

- Provisioning/Configuration (Remote services API)

- Extensible, modular system

- Dynamic replacement of components

Page 33: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

33

Conclusion

Major Java infrastructures support OSGi modular approach

support apps designed & deployed as bundles

Page 34: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

34

Summary

OSGiKey for Infrastructure OSGi

Consider as Universal Middleware

Bundle as module represents separation of concerns

OSGi increasingly relevant to Enterprise OSGi and Cloud

Synergy having interesting possibilities

Page 35: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

35

References• http://www.eclipsezone.com/articles/extensions-vs-service

s/

• OSGi Core Spec

• OSGi Enterprise Spec

• http://www.osgi.org

Page 36: OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune, India]

36

Thank YouSantosh [email protected]

That’s all folks

Q/A


Recommended