OO-atom

A Java polyfill for better code design

License

License

GroupId

GroupId

com.pragmaticobjects.oo.atom
ArtifactId

ArtifactId

oo-atom
Last Version

Last Version

0.0.16
Release Date

Release Date

Type

Type

pom
Description

Description

OO-atom
A Java polyfill for better code design
Project URL

Project URL

https://github.com/pragmatic-objects/oo-atom
Source Code Management

Source Code Management

https://github.com/pragmatic-objects/oo-atom.git

Download oo-atom

Filename Size
oo-atom-0.0.16.pom 16 KB
Browse

How to add to project

<!-- https://jarcasting.com/artifacts/com.pragmaticobjects.oo.atom/oo-atom/ -->
<dependency>
    <groupId>com.pragmaticobjects.oo.atom</groupId>
    <artifactId>oo-atom</artifactId>
    <version>0.0.16</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.pragmaticobjects.oo.atom/oo-atom/
implementation 'com.pragmaticobjects.oo.atom:oo-atom:0.0.16'
// https://jarcasting.com/artifacts/com.pragmaticobjects.oo.atom/oo-atom/
implementation ("com.pragmaticobjects.oo.atom:oo-atom:0.0.16")
'com.pragmaticobjects.oo.atom:oo-atom:pom:0.0.16'
<dependency org="com.pragmaticobjects.oo.atom" name="oo-atom" rev="0.0.16">
  <artifact name="oo-atom" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.pragmaticobjects.oo.atom', module='oo-atom', version='0.0.16')
)
libraryDependencies += "com.pragmaticobjects.oo.atom" % "oo-atom" % "0.0.16"
[com.pragmaticobjects.oo.atom/oo-atom "0.0.16"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

  • atom-basis
  • atom-maven-plugin
  • atom-it

OO-atom

Build Status (Travis) Build status (AppVeyor) Codecov

NOTICE

OO-Atom support is currenty suspended in favour of its successor --- OO-Equivalence. OO-Equivalence serves the same purpose as OO-Atom, deriving the most of the source code and ideology from it, but uses the brand new approach.

OO-Equivalence is backward-compatible with OO-Atom on source code level: if your project works with OO-Atom, it will work the same way after being recompiled with OO-Equivalence. For any issues with OO-Atom to OO-Equivalence migration, report to OO-Equivalence issue tracker.

Intro

OO-atom is a desperate attempt to make Java programming more predictable and transparent. Instead of fighting the boilerplate code by hiding it, introducing hidden coupling, like it is done by Java EE, Spring, Hibernate and other "magical" solutions, OO-atom greets clean and open design by taking the most from Java SE, and the best from OOP.

The project is built around the term named "Atom". Atom is a Java class, which strictly follows a set of requirements. Requirements were selected in such way that declarative object composition for the Atoms is trivial and common approach. Object composition is used as a main instrument for composing application from a small cohesive classes, instead of dependencies injection by means of DI containers.

Also, for all Atoms, OO-atom seeks for the best ways of improving quality, maintainability, test coverage and performance.

The project is inspired by the guidelines from the books "Elegant Objects", written by Yegor Bugayenko, and the materials from his blog. However, several changes and additions were made to initial concept - see this page for the list of differences.

OO-atom project is designed on the following principles:

  • it is transparent. It never dictates the architecture of your applications.
  • it is flexible. You are free to use it with any solution from a large Java ecosystem
  • it operates at compile-time only. It never brings ad-hoc runtime dependencies to your application.

Quick start with Maven

Add atom-maven-plugin to your project's pom file:

<plugin>
    <groupId>com.pragmaticobjects.oo.atom</groupId>
    <artifactId>atom-maven-plugin</artifactId>
    <version>x.y.z</version>
    <executions>
        <execution>
            <goals>
                <goal>generate-annotations</goal>
                <goal>instrument</goal>
                <goal>instrument-tests</goal>
            </goals>
        </execution>
    </executions>
</plugin>
com.pragmaticobjects.oo.atom

Pragmatic Objects

The pragmatic way of using Elegant Objects in action

Versions

Version
0.0.16
0.0.15
0.0.14
0.0.13