SlideShare a Scribd company logo
1 of 109
Download to read offline
By Sander Mak
Java Modularity:
@Sander_Mak
The Year After
About Sander
Fellow, Software Architect
@ Luminis
Experience in modular
development stacks
Conference Speaker & Author
@Sander_Mak
Quick Java Module Refresher
@Sander_Mak
module main {
}
module-info.java
Module Descriptors
@Sander_Mak
module main {
}
module-info.java
Module Descriptors
main.web
main.persistence
main.integration
main
@Sander_Mak
module main {
requires helper;
}
module-info.java
module helper {
}
module-info.java
Explicit Dependencies
main.web
main.persistence
main.integration
main
@Sander_Mak
module main {
requires helper;
}
module-info.java
module helper {
}
module-info.java
helper
Explicit Dependencies
main.web
main.persistence
main.integration
main
@Sander_Mak
module main {
requires helper;
}
module helper {
exports helper.api;
}
module-info.java module-info.java
helper.api
helper
Well-defined Interfaces
main.web
main.persistence
main.integration
main
@Sander_Mak
module main {
requires helper;
}
module helper {
exports helper.api;
}
module-info.java module-info.java
helper.api
helper.impl
helper
Strong Encapsulation
main.web
main.persistence
main.integration
main
@Sander_Mak
Improvements Since Java 9
@Sander_Mak
Improvements Since Java 9
@Sander_Mak
Why?
@Sander_Mak
Why?
Modular JDK
@Sander_Mak
Why?
Modular JDK
Maintainability
Reliable composition
Flexibility
@Sander_Mak
Why?
Modular JDK
Maintainability
Reliable composition
jlink
main
lib1 lib2
java.base
java.logging
java.xml
Custom Run-time Image
Flexibility
@Sander_Mak
quick refresher
why/advantages
(JDK: modularized, your app: architecture from whiteboard to code, explicit dependencies in language, strong encapsulation, jlink
Why?
Decrease the model-code gap
@Sander_Mak
Let's Talk About Adoption
@Sander_Mak
Let's Talk About Adoption
@Sander_Mak
Let's Talk About Adoption
TEH
CODEZ
@Sander_Mak
https://jaxenter.com/java-8-still-strong-java-10-142642.html
@Sander_Mak
https://jaxenter.com/java-8-still-strong-java-10-142642.html
https://www.baeldung.com/java-in-2018
@Sander_Mak
https://jaxenter.com/java-8-still-strong-java-10-142642.html
https://www.baeldung.com/java-in-2018
https://www.jetbrains.com/research/devecosystem-2018/java/
@Sander_Mak
https://jaxenter.com/java-8-still-strong-java-10-142642.html
https://www.baeldung.com/java-in-2018
https://www.jetbrains.com/research/devecosystem-2018/java/
Java Magazine & Snyk
@Sander_Mak
https://jaxenter.com/java-8-still-strong-java-10-142642.html
https://www.baeldung.com/java-in-2018
https://www.jetbrains.com/research/devecosystem-2018/java/
Java Magazine & Snyk
@Sander_Mak
Java 11
@Sander_Mak
Java 11
Java 9
Java 10
Java 12
Java 13
6 months
Java 11
@Sander_Mak
Java 11
Java 9
Java 10
Java 12
Java 13
6 months
Java 11
@Sander_Mak
Java 11
Long
Term
Support
Java 9
Java 10
Java 12
Java 13
6 months
Java 11 Java 11 LTS
minimum 3 years
@Sander_Mak
What About the
Java Module System
?
@Sander_Mak
What About the
Java Module System
?
JCP Survey: https://www.surveymonkey.com/results/SM-YR7YQJJJL/
@Sander_Mak
Java 8 Lambdas &
Streams
@Sander_Mak
Java 8 Lambdas &
Streams
Java 9
Modularity
@Sander_Mak
Let's Talk About Libraries
@Sander_Mak
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
OpenJDK Quality Outreach
@Sander_Mak
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
OpenJDK Quality Outreach
Log4J, Jetty, Hibernate, Javassist, Mockito, RxJava, Spring, ...
@Sander_Mak
https://wiki.openjdk.java.net/display/quality/Quality+Outreach
OpenJDK Quality Outreach
Log4J, Jetty, Hibernate, Javassist, Mockito, RxJava, Spring, ...
60% Java 10 compatible
@Sander_Mak
Modular Libraries: Modularization Levels
@Sander_Mak
Modular Libraries: Modularization Levels
Level 0: ¯_(ツ)_/¯
@Sander_Mak
Modular Libraries: Modularization Levels
Level 0: ¯_(ツ)_/¯
Level 1: Automatic-Module-Name
@Sander_Mak
Modular Libraries: Modularization Levels
Level 0: ¯_(ツ)_/¯
Level 1: Automatic-Module-Name
Level 2: Publish modularized JAR
@Sander_Mak
Modular Libraries
@Sander_Mak
Modular Libraries
AdoptOpenJDK

ModuleScanner
+
@Sander_Mak
Modular Libraries
Level 2: Publish modularized JAR
Preliminary results
@Sander_Mak
Modular Libraries
Level 2: Publish modularized JAR
Preliminary results
1%
@Sander_Mak
Modular Libraries
Level 2: Publish modularized JAR
Preliminary results
1%
Level 1: Automatic-Module-Name
9%
@Sander_Mak
Modular Libraries
Level 2: Publish modularized JAR
Preliminary results
1%
Level 1: Automatic-Module-Name
9%
Level 0: ¯_(ツ)_/¯
90%
@Sander_Mak
Modular Libraries
Level 1: Spring, Hibernate, Jackson & other popular libs
@Sander_Mak
Modular Libraries
bit.ly/automaticmods
Urge library maintainers to
step up to at least Level 1
Level 1: Spring, Hibernate, Jackson & other popular libs
@Sander_Mak
Modular Libraries
AdoptOpenJDK

+
bit.ly/automaticmods
Urge library maintainers to
step up to at least Level 1
Level 1: Spring, Hibernate, Jackson & other popular libs
@Sander_Mak
Let's Talk About Java EE
@Sander_Mak
Let's Talk About Java EE
Jakarta EE
@Sander_Mak
bit.ly/jakartaee
Jakarta EE
@Sander_Mak
bit.ly/jakartaee
Jakarta EE
@Sander_Mak
bit.ly/jakartaee Embrace modules:
Modularized artifacts
Platform-wide structure
Optional modules
Jakarta EE
@Sander_Mak
Modules:
java.xml.bind
java.xml.ws
java.ws.rs
java.mail
java.json
...
Automatic modules:
java.persistence
java.transaction
java.activation
...
Jakarta EE
@Sander_Mak
Module-aware
WARs?
EARs?
@Sander_Mak
Module-aware
WARs?
EARs?
Enterprise
Edition
-
Call for pricing1
@Sander_Mak
Let's Talk About Tooling
@Sander_Mak
Let's Talk About Tooling
@Sander_Mak
@Sander_Mak
pom.xml
module1/
pom.xml
/src/main/java
/module-info.java
/com/m1/Mod1.java
module2/
pom.xml
/src/main/java
/module-info.java
/com/m2/Mod2.java
@Sander_Mak
pom.xml
module1/
pom.xml
/src/main/java
/module-info.java
/com/m1/Mod1.java
module2/
pom.xml
/src/main/java
/module-info.java
/com/m2/Mod2.java
@Sander_Mak
pom.xml
module1/
pom.xml
/src/main/java
/module-info.java
/com/m1/Mod1.java
module2/
pom.xml
/src/main/java
/module-info.java
/com/m2/Mod2.java
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
@Sander_Mak
Demo
@Sander_Mak
@Sander_Mak
@Sander_Mak
@Sander_Mak
guides.gradle.org/building-java-9-modules/
While Gradle version 4.10-rc-2
doesn’t have first-class support
for Java 9 modules yet, this guide
shows you how to experiment
with them before that support is
complete.
@Sander_Mak
guides.gradle.org/building-java-9-modules/
While Gradle version 4.10-rc-2
doesn’t have first-class support
for Java 9 modules yet, this guide
shows you how to experiment
with them before that support is
complete.
@Sander_Mak
guides.gradle.org/building-java-9-modules/
While Gradle version 4.10-rc-2
doesn’t have first-class support
for Java 9 modules yet, this guide
shows you how to experiment
with them before that support is
complete.
@Sander_Mak
guides.gradle.org/building-java-9-modules/
While Gradle version 4.10-rc-2
doesn’t have first-class support
for Java 9 modules yet, this guide
shows you how to experiment
with them before that support is
complete.
@Sander_Mak
22 June 2017
guides.gradle.org/building-java-9-modules/
While Gradle version 4.10-rc-2
doesn’t have first-class support
for Java 9 modules yet, this guide
shows you how to experiment
with them before that support is
complete.
@Sander_Mak
22 June 2017
@Sander_Mak
Fear No More!
@Sander_Mak
Fear No More!
@Sander_Mak
Fear No More!
github.com/java9-modularity/gradle-modules-plugin
@Sander_Mak
Let's Talk About Tooling
IDE
@Sander_Mak
@Sander_Mak
@Sander_Mak
@Sander_Mak
Let's Talk About Tooling
MISC
@Sander_Mak
Black Box Testing
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
Black Box Testing
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
Black Box Testing
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
Black Box Testing
mylibrary.itest.Test
mylibrary.itest
requires
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
Black Box Testing
mylibrary.itest.Test
mylibrary.itest
requires
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
White Box Testing
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
White Box Testing
mylibrary.impl.Test
mylibrary
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary
JUnit5 + junit-platform-maven-plugin
White Box Testing
mylibrary.impl.Test
mylibrary
--patch-module
@Sander_Mak
mylibrary.api
mylibrary.impl
mylibrary.impl.Test
mylibrary
JUnit5 + junit-platform-maven-plugin
White Box Testing
mylibrary.impl.Test
mylibrary
--patch-module
@Sander_Mak
jlink
@Sander_Mak
jlink
+
main
lib1 lib2
jdk
~300mb
application
~2mb
@Sander_Mak
jlink
+
main
lib1 lib2
jdk
~300mb
application
~2mb JVM
main
lib1 lib2
java.base
java.logging
java.xml
Custom Run-time Image
~25mb
@Sander_Mak
jlink
+
main
lib1 lib2
jdk
~300mb
application
~2mb JVM
main
lib1 lib2
java.base
java.logging
java.xml
Custom Run-time Image
@Sander_Mak
IoT Device
jlink
+
main
lib1 lib2
jdk
~300mb
application
~2mb JVM
main
lib1 lib2
java.base
java.logging
java.xml
Custom Run-time Image
@Sander_Mak
ModiTect Manage module-info in Maven
@Sander_Mak
ModiTect
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
...
<module>
<moduleInfo>
<name>easytext.gui</name>
<exports>javamodularity.easytext.api.*;</exports>
<opens>javamodularity.easytext.gui to javafx.graphics;</opens>
<addServiceUses>true</addServiceUses>
</moduleInfo>
<mainClass>javamodularity.easytext.gui.Main</mainClass>
</module>
Manage module-info in Maven
@Sander_Mak
ModiTect
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
...
<module>
<moduleInfo>
<name>easytext.gui</name>
<exports>javamodularity.easytext.api.*;</exports>
<opens>javamodularity.easytext.gui to javafx.graphics;</opens>
<addServiceUses>true</addServiceUses>
</moduleInfo>
<mainClass>javamodularity.easytext.gui.Main</mainClass>
</module>
Manage module-info in Maven
@Sander_Mak
ModiTect
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
...
<module>
<moduleInfo>
<name>easytext.gui</name>
<exports>javamodularity.easytext.api.*;</exports>
<opens>javamodularity.easytext.gui to javafx.graphics;</opens>
<addServiceUses>true</addServiceUses>
</moduleInfo>
<mainClass>javamodularity.easytext.gui.Main</mainClass>
</module>
Manage module-info in Maven
@Sander_Mak
ModiTect
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
...
<module>
<moduleInfo>
<name>easytext.gui</name>
<exports>javamodularity.easytext.api.*;</exports>
<opens>javamodularity.easytext.gui to javafx.graphics;</opens>
<addServiceUses>true</addServiceUses>
</moduleInfo>
<mainClass>javamodularity.easytext.gui.Main</mainClass>
</module>
Manage module-info in Maven
@Sander_Mak
ModiTect
Add module descriptors to existing JARs
Use jlink with automatic modules too
Create Docker + custom-runtime image
You can keep your build on Java 8
@Sander_Mak
It's Time to Wrap Up
@Sander_Mak
@Sander_Mak
Java 9
Java 10
@Sander_Mak
Java
9
Java
10
@Sander_Mak
@Sander_Mak
"It is too early to say whether
modules will achieve widespread
use outside of the JDK itself. In
the meantime, it seems best to
avoid them unless you have a
compelling need."
-- Josh Bloch
@Sander_Mak
"It is too early to say whether
modules will achieve widespread
use outside of the JDK itself. In the
meantime, it seems best to see for
yourself whether a modular
approach fits your codebase."
-- Sander Mak
Thanks. Read More:
javamodularity.com
@Sander_Mak
bit.ly/ps-sander

More Related Content

What's hot

Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
Sander Mak (@Sander_Mak)
 
Project Presentation on Advance Java
Project Presentation on Advance JavaProject Presentation on Advance Java
Project Presentation on Advance Java
Vikas Goyal
 

What's hot (20)

Modular Java
Modular JavaModular Java
Modular Java
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Modular JavaScript
Modular JavaScriptModular JavaScript
Modular JavaScript
 
Java 9 modularity
Java 9 modularityJava 9 modularity
Java 9 modularity
 
Java 9 and Project Jigsaw
Java 9 and Project JigsawJava 9 and Project Jigsaw
Java 9 and Project Jigsaw
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
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
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
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
 
Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
 
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
Modules in Java? Finally! (OpenJDK 9 Jigsaw, JSR376)
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Java modularization
Java modularizationJava modularization
Java modularization
 
JDK-9: Modules and Java Linker
JDK-9: Modules and Java LinkerJDK-9: Modules and Java Linker
JDK-9: Modules and Java Linker
 
Project Presentation on Advance Java
Project Presentation on Advance JavaProject Presentation on Advance Java
Project Presentation on Advance Java
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
 
Java 9 New Features
Java 9 New FeaturesJava 9 New Features
Java 9 New Features
 
Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)Workshop Framework(J2EE/OSGi/RCP)
Workshop Framework(J2EE/OSGi/RCP)
 
