SlideShare a Scribd company logo
1 of 46
Download to read offline
When is ‘optional’ really optional?
http://www.paremus.com
info@paremus.com

Tim Ward
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Who is Tim Ward?
@TimothyWard

• Senior Consulting Engineer and Architect at Paremus
• 5 years at IBM developing WebSphere Application Server
• Container Implementation experience with Java EE and OSGi, including Blueprint, JPA, EJB
and JTA

• OSGi Specification lead for JPA and Bytecode Weaving
• PMC member of the Apache Aries project
• Previous speaker at EclipseCon, Devoxx, Jazoon, JAX London, OSGi
Community Event...

• Author of Manning’s Enterprise OSGi in Action
• http://www.manning.com/cummins
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Optional Services

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Optional Services

• OSGi bundles communicate and collaborate using loosely coupled services
• Making a service dependency “optional” is pretty easy
OSGi API
ServiceReference<Foo> ref = ctx
.getServiceReference(Foo.class);

Declarative Services API
private Foo fooService;
@Reference(cardinality = OPTIONAL)
public synchronized void setFoo(Foo service) {
fooService = service;
}

if(ref != null) {
Foo service = ctx.getService(ref);
if(service != null) {
try {
...
public synchronized void unsetFoo(Foo service) {
} finally {
fooService = (fooService == service) ? null :
ctx.ungetService(ref);
service;
}
}
}
Copyright © 2005 - 2013 Paremus Ltd.
Oct 2013
} When is ‘optional’ really optional?
May not be reproduced by any means without express permission. All rights reserved.
Tuesday, 29 October 13
Difficulties with Optional Services

• The OSGi API and DS need null checks, which is messy
• Blueprint injects a proxy to the service - No more nulls!
Blueprint code

Blueprint XML

private Foo fooService;

<blueprint>

public void setFoo(Foo service) {
fooService = service;
}

<reference interface=com.paremus.Foo
id=”foo” availability=”optional”/>
<bean id=”bar” class=”com.paremus.Bar>
<property name=”foo” ref=”foo”>
</bean>
</blueprint>

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?
• Calling an unbound blueprint service proxy blocks up to the “timeout”. If no
service arrives then you get a ServiceUnavailableException

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?
• Calling an unbound blueprint service proxy blocks up to the “timeout”. If no
service arrives then you get a ServiceUnavailableException

• The default timeout is 5 minutes!!!

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?
• Calling an unbound blueprint service proxy blocks up to the “timeout”. If no
service arrives then you get a ServiceUnavailableException

• The default timeout is 5 minutes!!!
• You can decrease the timeout (but not to zero)

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?
• Calling an unbound blueprint service proxy blocks up to the “timeout”. If no
service arrives then you get a ServiceUnavailableException

• The default timeout is 5 minutes!!!
• You can decrease the timeout (but not to zero)
• You can use a ReferenceListener (this is horrible code, and risks deadlock)
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint is the winner! Or is it?

• At first inspection Blueprint looks much simpler
• But what happens when there is no backing service?
• Calling an unbound blueprint service proxy blocks up to the “timeout”. If no
service arrives then you get a ServiceUnavailableException

• The default timeout is 5 minutes!!!
• You can decrease the timeout (but not to zero)
• You can use a ReferenceListener (this is horrible code, and risks deadlock)
• You can inject a ReferenceList (like DS, but with the wrong cardinality)
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)
• Still have to cope with a ServiceUnavailableException

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)
• Still have to cope with a ServiceUnavailableException
• Allow users to specify a “default” service implementation

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)
• Still have to cope with a ServiceUnavailableException
• Allow users to specify a “default” service implementation
• This can be a nice way to avoid branches in your code

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)
• Still have to cope with a ServiceUnavailableException
• Allow users to specify a “default” service implementation
• This can be a nice way to avoid branches in your code
• Allows users to use a “null proxy” as the default implementation

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Blueprint 1.1 to the rescue

