Zkejid's Constructor Framework API

API for Zkejid's Constructor Framework.

License

License

GroupId

GroupId

com.zkejid.constructor
ArtifactId

ArtifactId

core-api
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

Zkejid's Constructor Framework API
API for Zkejid's Constructor Framework.
Project URL

Project URL

https://github.com/zkejidsconstructor/core/tree/master/core-api

Download core-api

How to add to project

<!-- https://jarcasting.com/artifacts/com.zkejid.constructor/core-api/ -->
<dependency>
    <groupId>com.zkejid.constructor</groupId>
    <artifactId>core-api</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.zkejid.constructor/core-api/
implementation 'com.zkejid.constructor:core-api:1.0.0'
// https://jarcasting.com/artifacts/com.zkejid.constructor/core-api/
implementation ("com.zkejid.constructor:core-api:1.0.0")
'com.zkejid.constructor:core-api:jar:1.0.0'
<dependency org="com.zkejid.constructor" name="core-api" rev="1.0.0">
  <artifact name="core-api" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.zkejid.constructor', module='core-api', version='1.0.0')
)
libraryDependencies += "com.zkejid.constructor" % "core-api" % "1.0.0"
[com.zkejid.constructor/core-api "1.0.0"]

Dependencies

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

Project Modules

There are no modules declared in this project.

Build Status

Constructor Core module

Overview

Constructor is a framework for development of modular applications. The idea behind it is simple: split the whole application on separate modules linked through well documented and properly tested interfaces.

Each module of an application defines two sets of interfaces. One set consists of all interface classes given module depends on. Other set consists of interface classes given module provides. Core module responsible fo detection of modules, their instantiation, providing dependencies, calling entry point code and executing some other infrastructural tasks.

Recommended way to organize code in project is as follows. Each module should be provided as a separate set of artifacts. Module project should contain: artifact containing API provided, implementation artifact, unit tests over implementation, test application, integration tests over API.

Benefits

  • Constructor Framework supports and powers up test driven development in the following way: each interaction does through an interface, which means you can set any implementation you need.
  • Framework forces developer to use modular way of thoughts. Each module has clear and well described purpose.
  • The set of infrastructural classes in Java SDK has their own interfaces. Usage of these interfaces allows developer to make more clear tests on interaction with infrastructure: file system, JMX, System class, System Environment variables, and so on.

Similar frameworks

  • Any Dependency Injection (DI) framework: Spring, Guice, Dagger, etc. Constructor Framework implements Dependency injection on the level of modules.
  • Plugin frameworks like PF4J. Core module does not support the dynamic plugin loadig, but has similar behavior on static loading searching modules in classpath.

Versioning

Artifact versions of the Core Module follow the Semantic Versioning 2.0.0 specification.

Logging

Core classes use framework's own built-in interface for logging. Application should define an implementation of this interface in order to achieve logging for core classes. Implementation should be made in the form of Constructor Framework module providing implementation of CoreLogging.java interface.

Versions

Version
1.0.0