Advance java Online Training in Hyderabad
Advance java Online Training in HyderabadAdvance java Online Training in Hyderabad
Advance java Online Training in Hyderabad
 
Java modules
Java modulesJava modules
Java modules
 

Similar to Java Modularity: the Year After

1java Introduction
1java Introduction1java Introduction
1java Introduction
Adil Jafri
 
Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09
Charles Severance
 

Similar to Java Modularity: the Year After (20)

Sander Mak - Keeping Up With Java - Codemotion Rome 2019
Sander Mak - Keeping Up With Java - Codemotion Rome 2019Sander Mak - Keeping Up With Java - Codemotion Rome 2019
Sander Mak - Keeping Up With Java - Codemotion Rome 2019
 
Java 9 / Jigsaw - AJUG/VJUG session
Java 9 / Jigsaw - AJUG/VJUG  sessionJava 9 / Jigsaw - AJUG/VJUG  session
Java 9 / Jigsaw - AJUG/VJUG session
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
 
1java Introduction
1java Introduction1java Introduction
1java Introduction
 
Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09Sakai 2.0 Architecture Update 2005-06-09
Sakai 2.0 Architecture Update 2005-06-09
 
Codename BEAN.pptx
Codename BEAN.pptxCodename BEAN.pptx
Codename BEAN.pptx
 
