SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Adding Modularity Afterward with
Embedded OSGi
Adding Modularity Afterward with
Embedded OSGi
About Me – Bob Paulin
• @bobpaulin/bob@bobpaulin.com/http://bobpaulin.com
●
Independent Consultant
• Web Centric Platforms
• Business Enablement
• Continuous Delivery
Chicago Java Users Group (CJUG) Community Leader
• Need a Mentor? mentors@cjug.org
• Want to Present in Chicago? present@cjug.org
Proud Father/Husband with 3 kids (and a Cat since Developers all seemed
to like cats)
Regret
Application Development Cycle
Hope?
If we could start over what
would we want?
Modularity
Options?
OSGi
● Mature 10+ Years
● Tools
● Modularity is enforced
● Versioning
● Complex Classloading
● Runtime
● Mature 10+ Years
● Tools
● Modularity is enforced
● Versioning
● Complex Classloading
● Runtime
Inversion of Control (IoC)
● Lightweight
● Easily added to existing systems
● Tools
● Modularity not enforced (DIY)
● No Versioning
● Lightweight
● Easily added to existing systems
● Tools
● Modularity not enforced (DIY)
● No Versioning
Jigsaw
● Java 7....8...9??
● Versioning
● Interoperability with OSGi (Penrose)
● Java 7....8...9??
● Versioning
● Interoperability with OSGi (Penrose)
OSGi: Start with One
big Bundle?
OSGi: When does
embedding make sense?
Want an Isolated
Third-Party
Container
Working with
OSGi unfriendly
Libraries.
Licensing/Proprietary
Code
No
Budget/Time/Desire
for full OSGi
Embedded Design/Implementation
Exposing packages to the
framework via System Packages
Minimum required bundles
● Felix Framework● Felix Framework
A few more to consider...
● Felix Config Admin
● Gogo Shell
● Web Console + HTTP
● SCR + Annotations
● Apache ACE Management Agent
● Felix Config Admin
● Gogo Shell
● Web Console + HTTP
● SCR + Annotations
● Apache ACE Management Agent
A few more to consider...
● Configuration
● Factories
● Resources
● Configuration
● Factories
● Resources
Good places to start
● Framework creates threads
● Use only one Framework Instance
● Requires some IDE tricks
● Package Tangling may get worse before it
gets better (Use Sonar)
● Framework creates threads
● Use only one Framework Instance
● Requires some IDE tricks
● Package Tangling may get worse before it
gets better (Use Sonar)
Caveats
Talk is Cheap.
Time for an example.
● SOAR 2D Grid Game
● Written in C++ with Java Bindings
● Code is Coupled
● SWT
● Multiple Games
● SOAR 2D Grid Game
● Written in C++ with Java Bindings
● Code is Coupled
● SWT
● Multiple Games
An Embedded Usecase With
Tanks
Embedded Design/Implementation
Exposing packages to the
framework via System Packages
configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
"edu.umich.soar,edu.umich.soar.gridmap2d.config," +
"edu.umich.soar.gridmap2d,edu.umich.soar.gridmap2d.world," +
"edu.umich.soar.gridmap2d.visuals," +
"org.eclipse.swt.widgets,org.eclipse.swt.graphics; version=0.0.1");
Setting up the Framework
//Yup it's that easy!
m_felix = new Felix(configMap);
m_felix.start();
Supplying Services to the Non-
OSGi code
public <S> S getService(Class<S> serviceClass)
{
ServiceReference<S> ref = m_activator.getContext()
.getServiceReference(serviceClass);
return m_activator.getContext().getService(ref);
}
Supplying more than one
public <S> List<S> getServices(Class<S> serviceClass, String filter)
{
Collection<ServiceReference<S>> refCollection = null;
try {
refCollection = hostActivator.getContext().getServiceReferences(serviceClass, filter);
} catch (InvalidSyntaxException e) {
LOGGER.error("Invalid Syntax", e);
}
List<S> result = new ArrayList<S>();
if(refCollection == null)
{
throw new ModuleException("No services References Could be found for the given class");
}
for(ServiceReference<S> currentRef : refCollection)
{
result.add(hostActivator.getContext().getService(currentRef));
}
return result;
}
DEMO!
Summary
● Modularity is often an afterthought
● Some projects have difficulty being fully
OSGi
● Embedding OSGi can provide many of the
same benefits
● Modularity is often an afterthought
● Some projects have difficulty being fully
OSGi
● Embedding OSGi can provide many of the
same benefits
References
● Adding Modularity Afterwards with Embedded OSGi (Talk and Code)
● Felix Embedded Documentation
● Adding Modularity Afterwards with Embedded OSGi (Talk and Code)
● Felix Embedded Documentation
Bob Paulin
@bobpaulin/bob@bobpaulin.com/http://bobpaulin.com

