Using JDK 11 instead of JDK 8 in default docker images

1,641 views
Skip to first unread message

Mark Waite

unread,
Apr 26, 2021, 11:36:41 PM4/26/21
to Jenkins Developers
The Jenkins docker images are currently using Java 8 unless the image name specifically includes 'jdk11' in the name. 

The platform SIG discussed last Friday that we think September 2021 would be a good goal to deliver JDK 11 as the standard JDK in those images instead of JDK 8.

This change is independent of Java 17 support, but would happen at roughly the time when the new Java LTS (Java 17) is expected to be released.  This change does not have any dependency on Java 17 and does not assume any requirement for support (or non-support) of Java 17.

This thread is intended to start the discussions.  I'd love to have the discussions concluded before the June 25, 2021 Jenkins Contributor Summit associated with cdCon.

We'd write a blog post announcing the change like we did for the controller change from Debian Stretch to Debian Buster.  We would include information about the change in the upgrade guide for the September LTS release.

What concerns do you have related to that idea?

The images that would change include:
  • Controller Image - jenkins/jenkins
    • lts
    • lts-centos7
    • centos7
    • lts-centos
    • centos
    • lts-slim
    • slim
    • lts-alpine
    • alpine
    • latest
  • Agent Base Image - jenkins/agent
    • stretch (obsolete)
    • buster
    • alpine
    • latest
  • SSH Agent Image - jenkins/ssh-agent
    • stretch
    • alpine
    • latest (which is an unlabeled buster)
  • Inbound Agent Image - jenkins/inbound-agent
    • alpine
    • latest
Mark Waite

Jesse Glick

unread,
Apr 27, 2021, 10:48:24 AM4/27/21
to Jenkins Dev
My opinion remains that if we believe Java 11 support is solid enough to be the default, then we may as well keep things simple and drop Java 8 support: start building core and important plugins with `java.level=11`, and take advantage of its features. Building and testing primarily against 8 while pushing users to run 11, and forcing developers to consider both platforms in every situation, seems like the worst decision.

Tim Jacomb

unread,
Apr 27, 2021, 12:11:11 PM4/27/21
to jenkin...@googlegroups.com
We’ve been using it for over a year on java 11 and never hit an issue...

I would rather drop java 8 as well

On Tue, 27 Apr 2021 at 15:48, Jesse Glick <jgl...@cloudbees.com> wrote:
My opinion remains that if we believe Java 11 support is solid enough to be the default, then we may as well keep things simple and drop Java 8 support: start building core and important plugins with `java.level=11`, and take advantage of its features. Building and testing primarily against 8 while pushing users to run 11, and forcing developers to consider both platforms in every situation, seems like the worst decision.

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CANfRfr2hjuPWgK7XqzwezcT8eP1i1_ZZd_iMNreg%3D7K7FTzH8Q%40mail.gmail.com.

Slide

unread,
Apr 27, 2021, 1:13:17 PM4/27/21
to jenkin...@googlegroups.com
I agree with dropping java 8. There are some nice features in 11 that would be good to use.



--

Oleg Nenashev

unread,
Apr 27, 2021, 7:42:20 PM4/27/21
to Jenkins Developers
I am in favor of making JDK11 the default in all our distributions, including controller and agent Docker images.
At the same time I am afraid that removal of Java 1.8 support is premature. The vast majority of Jenkins users still uses this version, and the migration to Java 11 won't be seamless in al l cases. For example, Maven Plugin will effectively switch project builds to Java 11 once the agent images are updated. It will cause unexpected issues in user builds here and there. Nothing should be critical, but we should not force users to migrate immediately.

IMHO there should be a grace period between Java 8 support deprecation and the actual removal. Maybe 6 months or so.

BR, Oleg

Raihaan Shouhell

unread,
Apr 27, 2021, 11:21:19 PM4/27/21
to jenkin...@googlegroups.com
Perhaps removal of java 8 support should come with a bump in major version number so jenkins 3.x and an announcement ahead of time.

Cheers,
Raihaan

Matt Sicker

unread,
Apr 28, 2021, 11:55:55 AM4/28/21
to jenkin...@googlegroups.com
A transition period using Java 11 Docker images with Java 8
compatibility would be useful IMO.
> To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAFoxvgwycdrsK9dX-A7KVcA%2Bi%3Dta6dhc4iZbVAz%2BRKv3dn5Ymg%40mail.gmail.com.

