SlideShare ist ein Scribd-Unternehmen logo
1 von 69
Modular Java 
Martin Toshev
BG JUG mailing list: 
https://groups.google.com/forum/# 
!forum/bg-jug
Agenda 
Modularity 101 
Modularity on top of the platform: OSGi 
Modularity of the platform: Jigsaw 
OSGi and Jigsaw interoperability: Penrose
Modularity 101
Modularity 101 
Standard Java libraries are modules - Hibernate, 
log4j and any library you can basically think of … 
Build systems like Maven provide transparent 
management of modules
Modularity 101 
Benefits of modularization: 
– smaller modules are typically tested easier than a 
monolithic application 
– allows for easier evolution of the system - modules 
evolve independently
Modularity 101 
Benefits of modularization: 
– development of the system can be split easier 
between teams/developers 
– increased maintainability of separate modules
Modularity 101 
The dependency mechanism used by the JDK 
introduces a number of problems that modular 
systems aim to solve: 
– The "JAR hell" problem caused by shortcomings of the 
classloading process
Modularity 101 
The dependency mechanism used by the JDK 
introduces a number of problems that modular 
systems aim to solve: 
– The lack of dynamicity in managing dependent 
modules 
– The lack of loose coupling between modules
Modularity 101 
Module systems aim to solve the mentioned 
problems and typically provide: 
• module management 
• module deployment 
• versioning 
• dependency management 
• module repositories 
• configuration management
Modularity on top of the 
platform: OSGi
Modularity on top of the platform: 
OSGi 
OSGi (Open Service Gateway iniatiave) provides a 
specification for module systems implemented in 
Java 
It is introduced as JSR 8 and JSR 291 to the Java 
platform
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ?
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: An OSGi runtime (module system) makes use of the Java 
classloading mechanism in order to implement a container for 
modular units (bundles) and is based on the OSGi spec - a series 
of standards by the OSGi Alliance. Many application servers are 
implemented using OSGi as a basis - it is also used in systems 
from a diversity of areas
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: An OSGi bundle is a just a JAR file that contains source code, 
bundle metadata and resources. A bundle may provide various 
services and components to the OSGi runtime. An OSGi runtime 
allows for bundles to be installed, started, stopped, updated and 
uninstalled without requiring a reboot
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: The OSGi Core spec defines a layered architecture that 
determines what is supported by the runtime – each layer 
defines a particular functionality supported by the runtime and 
the bundles 
OSGi logical units: 
 bundles 
 services 
 services registry 
 life-cycle 
 modules 
 security 
 execution environment 
OSGi logical layers:
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: Bundles may export packages for use by other bundles or 
import packages exported by other bundles - this dependency 
mechanism is referred to as wire protocol and is provided by the 
Module layer of OSGi.
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: Bundles may publish services to the runtime and use already 
published services from the runtime – this dependency 
mechanism is provided by the Service layer of OSGI.
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: The MANIFEST.MF file of the bundle’s JAR file describes the 
metadata of the bundle 
Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Sample 
Bundle-SymbolicName: com.sample 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: com.java2days.seminar.demo.Activator 
Bundle-Vendor: java2days 
Require-Bundle: org.java.jigsaw.core, 
org.java.jigsaw.extensions 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Service-Component: OSGI-INF/service.xml 
Import-Package: com.java2days.seminar.jigsaw.shared;version="1.0.0“ 
Export-Package: com.java2days.seminar.demo.utils
Modularity on top of the platform: 
OSGi 
Q: So what is an OSGi runtime ? 
A: The runtime may implement extensions based on the OSGi 
Compendium spec that extends the OSGi Core spec. These could 
be:  remote services 
 log service 
 HTTP service 
 device access service 
 configuration admin 
 metatype service 
 preferences service 
 user admin 
 wire admin 
 DMT admin service 
 IO connector service 
 provisioning service 
 UPnP device service 
 configuration admin 
 declarative services 
 event admin service 
 deployment admin 
 XML parser service 
 monitoring service 
 others
