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.

Monday, 28 September 2020

JDK 15 Reaches General Availability on 15 September 2020: EdDSA Embraced, Nashorn Expelled

 JDK 15 is unleashed

One of its fine features is support for EdDSA (Edwards Curve Digital Signature Algorithm described in RFC8032), an elliptic curve signature scheme. The Edwards Curve is named after the late American mathematician Harold Edwards who graduated with a PhD in mathematics in 1961 from Harvard.

One of JDK 15's high-profile "subtractions"is the Nashorn JavaScript engine (which has been removed as per recommendation of JEP372). Nashorn has been declared "challenging to maintain" with the rapid development of the ECMAScript standard underlying JavaScript.

The Z Garbage Collector gets a boost from being a mere "experimental feature" to now becoming a "product feature" as per JEP377 (without altering the default GC which remains G1). Nod to 377 author Per Liden.

Tuesday, 1 October 2019

Scalable Database Building with Cassandra

What is it that makes Cassandra just so scalable? Certainly, it supports clusters spanning multiple datacenters. Some of the principles it follows are as follows:

1. No single points of failure (Decentralized)
2. Fault tolerance through Replication to multiple nodes, enabling failing nodes to be replaced without data loss
3. High performance (as measured in benchmarking against other NoSQL databases)

The Weather Channel, CERN and Instagram are among the top-billed users of Cassandra.

Monday, 30 September 2019

Apache Kafka

Apache Kafka is a distributed 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 write who was born in Prague. 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.