Wednesday, 9 July 2025

Hadoop uses OpenJDK

Hadoop uses OpenJDK.  It has a JIRA instance which details bugs and proposed changes. Not all bugs may get fixed especially if related to legacy integrations.

Monday, 30 June 2025

WARNING: A terminally deprecated method in sun.misc.Unsafe has been called

You tried to run an executable JAR file and this happened!

Here's an interesting blog post on sun.misc.Unsafe from Java Magazine.  An example application may be using a Hardware CPU feature unsupported by the current Java version.

Alternatives include the VarHandle API (packaged in java.lang.invoke) as described in this blog post.

JDK 24 - What's up? Almost 150K Unicode characters now supported!

Here are the docs for JDK24.

Note that since Java 11, Oracle stopped offering the JRE as a standalone installer. Instead, the JDK bundles everything: the compiler, tools, and the runtime needed to run Java apps. 

The way to the JVM is thus through the JDK.

So if you are Windows-playing, prepare for an MSI the size of a 200MB rocket ship.

OK, here's the big seller if you don't know whether to upgrade. Unicode 16 is now supported!! Unicode 16, which was released in September 2024, has now been integrated as per JDK-8319993. Woo hoo!!

java.lang.Character which supports the Unicode character database adds 5,185 characters, which brings the total to almost 150,000 supported characters. New scripts supported includes Garay from West Africa.

Checking your install of JDK24 you will likely see something like this:

java --version

java 24.0.1 2025-04-15

Java(TM) SE Runtime Environment (build 24.0.1+9-30)

Java HotSpot(TM) 64-Bit Server VM (build 24.0.1+9-30, mixed mode, sharing)

Wednesday, 29 January 2025

JDK 23 is the latest release of the Java Platform

JDK 23 reached GA on September 2024 and its scope is covered in JSR398. The expert group included experts from Red Hat, Azul, SAP. Oracle and the Eclipse Foundation. The Windows version is only available in 64 bit.

JDK23 introduces the Third Preview for Structured Concurrency whose idea is to simplify concurrent programming incorporating ideas from Erlang (such as hierarchical supervisors).

Groups of related tasks in different threads are treated as a single unit of work, streamlining error handling and cancellation. 

The term Structured Concurrency was coined by Martin Sustrik and popularized by Nathaniel J Smith.

Saturday, 9 July 2022

What are coroutines in Kotlin?

Coroutines in Kotlin are like threads, but not quite like threads. They allow asynchronous computing. 

Their functionality is brought to bear from the library kotlinx.coroutines, developed by JetBrains

Put simply, a coroutine in Kotlin is a unit of suspendable computation Such a computation may be suspended in one thread, then reawoken in another thread. The keyword launch is used to launch a coroutine, and delay suspends the coroutine for a period of time, but does not hog the underlying thread.

Android Jetpack

Jetpack is a collection of useful Android libraries.  A typical Android app will have multiple layers: a UI layer, an (optional) domain layer and a back-end ("data") layer. A candidate for code in the domain layer would be complex business logic that is used across multiple ViewModels.

LiveData and ViewModel are examples of JetPack components. LiveData is interesting, it follows the Observer pattern and notifies Observer objects when the underlying data changes. This way you don't need to write update code in the UI every time the underlying application data changes. Observers have a void return onChanged method that gets called every time data is changed.

Saturday, 8 May 2021

Google's Guava Gets Coverage in Java Magazine

Andrew Binstock covers the 30th major release of Google's all-purpose Guava library in this Java magazine article. One of its benefits is allowing earlier versions of Java to run features that formally came later in the Java canon.