SlideShare a Scribd company logo
www.luxoft.com
Modularity in Java: introduction to
Jigsaw through the prism of OSGI
Eugene Bova
Software Developer at Luxoft
July 2016
www.luxoft.com
Short bio
 Java Developer at Luxoft
 5 years of experience in Java
 Involved in the development of:
- a huge OSGI based desktop application (600+ modules, 100+ thirdparty modules)
- a middle-size web application
www.luxoft.com
www.luxoft.com
What is a module?
com.example.alpha.Alpha
com.example.alpha.AlphaFactory
…
com.example.alpha
In Java modules are typically packaged as JAR files
www.luxoft.com
SO, WHAT’S THE PROBLEM?
www.luxoft.com
SO, WHAT’S THE PROBLEM?
MODULES ARE NOTE ENCAPSULATED
www.luxoft.com
Java Accessibility 1995-2016
 public
 protected
 <package>
 private
www.luxoft.com
Java Accessibility 1995-2016
 public – accessible by every module
 protected – accessible by every module
 <package> - accessible by every module (unless package is sealed)
 private – accessible by current module
www.luxoft.com
Problem statement
 Modules are not encapsulated
- Non-API classes can be accessible by everyone
 Platform integrity can be violated
- sun.misc.Unsafe – brings superpower.
 Classpath brings chaos
- Class lookup is unintuitive
- Class lookup is slow
www.luxoft.com
Modules at classpath
www.luxoft.com
www.luxoft.com
Goals of Jigsaw
 Reliable dependencies
 Strong encapsulation for modules
 Hide non-API types in JRE
 Improved performance
 A scalable Java SE Platform
www.luxoft.com
Module Descriptor
module com.example.alpha {
}
src/module-info.java
src/com/example/alpha/Alpha.java
src/com/example/alpha/AlphaFactory.java
www.luxoft.com
module com.example.alpha {
requires com.example.beta
}
com.example.alpha
com.example.beta
module com.example.beta {
}
www.luxoft.com
module com.example.alpha {
requires com.example.beta
}
com.example.alpha
com.example.beta
module com.example.beta {
exports com.example.beta.api
// exports com.example.beta.internal.impl
}
www.luxoft.com
…
Bundle-SymbolicName: com.example.alpha
Require-Bundle: com.example.beta
com.example.alpha
com.example.beta
…
Bundle-SymbolicName: com.example.beta
Export-Package: com.example.beta
OSGI
MANIFEST.MF
www.luxoft.com
module com.example.alpha {
requires com.example.beta
requires java.sql
}
com.example.alpha
java.sqlcom.example.beta
www.luxoft.com
com.example.alpha
java.sqlcom.example.beta
java.loggingjava.xml
Dependency Graph
www.luxoft.com
com.example.alpha
java.sqlcom.example.beta
java.loggingjava.xml
java.base
Dependency Graph
www.luxoft.com
com.example.alpha
java.sql
java.logging
www.luxoft.com
com.example.alpha
java.sql
java.logging
java.sql.Driver d = …
d.getParentLogger().log(…);
package java.sql;
public interface Driver {
public java.util.Logger Logger getParentLogger();
// other methods
//…
}
www.luxoft.com
com.example.alpha
java.sql
java.logging
module com.example.alpha {
requires java.sql;
requires java.logging;
}
www.luxoft.com
com.example.alpha
java.sql
java.logging
module java.sql {
requires public java.logging;
…
}
- reexports all accessible packages to downstream client
- allows refactoring
- in OSGI it’s called “reexport”
www.luxoft.com
com.example.alpha
java.sqlcom.example.beta
java.loggingjava.xml
java.base
Dependency Graph
www.luxoft.com
Qualified exports – exports for internal API
module java.base {
…
exports sun.reflect;
}
www.luxoft.com
Qualified exports – exports for internal API
module java.base {
…
exports sun.reflect to
java.corba,
java.logging,
java.sql,
java.sql.rowset,
jdk.scripting.nashorn;
}
 For modules collaborating at the
implementation level
 Introduces tight couplings
 Can inadvertently make internal types
accessible to modules other than those
intended
 No analogy available in OSGI
www.luxoft.com
Java Accessibility in JDK 9
 public – accessible by every module
 public – accessible by specific module
 public – accessible within a module
 protected
 <package>
 private