java web framework standard.20180412
java web framework standard.20180412java web framework standard.20180412
java web framework standard.20180412
 
Unit1 introduction to Java
Unit1 introduction to JavaUnit1 introduction to Java
Unit1 introduction to Java
 
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
Alfresco DevCon 2018: SDK 3 Multi Module project using Nexus 3 for releases a...
 
Java ms harsha
Java ms harshaJava ms harsha
Java ms harsha
 
The Art of Metaprogramming in Java
The Art of Metaprogramming in Java  The Art of Metaprogramming in Java
The Art of Metaprogramming in Java
 
Java training noida hibernate+spring+struts+web services(1)
Java training noida hibernate+spring+struts+web services(1)Java training noida hibernate+spring+struts+web services(1)
Java training noida hibernate+spring+struts+web services(1)
 
Netbeans 6.1 Talk
Netbeans 6.1 TalkNetbeans 6.1 Talk
Netbeans 6.1 Talk
 
JAVA ALL 5 MODULE NOTES.pptx
JAVA ALL 5 MODULE NOTES.pptxJAVA ALL 5 MODULE NOTES.pptx
JAVA ALL 5 MODULE NOTES.pptx
 
gopal hp
gopal hpgopal hp
gopal hp
 
java full stack content 2 (2023).docx
java full stack content 2 (2023).docxjava full stack content 2 (2023).docx
java full stack content 2 (2023).docx
 