Mais conteúdo relacionado

Mais procurados

Adapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsAdapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsIBM UrbanCode Products
 
AD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixAD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixMartin Donnelly
 
The Next Generation of Continuous Delivery
The Next Generation of Continuous DeliveryThe Next Generation of Continuous Delivery
The Next Generation of Continuous DeliveryIBM UrbanCode Products
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDEMuhammad Ghazali
 
XPages is Workflow's new best friend
XPages is Workflow's new best friendXPages is Workflow's new best friend
XPages is Workflow's new best friendStephan H. Wissel
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsPaul Withers
 
Hands On With OpenSocial and Embedded Experiences
Hands On With OpenSocial and Embedded ExperiencesHands On With OpenSocial and Embedded Experiences
Hands On With OpenSocial and Embedded ExperiencesRyan Baxter
 
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...Ryan Baxter
 
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...Carl Tyler
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the CloudBert Ertman
 
Java on z overview 20161107
Java on z overview 20161107Java on z overview 20161107
Java on z overview 20161107Marcel Mitran
 
BP501 - Building and deploying custom IBM sametime connect client installatio...
BP501 - Building and deploying custom IBM sametime connect client installatio...BP501 - Building and deploying custom IBM sametime connect client installatio...
BP501 - Building and deploying custom IBM sametime connect client installatio...Carl Tyler
 
Basics of Flex Components, Skinning
Basics of Flex Components, SkinningBasics of Flex Components, Skinning
Basics of Flex Components, SkinningYukti Kaura
 
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...William Holmes
 
Running Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesRunning Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesVMware Tanzu
 
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...William Holmes
 
Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...LetsConnect
 
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...Edureka!
 
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...David Currie
 

Mais procurados (20)

Eclipse Vs Netbeans
Eclipse Vs NetbeansEclipse Vs Netbeans
Eclipse Vs Netbeans
 
Adapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex ApplicationsAdapting Deployment Pipelines for Complex Applications
Adapting Deployment Pipelines for Complex Applications
 
AD1542 Get Hands On With Bluemix
AD1542 Get Hands On With BluemixAD1542 Get Hands On With Bluemix
AD1542 Get Hands On With Bluemix
 
The Next Generation of Continuous Delivery
The Next Generation of Continuous DeliveryThe Next Generation of Continuous Delivery
The Next Generation of Continuous Delivery
 
Introduction To NetBeans IDE
Introduction To NetBeans IDEIntroduction To NetBeans IDE
Introduction To NetBeans IDE
 
XPages is Workflow's new best friend
XPages is Workflow's new best friendXPages is Workflow's new best friend
XPages is Workflow's new best friend
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile Controls
 
Hands On With OpenSocial and Embedded Experiences
Hands On With OpenSocial and Embedded ExperiencesHands On With OpenSocial and Embedded Experiences
Hands On With OpenSocial and Embedded Experiences
 
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...
Lotusphere 2012 - AD115 - Extending IBM Lotus Notes & IBM Lotus iNotes With O...
 
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
AD109 - Using the IBM Sametime Proxy SDK: WebSphere Portal, IBM Connections -...
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the Cloud
 
Java on z overview 20161107
Java on z overview 20161107Java on z overview 20161107
Java on z overview 20161107
 
