SlideShare a Scribd company logo
Keeping up with Java
made easy with
Apache Maven
ROBERT SCHOLTE
@RFSCHOLTE / @ASFMAVENPROJECT
Moving Java Forward Faster (2017/09/06)
Proposal
Taking inspiration from the release models used by other platforms
and by various operating-system distributions, I propose that after
Java 9 we adopt a strict, time-based model with a new feature
release every six months, update releases every quarter, and a long-
term support release every three years.
Source: https://mreinhold.org/blog/forward-faster#Proposal
Surprise?
http://openjdk.java.net/projects/jigsaw/spec/minutes/2017-05-18
Feature driven schedule
20192006 2008 2010 2012 2014 2016 2018
Java 6
December 2006
Java 7
July 2011
Java 8
March 2014
Java 9
September 2017
Time driven schedule
20212018 2019 2020 2021
Java 10
March 2018
Java 11
September 2018
Java 12
March 2019
Java 13
September 2019
Java 14
March 2020
Java 15
September 2020
Java 16
March 2021
Is there really an issue?
Let’s see…
3
6
6
6
7
JAVA 8
JAVA 9
JAVA 10
JAVA 11
JAVA 12
Java support
Classes Sources
Maven runtime versus toolchains
❖ JAVA_HOME is used for the Maven runtime
❖ For ease, JAVA_HOME is the default JDK
❖ With Maven Toolchains some plugins can get an explicit JDK
❖ Most reliable setup: toolchain
#RunsFineOnJDK9
#WorksLikeHeavenOnJDK11
❖ For Maven: YES!
❖ For the plugins: it depends… (most are fine!)
Sourcecode parser
QDox:
❖ reads model up to method signatures
❖ is less critical due to close to no language changes at this level
Bytecode parser
ASM:
❖ reads entire class, must know bytecode version
❖ is very critical, will now be updated every 6 months
20182014 2015 2016 2017 2018
Java 9-ea
8 Apr '14
Java 9
22 Sep '17
Java 10
20 Mar '18
Java 11
25 Sep '18
Jigsaw ea
3 Nov '14
Releases of Java after 2014
Java 9 / Jigsaw early access
❖ Jigsaw team
❖ Java community
❖ Maven team
2018
Today
2014 2015 2016 2017 2018
Java 9-ea
8 Apr '14
Jigsaw ea
3 Nov '14
Java 9
22 Sep '17
Java 10
20 Mar '18
Java 11
25 Sep '18
Maven Compiler Plugin 3.6.0
26 Oct '16
Maven Compiler Plugin 3.6.1
13 Jan '17
Maven Compiler Plugin 3.6.2
26 Jul '17
Maven Compiler Plugin 3.7.0
1 Sep '17
Maven Compiler
Plugin 3.8.0
26 Jul '18
Releases of Maven Compiler Plugin
Maven Compiler Plugin 3.5.1
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<compilerArgs>
<arg>-verbose</arg>
<arg>-Xlint:all,-options,-path</arg>
</compilerArgs>
</configuration>
</plugin>
Maven Compiler Plugin 3.6.x
First implementations of module path support for early adopters
Requirements:
❖ No changes to the pom.xml
❖ (Close to) no extra configuration for developers
Dependencies:
❖ ASM 6.0_ALPHA
❖ QDox 2.0-M6
Java 9 / Maven Compiler Plugin 3.7.0
Module Resolution moved to Plexus::Java
Dependencies:
❖ ASM 6.0_BETA
❖ QDox 2.0-M7
Plexus::Java
Maven independent library for general Java features
❖LocationManager
❖JavaVersion
Used by
❖maven-compiler-plugin
❖maven-javadoc-plugin
❖maven-jlink-plugin
❖maven-jmod-plugin
❖maven-surefire-plugin / maven-failsafe-plugin
❖…
2018Sep Nov 2018 Mar May Jul Sep
Java 9
22 Sep '17
Java 10
20 Mar '18
Java 11
25 Sep '18
Maven Compiler Plugin
3.7.0
1 Sep '17
Maven Compiler Plugin
3.8.0
26 Jul '18
Releases of Maven Compiler Plugin
Java 10 / Maven Compiler Plugin ???
https://stackoverflow.com/questions/49398894/unable-to-compile-simple-java-
10-java-11-project-with-maven
Conclusion: no blocking issue
Updating ASM dependency
This implies: updating to latest asm-6.x dependency is possible,
but not to asm-7.x
Updating plugin dependencies already possible since Maven 2
ClassReader reader = new ClassReader( in );
reader.accept( new ClassVisitor( Opcodes.ASM6 )
{ … } );
2018Sep Nov 2018 Mar May Jul Sep
Java 9
22 Sep '17
Java 10
20 Mar '18
Java 11
25 Sep '18
Maven Compiler Plugin
3.7.0
1 Sep '17
Maven Compiler Plugin
3.8.0
26 Jul '18
Releases of Maven Compiler Plugin
Java 11-ea / Maven Compiler Plugin 3.8.0
❖Reduce need for ASM
❖Use java.lang.module.ModuleDescriptor#read(InputStream)
Will Maven run on future JDK releases?
Yes, most likely
Even Apache Maven 3.0 (released 4 oct 2010) runs on 12-ea
Any issues are plugin related
Is it always forward compatible?
Yes in case of modulepath resolution
No for class analyzers (depend on ASM):
❖maven-dependency-plugin (analyze)
❖maven-plugin-plugin (descriptor)
❖maven-pmd-plugin (pmd)
❖maven-shade-plugin (minifyJar)
How do we test?
https://builds.apache.org/job/maven-box/
Conclusion
Java Release Train reveals critical chain of dependencies
A few plugins might not work right after a new Java release
Depending on the problem:
❖ Update related plugin dependency in your own project
❖ Patch plugin code (please create PR to help each other)
Questions?
Up-for-grabs
~60-80% of Java Project/Developers use Maven
The Apache Maven Project holds ~100 (sub)projects
Maintained by ~5-10 active volunteers (No Company!)
Let’s restore the balance!
https://s.apache.org/up-for-grabs_maven
https://maven.apache.org/guides/development/guide-committer-school.html
20:00-21:00 BOF1
Apache Maven BOF
Robert Scholte
Karl Heinz Marbaise
Hervé Boutemy
Thank you
20:00-21:00 BOF1
Apache Maven BOF
Robert Scholte
Karl Heinz Marbaise
Hervé Boutemy