java full stack
java full stackjava full stack
java full stack
 
java full stack content
java full stack contentjava full stack content
java full stack content
 
Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)Apache maven and its impact on java 9 (Java One 2017)
Apache maven and its impact on java 9 (Java One 2017)
 
159747608 a-training-report-on
159747608 a-training-report-on159747608 a-training-report-on
159747608 a-training-report-on
 

More from Sander Mak (@Sander_Mak)

More from Sander Mak (@Sander_Mak) (20)

Scalable Application Development @ Picnic
Scalable Application Development @ PicnicScalable Application Development @ Picnic
Scalable Application Development @ Picnic
 
Coding Your Way to Java 13
Coding Your Way to Java 13Coding Your Way to Java 13
Coding Your Way to Java 13
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
Provisioning the IoT
Provisioning the IoTProvisioning the IoT
Provisioning the IoT
 
Event-sourced architectures with Akka
Event-sourced architectures with AkkaEvent-sourced architectures with Akka
Event-sourced architectures with Akka
 
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the painTypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
 
The Ultimate Dependency Manager Shootout (QCon NY 2014)
The Ultimate Dependency Manager Shootout (QCon NY 2014)The Ultimate Dependency Manager Shootout (QCon NY 2014)
The Ultimate Dependency Manager Shootout (QCon NY 2014)
 