www.luxoft.com
public ⇏ accessible
www.luxoft.com
Services
org.fastsocketcom.socket
com.example.network.app
www.luxoft.com
Services
module com.example.network.app {
requires com.socket;
}
org.fastsocketcom.socket
com.example.network.app
www.luxoft.com
Services
module com.example.network.app {
requires com.socket;
}
org.fastsocketcom.socket
com.example.network.app
module com.socket {
exports com.socket.api;
exports com.socket.spi;
uses com.socket.spi.NetworkSocketProvider
}
// com.socket.api.NetworkSocket.open(…)
ServiceLoader<NetworkSocketProvider> sl =
ServiceLoader.load(NetworkSocketProvider.class);
Iterator<NetworkSocketProvider> it =
serviceLoader.iterator();
www.luxoft.com
Services
module com.example.network.app {
requires com.socket;
}
org.fastsocketcom.socket
com.example.network.app
module com.socket {
exports com.socket.api;
exports com.socket.spi;
uses com.socket.spi.NetworkSocketProvider
}
module org.fastsocket {
requires com.socket;
provides com.socket.spi.NetworkSocketProvider
with org.fastsocket.FastNetworkSocketProvider;
}
// com.socket.api.NetworkSocket.open(…)
ServiceLoader<NetworkSocketProvider> sl =
ServiceLoader.load(NetworkSocketProvider.class);
Iterator<NetworkSocketProvider> it =
serviceLoader.iterator();
www.luxoft.com
A few advanced concepts…
www.luxoft.com
Optional dependencies
module org.joda.time {
requires org.joda.convert;
}
www.luxoft.com
Optional dependencies
module org.joda.time {
requires static org.joda.convert;
}
 Required at compile time
 Optional at runtime
 NoClassFoundException is possible
 Rarely used in OSGI.
 Not available in JDK build yet!
http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-June/000306.html - Discussion
www.luxoft.com
Dynamic exports
module org.example.app {
requires hibernate.core;
requires hibernate.entitymanager;
exports com.example.app.model;
}
www.luxoft.com
Dynamic exports
module org.example.app {
requires hibernate.core;
requires hibernate.entitymanager;
exports dynamic com.example.app.model;
}
 Package is accessible at runtime only
 Package presence is checked at compile time
 “exports dynamically … to ..” is possible
 No analogy available in OSGI. This is handled
differently.
 Not available in JDK build yet!