Daniel Beck

unread,
Apr 28, 2021, 12:08:54 PM4/28/21
to JenkinsCI Developers
On Wed, Apr 28, 2021 at 1:42 AM Oleg Nenashev <o.v.ne...@gmail.com> wrote:
I am in favor of making JDK11 the default in all our distributions, including controller and agent Docker images.
At the same time I am afraid that removal of Java 1.8 support is premature. The vast majority of Jenkins users still uses this version, and the migration to Java 11 won't be seamless in al l cases. For example, Maven Plugin will effectively switch project builds to Java 11 once the agent images are updated. It will cause unexpected issues in user builds here and there. Nothing should be critical, but we should not force users to migrate immediately.

IMHO there should be a grace period between Java 8 support deprecation and the actual removal. Maybe 6 months or so.

Agree; I'd even be more conservative than just six months. We can and should update the default Docker images to run on JDK 11. But we shouldn't ignore that just ~0.3% of instances use Java 11, let's do something about that first. I wouldn't be surprised that there are still some problems to work out but we just have no users yet who would be affected.

Tim Jacomb

unread,
Apr 28, 2021, 12:19:01 PM4/28/21
to jenkin...@googlegroups.com
It’s just down to defaults I think.

We’ve seen the numbers rise as we changed the website and helm chart to use Java 11 by default

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Tim Jacomb

unread,
Apr 28, 2021, 12:20:51 PM4/28/21
to jenkin...@googlegroups.com
Defaults and (people not seeing a need to change)

Shipping an ‘admin monitor’ encouraging people to update would probably make a difference 

Olblak

unread,
Apr 29, 2021, 3:21:48 AM4/29/21
to Jenkins Developers ML
Hi,

I am definitely in favor of switching to jdk11 by default, it's really time to move forward. We have been using it on the Jenkins infrastructure project for almost a year now without major issues but we also had to fine-tune the java configuration for java 11.

That remains a major change with potential breaking changes, so I would announce it enough in advance so people can already switch to jdk11, and keep the java8 for several stable releases with a deprecation warning.

Oleg Nenashev

unread,
May 5, 2021, 3:03:56 AM5/5/21
to Jenkins Developers
FTR here is the query for known Java 11 compatibility issues in Jira. Some issues are not a blocker, for example Illegal Reflective Access which will become a big deal in Java 17.

The biggest remaining issue is Removal of JAXB dependencies and replacing them by the JAXB API plugin where required (JENKINS-55944). It impacts a number of plugins including CppCheck, codesonar, Job Import, etc. Baptiste Mathus has created a number of pull requests when we were working on the Java 11 support, but not all of them were merged/released AFAICT. Ideally we should do an issue scrub and review the state before deciding on this topic.

Time to write up a JEP by the way?

Oleg Nenashev

unread,
May 8, 2021, 6:03:39 PM5/8/21
to Jenkins Developers

FTR Here are results of the Twitter poll in https://twitter.com/oleg_nenashev/status/1389808892926996481:
The results are not aligned with the less than 1% Java 11 adoption in Jenkins, but it looks like the move would be supported in the community.
We still need to document the compatibility and the scope of changes though

117554722-b75f8300-b059-11eb-8570-06897f8863a6.png

Gavin Mogan

unread,
May 8, 2021, 6:27:05 PM5/8/21
to Jenkins Developers
That's a little bit of confirmation bias there. "Hey all the people that follow us on a social media, do you support new things?" I wouldn't really use a social media poll as anything more than "hrm thats interesting"
Not saying don't upgrade, I have no concerns about upgrades as I do everything via docker, but just be careful

Tim Jacomb

unread,
May 9, 2021, 4:10:11 AM5/9/21
to Jenkins Developers
I've raised https://github.com/jenkinsci/jenkins/pull/5474 to encourage existing users to migrate ahead of any deadline.

Possibly worth getting into LTS as well.

Oleg Nenashev

unread,
May 9, 2021, 4:49:45 AM5/9/21
to JenkinsCI Developers
Before we communicate anything to users, I think we should refresh https://www.jenkins.io/doc/administration/requirements/upgrade-java-guidelines/ and reference it from admin monitors and changelogs