Modularity in the Cloud
Modularity in the CloudModularity in the Cloud
Modularity in the Cloud
 
Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?
 
Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)
 
Hibernate Performance Tuning (JEEConf 2012)
Hibernate Performance Tuning (JEEConf 2012)Hibernate Performance Tuning (JEEConf 2012)
Hibernate Performance Tuning (JEEConf 2012)
 
Akka (BeJUG)
Akka (BeJUG)Akka (BeJUG)
Akka (BeJUG)
 
Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)
 
Fork/Join for Fun and Profit!
Fork/Join for Fun and Profit!Fork/Join for Fun and Profit!
Fork/Join for Fun and Profit!
 
Kscope11 recap
Kscope11 recapKscope11 recap
Kscope11 recap
 
Java 7: Fork/Join, Invokedynamic and the future
Java 7: Fork/Join, Invokedynamic and the futureJava 7: Fork/Join, Invokedynamic and the future
Java 7: Fork/Join, Invokedynamic and the future
 
Scala and Lift
Scala and LiftScala and Lift
Scala and Lift
 
Elevate your webapps with Scala and Lift
Elevate your webapps with Scala and LiftElevate your webapps with Scala and Lift
Elevate your webapps with Scala and Lift
 
Hibernate performance tuning
Hibernate performance tuningHibernate performance tuning
Hibernate performance tuning
 
JDK7: Improved support for dynamic languages
JDK7: Improved support for dynamic languagesJDK7: Improved support for dynamic languages
JDK7: Improved support for dynamic languages
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
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
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Recently uploaded (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
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 ...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
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
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
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 🔝✔️✔️
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
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 🔝✔️✔️
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 

Java Modularity: the Year After