More Related Content

What's hot

Maven tutorial for beginners
Maven tutorial for beginnersMaven tutorial for beginners
Maven tutorial for beginners
inTwentyEight Minutes
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT Academy
Volodymyr Ostapiv
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
Sander Mak (@Sander_Mak)
 
Maven 2 Introduction
Maven 2 IntroductionMaven 2 Introduction
Maven 2 Introduction
Valentin Jacquemin
 
Log management (elk) for spring boot application
Log management (elk) for spring boot applicationLog management (elk) for spring boot application
Log management (elk) for spring boot application
Vadym Lotar
 
Version Management in Maven
Version Management in MavenVersion Management in Maven
Version Management in MavenGeert Pante
 
Apache Maven In 10 Slides
Apache Maven In 10 SlidesApache Maven In 10 Slides
Apache Maven In 10 Slides
Robert Burrell Donkin
 
Build Automation using Maven
Build Automation using Maven Build Automation using Maven
Build Automation using Maven
Ankit Gubrani
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Maven
MavenMaven
Apache Maven
Apache MavenApache Maven
Apache Maven
Rahul Tanwani
 
Continuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenContinuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenAlan Parkinson
 
Spring boot
Spring bootSpring boot
Spring boot
Pradeep Shanmugam
 
Introduction to Apache Maven
Introduction to Apache MavenIntroduction to Apache Maven
Introduction to Apache Maven
Rajind Ruparathna
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
Angel Ruiz
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
Deepak Kumar
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
MD Sayem Ahmed
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
Mbakaya Kwatukha
 

What's hot (20)

Maven tutorial for beginners
Maven tutorial for beginnersMaven tutorial for beginners
Maven tutorial for beginners
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT Academy
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
Maven 2 Introduction
Maven 2 IntroductionMaven 2 Introduction
Maven 2 Introduction
 
Log management (elk) for spring boot application
Log management (elk) for spring boot applicationLog management (elk) for spring boot application
Log management (elk) for spring boot application
 
SWT Lab 2
SWT Lab 2SWT Lab 2
SWT Lab 2
 