You received this message because you are subscribed to a topic in the Google Groups "Jenkins Developers" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-dev/VfRq09Yfloo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CAH-3Bicv94K9tFdRwa6hwBCzF4P_esiQ%2BGvjQADtjU_O3ApMog%40mail.gmail.com.

Tim Jacomb

unread,
May 9, 2021, 5:23:08 AM5/9/21
to jenkin...@googlegroups.com
Anything specifically need refreshing there?

The upgrade step could possibly be removed as java 11 has been supported for a long time at this point 

Oleg Nenashev

unread,
May 9, 2021, 8:01:25 AM5/9/21
to JenkinsCI Developers
Lemme review it tonight. It would be nice to explicitly list compat issues like JAXB, though we could rather go ahead and fix the plugins instead. If we could get plugin EOL JEP from Basil accepted, that would be quite easy to do

Jesse Glick

unread,
May 10, 2021, 8:31:19 AM5/10/21
to Jenkins Dev
On Sun, May 9, 2021 at 4:10 AM Tim Jacomb <timja...@gmail.com> wrote:
encourage existing users to migrate

Feels a bit premature when the list of `java11-compatibility` issues still includes bugs in core and widely used plugins.

(The only ones I have personal experience with are JENKINS-61212, which should only affect users terminating TLS in Jenkins, rather than a reverse proxy/ingress which I suppose is more customary; and JENKINS-57139 which affects the GUI agent installers that would be lightly deprecated in JEP-230 but for now remain in core.)

Tim Jacomb

unread,
May 10, 2021, 9:47:41 AM5/10/21
to Jenkins Developers
What metric would people consider? 

0? Few new issues? From personal experience on Java 11 I have never hit the above issues (apart from illegal reflective access log messages) 

Query I used to look:

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Olblak

unread,
Jun 14, 2021, 9:20:45 AM6/14/21
to Jenkins Developers
What the current state here?
Looks like the docker image still use java 8 by default but the helm chart switched to java 11

Should we talk about switching to java11 by default during the contributor summit?

Slide

unread,
Jun 14, 2021, 10:03:12 AM6/14/21
to jenkin...@googlegroups.com
I think Mark was looking at doing the migration in September if I remember correctly. 



--

Tim Jacomb

unread,
Jun 14, 2021, 2:42:07 PM6/14/21
to jenkin...@googlegroups.com
The docs on Jenkins.Io, dockerhub and in the docker GitHub repo were all updated to use the jdk11 variant but the latest image tag isn’t changed yet 

Michael Cirioli

unread,
Jun 17, 2021, 11:58:21 AM6/17/21
to Jenkins Developers
Adding my $.02 ....

I am in support of making java11, and would like to help move this forward.  It is great that there is now an admin monitor which should help raise awareness (and appetite) , but what other actionable items need to happen?  

- communicate plan to address remaining java11 issues
- update docker images to default to java11
- determine how long java8 will remain supported and communicate
- (?) make a decision on when we can start targeting `java.level=11`

I am sure there are a number of things i am not thinking of, but since i don't hear any strong objections I'd love to make this happen.  

-mike cirioli

Mark Waite

unread,
Jun 18, 2021, 10:51:07 AM6/18/21
to Jenkins Developers
I'm more conservative with my concept for the September plan.  I think we should change the base images to Java 11 but don't need to make any decision related to Java 8.

We'll discuss further in the Platform SIG meeting today

Basil Crow

unread,
Jun 24, 2021, 6:36:16 PM6/24/21
to jenkin...@googlegroups.com
Allow me to append myself to the list of developers who would like access to Java 11 APIs. If we had access to Java 11 APIs, then this (and similar code in a CloudBees-proprietary plugin) could be switched to the Java Platform's ProcessHandle#pid() (to say nothing of ProcessTree in Jenkins core), which would mean that we could get rid of JNR from Jenkins core, which would mean that we could get rid of ASM from Jenkins core, which would eliminate a long-standing pain point in the dependency tree.

Oleg Nenashev

unread,
Jun 28, 2021, 11:51:42 PM6/28/21
to Jenkins Developers
Hi all,

