Skip to content

Latest commit

 

History

History
143 lines (110 loc) · 5.65 KB

README.adoc

File metadata and controls

143 lines (110 loc) · 5.65 KB

Codeprimate Elements

Java Simplified. Extensions and Useful Constructs for the Java Platform.

Codeprimate Elements (or simply, Elements) is a Java library and micro-framework for simplifying the development of software applications written in Java.

Elements packages several APIs in a single library to handle many different software application development concerns, such as, but not limited to, data modeling & processing, configuration, management, security, and Java language extensions in addition to many other aspects of software development using Java. At the most basic and fundamental level, Elements is an extension of the Java language and APIs itself adding powerful and expressive capabilities not directly provided by the Java Platform.

The main intent of Elements is to provide high quality, reusable and useful application classes and components to solve common, reoccurring problems during software development with ease and reliability.

Write better Java!

Elemental Objectives

  1. Functionally independent with absolutely no additional dependencies on 3rd-party Java libraries.

  2. Simple, robust, and proven APIs built on solid OO principles, design patterns, and recommended practices.

  3. Priority on quality and reliability over quantity.

  4. Open Source and community-led development.

Why Elements

Codeprimate Elements is very similar in function and purpose to Apache Commons or Google Guava.

Elements is a highly refined Java library of classes and components based on years of research and development along with extensive experience in deployed production-grade applications. Elements maintains a high standard on quality enforced by extensive test coverage, code metrics, peer review and trusted performance in extreme application environments.

Elements is a foundation-based Java library, and does not introduce any additional dependencies in order to function or perform properly out-of-the-box. Good Object-Oriented Design based on SOLID design principles coupled with effective use of Software Design Patterns makes Elements immediately familiar, highly consistent and easy to use. Finally, the development of Elements is built on open and transparent collaboration to harvest feedback that is essential to building high quality and reliable software.

No corporate entity owns or controls Elements, and therefore, you will never be bound by licenses or contracts.

Core Library Features

  • Software Design Patterns as Code: Abstract Factory, Builder, Composite, DAO, Proxy, Template, Visitor.

  • Domain Specific Languages (DSLs) and Fluent APIs to write concise yet expressive code.

  • Annotations for writing descriptive code: [ @Immutable, @NullSafe, @ThreadSafe ]

  • Addition of intuitive and applicable RuntimeException classes.

  • JavaBeans API and framework extensions and support.

  • Enums to classify general types, for example: [ LengthUnit, WeightUnit ]

  • Environment-Aware, Context-Driven Configuration Model.

  • Comprehensive Data Structures and Data Management:

    • Auditing & Identity Management

    • Bloom Filter

    • Caching

    • Compression

    • Data Conversion

    • Key/Value Data Structure

    • Serialization

    • Table-based (Tabular) Data Structure

  • Logic and Math utilities along with Logical and Relational Operators.

  • IO, NIO and Network utilities and classes.

  • Process Execution / Lifecycle Management framework

  • Pluggable support for Searching and Sorting Algorithms:

  • Sophisticated Sorting, Searching and Pagination for Java Collections

  • Utilities for Classes, Objects, Arrays, Booleans, Characters, Collections, Files, File Systems, Functions, JavaBeans, Maps, Numbers, Primitive Types, Processes, Properties, Reflection, Runtime/System, Streams, Strings, Threads, etc.

  • Testing support with robust assertions.

This list is not nearly complete. Elements covers so much more.

Learn

Codeprimate Elements has comprehensive documentation:

  • User Manual coming soon.

  • Javadoc for the entire library API.

Requirements

  1. Baseline is Java SE (JDK/JRE) 17.0.

  2. Built with JDK 17.0.8 2023-July-18 LTS (build 17.0.8+9-LTS-211)

  3. Builds and supports Elements on Java 21 2023-09-19 LTS (build 21+35-LTS-2513)

Supports

  1. Elements builds and runs on Java 20.0.2.

License

Elements is licensed under the Apache 2.0 Software License Agreement.

Download / Include

Example 1. Maven
<dependency>
  <groupId>org.codeprimate</groupId>
  <artifactId>cp-elements</artifactId>
  <version>2.0.0-M5</version>
</dependency>
Example 2. Gradle
implementation 'org.codeprimate:cp-elements:2.0.0-M5'

Issues

Please use GitHub Issues to report any bugs, improvements or feature requests.

Contributions

Thank you for your interests in contributing to the Codeprimate Elements project. A full contributor license agreement (CLA) along with details on how to contribute will be provided shortly.

In the meantime, please submit tickets using GitHub Issues or PRs using GitHub Pull Requests.

Thank you!