Skip to content

Rare, hard-to-write utilities that are thoroughly tested

License

Notifications You must be signed in to change notification settings

ozhelezniak-talend/java-util

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-util

Maven Central Javadoc

Helpful Java utilities that are thoroughly tested and available on Maven Central. This library has no dependencies on other libraries for runtime. The.jarfile is 290K and works with JDK 1.8 through JDK 22. The .jar file classes are version 52 (JDK 1.8)

Compatibility

JPMS (Java Platform Module System)

This library is fully compatible with JPMS, commonly known as Java Modules. It includes a module-info.class file that specifies module dependencies and exports.

OSGi

This library also supports OSGi environments. It comes with pre-configured OSGi metadata in the MANIFEST.MF file, ensuring easy integration into any OSGi-based application.

Both of these features ensure that our library can be seamlessly integrated into modular Java applications, providing robust dependency management and encapsulation.


To include in your project:

Gradle
implementation 'com.cedarsoftware:java-util:2.15.0'
Maven
<dependency>
  <groupId>com.cedarsoftware</groupId>
  <artifactId>java-util</artifactId>
  <version>2.15.0</version>
</dependency>

Included in java-util:

Sets

  • CompactSet - A memory-efficient Set that expands to a HashSet when size() > compactSize().
  • CompactLinkedSet - A memory-efficient Set that transitions to a LinkedHashSet when size() > compactSize().
  • CompactCILinkedSet - A compact, case-insensitive Set that becomes a LinkedHashSet when expanded.
  • CompactCIHashSet - A small-footprint, case-insensitive Set that expands to a HashSet.
  • CaseInsensitiveSet - A Set that ignores case sensitivity for Strings.
  • ConcurrentSet - A thread-safe Set not requiring elements to be comparable, unlike ConcurrentSkipListSet.
  • SealableSet - Allows toggling between read-only and writable states via a Supplier<Boolean>, managing immutability externally.
  • SealableNavigableSet - Similar to SealableSet but for NavigableSet, controlling immutability through an external supplier.

Maps

  • CompactMap - A Map with a small memory footprint that scales to a HashMap as needed.
  • CompactLinkedMap - A compact Map that extends to a LinkedHashMap for larger sizes.
  • CompactCILinkedMap - A small-footprint, case-insensitive Map that becomes a LinkedHashMap.
  • CompactCIHashMap - A compact, case-insensitive Map expanding to a HashMap.
  • CaseInsensitiveMap - Treats String keys in a case-insensitive manner.
  • LRUCache - Thread-safe LRU cache which implements the Map API. Supports "locking" or "threaded" strategy (selectable).
  • TTLCache - Thread-safe TTL cache which implements the Map API. Entries older than Time-To-Live will be evicted. Also supports a maxSize (LRU capability).
  • TrackingMap - Tracks access patterns to its keys, aiding in performance optimizations.
  • ConcurrentHashMapNullSafe - A thread-safe drop-in replacement for ConcurrentHashMap that allows null keys & values.
  • SealableMap - Allows toggling between sealed (read-only) and unsealed (writable) states, managed externally.
  • SealableNavigableMap - Extends SealableMap features to NavigableMap, managing state externally.

Lists

  • ConcurrentList - Provides a thread-safe List that can be either an independent or a wrapped instance.
  • SealableList - Enables switching between sealed and unsealed states for a List, managed via an external Supplier<Boolean>.

Utilities

  • ArrayUtilities - Provides utilities for working with Java arrays [], enhancing array operations.
  • ByteUtilities - Offers routines for converting byte[] to hexadecimal character arrays and vice versa, facilitating byte manipulation.
  • ClassUtilities - Includes utilities for class-related operations. For example, the method computeInheritanceDistance(source, destination) calculates the number of superclass steps between two classes, returning it as an integer. If no inheritance relationship exists, it returns -1. Distances for primitives and their wrappers are considered as 0, indicating no separation.
  • Converter - Facilitates type conversions, e.g., converting String to BigDecimal. Supports a wide range of conversions.
  • DateUtilities - Robustly parses date strings with support for various formats and idioms.
  • DeepEquals - Deeply compares two object graphs for equivalence, handling cycles and using custom equals() methods where available.
  • IOUtilities - Transfer APIs, close/flush APIs, compress/uncompress APIs.
  • EncryptionUtilities - Simplifies the computation of checksums and encryption using common algorithms.
  • Executor - Simplifies the execution of operating system commands with methods for output retrieval.
  • GraphComparator - Compares two object graphs and provides deltas, which can be applied to synchronize the graphs.
  • MathUtilities - Offers handy mathematical operations and algorithms.
  • ReflectionUtils - Provides efficient and simplified reflection operations.
  • StringUtilities - Contains helpful methods for common String manipulation tasks.
  • SystemUtilities - Offers utilities for interacting with the operating system and environment.
  • Traverser - Allows generalized actions on all objects within an object graph through a user-defined method.
  • UniqueIdGenerator - Generates unique identifiers with embedded timing information, suitable for use in clustered environments.

See changelog.md for revision history.


Sponsors

Alt text

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

Intellij IDEA from JetBrains Intellij IDEA


By: John DeRegnaucourt and Kenny Partlow

About

Rare, hard-to-write utilities that are thoroughly tested

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%