Looking forward to see the discussion from the contributor summit summarized here. Sadly I missed it due to having another session, but I've heard it was a great discussion that resulted in a proposal. Thanks to Mike Cirioli and Mark Waite for driving this topic at the summit, and thanks to all contributors. Just posting the links shared by Mike and Runxia in the Google Doc:
I might be unavailable when the decision making happens, so I would like to cast my votes in advance. Note that I have not fully went through the notes, and might be misaligned. I am happy to support whatever decision made by the community. My votes are:
  • +1 for making Java 11 a default in all Jenkins distributions starting from September LTS. It applies to Jenkins controller and agent Docker images. It also applies to Helm chart, Jenkins Operator and whatever other packaging that happens to include Java. Jenkinsfile Runner already ships Java 11 by default FTR.
  • +1 for allowing Java 11 only plugins starting from the September LTS. We have tooling embedded into the Jenkins core and Jenkins update centers starting from LTS releases in 2018 (2.164.x IIRC), so all modern Jenkins versions will be able to properly notify users in the UI Plugin manager. https://github.com/jenkinsci/plugin-pom/pull/133 should be finalized to make it possible in the tooling
  • Dropping Java 8 support
    • -1 for dropping Java 8 support in the September LTS
    • +0.5 for officially announcing it as deprecated. Needs more planning and definition what deprecation actually means
    • +1 for declaring an intent to drop support for Java 8 in the coming years
  • Java 17 support:
    • +1 for any coordinated efforts on this front, and thanks to all contributors. I will be exploring Java 17 in the coming months, but I might be unable to contribute.
    • +1 for library updates and non-severe breaking changes if they are needed to support Java 17
Best regards,
Oleg

Mark Waite

unread,
Jul 2, 2021, 9:51:22 AM7/2/21
to Jenkins Developers
I believe that the plan from the Contributor Summit aligns with Oleg's vote that he cast in advance.  The Platform SIG will meet today and has Java 11 on the agenda for further discussion.

Contributor summit notes are recorded in a Google Doc.  The YouTube video of the session is also available.

My summary of the proposed plan from the Contributor Summit is:

Weekly release
  • Jenkins Docker controller images for weekly releases switch to Java 11 4-6 weeks before the September LTS release.  That includes jenkins/jenkins:latest, jenkins/jenkins:alpine, jenkins/jenkins:centos7, and more.
  • Jenkins Docker controller images for weekly releases add a Java 8 tag 4-6 weeks before the September LTS release as an escape hatch for users that require Java 8.  That would be jenkins/jenkins:latest-jdk8, jenkins/jenkins:alpine-jdk8, and jenkins/jenkins:centos7-jdk8
LTS release
  • Jenkins Docker controller images for LTS releases switch to Java 11 with the September LTS release.  That includes jenkins/jenkins:lts, jenkins/jenkins:lts-alpine, jenkins/jenkins:centos7, and more
  • Jenkins Docker controller images for LTS releases add a Java 8 tag with the September LTS release   as an escape hatch for users that require Java 8.  That would be jenkins/jenkins:lts-jdk8, jenkins/jenkins:lts-alpine-jdk8, and jenkins/jenkins:lts-centos7-jdk8
A blog post will be provided for the weekly change and an additional blog post and an upgrade guide entry will be provided for the LTS change.

A JEP will be submitted that details the proposed transition plan so that we can review the transition plan in greater detail.

We'll discuss further and in more detail in the Platform SIG meeting later today.

Mark Waite

Mark Waite

unread,
Aug 3, 2021, 10:43:28 PM8/3/21
to Jenkins Developers
I've submitted the Jenkins Enhancement Proposal that proposes to switch from JDK 8 to JDK 11 for the Jenkins 2.302.1 LTS release on Aug 25, 2021.

the.n...@gmail.com

unread,
Aug 4, 2021, 2:04:47 PM8/4/21
to Jenkins Developers
I'm sorry I missed this meeting - other obligations. We are stuck on JDK 8 for a variety of reasons, including Oracle's JDK 11 license terms, which are significantly different from JDK 8, and also that JDK 11 is not available on our ia64 platform. How long will JDK 8 builds continue to be available and is there a link I can include for my community for both Docker and standard locations?

Thanks,
Randall