http://mail.openjdk.java.net/pipermail/jpms-spec-experts/2016-June/000307.html - Discussion
www.luxoft.com
Platform modules
www.luxoft.com
java.activation@9-ea
java.annotations.common@9-ea
java.base@9-ea
java.compact1@9-ea
java.compact2@9-ea
java.compact3@9-ea
java.compiler@9-ea
java.corba@9-ea
java.datatransfer@9-ea
java.desktop@9-ea
java.httpclient@9-ea
java.instrument@9-ea
java.jnlp@9-ea
java.logging@9-ea
java.management@9-ea
java.naming@9-ea
java.prefs@9-ea
java.rmi@9-ea
java.scripting@9-ea
java.se@9-ea
java.se.ee@9-ea
java.security.jgss@9-ea
java.security.sasl@9-ea
java.smartcardio@9-ea
> java -listmods
java.sql@9-ea
java.sql.rowset@9-ea
java.transaction@9-ea
java.xml@9-ea
java.xml.bind@9-ea
java.xml.crypto@9-ea
java.xml.ws@9-ea
javafx.base@9-ea
javafx.controls@9-ea
javafx.deploy@9-ea
javafx.fxml@9-ea
javafx.graphics@9-ea
javafx.media@9-ea
javafx.swing@9-ea
javafx.web@9-ea
jdk.accessibility@9-ea
jdk.attach@9-ea
jdk.charsets@9-ea
jdk.compiler@9-ea
jdk.crypto.ec@9-ea
jdk.crypto.mscapi@9-ea
jdk.crypto.pkcs11@9-ea
jdk.deploy@9-ea
jdk.deploy.controlpanel@9-ea
jdk.deploy.controlpanel.fx@9-ea
jdk.dynalink@9-ea
jdk.hotspot.agent@9-ea
jdk.httpserver@9-ea
jdk.internal.le@9-ea
jdk.internal.opt@9-ea
jdk.jartool@9-ea
jdk.javadoc@9-ea
jdk.javaws@9-ea
jdk.jcmd@9-ea
jdk.jconsole@9-ea
jdk.jdeps@9-ea
jdk.jdi@9-ea
jdk.jdwp.agent@9-ea
jdk.jfr@9-ea
jdk.jlink@9-ea
jdk.jshell@9-ea
jdk.jsobject@9-ea
jdk.jstatd@9-ea
jdk.jvmstat@9-ea
jdk.localedata@9-ea
jdk.management@9-ea
jdk.naming.dns@9-ea
jdk.naming.rmi@9-ea
jdk.net@9-ea
jdk.pack200@9-ea
jdk.packager@9-ea
jdk.packager.services@9-ea
jdk.plugin@9-ea
jdk.plugin.dom@9-ea
jdk.plugin.server@9-ea
jdk.policytool@9-ea
jdk.rmic@9-ea
jdk.scripting.nashorn@9-ea
jdk.scripting.nashorn.shell@9-ea
jdk.sctp@9-ea
jdk.security.auth@9-ea
jdk.security.jgss@9-ea
jdk.snmp@9-ea
jdk.unsupported@9-ea
jdk.vm.ci@9-ea
jdk.xml.bind@9-ea
jdk.xml.dom@9-ea
jdk.xml.ws@9-ea
jdk.zipfs@9-ea
www.luxoft.com
Compilation
com.example.alpha
com.example.beta
$ javac -d mods/com.example.beta 
src/module-info.java 
src/com/example/beta/Beta.java
www.luxoft.com
Compilation
com.example.alpha
com.example.beta
$ javac -d mods/com.example.beta 
src/module-info.java 
src/com/example/beta/Beta.java
$ javac -d mods/com.example.alpha 
-modulepath mods 
src/module-info.java 
src/com/example/alpha/Main.java
www.luxoft.com
Launching
$ java -modulepath mods -m com.example.alpha/com.example.alpha.Main
module name main class
www.luxoft.com
Things to take away
- Jigsaw and OSGI aim to solve similar issues (sometimes in a similar
way)
- OSGI can’t solve Platform integrity issues
- Jigsaw is static. OSGI is really dynamic.
- OSGI has more features. Jigsaw is much simpler
- It’s not a goal for Jigsaw to substitute OSGI!
www.luxoft.com
WHAT ABOUT VERSIONING, DUDE???
www.luxoft.com
Layers and Versions
www.luxoft.com
More information
 http://openjdk.java.net/projects/jigsaw/ - OpenJDK project this has links to
- related spec, requirements;
- design overview;
- quick start guide!
http://openjdk.java.net/projects/jigsaw/ea - Early access build
http://openjdk.java.net/projects/jigsaw/talks/ - Videos from Devoxx 2015
www.luxoft.com
THANK YOU

More Related Content

What's hot

Link. apache wicket [santi caltabiano]
  Link. apache wicket [santi caltabiano]  Link. apache wicket [santi caltabiano]
Link. apache wicket [santi caltabiano]
santi caltabiano
 
Phalcon overview
Phalcon overviewPhalcon overview
Phalcon overview
Adam Englander
 
OSGi and Java 9+
OSGi and Java 9+OSGi and Java 9+
OSGi and Java 9+
bjhargrave
 
The Ultimate iOS 11 Course Learn to Build Apps
The Ultimate iOS 11 Course Learn to Build AppsThe Ultimate iOS 11 Course Learn to Build Apps
The Ultimate iOS 11 Course Learn to Build Apps
Sam Dias
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
Carlo Bonamico
 
Phalcon Framework: San Antonio Web Developers Group
Phalcon Framework: San Antonio Web Developers Group Phalcon Framework: San Antonio Web Developers Group
Phalcon Framework: San Antonio Web Developers Group
jdfreeman11
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
Denis Voituron
 
Wordpress Command-Line
Wordpress Command-LineWordpress Command-Line
Wordpress Command-Line
wpperu
 
Php framework at BarCampPP
Php framework at BarCampPPPhp framework at BarCampPP
Php framework at BarCampPP
psophy
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12
Franz Allan See
 
How composer saved PHP
How composer saved PHPHow composer saved PHP
How composer saved PHP
Ryan Kilfedder
 
Silverlight development using Eclipse4SL
Silverlight development using Eclipse4SLSilverlight development using Eclipse4SL
Silverlight development using Eclipse4SL
Sho Ito
 
Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of Maven
Justin J. Moses
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat Videos
Greg Schechter
 
Laravel Lab
Laravel LabLaravel Lab
Laravel Lab
Leo Nguyen
 
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Exove
 
