SlideShare ist ein Scribd-Unternehmen logo
1 von 98
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

The Basic Concept Of IOC
The Basic Concept Of IOCThe Basic Concept Of IOC
The Basic Concept Of IOC
Carl Lu
 
Chapter 3 servlet & jsp
Chapter 3 servlet & jspChapter 3 servlet & jsp
Chapter 3 servlet & jsp
Jafar Nesargi
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
os890
 

Was ist angesagt? (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
 

Andere mochten auch

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
 
與太陽公公的七天對話
與太陽公公的七天對話與太陽公公的七天對話
與太陽公公的七天對話
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
 
Haben oder sein partizip 2
Haben oder sein   partizip 2Haben oder sein   partizip 2
Haben oder sein partizip 2
cgrobert83
 

Andere mochten auch (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
 

Ähnlich wie Introduction to OSGi (Tokyo JUG)

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

Ähnlich wie 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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Introduction to OSGi (Tokyo JUG)