Slide

unread,
Aug 4, 2021, 2:09:30 PM8/4/21
to jenkin...@googlegroups.com
We aren't using Oracle's JDK in the images, we are using the Adoptium project's JDK. 

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.


--

Randall Becker

unread,
Aug 4, 2021, 2:13:33 PM8/4/21
to jenkin...@googlegroups.com

I understand that, but when deploying Jenkins into production environments in the community (HPE NonStop), using the Oracle JRE is a requirement not an option. As long as the minimum support level is still 1.8, there is no problem, but I cannot deploy Adoptium anything in production. The Docker image, built with Adoptium, may be fine for the Controller, but when remoting.jar is launched, it must use the Oracle builds. Perhaps I have not clarified my question.

 

Sent from Mail for Windows 10

Jesse Glick

unread,
Aug 4, 2021, 2:55:02 PM8/4/21
to Jenkins Dev
On Wed, Aug 4, 2021 at 2:13 PM Randall Becker <the.n...@gmail.com> wrote:

when deploying Jenkins into production environments […] using the Oracle JRE is a requirement not an option


If your environment has specialized needs, including legal ones, you can of course build your own Docker images accordingly starting with a WAR file. The question is about the default images supported by the Jenkins project and deemed suitable for typical purposes. 

the.n...@gmail.com

unread,
Aug 4, 2021, 3:11:30 PM8/4/21
to Jenkins Developers
That's assuming that Docker runs on NonStop, which it doesn't. The key issue is remoting.jar and whether that can be maintained at 1.8 compatibility. Most groups are using a Controller/Agent architecture using Docker for the Controller and running the platform JVM for remoting.jar. There are a few using the jenkins.war, so as long as that is also 1.8 compatible, building using 11 is fine.

Mark Waite

unread,
Aug 4, 2021, 4:37:35 PM8/4/21
to jenkinsci-dev
On Wed, Aug 4, 2021 at 1:11 PM the.n...@gmail.com <the.n...@gmail.com> wrote:
That's assuming that Docker runs on NonStop, which it doesn't. The key issue is remoting.jar and whether that can be maintained at 1.8 compatibility. Most groups are using a Controller/Agent architecture using Docker for the Controller and running the platform JVM for remoting.jar. There are a few using the jenkins.war, so as long as that is also 1.8 compatible, building using 11 is fine.


The Jenkins Enhancement Proposal that I've submitted does not remove any support for Java 8.  It changes the default JDK in the Jenkins Docker images from Java 8 to Java 11.  It provides new Docker images with the '-jdk8' suffix for those users that are using Docker but cannot move to Java 11.

Users running the Jenkins war file may use Java 8 or Java 11.  Users running operating installer packages (like rpm, deb, and msi) may use Java 8 or Java 11.

It will be a separate decision in the future that will decide when Jenkins should stop supporting Java 8.

Mark Waite
 
On Wednesday, August 4, 2021 at 2:55:02 p.m. UTC-4 Jesse Glick wrote:
On Wed, Aug 4, 2021 at 2:13 PM Randall Becker <the.n...@gmail.com> wrote:

when deploying Jenkins into production environments […] using the Oracle JRE is a requirement not an option


If your environment has specialized needs, including legal ones, you can of course build your own Docker images accordingly starting with a WAR file. The question is about the default images supported by the Jenkins project and deemed suitable for typical purposes. 

--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Bill Honaker

unread,
Aug 4, 2021, 4:39:05 PM8/4/21
to Jenkins Developers
Similar to Randall (the.n...), I have customers that use NonStop, but they also use various distros of Enterprise Linux.  Their corporate strategy for software development is to remain on Java 8 for the foreseeable future, primarily due to the JDK  11 licensing mentioned above.  They have a corporate support contract with Oracle to continue to get Java 8 updates, so support is not an issue for them.  Shipping a version of Jenkins that won't do 'remoting' on those target platforms should require much longer than 5 months of advance notice, as those customers are on much longer strategic cycles.

Even though  the newer platforms and releases for NonStop  include both Java 8 and Java 11, customers on NonStop and Linux that are Enterprise-focused (and there are MANY) haven't installed Java 11 and have no plan to do so  this year or probably even next.  What was the penetration number above for Java 11, only 4%?  Expecting a large percentage of your customer base to make this move is short-sighted.