Frappe framework
Frappe framework Frappe framework
Frappe framework
eurosigdoc acm
 
AtoM feature development
AtoM feature developmentAtoM feature development
AtoM feature development
Artefactual Systems - AtoM
 
Web development with Python
Web development with PythonWeb development with Python
Web development with Python
Raman Balyan
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoMagento Dev
 

What's hot (20)

Link. apache wicket [santi caltabiano]
  Link. apache wicket [santi caltabiano]  Link. apache wicket [santi caltabiano]
Link. apache wicket [santi caltabiano]
 
Phalcon overview
Phalcon overviewPhalcon overview
Phalcon overview
 
OSGi and Java 9+
OSGi and Java 9+OSGi and Java 9+
OSGi and Java 9+
 
The Ultimate iOS 11 Course Learn to Build Apps
The Ultimate iOS 11 Course Learn to Build AppsThe Ultimate iOS 11 Course Learn to Build Apps
The Ultimate iOS 11 Course Learn to Build Apps
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
 
Phalcon Framework: San Antonio Web Developers Group
Phalcon Framework: San Antonio Web Developers Group Phalcon Framework: San Antonio Web Developers Group
Phalcon Framework: San Antonio Web Developers Group
 
DevDay 2018 - Blazor
DevDay 2018 - BlazorDevDay 2018 - Blazor
DevDay 2018 - Blazor
 
Wordpress Command-Line
Wordpress Command-LineWordpress Command-Line
Wordpress Command-Line
 
Php framework at BarCampPP
Php framework at BarCampPPPhp framework at BarCampPP
Php framework at BarCampPP
 
Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12Robotframework Presentation - Pinoy Python Meetup 2011January12
Robotframework Presentation - Pinoy Python Meetup 2011January12
 
How composer saved PHP
How composer saved PHPHow composer saved PHP
How composer saved PHP
 
Silverlight development using Eclipse4SL
Silverlight development using Eclipse4SLSilverlight development using Eclipse4SL
Silverlight development using Eclipse4SL
 
Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of Maven
 
GDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat VideosGDD HTML5, Flash, and the Battle for Faster Cat Videos
GDD HTML5, Flash, and the Battle for Faster Cat Videos
 
Laravel Lab
Laravel LabLaravel Lab
Laravel Lab
 
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
 
Frappe framework
Frappe framework Frappe framework
Frappe framework
 
AtoM feature development
AtoM feature developmentAtoM feature development
AtoM feature development
 
Web development with Python
Web development with PythonWeb development with Python
Web development with Python
 
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus MagentoDevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
 

Similar to Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism of OSGI"

Modular Java
Modular JavaModular Java
Modular Java
Martin Toshev
 
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
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Martin Toshev
 
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
Java 9: Deep Dive into Modularity and Dealing with Migration IssuesJava 9: Deep Dive into Modularity and Dealing with Migration Issues
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
GlobalLogic Ukraine
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
Mani Sarkar
 
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Part 8 - Enforcing modularity of JasForge using OSGI and Futures EvolutionsPart 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Jasmine Conseil
 
What's new in java 9?
What's new in java 9?What's new in java 9?
What's new in java 9?
Trayan Iliev
 
Leaner microservices with Java 10
Leaner microservices with Java 10Leaner microservices with Java 10
Leaner microservices with Java 10
Arto Santala
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
Robert Scholte
 
Java9
Java9Java9
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
jClarity
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
Simon Ritter
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
Serge Huber
 
Jigsaw modularity
Jigsaw modularityJigsaw modularity
Jigsaw modularity
Srinivasan Raghavan
 
Kick Start your Application Development and Management Strategy
Kick Start your Application Development and Management Strategy Kick Start your Application Development and Management Strategy
Kick Start your Application Development and Management Strategy WSO2
 
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Mani Sarkar
 
Advanced modular development
Advanced modular development  Advanced modular development
Advanced modular development
Srinivasan Raghavan
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
Bhanu Prakash Gopularam
 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OpenBlend society
 
OSGi Enablement For Apache Tuscany
OSGi Enablement For Apache TuscanyOSGi Enablement For Apache Tuscany
OSGi Enablement For Apache Tuscany
Raymond Feng
 

Similar to Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism of OSGI" (20)

Modular Java
Modular JavaModular Java
Modular Java
 
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/)
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
Java 9: Deep Dive into Modularity and Dealing with Migration IssuesJava 9: Deep Dive into Modularity and Dealing with Migration Issues
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
 
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Part 8 - Enforcing modularity of JasForge using OSGI and Futures EvolutionsPart 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
Part 8 - Enforcing modularity of JasForge using OSGI and Futures Evolutions
 