• Despite aiming to be “simple” Blueprint 1.0 sucked at optionality...
• Blueprint 1.1 proposes several fixes:
• Allow users to have an immediate timeout (no service, no waiting)
• Still have to cope with a ServiceUnavailableException
• Allow users to specify a “default” service implementation
• This can be a nice way to avoid branches in your code
• Allows users to use a “null proxy” as the default implementation
• Avoids making you an API provider
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption
• The API was not optional!

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption
• The API was not optional!
• OSGi does a great job of managing dependencies

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption
• The API was not optional!
• OSGi does a great job of managing dependencies
• Automatic dependency provisioning

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption
• The API was not optional!
• OSGi does a great job of managing dependencies
• Automatic dependency provisioning
• Prevent resolution unless dependencies are satisfied

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Is Service Optionality really ‘optional’

• The optionality so far has made an implicit assumption
• The API was not optional!
• OSGi does a great job of managing dependencies
• Automatic dependency provisioning
• Prevent resolution unless dependencies are satisfied
• Optional dependencies don’t have the same guarantees!
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Optional Packages

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath
• You need to be defensive - ClassNotFoundException could happen!

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath
• You need to be defensive - ClassNotFoundException could happen!
• Unusually for OSGi the factory pattern can be helpful

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath
• You need to be defensive - ClassNotFoundException could happen!
• Unusually for OSGi the factory pattern can be helpful
• Select the implementation with or without the dependency as appropriate

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath
• You need to be defensive - ClassNotFoundException could happen!
• Unusually for OSGi the factory pattern can be helpful
• Select the implementation with or without the dependency as appropriate
• Blueprint can use factories to create managed beans

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality

• Having optional package imports makes OSGi more like a normal classpath
• You need to be defensive - ClassNotFoundException could happen!
• Unusually for OSGi the factory pattern can be helpful
• Select the implementation with or without the dependency as appropriate
• Blueprint can use factories to create managed beans
• It can be useful to isolate dependent code in a handler class
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity
• Effectively you’re back to the complexity of a Java Classpath!

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity
• Effectively you’re back to the complexity of a Java Classpath!
• Possible approaches to consider:

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity
• Effectively you’re back to the complexity of a Java Classpath!
• Possible approaches to consider:
• Don’t make the API optional, have two bundles, one with the dependency
and the other one without

When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity
• Effectively you’re back to the complexity of a Java Classpath!
• Possible approaches to consider:
• Don’t make the API optional, have two bundles, one with the dependency
and the other one without

• If all you care about is ease of use then repackage the API
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Handling Package Optionality (2)

• Optional packages can be very hard to manage
• Having multiple optional dependencies can explode complexity
• Effectively you’re back to the complexity of a Java Classpath!
• Possible approaches to consider:
• Don’t make the API optional, have two bundles, one with the dependency
and the other one without

• If all you care about is ease of use then repackage the API
• Keep a careful internal dependency structure
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013
Thanks!

• For more about OSGi...
• Specifications at http://www.osgi.org
• Enterprise OSGi in Action
• http://www.manning.com/cummins

Questions?

http://www.paremus.com
info@paremus.com
When is ‘optional’ really optional?

Tuesday, 29 October 13

Copyright © 2005 - 2013 Paremus Ltd.
May not be reproduced by any means without express permission. All rights reserved.

Oct 2013

More Related Content

Similar to When is 'optional' really optional? - Tim Ward

Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...
Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...
Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...mfrancis
 
Adopting SystemVerilog/OVM
Adopting SystemVerilog/OVM Adopting SystemVerilog/OVM
Adopting SystemVerilog/OVM DVClub
 
Asynchronous Services – A promising future for OSGi - T Ward
Asynchronous Services – A promising future for OSGi - T WardAsynchronous Services – A promising future for OSGi - T Ward
Asynchronous Services – A promising future for OSGi - T Wardmfrancis
 
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...Amazon Web Services
 
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...Amazon Web Services
 
Applying Chaos Engineering to Build Resilient Serverless Applications
Applying Chaos Engineering to Build Resilient Serverless Applications Applying Chaos Engineering to Build Resilient Serverless Applications
Applying Chaos Engineering to Build Resilient Serverless Applications Emrah Samdan
 