If Jenkins is to retain its preferred position in Enterprise environments, this decision should be very carefully reconsidered. Most of your customers don't spend time reviewing this group.  And many Enterprise decisionmakers don't participate in Twitter, which leaves the results of surveys in that platform somewhat questionable.  This is not just a question of what is easier for the developers of Jenkins, it's also a matter of where Jenkins (and its remotes) run.

This is just my .02$US,

the.n...@gmail.com

unread,
Aug 4, 2021, 4:41:28 PM8/4/21
to Jenkins Developers
I am incredibly relieved!!! Thanks Mark, for the clarification. This would have been a sleep-loss situation. I have to hold things together until at least December 2023, on this topic.

Mark Waite

unread,
Aug 4, 2021, 4:49:40 PM8/4/21
to Jenkins Developers
Thanks for sharing your insights.  Great to have participation in the thread.  Comments are inline

On Wednesday, August 4, 2021 at 2:39:05 PM UTC-6 bhon wrote:
Similar to Randall (the.n...), I have customers that use NonStop, but they also use various distros of Enterprise Linux.  Their corporate strategy for software development is to remain on Java 8 for the foreseeable future, primarily due to the JDK  11 licensing mentioned above.  They have a corporate support contract with Oracle to continue to get Java 8 updates, so support is not an issue for them.  Shipping a version of Jenkins that won't do 'remoting' on those target platforms should require much longer than 5 months of advance notice, as those customers are on much longer strategic cycles.


I'm not sure where you're getting the idea that we would be shipping a version of Jenkins that won't do 'remoting' on those target platforms.  The proposal does not remove Java 8 support.  The proposal does not prevent users from running agents or controllers or both with Java 8.  The proposal does not change how 'remoting' operates.

 
Even though  the newer platforms and releases for NonStop  include both Java 8 and Java 11, customers on NonStop and Linux that are Enterprise-focused (and there are MANY) haven't installed Java 11 and have no plan to do so  this year or probably even next.  What was the penetration number above for Java 11, only 4%?  Expecting a large percentage of your customer base to make this move is short-sighted.


We're not expecting them to make a move.  We're changing the default in the Jenkins Docker images so that users who choose to use the default Jenkins Docker images will use Java 11 instead of Java 8.  Users that can't use Docker images (arm32, ppc64, s390x, ia64, riscv) can continue to use either Java 8 or Java 11 on their platform.  After the change, users that are running Docker images can change the name of the image they are using and that will allow them to continue running with Java 8.  Today, if they run with `docker run --rm -i -t jenkins/jenkins:lts` and they have a hard requirement for Java 8, they will need to run with `docker run --rm -i -t jenkins/jenkins:lts-jdk8`.

If Jenkins is to retain its preferred position in Enterprise environments, this decision should be very carefully reconsidered. Most of your customers don't spend time reviewing this group.  And many Enterprise decisionmakers don't participate in Twitter, which leaves the results of surveys in that platform somewhat questionable.  This is not just a question of what is easier for the developers of Jenkins, it's also a matter of where Jenkins (and its remotes) run.


We're not changing where Jenkins can run with this proposal.
 
This is just my .02$US,


Thanks for sharing!
Mark Waite
 

Bill Honaker

unread,
Aug 4, 2021, 6:00:06 PM8/4/21
to Jenkins Developers
Mark,

Randall had pointed me to this thread.  I admit to only reading the last couple of dozen posts and, based only on that, share my concerns.  I should have spent more time reading the thread, but I was scheduled to do a code walkthrough with my customer and took the 'short' path, for which I apologize.

Your clarification does seem 100% the right thing to do, and I thank you for sharing it.  That's worth much  more than .02$US!
 
And my customers all never need know I ever had this concern, you had it  covered. :-)

Bill

jn...@cloudbees.com

unread,
Aug 11, 2021, 10:17:49 AM8/11/21
to Jenkins Developers
Hi Bill (et al) for those that are running nonstop or the like and have an update / test cycle in the order of 6 months :

I would recommend that your customers probably want to start the planning / validation to update to Java11 now even if this LTS version still runs on Java8.  Java11 is going to happen at some point and I am not sure the project will be able to give you all the advance notice you need.