What's new in java 9?
What's new in java 9?What's new in java 9?
What's new in java 9?
 
Leaner microservices with Java 10
Leaner microservices with Java 10Leaner microservices with Java 10
Leaner microservices with Java 10
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
 
Java9
Java9Java9
Java9
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
OSGi in 5 minutes
OSGi in 5 minutesOSGi in 5 minutes
OSGi in 5 minutes
 
Jigsaw modularity
Jigsaw modularityJigsaw modularity
Jigsaw modularity
 
Kick Start your Application Development and Management Strategy
Kick Start your Application Development and Management Strategy Kick Start your Application Development and Management Strategy
Kick Start your Application Development and Management Strategy
 
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)Java 9 / Jigsaw - LJC / VJUG session (hackday session)
Java 9 / Jigsaw - LJC / VJUG session (hackday session)
 
Advanced modular development
Advanced modular development  Advanced modular development
Advanced modular development
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
 
OSGi Enablement For Apache Tuscany
OSGi Enablement For Apache TuscanyOSGi Enablement For Apache Tuscany
OSGi Enablement For Apache Tuscany
 

More from Anna Shymchenko

Евгений Руднев: "Programmers Approach to Error Handling"
Евгений Руднев: "Programmers Approach to Error Handling"Евгений Руднев: "Programmers Approach to Error Handling"
Евгений Руднев: "Programmers Approach to Error Handling"
Anna Shymchenko
 
Александр Куцан: "Static Code Analysis in C++"
Александр Куцан: "Static Code Analysis in C++" Александр Куцан: "Static Code Analysis in C++"
Александр Куцан: "Static Code Analysis in C++"
Anna Shymchenko
 
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club” Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Anna Shymchenko
 
Орхан Гасимов: "Reactive Applications in Java with Akka"
Орхан Гасимов: "Reactive Applications in Java with Akka"Орхан Гасимов: "Reactive Applications in Java with Akka"
Орхан Гасимов: "Reactive Applications in Java with Akka"
Anna Shymchenko
 
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Anna Shymchenko
 
Денис Прокопюк: “JMX in Java EE applications”
Денис Прокопюк: “JMX in Java EE applications”Денис Прокопюк: “JMX in Java EE applications”
Денис Прокопюк: “JMX in Java EE applications”
Anna Shymchenko
 
Роман Яворский "Introduction to DevOps"
Роман Яворский "Introduction to DevOps"Роман Яворский "Introduction to DevOps"
Роман Яворский "Introduction to DevOps"
Anna Shymchenko
 
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Максим Сабарня “NoSQL: Not only SQL in developer’s life” Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Anna Shymchenko
 
Андрей Лисниченко "SQL Injection"
Андрей Лисниченко "SQL Injection"Андрей Лисниченко "SQL Injection"
Андрей Лисниченко "SQL Injection"
Anna Shymchenko
 
Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"
Anna Shymchenko
 
Андрей Слободяник "Test driven development using mockito"
Андрей Слободяник "Test driven development using mockito"Андрей Слободяник "Test driven development using mockito"
Андрей Слободяник "Test driven development using mockito"
Anna Shymchenko
 
Евгений Хыст "Application performance database related problems"
Евгений Хыст "Application performance database related problems"Евгений Хыст "Application performance database related problems"
Евгений Хыст "Application performance database related problems"
Anna Shymchenko
 
Даурен Муса “IBM WebSphere - expensive but effective”
Даурен Муса “IBM WebSphere - expensive but effective” Даурен Муса “IBM WebSphere - expensive but effective”
Даурен Муса “IBM WebSphere - expensive but effective”
Anna Shymchenko
 
Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"
Anna Shymchenko
 
Евгений Капинос "Advanced JPA (Java Persistent API)"
Евгений Капинос "Advanced JPA (Java Persistent API)"Евгений Капинос "Advanced JPA (Java Persistent API)"
Евгений Капинос "Advanced JPA (Java Persistent API)"
Anna Shymchenko
 
Event-driven architecture with Java technology stack
Event-driven architecture with Java technology stackEvent-driven architecture with Java technology stack
Event-driven architecture with Java technology stack
Anna Shymchenko
 
Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Do we need SOLID principles during software development?
Do we need SOLID principles during software development?
Anna Shymchenko
 