Version Management in Maven
Version Management in MavenVersion Management in Maven
Version Management in Maven
 
Apache Maven In 10 Slides
Apache Maven In 10 SlidesApache Maven In 10 Slides
Apache Maven In 10 Slides
 
Build Automation using Maven
Build Automation using Maven Build Automation using Maven
Build Automation using Maven
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Maven
MavenMaven
Maven
 
SWT Lab 1
SWT Lab 1SWT Lab 1
SWT Lab 1
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Continuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenContinuous Deployment Pipeline with maven
Continuous Deployment Pipeline with maven
 
Spring boot
Spring bootSpring boot
Spring boot
 
Introduction to Apache Maven
Introduction to Apache MavenIntroduction to Apache Maven
Introduction to Apache Maven
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 

Similar to Keeping up with Java made easy with Apache Maven (Devoxx 2018)

GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
Eduardo Pelegri-Llopart
 
Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)
Robert Scholte
 
Migrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategiesMigrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategies
DanHeidinga
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotBaruch Sadogursky
 
Springboot2 postgresql-jpa-hibernate-crud-example with test
Springboot2 postgresql-jpa-hibernate-crud-example with testSpringboot2 postgresql-jpa-hibernate-crud-example with test
Springboot2 postgresql-jpa-hibernate-crud-example with test
HyukSun Kwon
 
Apache Maven supports ALL Java JEEConf 2019
Apache Maven supports ALL Java JEEConf 2019Apache Maven supports ALL Java JEEConf 2019
Apache Maven supports ALL Java JEEConf 2019
Robert Scholte
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
Rubens Dos Santos Filho
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotBaruch Sadogursky
 
Follow these reasons to know java’s importance
Follow these reasons to know java’s importanceFollow these reasons to know java’s importance
Follow these reasons to know java’s importance
nishajj
 
An introduction to Java 9 & Its Features
An introduction to Java 9 & Its FeaturesAn introduction to Java 9 & Its Features
An introduction to Java 9 & Its Features
NexSoftsys
 
DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11
DaliaAboSheasha
 
Springboot2 postgresql-jpa-hibernate-crud-example
Springboot2 postgresql-jpa-hibernate-crud-exampleSpringboot2 postgresql-jpa-hibernate-crud-example
Springboot2 postgresql-jpa-hibernate-crud-example
HyukSun Kwon
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
Matt Raible
 
Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)
Robert Scholte
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure Java
Atlassian
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
Robert Scholte
 
GlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and FutureGlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and Future
Alexis Moussine-Pouchkine
 
Migration from Java EE to JakartaEE 10 - Challenges & Opportunities
Migration from Java EE to JakartaEE 10 - Challenges & OpportunitiesMigration from Java EE to JakartaEE 10 - Challenges & Opportunities
Migration from Java EE to JakartaEE 10 - Challenges & Opportunities
Buhake Sindi
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
Rafael Winterhalter
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
Arun Gupta
 

Similar to Keeping up with Java made easy with Apache Maven (Devoxx 2018) (20)

GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
 
Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)
 
Migrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategiesMigrate Early, Migrate Often: JDK release cadence strategies
Migrate Early, Migrate Often: JDK release cadence strategies
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
Springboot2 postgresql-jpa-hibernate-crud-example with test
Springboot2 postgresql-jpa-hibernate-crud-example with testSpringboot2 postgresql-jpa-hibernate-crud-example with test
Springboot2 postgresql-jpa-hibernate-crud-example with test
 
Apache Maven supports ALL Java JEEConf 2019
Apache Maven supports ALL Java JEEConf 2019Apache Maven supports ALL Java JEEConf 2019
Apache Maven supports ALL Java JEEConf 2019
 
[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
Follow these reasons to know java’s importance
Follow these reasons to know java’s importanceFollow these reasons to know java’s importance
Follow these reasons to know java’s importance
 
An introduction to Java 9 & Its Features
An introduction to Java 9 & Its FeaturesAn introduction to Java 9 & Its Features
An introduction to Java 9 & Its Features
 
DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11
 
Springboot2 postgresql-jpa-hibernate-crud-example
Springboot2 postgresql-jpa-hibernate-crud-exampleSpringboot2 postgresql-jpa-hibernate-crud-example
Springboot2 postgresql-jpa-hibernate-crud-example
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure Java
 
Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)Java 9 and the impact on Maven Projects (JavaOne 2016)
Java 9 and the impact on Maven Projects (JavaOne 2016)
 
GlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and FutureGlassFish and JavaEE, Today and Future
GlassFish and JavaEE, Today and Future
 
Migration from Java EE to JakartaEE 10 - Challenges & Opportunities
Migration from Java EE to JakartaEE 10 - Challenges & OpportunitiesMigration from Java EE to JakartaEE 10 - Challenges & Opportunities
Migration from Java EE to JakartaEE 10 - Challenges & Opportunities
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 

More from Robert Scholte

Broken Buildtools and Bad Habits (Oracle Code One 2019)
Broken Buildtools and Bad Habits (Oracle Code One 2019)Broken Buildtools and Bad Habits (Oracle Code One 2019)
Broken Buildtools and Bad Habits (Oracle Code One 2019)
Robert Scholte
 
The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)
Robert Scholte
 
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)
Robert Scholte
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Robert Scholte
 
Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)
Robert Scholte
 
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
 

More from Robert Scholte (6)

Broken Buildtools and Bad Habits (Oracle Code One 2019)
Broken Buildtools and Bad Habits (Oracle Code One 2019)Broken Buildtools and Bad Habits (Oracle Code One 2019)
Broken Buildtools and Bad Habits (Oracle Code One 2019)
 
The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 2017)The do's and don'ts with java 9 (Devoxx 2017)
The do's and don'ts with java 9 (Devoxx 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)
Apache maven and its impact on java 9 (Java One 2017)
 
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
Java 9 and the impact on Maven Projects (ApacheCon Europe 2016)
 
Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 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)
Java9 and the impact on Maven Projects (JFall 2016)
 

Recently uploaded

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 