Jenkins has supported Java11 for a while now, and if there are any specifics from you that cause it not to run we would like to be aware as early as possible (it won;t help you if we find out after the switch has been made and 7 days before a go live)


>  Most of your customers don't spend time reviewing this group.  And many Enterprise decisionmakers don't participate in Twitter, which leaves the results of surveys in that platform somewhat questionable.

On that note - where should we announce surveys / things like this - if users are not in the user email / discored or the like how can we reach people to inform them and have them participate?

I also work for a company (CloudBees) that has Jenkins at its core for Enterprise customers, so we have the statistics from these installations as well - so this project is not blind of enterprises (and if a customer wants a version of Jenkins that is supported for 9 months rather than the normal 3 we can probably help you out, and there may be others) 

Regards

/James

Matt Sicker

unread,
Aug 11, 2021, 11:03:08 AM8/11/21
to jenkin...@googlegroups.com
Plus Java 17 comes out really soon. I can imagine that will inspire more projects to set Java 11 as a baseline. Definitely start planning since most people will probably be affected by some other dependencies well before they hit Jenkins.

Matt Sicker

On Aug 11, 2021, at 09:18, jn...@cloudbees.com <jn...@cloudbees.com> wrote:

Hi Bill (et al) for those that are running nonstop or the like and have an update / test cycle in the order of 6 months :
--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.

Bill Honaker

unread,
Aug 11, 2021, 12:32:07 PM8/11/21
to jenkin...@googlegroups.com

Matt,

 

Oracle releases Java to the larger OS platforms (Windows, Linux, MacOS, IOS, Android) directly.  However for other platforms (speaking specifically for NonStop), the vendor has to do the deep port themselves and go through their QA process, etc.  They do this with the support of Oracle (under paid license and support), but it’s never going to be fast.  Java 11 has only been released on NonStop for a few years now (not 10).  And there are actually 2  different underlying instruction sets.  The currently-sold versions NonStop (‘X’ and ‘V’) run on Xeon processors or in VMs, and Java 11 exists for those.  However, ‘E’ is an Itanium-based platform that is no longer sold but is still supported for Enterprise customers.  It still has 3 years of support remaining. 

 

I wouldn’t expect Java 17 to be available for NonStop for another 5-10 years. 

 

Building Java apps with Java 11 that run on an Java 8 RTE is not difficult at all.  Where you may run into issues is with 3rd party packages.  But in the Open Source world it’s at least theoretical that you have the source and can rebuild the class files with the ability to run on Java 8, if the functionality of the package you need is critical.

 

Many of the Enterprise customers using NonStop, while not averse to change (otherwise they wouldn’t be in the devops realm), but they are very skeptical about changing things.  Their business critical apps run for years without an outage.  (They use replication  and managed failover to avoid planned outages, for example).  How to reach them and ask?  Those of us that work with the platform do so with various publications and events.

 

But the developers that use tools like git and Jenkins actually WILL be the ones that are impacted if Jenkins won’t run (correctly) because the JRE is at Java 8.

 

I’ve heard of other platforms where the story is similar but am not an expert on them.

 

 

From: jenkin...@googlegroups.com <jenkin...@googlegroups.com> On Behalf Of Matt Sicker
Sent: Wednesday, August 11, 2021 10:03 AM
To: jenkin...@googlegroups.com
Subject: Re: Using JDK 11 instead of JDK 8 in default docker images

 

Plus Java 17 comes out really soon. I can imagine that will inspire more projects to set Java 11 as a baseline. Definitely start planning since most people will probably be affected by some other dependencies well before they hit Jenkins.

Matt Sicker

unread,
Aug 11, 2021, 1:37:36 PM8/11/21
to jenkin...@googlegroups.com
I mean there's a very real chance that regardless of how long Jenkins
attempts to keep Java 8 compatibility, eventually some dependency it
or a key plugin uses will stop supporting Java 8 and subsequently
publish CVEs that are only fixed in the Java 11 version. I don't
expect that to happen very soon, but it's definitely something to
consider in the longer term. The Java 17 release, being an LTS one,
will encourage some communities to move their base level of Java
support from Java 8 to 11 (which has already been slowly happening
with some projects).
> To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/017a01d78ece%2467663e40%243632bac0%24%40xid.com.

