Highly performant, dynamic, modular(OSGi based) runtime for developing modern RESTful applications.

Built upon

  1. High performance Undertow web server.

  2. OSGi Framework R7(Apache Felix as implementation).

Minimal runnable jar is ~30MB in size with below mentioned modules, starts in ~2500ms and low on resources

Modules:

  1. Dependency Injection (OSGi Declarative Services).

  2. JAX-RS 2.1 (RESTEasy v4.5.3) with JWT support.

  3. JWT module for creating and verifying the JWTs.

  4. Persistence(SQL/NO-SQL) layer - JPA(EclipseLink v2.7.7) or MyBatis v3.5.4 or MongoDB v4.0.2.

  5. Hikari JDBC Connection Pool Provider(Only if JPA or MyBatis is opted).

  6. Caffeine cache.

  7. Logback loggers - add or remove loggers in running server which will survive the server restart.

  8. Crypto module for hashing(BCrypt,PBKDF2WithHmacSHA256 or 384 or 512) and encryption/decryption with (AES/GCM/NoPadding).

  9. Java Bean Validation(Hibernate Validator).

Most of the services are highly configurable using OSGi Configuration Admin.

The platform embeds OSGi and Undertow with modules described above.

Steps to build and run:

  1. Make sure you have JDK 11+ and Apache Maven 3.6.x+ installed

  2. Since adeptj-runtime needs adeptj-modules therefore clone adeptj-modules and build it locally by running mvn clean install in adeptj-modules base directory.

  3. Now come back to the adeptj-runtime directory.

  4. From adeptj-runtime directory itself execute this command ./etc/build.sh

  5. Above step will create AdeptJ Runtime Uber jar with the /lib directory on the classpath.

  6. Now from adeptj-runtime directory itself execute this command ./bin/start.sh

  7. Start script will work on JDK 10 and so on.

  8. Go to AdeptJ OSGi Console to configure the services.

  9. System will ask for username/password, provide the default ones [admin/admin]

Debug options:

Start AdeptJ Runtime with jpda option to run it in debug mode(port 8000) i.e ./bin/start.sh jpda

Start Parameters and VM arguments, most of these provided in start script.

  1. For specifying port: -Dadeptj.rt.port=9007

  2. For checking port eagerly: -Dadeptj.rt.port.check=true

  3. Enable AJP: -Denable.ajp=true

  4. Enable HTTP2: -Denable.http2=true

  5. Enable Async Logging: -Dasync.logging=true

  6. Felix Logging Level: -Dfelix.log.level=3

  7. For providing server mode: -Dadeptj.rt.mode=PROD or mode [DEV] is default

  8. Command line argument for launching browser when server starts: launchBrowser=true

NOTE: For few modules, work still is in progress. We are pushing hard to complete ASAP.

Roadmap:

  1. Extensive code coverage for AdeptJ Runtime and Modules.

  2. Modules for popular NoSQL databases.

  3. OAuth2(client and server) modules.

Want to contribute:

Please feel free to fork the repos or drop a note to me @ irakeshkAToutlookDOTcom

Sponsors:

The AdeptJ Team uses the Yourkit Java Profiler when working on the AdeptJ Runtime project.

Many thanks to YourKit for sponsoring our Open Source projects with a license!

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.

LICENSE

Copyright 2016, AdeptJ (http://www.adeptj.com)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.