Java, Kotlin and the JVM
25 subscribers
20 photos
2 videos
117 links
Java, Kotlin, Gradle, Maven, JDKs, Spring and the whole JVM ecosystem tips & tricks. 🇪🇸 & 🇬🇧
Download Telegram
A new chapter for Kotlin and good opportunities for Kotlin developers

Today we are excited to release Kotlin 2.0 with a stable K2 compiler, which is multiplatform from the ground up, understands your code better, and compiles it twice as fast.

https://blog.jetbrains.com/kotlin/2024/05/celebrating-kotlin-2-0-fast-smart-and-multiplatform/
Gradle is very powerful tool but it comes with a price in the learning curve. Declarative gradle was introduced a year ago or so (https://blog.gradle.org/declarative-gradle). Last week the Gradle CTO chat a bit about the state of the art and the future of Declarative Gradle (https://youtu.be/xZRR71VtmGc?t=752)
We continue with Kafka today; New Relic is an observability vendor, and the article highlights the need for observability. Besides that, the article provides a good example of common Kafka issues depending on your producer/consumer patterns, which I found really interesting.

https://newrelic.com/blog/how-to-relic/tuning-apache-kafka-consumers
The Gradle team is excited to announce Gradle 8.8.

Gradle now supports Java 22.

This release introduces a preview feature to configure the Gradle daemon JVM using toolchains and improved IDE performance with large projects.


https://docs.gradle.org/8.8/release-notes.html
Java 22 has been around since March! This article doesn't bring any news but I likes the way they sumarized the release content (see picture) and how they explained the lifecycle of JEPs

https://www.unlogged.io/post/everything-you-need-to-know-about-java-22?ref=dailydev
Interesting post regarding JDK git workflow

In June and December, we fork
the main line into a stabilization repository [1]. Changes are backported
from the jdk repository into the stabilization repository, typically by the
Committer who contributed the change [2]. The stabilization repository is
archived when the release is delivered.

We inherited the convention of forking repositories from Mercurial, which
originally had weak support for branches.


https://mail.openjdk.org/pipermail/jdk-dev/2024-March/008834.html
Really interesting post.

A bit of context: After two previews and when everyone was assuming that String Templates could be part of the next LTS. String Template has been removed from JDK 23.

Time to check in with where were are with String Templates. We’ve gone through two rounds of preview, and have received some feedback.


From the point of view of software maintenance this is also an interesting topic. Code is a liability, the String Template API seems to be good enough but the implementation has to be maintained for decades and it wasn't worth its value.

Specifically, the role of processors is “outsized” to the value they offer, and, after further exploration, we now believe it is possible to achieve the goals of the feature without an explicit “processor” abstraction at all! This is very positive development


https://mail.openjdk.org/pipermail/amber-spec-experts/2024-March/004010.html
Testing asynchronous systems is hard. Not only does it require handling threads, timeouts and concurrency issues, but the intent of the test code can be obscured by all these details. Awaitility is a DSL that allows you to express expectations of an asynchronous system in a concise and easy to read manner

.

http://www.awaitility.org/
Annotations processing changes in JDK 23

Up to JDK 22, this feature is enabled by default, which may have been reasonable when it was introduced in JDK 6 circa 2006, but from a current perspective, in the interest of making build output more robust against annotation processors being placed on the class path unintentionally, this is much less reasonable. Hence, starting with JDK 23, javac requires an additional command-line option to enable annotation processing.


https://mail.openjdk.org/pipermail/jdk-dev/2024-May/009028.html