5 Practices for Better, Cheaper, Faster Service Delivery
5 Practices for Better, Cheaper, Faster Service Delivery5 Practices for Better, Cheaper, Faster Service Delivery
5 Practices for Better, Cheaper, Faster Service DeliveryRob Schoening
 
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3Lari Hotari
 
DevOps: Getting Started with Puppet on Windows
DevOps: Getting Started with Puppet on WindowsDevOps: Getting Started with Puppet on Windows
DevOps: Getting Started with Puppet on WindowsRob Reynolds
 
Modern Software Practices - by Damon Poole
Modern Software Practices - by Damon PooleModern Software Practices - by Damon Poole
Modern Software Practices - by Damon PooleSynerzip
 
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 Building and Evolving a Dependency-Graph Based Microservice Architecture (La... Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...confluent
 
Kafka Summit 2019 Microservice Orchestration
Kafka Summit 2019 Microservice OrchestrationKafka Summit 2019 Microservice Orchestration
Kafka Summit 2019 Microservice Orchestrationlarsfrancke
 
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...Jeavon Leopold
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps StartupsDaniel Zivkovic
 
Winning strategies in Test Automation
Winning strategies in Test AutomationWinning strategies in Test Automation
Winning strategies in Test AutomationXBOSoft
 
How to be a Chef (Developer Edition)
How to be a Chef (Developer Edition)How to be a Chef (Developer Edition)
How to be a Chef (Developer Edition)Rodrigo Ayala
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Wardmfrancis
 

Similar to When is 'optional' really optional? - Tim Ward (20)

Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...
Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...
Just-in-time Java EE - provisioning runtimes for enterprise applications - Ja...
 
Adopting SystemVerilog/OVM
Adopting SystemVerilog/OVM Adopting SystemVerilog/OVM
Adopting SystemVerilog/OVM
 
Asynchronous Services – A promising future for OSGi - T Ward
Asynchronous Services – A promising future for OSGi - T WardAsynchronous Services – A promising future for OSGi - T Ward
Asynchronous Services – A promising future for OSGi - T Ward
 
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...
2nd Annual Start-up Launches with Dr. Werner Vogels (SPOT101) | AWS re:Invent...
 
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...
How Trend Micro Build their Enterprise Security Offering on AWS (SEC307) | AW...
 
Cloud Security: Ten Things
Cloud Security: Ten ThingsCloud Security: Ten Things
Cloud Security: Ten Things
 
Uberconf 10
Uberconf 10Uberconf 10
Uberconf 10
 
Applying Chaos Engineering to Build Resilient Serverless Applications
Applying Chaos Engineering to Build Resilient Serverless Applications Applying Chaos Engineering to Build Resilient Serverless Applications
Applying Chaos Engineering to Build Resilient Serverless Applications
 
5 Practices for Better, Cheaper, Faster Service Delivery
5 Practices for Better, Cheaper, Faster Service Delivery5 Practices for Better, Cheaper, Faster Service Delivery
5 Practices for Better, Cheaper, Faster Service Delivery
 
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
GGX 2014 Lari Hotari Modular Monoliths with Spring Boot and Grails 3
 
DevOps: Getting Started with Puppet on Windows
DevOps: Getting Started with Puppet on WindowsDevOps: Getting Started with Puppet on Windows
DevOps: Getting Started with Puppet on Windows
 
Modern Software Practices - by Damon Poole
Modern Software Practices - by Damon PooleModern Software Practices - by Damon Poole
Modern Software Practices - by Damon Poole
 
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 Building and Evolving a Dependency-Graph Based Microservice Architecture (La... Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
Building and Evolving a Dependency-Graph Based Microservice Architecture (La...
 
Kafka Summit 2019 Microservice Orchestration
Kafka Summit 2019 Microservice OrchestrationKafka Summit 2019 Microservice Orchestration
Kafka Summit 2019 Microservice Orchestration
 
Using SketchUp with openFoam
Using SketchUp with openFoamUsing SketchUp with openFoam
Using SketchUp with openFoam
 
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps Startups
 
Winning strategies in Test Automation
Winning strategies in Test AutomationWinning strategies in Test Automation
Winning strategies in Test Automation
 
How to be a Chef (Developer Edition)
How to be a Chef (Developer Edition)How to be a Chef (Developer Edition)
How to be a Chef (Developer Edition)
 
Asynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T WardAsynchronous OSGi – Promises for the Masses - T Ward
Asynchronous OSGi – Promises for the Masses - T Ward
 

More from mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Recently uploaded

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 

Recently uploaded (20)

Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 

When is 'optional' really optional? - Tim Ward

  • 1. When is ‘optional’ really optional? http://www.paremus.com info@paremus.com Tim Ward When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 2. Who is Tim Ward? @TimothyWard • Senior Consulting Engineer and Architect at Paremus • 5 years at IBM developing WebSphere Application Server • Container Implementation experience with Java EE and OSGi, including Blueprint, JPA, EJB and JTA • OSGi Specification lead for JPA and Bytecode Weaving • PMC member of the Apache Aries project • Previous speaker at EclipseCon, Devoxx, Jazoon, JAX London, OSGi Community Event... • Author of Manning’s Enterprise OSGi in Action • http://www.manning.com/cummins When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 3. Optional Services When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 4. Optional Services • OSGi bundles communicate and collaborate using loosely coupled services • Making a service dependency “optional” is pretty easy OSGi API ServiceReference<Foo> ref = ctx .getServiceReference(Foo.class); Declarative Services API private Foo fooService; @Reference(cardinality = OPTIONAL) public synchronized void setFoo(Foo service) { fooService = service; } if(ref != null) { Foo service = ctx.getService(ref); if(service != null) { try { ... public synchronized void unsetFoo(Foo service) { } finally { fooService = (fooService == service) ? null : ctx.ungetService(ref); service; } } } Copyright © 2005 - 2013 Paremus Ltd. Oct 2013 } When is ‘optional’ really optional? May not be reproduced by any means without express permission. All rights reserved. Tuesday, 29 October 13
  • 5. Difficulties with Optional Services • The OSGi API and DS need null checks, which is messy • Blueprint injects a proxy to the service - No more nulls! Blueprint code Blueprint XML private Foo fooService; <blueprint> public void setFoo(Foo service) { fooService = service; } <reference interface=com.paremus.Foo id=”foo” availability=”optional”/> <bean id=”bar” class=”com.paremus.Bar> <property name=”foo” ref=”foo”> </bean> </blueprint> When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 6. Blueprint is the winner! Or is it? When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 7. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 8. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 9. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? • Calling an unbound blueprint service proxy blocks up to the “timeout”. If no service arrives then you get a ServiceUnavailableException When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 10. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? • Calling an unbound blueprint service proxy blocks up to the “timeout”. If no service arrives then you get a ServiceUnavailableException • The default timeout is 5 minutes!!! When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 11. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? • Calling an unbound blueprint service proxy blocks up to the “timeout”. If no service arrives then you get a ServiceUnavailableException • The default timeout is 5 minutes!!! • You can decrease the timeout (but not to zero) When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 12. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? • Calling an unbound blueprint service proxy blocks up to the “timeout”. If no service arrives then you get a ServiceUnavailableException • The default timeout is 5 minutes!!! • You can decrease the timeout (but not to zero) • You can use a ReferenceListener (this is horrible code, and risks deadlock) When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 13. Blueprint is the winner! Or is it? • At first inspection Blueprint looks much simpler • But what happens when there is no backing service? • Calling an unbound blueprint service proxy blocks up to the “timeout”. If no service arrives then you get a ServiceUnavailableException • The default timeout is 5 minutes!!! • You can decrease the timeout (but not to zero) • You can use a ReferenceListener (this is horrible code, and risks deadlock) • You can inject a ReferenceList (like DS, but with the wrong cardinality) When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 14. Blueprint 1.1 to the rescue When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 15. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 16. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 17. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 18. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) • Still have to cope with a ServiceUnavailableException When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 19. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) • Still have to cope with a ServiceUnavailableException • Allow users to specify a “default” service implementation When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 20. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) • Still have to cope with a ServiceUnavailableException • Allow users to specify a “default” service implementation • This can be a nice way to avoid branches in your code When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 21. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) • Still have to cope with a ServiceUnavailableException • Allow users to specify a “default” service implementation • This can be a nice way to avoid branches in your code • Allows users to use a “null proxy” as the default implementation When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 22. Blueprint 1.1 to the rescue • Despite aiming to be “simple” Blueprint 1.0 sucked at optionality... • Blueprint 1.1 proposes several fixes: • Allow users to have an immediate timeout (no service, no waiting) • Still have to cope with a ServiceUnavailableException • Allow users to specify a “default” service implementation • This can be a nice way to avoid branches in your code • Allows users to use a “null proxy” as the default implementation • Avoids making you an API provider When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 23. Is Service Optionality really ‘optional’ When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 24. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 25. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption • The API was not optional! When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 26. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption • The API was not optional! • OSGi does a great job of managing dependencies When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 27. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption • The API was not optional! • OSGi does a great job of managing dependencies • Automatic dependency provisioning When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 28. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption • The API was not optional! • OSGi does a great job of managing dependencies • Automatic dependency provisioning • Prevent resolution unless dependencies are satisfied When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 29. Is Service Optionality really ‘optional’ • The optionality so far has made an implicit assumption • The API was not optional! • OSGi does a great job of managing dependencies • Automatic dependency provisioning • Prevent resolution unless dependencies are satisfied • Optional dependencies don’t have the same guarantees! When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 30. Optional Packages When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 31. Handling Package Optionality When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 32. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 33. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath • You need to be defensive - ClassNotFoundException could happen! When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 34. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath • You need to be defensive - ClassNotFoundException could happen! • Unusually for OSGi the factory pattern can be helpful When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 35. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath • You need to be defensive - ClassNotFoundException could happen! • Unusually for OSGi the factory pattern can be helpful • Select the implementation with or without the dependency as appropriate When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 36. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath • You need to be defensive - ClassNotFoundException could happen! • Unusually for OSGi the factory pattern can be helpful • Select the implementation with or without the dependency as appropriate • Blueprint can use factories to create managed beans When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 37. Handling Package Optionality • Having optional package imports makes OSGi more like a normal classpath • You need to be defensive - ClassNotFoundException could happen! • Unusually for OSGi the factory pattern can be helpful • Select the implementation with or without the dependency as appropriate • Blueprint can use factories to create managed beans • It can be useful to isolate dependent code in a handler class When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 38. Handling Package Optionality (2) When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 39. Handling Package Optionality (2) • Optional packages can be very hard to manage When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 40. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 41. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity • Effectively you’re back to the complexity of a Java Classpath! When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 42. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity • Effectively you’re back to the complexity of a Java Classpath! • Possible approaches to consider: When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 43. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity • Effectively you’re back to the complexity of a Java Classpath! • Possible approaches to consider: • Don’t make the API optional, have two bundles, one with the dependency and the other one without When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 44. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity • Effectively you’re back to the complexity of a Java Classpath! • Possible approaches to consider: • Don’t make the API optional, have two bundles, one with the dependency and the other one without • If all you care about is ease of use then repackage the API When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 45. Handling Package Optionality (2) • Optional packages can be very hard to manage • Having multiple optional dependencies can explode complexity • Effectively you’re back to the complexity of a Java Classpath! • Possible approaches to consider: • Don’t make the API optional, have two bundles, one with the dependency and the other one without • If all you care about is ease of use then repackage the API • Keep a careful internal dependency structure When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013
  • 46. Thanks! • For more about OSGi... • Specifications at http://www.osgi.org • Enterprise OSGi in Action • http://www.manning.com/cummins Questions? http://www.paremus.com info@paremus.com When is ‘optional’ really optional? Tuesday, 29 October 13 Copyright © 2005 - 2013 Paremus Ltd. May not be reproduced by any means without express permission. All rights reserved. Oct 2013