V3.1.0 Essentials (2020/11/03)
- Reduced the size of jar file by 20% (from 66 KB to 52 KB; lol).
Aka: removed Base64 class.
- Minor tweaks and clean ups
V3.0.0 Essentials (2020/11/02)
- PrimitiveArrayUtils now uses the plain-Java implementation by default. The faster implementation based on sun.misc.Unsafe, still works with e.g. Java 11, but causes ugly warnings. You have to initialize it explicitly using initUnsafeInstance().
- CircularByteBuffer allows direct access to its raw buffer in case you want to do some tweaks (preferably read only).
Note: despite being a “RC1” version, this was a pretty stable version, e.g. used e.g. used in production by ObjectBox for 3+ years.
Changed name from “greenrobot-common” to “greenrobot Essentials,” or just “Essentials”.
- Changed root package “org.greenrobot.essentials”, new sub-package “collections”
- Changed Maven artifact to org.greenrobot:essentials
- Method renames and removals, especially in StringUtils
- Removed the less useful hashing classes CombinedChecksum, FNVJ32, and FNVJ64
- Added CircularByteBuffer for efficient buffering in producer/consumer scenarios (e.g. pipelining)
- Added PipelineOutputStream as a replacement for Java’s PipedOutputStream fixing some issues, e.g. performance on Android
- Methods to query all values in LongHashSet and LongHashMap
- Improved Multimaps: more flexible setup, query total count of elements
- Synchronized versions of LongHashSet and LongHashMap
- Added appending to files in FileUtils
- Better String hexing support: optimized hex creation, added hex parsing
- String joining now allows any separator
- Fix: Correctly initialize Murmur3F with negative seeds
- Minor ObjectCache improvements: added statistics (hits, misses, …), getting removes entries with cleared references proactively
- Improved ObjectCache: now supports soft/weak/strong references, maximum size (clearing the entries putted first), and time-based expiration
- New: Multimaps (ListMap and SetMap)
- Murmur3F: added update methods for long values
- Added LimitedInputStream: limits bytes that can be read from an InputStream (useful if your stream contains separate sections of known lengths)
First open source release called “greenrobot-common”.
Versions before 2.0.0
Used internally only inside greenrobot.
History: The roots go back to 2009 when we started a general purpose library for Android. In 2013, we noticed that parts of our Android library would be useful for some Java projects we do. So we moved the parts that don’t depend on Android into a new project.