BP501 - Building and deploying custom IBM sametime connect client installatio...
BP501 - Building and deploying custom IBM sametime connect client installatio...BP501 - Building and deploying custom IBM sametime connect client installatio...
BP501 - Building and deploying custom IBM sametime connect client installatio...
 
Basics of Flex Components, Skinning
Basics of Flex Components, SkinningBasics of Flex Components, Skinning
Basics of Flex Components, Skinning
 
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...
AD506: IBM Connect 2014. IBM Sametime Proxy 9: A fuller, richer customizable ...
 
Running Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native ImagesRunning Spring Boot Applications as GraalVM Native Images
Running Spring Boot Applications as GraalVM Native Images
 
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
 
Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...Philipe Riand - Building Social Applications using the Social Business Toolki...
Philipe Riand - Building Social Applications using the Social Business Toolki...
 
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...
Spring Interview Questions and Answers | Spring Tutorial | Spring Framework T...
 
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...How to Containerize WebSphere Application Server Traditional, and Why You Mig...
How to Containerize WebSphere Application Server Traditional, and Why You Mig...
 

Destaque

OSGi Provisioning With Apache ACE
OSGi Provisioning With Apache ACEOSGi Provisioning With Apache ACE
OSGi Provisioning With Apache ACEmfrancis
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlettmfrancis
 
Contoh proposal penelitian tindakan kelas
Contoh proposal penelitian tindakan kelasContoh proposal penelitian tindakan kelas
Contoh proposal penelitian tindakan kelassapan888
 
Entrepreneur's World #5
Entrepreneur's World #5Entrepreneur's World #5
Entrepreneur's World #5Lexvalorem
 
Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0Jong-peel Joo
 
Маркетинг Центр
Маркетинг ЦентрМаркетинг Центр
Маркетинг Центрalladvertising
 
Posicionament Seo a Google
Posicionament Seo a GooglePosicionament Seo a Google
Posicionament Seo a Googleaula20_2012
 

Destaque (20)

OSGi Provisioning With Apache ACE
OSGi Provisioning With Apache ACEOSGi Provisioning With Apache ACE
OSGi Provisioning With Apache ACE
 
Scaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N BartlettScaling and Orchestrating Microservices with OSGi - N Bartlett
Scaling and Orchestrating Microservices with OSGi - N Bartlett
 
Reveal.js
Reveal.jsReveal.js
Reveal.js
 
Biodata
BiodataBiodata
Biodata
 
Contoh proposal penelitian tindakan kelas
Contoh proposal penelitian tindakan kelasContoh proposal penelitian tindakan kelas
Contoh proposal penelitian tindakan kelas
 
Indices 13 oct2014050335
Indices 13 oct2014050335Indices 13 oct2014050335
Indices 13 oct2014050335
 
Indices 10 mar2014054746
Indices 10 mar2014054746Indices 10 mar2014054746
Indices 10 mar2014054746
 
Indices 14 May 2014
Indices 14 May 2014Indices 14 May 2014
Indices 14 May 2014
 
Entrepreneur's World #5
Entrepreneur's World #5Entrepreneur's World #5
Entrepreneur's World #5
 
Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0Eye tracking 광고시안 디자인-v1.0
Eye tracking 광고시안 디자인-v1.0
 
Indices 11 dec2012051757
Indices 11 dec2012051757Indices 11 dec2012051757
Indices 11 dec2012051757
 
Gujaratreflector.com
Gujaratreflector.comGujaratreflector.com
Gujaratreflector.com
 
Will
Will Will
Will
 
Маркетинг Центр
Маркетинг ЦентрМаркетинг Центр
Маркетинг Центр
 
Indices 15 apr2014052215
Indices 15 apr2014052215Indices 15 apr2014052215
Indices 15 apr2014052215
 
Posicionament Seo a Google
Posicionament Seo a GooglePosicionament Seo a Google
Posicionament Seo a Google
 
Canigao trip
Canigao tripCanigao trip
Canigao trip
 
Indices 11 oct2012051712
Indices 11 oct2012051712Indices 11 oct2012051712
Indices 11 oct2012051712
 
