Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blog on java 17 #1845

Merged
merged 5 commits into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions _posts/2023-11-29-java-17.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
layout: post
title: 'Java 17'
maxandersen marked this conversation as resolved.
Show resolved Hide resolved
date: 2023-11-29
tags: announcement
synopsis: Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK
maxandersen marked this conversation as resolved.
Show resolved Hide resolved
author: maxandersen
---

:imagesdir: /assets/images/posts/
ifdef::env-github,env-browser,env-vscode[:imagesdir: ../assets/images/posts/]

Today we are anouncing that Quarkus 3.7 will move Quarkus to use Java 17 as the default JDK.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

When we started Quarkus 3.0 https://quarkus.io/blog/road-to-quarkus-3/#java-target[we stayed on Java 11] the feedback we got was that moving to Jakarta was for many easier than to also move the underlyng JDK. We wanted to give the ecosystem time to catch up and make sure we had a good story for users that needed to stay on Java 11.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

At 3.0 release we supported Java 11 for Quarkus core, and we https://quarkus.io/blog/quarkus-3-0-final-released/#java-11-deprecated[marked Java 11 as deprecated]. It should be noted that parts of the platform, especially Camel for Quarkus already requires Java 17.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

Today we are taking the step to move Quarkus core to Java 17 as the default JDK for Quarkus 3.7 and onwards.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

This means that Quarkus 3.7 will require Java 17 to build and run all Quarkus applications.

Below are some of the reasons for this decision and what it means for you as a Quarkus user.

## Everyone is using Java 11 - you cannot do this!

We know that many users are still using Java 11 and we are not forcing you to move to Java 17. We are just making it the default for Quarkus 3.7 and onwards.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

That said - the https://quarkus.io/usage/[usage data development builds] in the last 30 days shows less than 8% using Java 11.

image::javaversions-used-by-32plus.png[]

## I cannot move to Java 17 yet, what should I do?

If you cannot move to Java 17 yet, then you can continue to use Quarkus 3.6, but we recommend you consider to use the Quarkus 3.2 LTS stream as that is the version that will get updates and fixes for the longest.

Be mindful though that Java 11 itself is rapidly heading towards going out of full support in 2024 thus we recommend you start planning your migration to Java 17 or even Java 21 as soon as possible.

## I'm already using Java 17, what does this mean for me?

If you are already using Java 17 then this change will not affect you. You can continue to use Quarkus using records, multiline strings, faster runtime performance and all the other cool stuff in Java 17 .

## Why Java 17 and not Java 21?

Quarkus supports Java 21 already today. The most well known feature of Java 21 is probably https://quarkus.io/blog/virtual-thread-1/[virtual threads] and we supported that already when it was made preview in Java 19. We mainly recommend Java 21 because of all the improvements made that makes any Java application faster and more efficient - with or without Virtual Threads.

Reality is though that companies and organizations today are still in the process of migrating to Java 17 and we want to make sure that we are not forcing them to also migrate to Java 21 at the same time.

But please do use Quarkus with Java 21 if you can, it is awesome!

## I'm a Quarkus extension developer, what does this mean for me?

If you are a Quarkus extension developer then you should already be testing your extension with Java 17. If you are not, then you should start doing so now.

If you are part of the https://quarkiverse.io[Quarkiverse extension ecosystem] then we already recommend at time of Quarkus 3.2 to have a branch targeting 3.2.

If you already have tht things should be fairly straightforward.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

Build your extension for Quarkus 3.2 against Java 11 and have your main branch using Java 17.

There are things like Quarkus ecosystem CI which we will want to update to target multiple branches - if interested in that and especially helping out on making that work, then please follow and/or post on quarkus-dev mailing list or in the dev channel on https://quarkusio.zulipchat.com/[Zulip].
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

## Quarkus does not need to be built with Java 17, thus why?

Today Quarkus does not use Java 17 features, we deliberatly did it that way so we could support Java 11, Java 17, Java 21 etc. at the same time. We could continue doing so - we don't *really* need records, multiline strings etc. to build Quarkus.

But we are starting to see dependencies we or other extensions have that are moving to Java 17 and we want to make sure we can support them and users can use them.

One particular example coming in 2024 is that JPA 3.2 for Hibernate 7 is requiring Java 17.
maxandersen marked this conversation as resolved.
Show resolved Hide resolved

There are many more, and thus starting when https://github.com/quarkusio/quarkus/pull/37335[this PR] is merged - Quarkus main will require Java 17 to build and run.




Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.