Monday, 30 September 2019

Apache Kafka

Apache Kafka is a distributed event streaming platform. 

It supports publish, subscribe operations (similar to a message queue) and stores streams of records in a fault-tolerant way.

The basic object in Kafka is an array of bytes with some optional metadata known as the key. 

Messages may be structured according to a schema (possibly using JSON or XML) although Apache Avro, a serialization framework for Hadoop, is increasingly popular. Avro supports strong typing and schema evolution.

The Real Kafka - Kafka was a writer who was born in Prague (at the time part of the mighty Austro-Hungarian empire). His well-known works include "Die Verwandlung" (The Metamorphosis) first published in 1915.

Thursday, 26 September 2019

Convergence of Oracle JDK and OpenJDK

Donald Smith at Oracle (Sr. Director of Product Management) announced in 2018 that Oracle JDK and OpenJDK will soon converge with the intent that there are no technical differences in binaries.

Monday, 12 August 2019

What is OJVM?

OJVM is Oracle's database embedded JVM. The code runs in the same memory space as SQL and PL/SQL. It currently supports Java 8.

Saturday, 9 March 2019

Polyglot Runtime - GraalVM

Graal is a JIT compiler with multi-language support. It is based on Oracle's JDK8 with JVMCI support. Languages supported include Python, R and Ruby.

Tuesday, 18 September 2018

All Eyes on Java 10

Java 10 release notes (including update releases) can be found here. The Java 10 API specification can be found here.

JDK 8 on the Out

Oracle will stop updating Java 8 commercially from January 2019. All focus now should be on the latest feature release Java 10 (with a nod to new kid on the block, Nashorn, from Java 9 onwards).

Saturday, 15 September 2018

Remind me again - what is a REPL environment?

Suppose we are comparing various JavaScript engines for the JVM. One criteria for comparison might be whether they provide a REPL environment for the JVM - basically, an environment where you can type in quick commands to test out the language and interact with Java libraries dynamically.

More formally, REPL can be defined as a Read-Eval-Print loop, with the read function taking in the expression (rather than a full-fledged compilation unit), eval evaluates and print prints the result. JShell is a REPL included in the JDK since Java9.