Modularity on top of the platform: 
OSGi 
OSGi continues to evolve …
Live Demo 
Modularity on top of the platform: OSGi
Modularity of the platform: 
Jigsaw
Modularity of the platform: 
Jigsaw 
When speaking of modularity we should also 
consider the entire runtime (rt.jar) and the JDK core 
libraries … 
… and built-in support for improved "OSGi-like" 
modules in the Java platform
Modularity of the platform: 
Jigsaw 
The JDK is monolithic …
Modularity of the platform: 
Jigsaw 
JDK 8 compact profiles provide smaller versions … 
(javac -profile <profile_name> or 
make profiles for an OpenJDK build) 
compact 1 compact 2 compact 3
Modularity of the platform: 
Jigsaw 
The aim of project Jigsaw is to provide a module 
system for the Java platform 
Although deferred to JDK 9 some additional effort 
such as Compact Profiles and removed/ deprecated 
inter-library dependencies have been introduced in 
JDK8 as an intermediate solution
Modularity of the platform: 
Jigsaw 
Modularization of the Java platform is a significant 
change that impacts the entire ecosystem - may 
even break existing projects
Modularity of the platform: 
Jigsaw 
Draft 3 of Jigsaw requirements states that 
application using only standard APIs must remain 
compatible 
Draft 3 of Jigsaw requirements also mentions that 
some JDK-specific APIs must remain compatible but 
no concrete JDK APIs are listed yet
Modularity of the platform: 
Jigsaw 
Q: So what is exactly project Jigsaw ?
Modularity of the platform: 
Jigsaw 
Q: So what is exactly project Jigsaw ? 
A: Jigsaw will provide the basis for a Java Module System JSR. 
Currently work on Jigsaw is being done for: 
JEP 200 - define JDK modules (in a modules.xml file in the JDK repo) 
JEP 201 - reorganize JDK sources into modules and modify JDK build 
JEP 220 - restructure JRE/JDK images to accommodate modules
Modularity of the platform: 
Jigsaw 
Q: So what is exactly project Jigsaw ? 
A: Structure of JDK sources as defined by JEP 201: 
old 
src/{share,$OS}/{classes,native}/$PACKAGE/*.{java,c,h,cpp,hpp} 
new 
src/$MODULE/{share,$OS}/classes/$PACKAGE/*.java 
native/include/*.{h,hpp} 
$LIBRARY/*.{c,cpp} 
conf/*
Modularity of the platform: 
Jigsaw 
Q: So what is exactly project Jigsaw ? 
A: In the early exploratory phase of project Jigsaw there was a 
proof-of-concept implementation with JDK8 early-access builds 
(now dropped).
Modularity of the platform: 
Jigsaw 
Q: So what was exactly the exploratory phase of Jigsaw ? 
A: Jigsaw POC provided a modularized version of JDK along with 
additional tools and language support for creating Jigsaw 
modules. JDK8 early-access builds provided two types of JDK: 
 JDK modules image - all components are preinstalled as 
modules 
 JDK base image + jmod packages - base JDK installation along 
with additional Jigsaw modules of the JDK that can be 
installed on-demand using the jmod tool
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module ?
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module ? 
A: A collection of Java classes, native libraries and other 
resources along with metadata that provides name and version 
of the module and dependencies on other modules
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module ? 
A: Jigsaw resolves modules during build and installation. 
Jigsaw has no dynamics, no module lifecycle. The module system 
assumes the existence of a foundational module named 
java.base
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Module can use ("require") other modules and additionally 
specify version or version ranges for the module dependency - 
modules are loaded with different module classloaders 
module org.bgjug.A @ 1.0 { 
requires org.bgjug.B @ [2.0, 3.0); 
} 
module org.bgjug.A { 
requires org.bgjug.B @ >= 1.0; 
requires org.bgjug.C @ < 2.0; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Module versions are compared using a similar approach as the 
one used for Debian package versions … The intent is to be able 
to package a module as an OS-specific package (not applicable 
for Windows/Mac OS)
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can also "require" optional modules - meaning that 
compilation succeeds even if the required module is missing 
module org.bgjug.A { 
requires optional jdk-corba@8-ea; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can also "require" local modules - meaning that the 
local module is a kind of a "mixin" - it is loaded in the same 
classloader as the requiring module 
module org.bgjug.A @ 1.0 { 
requires local org.bgjug.B @ [2.0, 3.0);
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: A module may export packages and classes 
module org.bgjug.A @ 1.0 { 
requires org.bgjug.B @ [2.0, 3.0); 
exports org.bgjug.A.seminar.Sample; 
exports org.bgjug.A.seminar.samples.*; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can explicitly specify which other modules can 
"require" them 
module org.bgjug.A@ 2.0 { 
exports org.bgjug.A.seminar; 
permits org.bgjug.B; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can logically provide other module names (aliases): 
module com.bgjug.A @ 1.0 { 
provides com.bgjug.First @ 2.0; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can have a single entry point 
module org.bgjug.A @ 1.0 { 
permits org.bgjug.B; 
class org.bgjug.A.Main; 
} 
the main() method org.bgjug.A.Main is called when invoking: 
java -m org.bgjug.A
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: Modules can define multiple views 
module org.bgjug.A { 
exports org.bgjug.A.seminar; 
view org.bgjug.internal.view { 
permits org.bgjug.B 
} 
} 
the main() method org.bgjug.A.Main is called when invoking: 
java -m org.bgjug.A
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: A module can declare that it provides a service 
module org.bgjug.A { 
provides service org.bgjug.A.external.TestService with 
org.bgjug.A.external.TestServiceImpl; 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: A module can require a service 
module org.bgjug.B { 
requires service org.bgjug.A.external.TestService 
}
Modularity of the platform: 
Jigsaw 
Q: What is a Jigsaw module in terms of the exploratory phase ? 
A: A service can also be required optionally 
module org.bgjug.B { 
requires optional service org.bgjug.A.TestService; 
}
Modularity of the platform: 
Jigsaw 
Q: So why not adopt OSGi (at least the module layer) for 
modularization of the Java platform ?
Modularity of the platform: 
Jigsaw 
Q: So why not adopt OSGi (at least the module layer) for 
modularization of the Java platform ? 
A: As chief architect of the Java platform Mark Reinhold states: 
The OSGI module layer is not operative at compile time - it 
addresses modularity only during packaging, deployment and 
execution. It is also strictly build on top of the platform so it 
cannot be used to modularize it.
Modularity of the platform: 
Jigsaw 
Q: So why not adopt OSGi (at least the module layer) for 
modularization of the Java platform ? 
A: However - according to Peter Kriens (former technical director 
at the OSGi Alliance and one of the key drivers behind the OSGi 
spec) Jigsaw is not typically needed an will introduce burden to 
the platform and modules can be introduced much easier: 
The only thing we need to add to the existing system is 
versioning information on the package and record this version in 
the class file
Live Demo 
Modularity of the platform: Jigsaw
OSGi and Jigsaw interoperability: 
Penrose
OSGi and Jigsaw interoperability: 
Penrose 
When speaking of JDK modules we should consider 
interoperability with existing module systems such 
as OSGi 
The purpose of project Penrose is to explore 
interoperability between OSGi and Jigsaw
OSGi and Jigsaw interoperability: 
Penrose 
Penrose is still in early stage of development … 
Current work on project Penrose is deprecated due 
to the dropped proof-of-concept version of Jigsaw …
OSGi and Jigsaw interoperability: 
Penrose 
Penrose goals: 
– ensuring OSGi frameworks run unmodified in a 
Jigsaw-enabled runtime 
– create modules/bundles that have both OSGi and 
Jigsaw metadata in them 
– Jigsaw metadata can be extended with OSGi concepts 
– extend OSGi to read Jigsaw metadata
OSGi and Jigsaw interoperability: 
Penrose 
Penrose goals: 
– mapping Jigsaw metadata to OSGi metadata 
– resolve Jigsaw modules in an OSGi runtime 
– enhance OSGi to use Jigsaw APIs 
– more cross delegation between the two systems …
Summary 
Q: Project Jigsaw - when ?
Summary 
Q: Project Jigsaw - when ? 
A: Maybe when the Armagedon comes … 
… or maybe in 2016 …
Summary 
Q: Projects Jigsaw/Penrose - when ? 
A: Unless you … 
… discuss: 
http://mail.openjdk.java.net/mailman/listinfo/jigsaw-dev 
… and code: 
http://hg.openjdk.java.net/jigsaw
Q&A 
Thank you 
Bulgarian JUG mailing list: 
https://groups.google.com/forum/#!forum/bg-jug
References 
OSGi Alliance 
http://www.osgi.org/Main/HomePage 
Jigsaw Project 
http://openjdk.java.net/projects/jigsaw/ 
Penrose Project 
http://openjdk.java.net/projects/penrose/
References 
Modularity - what is it ? 
http://www.infoq.com/articles/modular-java-what- 
is-it/ 
Java modularity - why ? 
http://java.dzone.com/articles/java-modularity- 
2-why 
Java JAR hell problem 
http://en.wikipedia.org/wiki/Java_Classloader#JA 
R_hell
References 
Project Jigsaw: Phase Two 
http://mreinhold.org/blog/jigsaw-phase-two 
Project Jigsaw: Goals & Requirements Draft 3 
http://openjdk.java.net/projects/jigsaw/goals-reqs/ 
03
References 
Java Module System Requirements 
http://openjdk.java.net/projects/jigsaw/doc/draf 
t-java-module-system-requirements-12 
Project Jigsaw: The Big Picture 
http://cr.openjdk.java.net/~mr/jigsaw/notes/jigs 
aw-big-picture-01 
Java 8 Modules Jigsaw and OSGi 
http://www.slideshare.net/mfrancis/java-8- 
modules-jigsaw-and-osgi-neil-bartlett
References 
Project Jigsaw: Late for the train 
http://mreinhold.org/blog/late-for-the-train-qa 
Unbearable lightness of Jigsaw 
http://blog.osgi.org/2011/05/unbearable-lightness- 
of-jigsaw.html 
Netbeans discussion on Jigsaw 
http://wiki.netbeans.org/Jigsaw
References 
Java Modularity - OSGi and Project Jigsaw 
http://techdistrict.kirkk.com/2009/06/12/java-modularity- 
osgi-and-project-jigsaw/ 
The Modular Java Platform & Project Jigsaw 
http://www.jfokus.se/jfokus14/preso/Jigsaw.pdf 
JAX 2013: A Project Jigsaw primer 
http://jaxenter.com/a-project-jigsaw-primer- 
50029.html
References 
JavaOne 2013: The Modular Java Platform and Project 
Jigsaw 
http://parleys.com/play/52549d02e4b0a43ac12 
124be/about 
OpenJDK Penrose JavaOne 2012 
http://www.slideshare.net/bosschaert/open-jdk-penrose- 
javaone-2012

Weitere ähnliche Inhalte

Was ist angesagt?

Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawComsysto Reply GmbH
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in PractiseDavid Bosschaert
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGiIlya Rybak
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Azilen Technologies Pvt. Ltd.
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafIoan Eugen Stan
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionStephen Colebourne
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Simon Ritter
 
Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Peter R. Egli
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMario-Leander Reimer
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System IntroductionDan Stine
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 

Was ist angesagt? (20)

Java Modularity: the Year After
Java Modularity: the Year AfterJava Modularity: the Year After
Java Modularity: the Year After
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
Java 9 Modularity and Project Jigsaw
Java 9 Modularity and Project JigsawJava 9 Modularity and Project Jigsaw
Java 9 Modularity and Project Jigsaw
 
Java 9 and Project Jigsaw
Java 9 and Project JigsawJava 9 and Project Jigsaw
Java 9 and Project Jigsaw
 
Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
 
Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 
Java SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introductionJava SE 9 modules (JPMS) - an introduction
Java SE 9 modules (JPMS) - an introduction
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9
 
Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
Coding Your Way to Java 12
Coding Your Way to Java 12Coding Your Way to Java 12
Coding Your Way to Java 12
 
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDIMigrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
 
Liferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for DevelopersLiferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for Developers
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 

Andere mochten auch

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
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformMartin Toshev
 
Writing Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cWriting Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cMartin Toshev
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSMartin Toshev
 
Writing Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cWriting Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cMartin Toshev
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: IntroMartin Toshev
 
KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)Martin Toshev
 
Security Architecture of the Java platform
Security Architecture of the Java platformSecurity Architecture of the Java platform
Security Architecture of the Java platformMartin Toshev
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Martin Toshev
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsMartin Toshev
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Simon Ritter
 
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)Real World Java 9 (QCon London)
Real World Java 9 (QCon London)Trisha Gee
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8Martin Toshev
 

Andere mochten auch (18)

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/)
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java Platform
 
Writing Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cWriting Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12c
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMS
 
Writing Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cWriting Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12c
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: Intro
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)
 
Security Architecture of the Java platform
Security Architecture of the Java platformSecurity Architecture of the Java platform
Security Architecture of the Java platform
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
JVM++: The Graal VM
JVM++: The Graal VMJVM++: The Graal VM
JVM++: The Graal VM
 
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack Vectors
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
 
Real World Java 9 (QCon London)
Real World Java 9 (QCon London)Real World Java 9 (QCon London)
Real World Java 9 (QCon London)
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
 

Ähnlich wie Modular Java

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 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG sessionMani Sarkar
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi WebinarWSO2
 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiToni Epple
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodecamp Romania
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)David Bosschaert
 
Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Robert Scholte
 
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 IssuesGlobalLogic Ukraine
 
Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011njbartlett
 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJAX London
 
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 EvolutionsJasmine Conseil
 
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
 
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
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGiMarek Koniew
 
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
 
Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall DeposeJava 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall DeposeNikita Lipsky
 

Ähnlich wie Modular Java (20)

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 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi Webinar
 
Frankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGiFrankenstein's IDE: NetBeans and OSGi
Frankenstein's IDE: NetBeans and OSGi
 
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzleCodeCamp Iasi 10 march 2012 - SolvingThePuzzle
CodeCamp Iasi 10 march 2012 - SolvingThePuzzle
 
OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)OpenJDK Penrose Presentation (JavaOne 2012)
OpenJDK Penrose Presentation (JavaOne 2012)
 
Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)Java9 and the impact on Maven Projects (JFall 2016)
Java9 and the impact on Maven Projects (JFall 2016)
 
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
 
Jax london 2011
Jax london 2011Jax london 2011
Jax london 2011
 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
 
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
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
Java 9
Java 9Java 9
Java 9
 
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)
 
OSGI Modularity
OSGI ModularityOSGI Modularity
OSGI Modularity
 
Java9
Java9Java9
Java9
 
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,...
 
Introduction to OSGGi
Introduction to OSGGiIntroduction to OSGGi
Introduction to OSGGi
 
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)
 
Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall DeposeJava 9 Modules: The Duke Yet Lives That OSGi Shall Depose
Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose
 

Mehr von Martin Toshev

Building highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkBuilding highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkMartin Toshev
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseMartin Toshev
 
Semantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12cSemantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12cMartin Toshev
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular worldMartin Toshev
 
Java 9 Security Enhancements in Practice
Java 9 Security Enhancements in PracticeJava 9 Security Enhancements in Practice
Java 9 Security Enhancements in PracticeMartin Toshev
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Martin Toshev
 
java2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Serversjava2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application ServersMartin Toshev
 
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....Martin Toshev
 

Mehr von Martin Toshev (10)

Building highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkBuilding highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache Spark
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle Database
 
Jdk 10 sneak peek
Jdk 10 sneak peekJdk 10 sneak peek
Jdk 10 sneak peek
 
Semantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12cSemantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12c
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular world
 
Java 9 Security Enhancements in Practice
Java 9 Security Enhancements in PracticeJava 9 Security Enhancements in Practice
Java 9 Security Enhancements in Practice
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8
 
java2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Serversjava2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Servers
 
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
 

Kürzlich hochgeladen

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Kürzlich hochgeladen (20)

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Modular Java

  • 2. BG JUG mailing list: https://groups.google.com/forum/# !forum/bg-jug
  • 3. Agenda Modularity 101 Modularity on top of the platform: OSGi Modularity of the platform: Jigsaw OSGi and Jigsaw interoperability: Penrose
  • 5. Modularity 101 Standard Java libraries are modules - Hibernate, log4j and any library you can basically think of … Build systems like Maven provide transparent management of modules
  • 6. Modularity 101 Benefits of modularization: – smaller modules are typically tested easier than a monolithic application – allows for easier evolution of the system - modules evolve independently
  • 7. Modularity 101 Benefits of modularization: – development of the system can be split easier between teams/developers – increased maintainability of separate modules
  • 8. Modularity 101 The dependency mechanism used by the JDK introduces a number of problems that modular systems aim to solve: – The "JAR hell" problem caused by shortcomings of the classloading process
  • 9. Modularity 101 The dependency mechanism used by the JDK introduces a number of problems that modular systems aim to solve: – The lack of dynamicity in managing dependent modules – The lack of loose coupling between modules
  • 10. Modularity 101 Module systems aim to solve the mentioned problems and typically provide: • module management • module deployment • versioning • dependency management • module repositories • configuration management
  • 11. Modularity on top of the platform: OSGi
  • 12. Modularity on top of the platform: OSGi OSGi (Open Service Gateway iniatiave) provides a specification for module systems implemented in Java It is introduced as JSR 8 and JSR 291 to the Java platform
  • 13. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ?
  • 14. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: An OSGi runtime (module system) makes use of the Java classloading mechanism in order to implement a container for modular units (bundles) and is based on the OSGi spec - a series of standards by the OSGi Alliance. Many application servers are implemented using OSGi as a basis - it is also used in systems from a diversity of areas
  • 15. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: An OSGi bundle is a just a JAR file that contains source code, bundle metadata and resources. A bundle may provide various services and components to the OSGi runtime. An OSGi runtime allows for bundles to be installed, started, stopped, updated and uninstalled without requiring a reboot
  • 16. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: The OSGi Core spec defines a layered architecture that determines what is supported by the runtime – each layer defines a particular functionality supported by the runtime and the bundles OSGi logical units:  bundles  services  services registry  life-cycle  modules  security  execution environment OSGi logical layers:
  • 17. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: Bundles may export packages for use by other bundles or import packages exported by other bundles - this dependency mechanism is referred to as wire protocol and is provided by the Module layer of OSGi.
  • 18. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: Bundles may publish services to the runtime and use already published services from the runtime – this dependency mechanism is provided by the Service layer of OSGI.
  • 19. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: The MANIFEST.MF file of the bundle’s JAR file describes the metadata of the bundle Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Sample Bundle-SymbolicName: com.sample Bundle-Version: 1.0.0.qualifier Bundle-Activator: com.java2days.seminar.demo.Activator Bundle-Vendor: java2days Require-Bundle: org.java.jigsaw.core, org.java.jigsaw.extensions Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Service-Component: OSGI-INF/service.xml Import-Package: com.java2days.seminar.jigsaw.shared;version="1.0.0“ Export-Package: com.java2days.seminar.demo.utils
  • 20. Modularity on top of the platform: OSGi Q: So what is an OSGi runtime ? A: The runtime may implement extensions based on the OSGi Compendium spec that extends the OSGi Core spec. These could be:  remote services  log service  HTTP service  device access service  configuration admin  metatype service  preferences service  user admin  wire admin  DMT admin service  IO connector service  provisioning service  UPnP device service  configuration admin  declarative services  event admin service  deployment admin  XML parser service  monitoring service  others
  • 21. Modularity on top of the platform: OSGi OSGi continues to evolve …
  • 22. Live Demo Modularity on top of the platform: OSGi
  • 23. Modularity of the platform: Jigsaw
  • 24. Modularity of the platform: Jigsaw When speaking of modularity we should also consider the entire runtime (rt.jar) and the JDK core libraries … … and built-in support for improved "OSGi-like" modules in the Java platform
  • 25. Modularity of the platform: Jigsaw The JDK is monolithic …
  • 26. Modularity of the platform: Jigsaw JDK 8 compact profiles provide smaller versions … (javac -profile <profile_name> or make profiles for an OpenJDK build) compact 1 compact 2 compact 3
  • 27. Modularity of the platform: Jigsaw The aim of project Jigsaw is to provide a module system for the Java platform Although deferred to JDK 9 some additional effort such as Compact Profiles and removed/ deprecated inter-library dependencies have been introduced in JDK8 as an intermediate solution
  • 28. Modularity of the platform: Jigsaw Modularization of the Java platform is a significant change that impacts the entire ecosystem - may even break existing projects
  • 29. Modularity of the platform: Jigsaw Draft 3 of Jigsaw requirements states that application using only standard APIs must remain compatible Draft 3 of Jigsaw requirements also mentions that some JDK-specific APIs must remain compatible but no concrete JDK APIs are listed yet
  • 30. Modularity of the platform: Jigsaw Q: So what is exactly project Jigsaw ?
  • 31. Modularity of the platform: Jigsaw Q: So what is exactly project Jigsaw ? A: Jigsaw will provide the basis for a Java Module System JSR. Currently work on Jigsaw is being done for: JEP 200 - define JDK modules (in a modules.xml file in the JDK repo) JEP 201 - reorganize JDK sources into modules and modify JDK build JEP 220 - restructure JRE/JDK images to accommodate modules
  • 32. Modularity of the platform: Jigsaw Q: So what is exactly project Jigsaw ? A: Structure of JDK sources as defined by JEP 201: old src/{share,$OS}/{classes,native}/$PACKAGE/*.{java,c,h,cpp,hpp} new src/$MODULE/{share,$OS}/classes/$PACKAGE/*.java native/include/*.{h,hpp} $LIBRARY/*.{c,cpp} conf/*
  • 33. Modularity of the platform: Jigsaw Q: So what is exactly project Jigsaw ? A: In the early exploratory phase of project Jigsaw there was a proof-of-concept implementation with JDK8 early-access builds (now dropped).
  • 34. Modularity of the platform: Jigsaw Q: So what was exactly the exploratory phase of Jigsaw ? A: Jigsaw POC provided a modularized version of JDK along with additional tools and language support for creating Jigsaw modules. JDK8 early-access builds provided two types of JDK:  JDK modules image - all components are preinstalled as modules  JDK base image + jmod packages - base JDK installation along with additional Jigsaw modules of the JDK that can be installed on-demand using the jmod tool
  • 35. Modularity of the platform: Jigsaw Q: What is a Jigsaw module ?
  • 36. Modularity of the platform: Jigsaw Q: What is a Jigsaw module ? A: A collection of Java classes, native libraries and other resources along with metadata that provides name and version of the module and dependencies on other modules
  • 37. Modularity of the platform: Jigsaw Q: What is a Jigsaw module ? A: Jigsaw resolves modules during build and installation. Jigsaw has no dynamics, no module lifecycle. The module system assumes the existence of a foundational module named java.base
  • 38. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Module can use ("require") other modules and additionally specify version or version ranges for the module dependency - modules are loaded with different module classloaders module org.bgjug.A @ 1.0 { requires org.bgjug.B @ [2.0, 3.0); } module org.bgjug.A { requires org.bgjug.B @ >= 1.0; requires org.bgjug.C @ < 2.0; }
  • 39. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Module versions are compared using a similar approach as the one used for Debian package versions … The intent is to be able to package a module as an OS-specific package (not applicable for Windows/Mac OS)
  • 40. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can also "require" optional modules - meaning that compilation succeeds even if the required module is missing module org.bgjug.A { requires optional jdk-corba@8-ea; }
  • 41. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can also "require" local modules - meaning that the local module is a kind of a "mixin" - it is loaded in the same classloader as the requiring module module org.bgjug.A @ 1.0 { requires local org.bgjug.B @ [2.0, 3.0);
  • 42. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: A module may export packages and classes module org.bgjug.A @ 1.0 { requires org.bgjug.B @ [2.0, 3.0); exports org.bgjug.A.seminar.Sample; exports org.bgjug.A.seminar.samples.*; }
  • 43. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can explicitly specify which other modules can "require" them module org.bgjug.A@ 2.0 { exports org.bgjug.A.seminar; permits org.bgjug.B; }
  • 44. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can logically provide other module names (aliases): module com.bgjug.A @ 1.0 { provides com.bgjug.First @ 2.0; }
  • 45. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can have a single entry point module org.bgjug.A @ 1.0 { permits org.bgjug.B; class org.bgjug.A.Main; } the main() method org.bgjug.A.Main is called when invoking: java -m org.bgjug.A
  • 46. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: Modules can define multiple views module org.bgjug.A { exports org.bgjug.A.seminar; view org.bgjug.internal.view { permits org.bgjug.B } } the main() method org.bgjug.A.Main is called when invoking: java -m org.bgjug.A
  • 47. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: A module can declare that it provides a service module org.bgjug.A { provides service org.bgjug.A.external.TestService with org.bgjug.A.external.TestServiceImpl; }
  • 48. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: A module can require a service module org.bgjug.B { requires service org.bgjug.A.external.TestService }
  • 49. Modularity of the platform: Jigsaw Q: What is a Jigsaw module in terms of the exploratory phase ? A: A service can also be required optionally module org.bgjug.B { requires optional service org.bgjug.A.TestService; }
  • 50. Modularity of the platform: Jigsaw Q: So why not adopt OSGi (at least the module layer) for modularization of the Java platform ?
  • 51. Modularity of the platform: Jigsaw Q: So why not adopt OSGi (at least the module layer) for modularization of the Java platform ? A: As chief architect of the Java platform Mark Reinhold states: The OSGI module layer is not operative at compile time - it addresses modularity only during packaging, deployment and execution. It is also strictly build on top of the platform so it cannot be used to modularize it.
  • 52. Modularity of the platform: Jigsaw Q: So why not adopt OSGi (at least the module layer) for modularization of the Java platform ? A: However - according to Peter Kriens (former technical director at the OSGi Alliance and one of the key drivers behind the OSGi spec) Jigsaw is not typically needed an will introduce burden to the platform and modules can be introduced much easier: The only thing we need to add to the existing system is versioning information on the package and record this version in the class file
  • 53. Live Demo Modularity of the platform: Jigsaw
  • 54. OSGi and Jigsaw interoperability: Penrose
  • 55. OSGi and Jigsaw interoperability: Penrose When speaking of JDK modules we should consider interoperability with existing module systems such as OSGi The purpose of project Penrose is to explore interoperability between OSGi and Jigsaw
  • 56. OSGi and Jigsaw interoperability: Penrose Penrose is still in early stage of development … Current work on project Penrose is deprecated due to the dropped proof-of-concept version of Jigsaw …
  • 57. OSGi and Jigsaw interoperability: Penrose Penrose goals: – ensuring OSGi frameworks run unmodified in a Jigsaw-enabled runtime – create modules/bundles that have both OSGi and Jigsaw metadata in them – Jigsaw metadata can be extended with OSGi concepts – extend OSGi to read Jigsaw metadata
  • 58. OSGi and Jigsaw interoperability: Penrose Penrose goals: – mapping Jigsaw metadata to OSGi metadata – resolve Jigsaw modules in an OSGi runtime – enhance OSGi to use Jigsaw APIs – more cross delegation between the two systems …
  • 59. Summary Q: Project Jigsaw - when ?
  • 60. Summary Q: Project Jigsaw - when ? A: Maybe when the Armagedon comes … … or maybe in 2016 …
  • 61. Summary Q: Projects Jigsaw/Penrose - when ? A: Unless you … … discuss: http://mail.openjdk.java.net/mailman/listinfo/jigsaw-dev … and code: http://hg.openjdk.java.net/jigsaw
  • 62. Q&A Thank you Bulgarian JUG mailing list: https://groups.google.com/forum/#!forum/bg-jug
  • 63. References OSGi Alliance http://www.osgi.org/Main/HomePage Jigsaw Project http://openjdk.java.net/projects/jigsaw/ Penrose Project http://openjdk.java.net/projects/penrose/
  • 64. References Modularity - what is it ? http://www.infoq.com/articles/modular-java-what- is-it/ Java modularity - why ? http://java.dzone.com/articles/java-modularity- 2-why Java JAR hell problem http://en.wikipedia.org/wiki/Java_Classloader#JA R_hell
  • 65. References Project Jigsaw: Phase Two http://mreinhold.org/blog/jigsaw-phase-two Project Jigsaw: Goals & Requirements Draft 3 http://openjdk.java.net/projects/jigsaw/goals-reqs/ 03
  • 66. References Java Module System Requirements http://openjdk.java.net/projects/jigsaw/doc/draf t-java-module-system-requirements-12 Project Jigsaw: The Big Picture http://cr.openjdk.java.net/~mr/jigsaw/notes/jigs aw-big-picture-01 Java 8 Modules Jigsaw and OSGi http://www.slideshare.net/mfrancis/java-8- modules-jigsaw-and-osgi-neil-bartlett
  • 67. References Project Jigsaw: Late for the train http://mreinhold.org/blog/late-for-the-train-qa Unbearable lightness of Jigsaw http://blog.osgi.org/2011/05/unbearable-lightness- of-jigsaw.html Netbeans discussion on Jigsaw http://wiki.netbeans.org/Jigsaw
  • 68. References Java Modularity - OSGi and Project Jigsaw http://techdistrict.kirkk.com/2009/06/12/java-modularity- osgi-and-project-jigsaw/ The Modular Java Platform & Project Jigsaw http://www.jfokus.se/jfokus14/preso/Jigsaw.pdf JAX 2013: A Project Jigsaw primer http://jaxenter.com/a-project-jigsaw-primer- 50029.html
  • 69. References JavaOne 2013: The Modular Java Platform and Project Jigsaw http://parleys.com/play/52549d02e4b0a43ac12 124be/about OpenJDK Penrose JavaOne 2012 http://www.slideshare.net/bosschaert/open-jdk-penrose- javaone-2012

Hinweis der Redaktion

  1. Some people argue that Java libraries are not modules since they do not provide encapsulation (such as classes and packages).
  2. Evolution of modules in the default classloading mechanism supported by the Java platform may cause the so called "JAR hell" problem when conflicting versions of the same library are present on the classpath or required by different libraries. In order to evolve libraries in a compatible way using the default classloading mechanism on must design libraries with backward/forward compatibility in mind.
  3. Evolution of modules in the default classloading mechanism supported by the Java platform may cause the so called "JAR hell" problem when conflicting versions of the same library are present on the classpath or required by different libraries. In order to evolve libraries in a compatible way using the default classloading mechanism on must design libraries with backward/forward compatibility in mind.
  4. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  5. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  6. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  7. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  8. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  9. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  10. multiple packages with the same name can be defined in different modules in that manner (and they are merged when modules are loaded) the optional modules may be explicitly required to "permit" the requiring module in the future
  11. The module can use an enhanced version of java.util.ServiceLoader to load the service
  12. The module can use an enhanced version of java.util.ServiceLoader to load the service
  13. The only benefit in Jigsaw according to Peter Kriens: The only reason I can think of is that is easier for the module system providers to program. In the Jigsaw model traversing the dependencies is as easy as taking the module name + version, combining it with a repository URL, doing some string juggling and using the result as a URL to your module.