Keeping up with Java made easy with Apache Maven (Devoxx 2018)

  • 1. Keeping up with Java made easy with Apache Maven ROBERT SCHOLTE @RFSCHOLTE / @ASFMAVENPROJECT
  • 2. Moving Java Forward Faster (2017/09/06) Proposal Taking inspiration from the release models used by other platforms and by various operating-system distributions, I propose that after Java 9 we adopt a strict, time-based model with a new feature release every six months, update releases every quarter, and a long- term support release every three years. Source: https://mreinhold.org/blog/forward-faster#Proposal
  • 4. Feature driven schedule 20192006 2008 2010 2012 2014 2016 2018 Java 6 December 2006 Java 7 July 2011 Java 8 March 2014 Java 9 September 2017
  • 5. Time driven schedule 20212018 2019 2020 2021 Java 10 March 2018 Java 11 September 2018 Java 12 March 2019 Java 13 September 2019 Java 14 March 2020 Java 15 September 2020 Java 16 March 2021
  • 6. Is there really an issue? Let’s see…
  • 7. 3 6 6 6 7 JAVA 8 JAVA 9 JAVA 10 JAVA 11 JAVA 12 Java support Classes Sources
  • 8. Maven runtime versus toolchains ❖ JAVA_HOME is used for the Maven runtime ❖ For ease, JAVA_HOME is the default JDK ❖ With Maven Toolchains some plugins can get an explicit JDK ❖ Most reliable setup: toolchain
  • 9. #RunsFineOnJDK9 #WorksLikeHeavenOnJDK11 ❖ For Maven: YES! ❖ For the plugins: it depends… (most are fine!)
  • 10. Sourcecode parser QDox: ❖ reads model up to method signatures ❖ is less critical due to close to no language changes at this level
  • 11. Bytecode parser ASM: ❖ reads entire class, must know bytecode version ❖ is very critical, will now be updated every 6 months
  • 12. 20182014 2015 2016 2017 2018 Java 9-ea 8 Apr '14 Java 9 22 Sep '17 Java 10 20 Mar '18 Java 11 25 Sep '18 Jigsaw ea 3 Nov '14 Releases of Java after 2014
  • 13. Java 9 / Jigsaw early access ❖ Jigsaw team ❖ Java community ❖ Maven team
  • 14. 2018 Today 2014 2015 2016 2017 2018 Java 9-ea 8 Apr '14 Jigsaw ea 3 Nov '14 Java 9 22 Sep '17 Java 10 20 Mar '18 Java 11 25 Sep '18 Maven Compiler Plugin 3.6.0 26 Oct '16 Maven Compiler Plugin 3.6.1 13 Jan '17 Maven Compiler Plugin 3.6.2 26 Jul '17 Maven Compiler Plugin 3.7.0 1 Sep '17 Maven Compiler Plugin 3.8.0 26 Jul '18 Releases of Maven Compiler Plugin
  • 15. Maven Compiler Plugin 3.5.1 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <compilerArgs> <arg>-verbose</arg> <arg>-Xlint:all,-options,-path</arg> </compilerArgs> </configuration> </plugin>
  • 16. Maven Compiler Plugin 3.6.x First implementations of module path support for early adopters Requirements: ❖ No changes to the pom.xml ❖ (Close to) no extra configuration for developers Dependencies: ❖ ASM 6.0_ALPHA ❖ QDox 2.0-M6
  • 17. Java 9 / Maven Compiler Plugin 3.7.0 Module Resolution moved to Plexus::Java Dependencies: ❖ ASM 6.0_BETA ❖ QDox 2.0-M7
  • 18. Plexus::Java Maven independent library for general Java features ❖LocationManager ❖JavaVersion Used by ❖maven-compiler-plugin ❖maven-javadoc-plugin ❖maven-jlink-plugin ❖maven-jmod-plugin ❖maven-surefire-plugin / maven-failsafe-plugin ❖…
  • 19. 2018Sep Nov 2018 Mar May Jul Sep Java 9 22 Sep '17 Java 10 20 Mar '18 Java 11 25 Sep '18 Maven Compiler Plugin 3.7.0 1 Sep '17 Maven Compiler Plugin 3.8.0 26 Jul '18 Releases of Maven Compiler Plugin
  • 20. Java 10 / Maven Compiler Plugin ??? https://stackoverflow.com/questions/49398894/unable-to-compile-simple-java- 10-java-11-project-with-maven Conclusion: no blocking issue
  • 21. Updating ASM dependency This implies: updating to latest asm-6.x dependency is possible, but not to asm-7.x Updating plugin dependencies already possible since Maven 2 ClassReader reader = new ClassReader( in ); reader.accept( new ClassVisitor( Opcodes.ASM6 ) { … } );
  • 22. 2018Sep Nov 2018 Mar May Jul Sep Java 9 22 Sep '17 Java 10 20 Mar '18 Java 11 25 Sep '18 Maven Compiler Plugin 3.7.0 1 Sep '17 Maven Compiler Plugin 3.8.0 26 Jul '18 Releases of Maven Compiler Plugin
  • 23. Java 11-ea / Maven Compiler Plugin 3.8.0 ❖Reduce need for ASM ❖Use java.lang.module.ModuleDescriptor#read(InputStream)
  • 24. Will Maven run on future JDK releases? Yes, most likely Even Apache Maven 3.0 (released 4 oct 2010) runs on 12-ea Any issues are plugin related
  • 25. Is it always forward compatible? Yes in case of modulepath resolution No for class analyzers (depend on ASM): ❖maven-dependency-plugin (analyze) ❖maven-plugin-plugin (descriptor) ❖maven-pmd-plugin (pmd) ❖maven-shade-plugin (minifyJar)
  • 26. How do we test? https://builds.apache.org/job/maven-box/
  • 27. Conclusion Java Release Train reveals critical chain of dependencies A few plugins might not work right after a new Java release Depending on the problem: ❖ Update related plugin dependency in your own project ❖ Patch plugin code (please create PR to help each other)
  • 29. Up-for-grabs ~60-80% of Java Project/Developers use Maven The Apache Maven Project holds ~100 (sub)projects Maintained by ~5-10 active volunteers (No Company!) Let’s restore the balance! https://s.apache.org/up-for-grabs_maven https://maven.apache.org/guides/development/guide-committer-school.html
  • 30. 20:00-21:00 BOF1 Apache Maven BOF Robert Scholte Karl Heinz Marbaise Hervé Boutemy
  • 31. Thank you 20:00-21:00 BOF1 Apache Maven BOF Robert Scholte Karl Heinz Marbaise Hervé Boutemy