Bill Honaker

unread,
Aug 11, 2021, 2:34:46 PM8/11/21
to jenkin...@googlegroups.com
That is indeed inevitable, but one would hop that it is not likely to be imminent. The last 'push' to change support levels, as I recall, was the stronger crypto support added in Java 8, which 'encouraged' companies to move to 8 in order to remain interoperable. Especially given the number of plugins and frameworks that build on communications, that change was accelerated.

The hard limit on the older system (as there will be no Java 11 JRE on the 'E' platform) will disappear when the vendor's support of the 'E' platform comes to an end in just a few years. However I can see the same challenge to us all when Java 11 is no longer in vogue.

It's limited in scope, however, to the remoting parts of Jenkins. It's quite an easy recommendation to make that the controller should NOT run on NonStop, not just for compatibility but for cost reasons (as the NonStop platform is often more expensive to run than Linux distros or Windows servers).

So only the remoting packages are affected. And the choice of, say, SSH features needed could reasonably be limited on a 'Node' basis to only those that are implemented on the target (for example, key size, authentication method, etc.).

Bill
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CACmp6kq-49sC3ro0GQfE9hSu0iprVzzxEtdUXb41o1kN2chRdw%40mail.gmail.com.

Tim Jacomb

unread,
Aug 11, 2021, 3:46:18 PM8/11/21
to jenkin...@googlegroups.com
Jetty, Hikari, and opensaml are all projects I’ve come across recently where new development has a minimum Java 11 version… there’s probably many others

Bill Honaker

unread,
Aug 11, 2021, 4:37:19 PM8/11/21
to jenkin...@googlegroups.com

The question to ask is, was that minimum version due to the ‘default’ action of javac (that is, -target 11),  or because they required something that doesn’t exist in Java 8?

 

It won’t solve all problems but ‘projects’ that are intended to be dependencies for other projects would be better if the above question were asked in the design phase.  That’s just my $.02US, for what it’s worth.

Bill

 

From: jenkin...@googlegroups.com <jenkin...@googlegroups.com> On Behalf Of Tim Jacomb
Sent: Wednesday, August 11, 2021 2:46 PM
To: jenkin...@googlegroups.com
Subject: Re: Using JDK 11 instead of JDK 8 in default docker images

 

Jetty, Hikari, and opensaml are all projects I’ve come across recently where new development has a minimum Java 11 version… there’s probably many others

Jesse Glick

unread,
Aug 11, 2021, 9:34:59 PM8/11/21
to Jenkins Dev
Due to the way Jenkins performs remote class loading and allows plugins to implement callables, is is impractical to support Java 8 on agents without forcing Jenkins core and all commonly used plugins to run on 8 as well.

At worst, builds on exotic OSs with poor Java support can still be done by running the Jenkins agent on, say, Linux and having the actual build steps be run via SSH or some similar remote CLI (with support for file transfer like SCP where required). It would even be possible to write a plugin offering a Pipeline step to run commands on a specified host using SSH without requiring an executor slot (Scripted: no `node`; Declarative: `agent none`). You would not get access to rich publisher steps like `recordIssues` but it might be good enough most of the time, especially if you can cross-compile or whatever from Linux and the only things that truly must be done on the special OS are integration tests.

At any rate, so far there is no strong push to drop 8 support so this remains discussion about an indefinite future.

the.n...@gmail.com

unread,
Aug 12, 2021, 11:12:31 AM8/12/21
to Jenkins Developers
Thank you for your answer, Jesse. I do not consider the solution of cross-compiling or running commands on a Linux agent and then commands over SSH as being useful. While I cannot speak for the community, this would remove any advantage to having Jenkins involved and I suspect that a significant number of organizations will drop Jenkins in favour of other CD/CI solutions where SSH is the executor mechanism. With that said, the timeframe of concern runs through the end of 2023 (at this stage), so if we can last that long, we'll probably be fine. On the other side of it, Bill's comment above regarding Oracle Java 11 licensing is awkward at best because the Jenkins agents are being run in production environments, which are problematic for the license and use of Jenkins as a result.

Thanks,
Randall
Reply all
Reply to author
Forward
0 new messages