Indices 02 jan 2014
Indices 02 jan 2014Indices 02 jan 2014
Indices 02 jan 2014
 
Indices 21 may2014044935
Indices 21 may2014044935Indices 21 may2014044935
Indices 21 may2014044935
 

Semelhante a Adding Modularity Afterward with Embedded OSGi

TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App EngineRicardo Bánffy
 
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Mihail Stoynov
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
Scala and Play with Gradle
Scala and Play with GradleScala and Play with Gradle
Scala and Play with GradleWei Chen
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ TokopediaQasim Zaidi
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesStrannik_2013
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodecamp Romania
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)Markus Günther
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSGunnar Hillert
 
Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Eng Chrispinus Onyancha
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleStrannik_2013
 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Martin Toshev
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the ContinuistPaul Blundell
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...MarcinStachniuk
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?Dmitri Shiryaev
 
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - SydneySimplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - SydneyAbhinav Gupta
 

Semelhante a Adding Modularity Afterward with Embedded OSGi (20)

TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App Engine
 
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Scala and Play with Gradle
Scala and Play with GradleScala and Play with Gradle
Scala and Play with Gradle
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
 
Gradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypesGradle 2.Breaking stereotypes
Gradle 2.Breaking stereotypes
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to Gradle
 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
Java Web Start czyli jak żyć z tą dziwną technologią? & Continuous Delivery w...
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - SydneySimplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
Simplified CI/CD Flows for Salesforce via SFDX - Downunder Dreamin - Sydney
 

Mais de Bob Paulin

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At ApacheBob Paulin
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in ChargeBob Paulin
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in ChargeBob Paulin
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterBob Paulin
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in AngerBob Paulin
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to ApacheBob Paulin
 
What's My Modularity
What's My ModularityWhat's My Modularity
What's My ModularityBob Paulin
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMBob Paulin
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with GradleBob Paulin
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right MixBob Paulin
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBob Paulin
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and ToolsBob Paulin
 

Mais de Bob Paulin (12)

Fundraising At Apache
Fundraising At ApacheFundraising At Apache
Fundraising At Apache
 
Open Development When You're Not in Charge
Open Development When You're Not in ChargeOpen Development When You're Not in Charge
Open Development When You're Not in Charge
 
Apache When You're Not in Charge
Apache When You're Not in ChargeApache When You're Not in Charge
Apache When You're Not in Charge
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and Later
 
Microservice Networking in Anger
Microservice Networking in AngerMicroservice Networking in Anger
Microservice Networking in Anger
 
User Groups: The Gateway to Apache
User Groups: The Gateway to ApacheUser Groups: The Gateway to Apache
User Groups: The Gateway to Apache
 
What's My Modularity
What's My ModularityWhat's My Modularity
What's My Modularity
 
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEMDo more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
Do more with LESS, Handlebars, Coffeescript and other Web Resources in AEM
 
Continuous delivery with Gradle
Continuous delivery with GradleContinuous delivery with Gradle
Continuous delivery with Gradle
 
Frontend 'vs' Backend Getting the Right Mix
Frontend 'vs' Backend   Getting the Right MixFrontend 'vs' Backend   Getting the Right Mix
Frontend 'vs' Backend Getting the Right Mix
 
Build Your Own CMS with Apache Sling
Build Your Own CMS with Apache SlingBuild Your Own CMS with Apache Sling
Build Your Own CMS with Apache Sling
 
Code Quality Practice and Tools
Code Quality Practice and ToolsCode Quality Practice and Tools
Code Quality Practice and Tools
 

Último

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 

