History of the Stardust Library

This document shows the development history of the Stardust library from the current state back to the early beginning.

Stardust 5.0 (2023)

We celebrate the 15th anniversary of the Stardust library!

After several years of development, Stardust has reached another level! The library is now modularized allowing you to import only the artifacts you need. Additionally, it is now open-source software, licenced under the terms of the Apache License, Version 2.0.

Features:

  • Using Kotlin 1.9
  • Full refactoring
  • Modularization: include only what you need!
  • Multi-Map and Table collections
  • Improved API of immutable and persistent collections
  • Indenter utils for the Rope string builder
  • The “Either” pattern has evolved to comfortable result handling, including error propagation. It's amazing, what you can do with Kotlin!

Use Stardust in your software project
→ Take a look at the documentation (work in progress)
→ Find the source code on GitLab: https://gitlab.com/jmpersch/stardust

Stardust 4.0 (2020)

A lot of work was put into version 4. I’ve ported the Stardust library from Java to Kotlin. Due to Kotlin’s efficient syntax, null-safety, and type-safe builders, a lot of classes could be removed. Kotlin distinguishes between mutable and immutable collections, thus a lot of collection classes could be removed. The API of the remaining collection classes is now closer to Kotlin’s collection API. Because of Kotlin’s safe-call operator, the utility methods to handle nullable types could be removed. Overall, the class count could be reduced by thirty percent. Additionally, the Rope format is completely rewritten; it now uses type-safe builders to create the formatted string directly in Kotlin code.

Features:

  • Convert source code to Kotlin 1.4
  • Full refactoring
    • Bring API closer to Kotlin’s API (esp. collections)
    • Use Kotlin’s Sequence instead of Java’s Stream
    • Convert builders to type-safe builders
    • Replace guard clauses by precondition functions
  • Re-implement of the Rope format to define formats using type-safe builders
  • Class-based resources for localization that works without reflection
  • Extensions concerning Kotlin’s experimental collection builders
    • Builders for mutable and immutable collections, e.g., buildMutableList { add(4711) }
  • Convert project into a multi-platform project supporting the JVM and JS target platforms
  • Allow specifying own equality and hash code functions for the CEH Computation Utility. Provide two predefined functions for EQUALS and SAME.
  • Add “Either” pattern support

Stardust 3.0 (2018)

With version 3.0, Stardust celebrated its 10th anniversary!

Features:

  • Support new features of Java 11
  • Stream support for all collections
  • Improved syntax of the Rope format and additional features, such as "Twine injection" allowing to format sub-items.

Stardust 2.0 (2017)

Java has evolved and so has Stardust.

Features:

  • Support new features of Java 9
  • New collections, such as Bunch and derivatives
  • Refactor collections to mutable and immutable variants
  • Improved syntax of the Rope format

Stardust 1.0 (2014)

The release of Java 8 was a giant leap in software development. With the new features, such as functional interfaces and streams, it IMHO clearly overtook C#. So I decided to fully concentrate on Java.

Features:

  • Full refactoring to support the new features of Java 8
    • Use functional interfaces and lambda expressions
    • Use ZonedDateTime instead of Calendar in date and time API
  • Full null-safety
    • Utilities for null-checks
    • Null-safe collections
  • Text scanner and Lex classes for parser implementation
  • Rope format for localization
  • CEH Computation Utility for implementing equals, hashCode and compareTo in a declarative manner

Milestone 2 (2011)

Because I worked on multiple C# and Java projects, I developed the library simultaneously on .NET and on Java 7.

Features:

  • Math and text utilities
  • Utilities for Swing and Forms
  • First ideas for null-safe collections
  • First ideas for the Rope format
  • Handling of closeable resources
  • Mutable and immutable classes for optional values
  • C#-like date and time API on Java

Milestone 1 (2008)

The initial development of the library began in 2008 as a C# 3.0 project.

Features:

  • I/O stream reader and writer
  • Dialog utilities for Forms