Guava - Elements of Functional Programming
Guava - Elements of Functional Programming Guava - Elements of Functional Programming
Guava - Elements of Functional Programming
Anna Shymchenko
 
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app... 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Anna Shymchenko
 
Сергей Гончарук "Working with uncertainty"
 	Сергей Гончарук "Working with uncertainty"  	Сергей Гончарук "Working with uncertainty"
Сергей Гончарук "Working with uncertainty"
Anna Shymchenko
 

More from Anna Shymchenko (20)

Евгений Руднев: "Programmers Approach to Error Handling"
Евгений Руднев: "Programmers Approach to Error Handling"Евгений Руднев: "Programmers Approach to Error Handling"
Евгений Руднев: "Programmers Approach to Error Handling"
 
Александр Куцан: "Static Code Analysis in C++"
Александр Куцан: "Static Code Analysis in C++" Александр Куцан: "Static Code Analysis in C++"
Александр Куцан: "Static Code Analysis in C++"
 
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club” Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
Алесей Решта: “Robotics Sport & Luxoft Open Robotics Club”
 
Орхан Гасимов: "Reactive Applications in Java with Akka"
Орхан Гасимов: "Reactive Applications in Java with Akka"Орхан Гасимов: "Reactive Applications in Java with Akka"
Орхан Гасимов: "Reactive Applications in Java with Akka"
 
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
Евгений Хыст: "Server-Side Geo-Clustering Based on Geohash"
 
Денис Прокопюк: “JMX in Java EE applications”
Денис Прокопюк: “JMX in Java EE applications”Денис Прокопюк: “JMX in Java EE applications”
Денис Прокопюк: “JMX in Java EE applications”
 
Роман Яворский "Introduction to DevOps"
Роман Яворский "Introduction to DevOps"Роман Яворский "Introduction to DevOps"
Роман Яворский "Introduction to DevOps"
 
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Максим Сабарня “NoSQL: Not only SQL in developer’s life” Максим Сабарня “NoSQL: Not only SQL in developer’s life”
Максим Сабарня “NoSQL: Not only SQL in developer’s life”
 
Андрей Лисниченко "SQL Injection"
Андрей Лисниченко "SQL Injection"Андрей Лисниченко "SQL Injection"
Андрей Лисниченко "SQL Injection"
 
Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"
 
Андрей Слободяник "Test driven development using mockito"
Андрей Слободяник "Test driven development using mockito"Андрей Слободяник "Test driven development using mockito"
Андрей Слободяник "Test driven development using mockito"
 
Евгений Хыст "Application performance database related problems"
Евгений Хыст "Application performance database related problems"Евгений Хыст "Application performance database related problems"
Евгений Хыст "Application performance database related problems"
 
Даурен Муса “IBM WebSphere - expensive but effective”
Даурен Муса “IBM WebSphere - expensive but effective” Даурен Муса “IBM WebSphere - expensive but effective”
Даурен Муса “IBM WebSphere - expensive but effective”
 
Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"
 
Евгений Капинос "Advanced JPA (Java Persistent API)"
Евгений Капинос "Advanced JPA (Java Persistent API)"Евгений Капинос "Advanced JPA (Java Persistent API)"
Евгений Капинос "Advanced JPA (Java Persistent API)"
 
Event-driven architecture with Java technology stack
Event-driven architecture with Java technology stackEvent-driven architecture with Java technology stack
Event-driven architecture with Java technology stack
 
Do we need SOLID principles during software development?
Do we need SOLID principles during software development?Do we need SOLID principles during software development?
Do we need SOLID principles during software development?
 
Guava - Elements of Functional Programming
Guava - Elements of Functional Programming Guava - Elements of Functional Programming
Guava - Elements of Functional Programming
 
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app... 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 
Сергей Гончарук "Working with uncertainty"
 	Сергей Гончарук "Working with uncertainty"  	Сергей Гончарук "Working with uncertainty"
Сергей Гончарук "Working with uncertainty"
 

Recently uploaded

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 

Recently uploaded (20)

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 

Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism of OSGI"

Editor's Notes

  1. Модуль -
  2. Модуль -
  3. Модуль -
  4. Модуль -
  5. Модуль -
  6. Модуль -
  7. Модуль -
  8. Модуль -
  9. no analogy in OSGI
  10. no analogy in OSGI
  11. no analogy in OSGI
  12. no analogy in OSGI
  13. no analogy in OSGI