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
Ni me acordaba de los Applet ya 🤣

👋👋👋👋👋👋👋👋👋
Remove the Applet API, which was deprecated for removal in JDK 17 (2021). It is obsolete because neither recent JDK releases nor current web browsers support applets.


Hasta Java 26 llegaron (https://openjdk.org/jeps/504), al parecer Firefox quitó soporte de applets en 2017

Si no sabes que era un applet 👉 https://www.vice.com/en/article/a-brief-history-of-the-java-applet/
Opentelemetry declarative configuration (aka yaml) disponible para el Java Agente de la versión 2.20 (principios de septiembre)

-----

Declarative configuration uses a YAML file instead of environment variables or system properties.

💡This approach is useful when:
👉 You have many configuration options to set
👉 You want to use configuration options that are not available as environment variables or system properties

🔗 https://opentelemetry.io/docs/zero-code/java/agent/declarative-configuration/
Las conexiones cliente-servidor siempre van a fallar, y la forma en que gestionamos esos errores es clave. El retry es una estrategia fundamental, pero hay diferentes niveles de complejidad.

A mi me gusta ver la evolución del concepto a través de dos librerías de referencia en el ecosistema Java:

Resilience4j (https://github.com/resilience4j/resilience4j): Ideal para empezar. Ofrece patrones de resiliencia como Circuit Breaker y Rate Limiter, y es perfecta para implementar estrategias de reintento más clásicas como el backoff exponencial o con jitter. Es la base para construir sistemas robustos.

Netflix Concurrency-Limits (https://github.com/Netflix/concurrency-limits): Esta es la siguiente evolución. En lugar de reintentos basados en tiempo, se enfoca en limitar la concurrencia. Utiliza algoritmos avanzados, inspirados en el control de congestión TCP, para detectar automáticamente el límite de concurrencia óptimo y evitar que el servicio se sature. No es solo reintentar, es reintentar de forma inteligente para no colapsar un servicio ya sobrecargado.

En resumen, Resilience4j nos ayuda a ser más resistentes a fallos transitorios, mientras que concurrency-limits nos permite ser más eficientes y evitar el colapso del sistema en primer lugar.
The LinkedBlockingDeque has an interesting feature in addAll(), where they first build up the linked nodes and then add them all to the tail. However, a bug allowed us to overflow the size, resulting in a negative count. In this newsletter we look at this bug, and also how it was fixed in Java 26

.

https://javaspecialists.eu/archive/Issue328-Negative-size-in-LinkedBlockingDeque.html
📢 Kotlin 2.3.0-Beta2 is out! Here are some of the highlights:
Language: more stable and default features, a new checker for unused return values, and changes to context-sensitive resolution.
Kotlin/JVM: support for Java 25.
Kotlin/Native: improved interop through Swift export and type checks on generic type boundaries enabled by default.
Kotlin/Wasm: fully qualified names and new exception handling proposal enabled by default.
Kotlin/JS: new experimental suspend function export and LongArray representation.
Gradle: compatibility with Gradle 9.0 and a new API for registering generated sources.
Standard library: stable time tracking functionality.
Try it out: ➡️kotl.in/2-3-0-beta2



Source: https://x.com/kotlin/status/1983129735669399598
Para quienes trabajan con Kotlin y necesitan generar documentación de API, Dokka es el motor de documentación de referencia. Funciona con KDoc (Kotlin) y Javadoc (Java).

📃Puede generar la documentación en HTML moderno, varios tipos de Markdown y el Javadoc HTML clásico.

📚Es la herramienta utilizada por bibliotecas importantes del ecosistema como kotlinx.coroutines, Ktor y OkHttp.

🔗 https://kotl.in/dokka
https://inside.java/2025/11/03/quality-heads-up/
----------------------------
Change in JDK 25

JDK 25 fixed this long-standing inconsistency and new File("") now properly represents the current user directory:
To bring order to this chaos, at JetBrains Research we built LitmusKt — a novel testing tool for Kotlin’s multiplatform concurrency. Designed specifically for Kotlin’s unique mix of JVM, Native, and JavaScript backends, LitmusKt helps developers uncover and eliminate subtle, platform-specific concurrency errors that traditional testing can’t catch

.

https://blog.jetbrains.com/research/2025/10/litmuskt-concurrency-testing/
[JavaSpecialists 331] - Virtual Thread States

No major feature has been adopted as quickly into production systems as virtual threads. Not generics. Not streams. But there are some catches. Original Java threads have six states. Virtual threads have 20 states, which Java maps onto the original six states. However, sometimes it can be useful to know what the virtual threads state is. In this newsletter we use deep reflection to learn how that works



https://www.javaspecialists.eu/archive/Issue331-Virtual-Thread-States.html
Amper, the alternatives to Gradle/Maven from JetBrains has been archived and moved to kotlin toolchain
https://github.com/JetBrains/amper