Último (20)

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Adding Modularity Afterward with Embedded OSGi

  • 1. Adding Modularity Afterward with Embedded OSGi Adding Modularity Afterward with Embedded OSGi
  • 2. About Me – Bob Paulin • @bobpaulin/bob@bobpaulin.com/http://bobpaulin.com ● Independent Consultant • Web Centric Platforms • Business Enablement • Continuous Delivery Chicago Java Users Group (CJUG) Community Leader • Need a Mentor? mentors@cjug.org • Want to Present in Chicago? present@cjug.org Proud Father/Husband with 3 kids (and a Cat since Developers all seemed to like cats)
  • 6. If we could start over what would we want?
  • 9. OSGi ● Mature 10+ Years ● Tools ● Modularity is enforced ● Versioning ● Complex Classloading ● Runtime ● Mature 10+ Years ● Tools ● Modularity is enforced ● Versioning ● Complex Classloading ● Runtime
  • 10. Inversion of Control (IoC) ● Lightweight ● Easily added to existing systems ● Tools ● Modularity not enforced (DIY) ● No Versioning ● Lightweight ● Easily added to existing systems ● Tools ● Modularity not enforced (DIY) ● No Versioning
  • 11. Jigsaw ● Java 7....8...9?? ● Versioning ● Interoperability with OSGi (Penrose) ● Java 7....8...9?? ● Versioning ● Interoperability with OSGi (Penrose)
  • 12. OSGi: Start with One big Bundle?
  • 19. Exposing packages to the framework via System Packages
  • 20. Minimum required bundles ● Felix Framework● Felix Framework
  • 21. A few more to consider... ● Felix Config Admin ● Gogo Shell ● Web Console + HTTP ● SCR + Annotations ● Apache ACE Management Agent ● Felix Config Admin ● Gogo Shell ● Web Console + HTTP ● SCR + Annotations ● Apache ACE Management Agent A few more to consider...
  • 22. ● Configuration ● Factories ● Resources ● Configuration ● Factories ● Resources Good places to start
  • 23. ● Framework creates threads ● Use only one Framework Instance ● Requires some IDE tricks ● Package Tangling may get worse before it gets better (Use Sonar) ● Framework creates threads ● Use only one Framework Instance ● Requires some IDE tricks ● Package Tangling may get worse before it gets better (Use Sonar) Caveats
  • 24. Talk is Cheap. Time for an example.
  • 25. ● SOAR 2D Grid Game ● Written in C++ with Java Bindings ● Code is Coupled ● SWT ● Multiple Games ● SOAR 2D Grid Game ● Written in C++ with Java Bindings ● Code is Coupled ● SWT ● Multiple Games An Embedded Usecase With Tanks
  • 27. Exposing packages to the framework via System Packages configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "edu.umich.soar,edu.umich.soar.gridmap2d.config," + "edu.umich.soar.gridmap2d,edu.umich.soar.gridmap2d.world," + "edu.umich.soar.gridmap2d.visuals," + "org.eclipse.swt.widgets,org.eclipse.swt.graphics; version=0.0.1");
  • 28. Setting up the Framework //Yup it's that easy! m_felix = new Felix(configMap); m_felix.start();
  • 29. Supplying Services to the Non- OSGi code public <S> S getService(Class<S> serviceClass) { ServiceReference<S> ref = m_activator.getContext() .getServiceReference(serviceClass); return m_activator.getContext().getService(ref); }
  • 30. Supplying more than one public <S> List<S> getServices(Class<S> serviceClass, String filter) { Collection<ServiceReference<S>> refCollection = null; try { refCollection = hostActivator.getContext().getServiceReferences(serviceClass, filter); } catch (InvalidSyntaxException e) { LOGGER.error("Invalid Syntax", e); } List<S> result = new ArrayList<S>(); if(refCollection == null) { throw new ModuleException("No services References Could be found for the given class"); } for(ServiceReference<S> currentRef : refCollection) { result.add(hostActivator.getContext().getService(currentRef)); } return result; }
  • 31. DEMO!
  • 32. Summary ● Modularity is often an afterthought ● Some projects have difficulty being fully OSGi ● Embedding OSGi can provide many of the same benefits ● Modularity is often an afterthought ● Some projects have difficulty being fully OSGi ● Embedding OSGi can provide many of the same benefits
  • 33. References ● Adding Modularity Afterwards with Embedded OSGi (Talk and Code) ● Felix Embedded Documentation ● Adding Modularity Afterwards with Embedded OSGi (Talk and Code) ● Felix Embedded Documentation