# activej **Repository Path**: MarkburtOS/activej ## Basic Information - **Project Name**: activej - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-08 - **Last Updated**: 2021-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Maven Central](https://img.shields.io/maven-central/v/io.activej/activej)](https://mvnrepository.com/artifact/io.activej) [![GitHub](https://img.shields.io/github/license/activej/activej)](https://github.com/activej/activej/blob/master/LICENSE) ## Introduction [ActiveJ](https://activej.io) is a full-featured modern Java platform, created from the ground up as an alternative to Spring/Micronauts/Netty/Jetty. It is designed to be self-sufficient (no third-party dependencies), simple, lean and to provide ultimate performance. ActiveJ consists of a range of libraries, from dependency injection and high-performance async I/O (inspired by Node.js), to application servers and big data solutions. You can use ActiveJ to build scalable web applications, distributed systems and use it for high-load data processing. ## ActiveJ components ActiveJ consists of several modules that can be logically grouped into following categories : * **Async.io** - High-performance asynchronous IO with efficient event loop, NIO, promises, streaming and CSP. Alternative to Netty, RxJava, Akka and others. ([Promise](https://activej.io/async-io/promise), [Eventloop](https://activej.io/async-io/eventloop), [Net](https://activej.io/async-io/net), [CSP](https://activej.io/async-io/csp), [Datastream](https://activej.io/async-io/datastream)) * **HTTP** - High-performance HTTP server and client with WebSocket support. Can be used as a simple web server or as an application server. An alternative to Jetty and other conventional HTTP clients and servers. ([HTTP](https://activej.io/http)) * **ActiveJ Inject** - Lightweight powerful dependency injection library. Optimized for fast application start-up and ultimate runtime performance. Supports annotation-based component wiring as well as reflection-free wiring. ([ActiveJ Inject](https://activej.io/inject)) * **Boot** - Production-ready tools for launching and monitoring ActiveJ application. Concurrently starts and stops services based on their dependencies. Various service monitoring utilities with the support of JMX and Zabbix. ([Launcher](https://activej.io/boot/launcher), [Service Graph](https://activej.io/boot/servicegraph), [JMX](https://github.com/activej/activej/tree/master/boot-jmx), [Triggers](https://github.com/activej/activej/tree/master/boot-triggers)) * **Bytecode manipulation** * **ActiveJ Codegen** - Dynamic class and method bytecode generator on top of [ObjectWeb ASM](https://asm.ow2.io/) library. Abstracts the complexity of direct bytecode manipulation and allows to create custom classes on the fly using Lisp-like AST expressions. ([ActiveJ Codegen](https://activej.io/codegen)) * **ActiveJ Serializer** - Extremely fast and space-efficient serializers created with bytecode engineering. Introduces schema-less approach for the best performance. ([ActiveJ Serializer](https://activej.io/serializer)) * **ActiveJ Specializer** - Innovative technology for enhancing class runtime performance by automatically transforming class instances into specialized static classes, and class instance fields into baked-in static fields. Enables a wide variety of JVM optimizations for static classes, not possible otherwise: dead code elimination, aggressively inlining methods, and static constants. ([ActiveJ Specializer](https://activej.io/specializer)) * **Cloud components** * **ActiveJ FS** - Asynchronous abstraction over file system for building efficient, scalable local or remote file storages, supporting data redundancy, rebalancing, and resharding. ([ActiveJ FS](https://activej.io/fs)) * **ActiveJ RPC** - Ultra high-performance binary client-server protocol. Allows to build distributed, sharded and fault-tolerant microservices applications. ([ActiveJ RPC](https://activej.io/rpc)) * Various extra services: [ActiveJ CRDT](https://github.com/activej/activej/tree/master/extra/cloud-crdt), [Redis client](https://github.com/activej/activej/tree/master/extra/cloud-redis), [Memcache](https://github.com/activej/activej/tree/master/extra/cloud-memcache), [OLAP Cube](https://github.com/activej/activej/tree/master/extra/cloud-lsmt-cube), [Dataflow](https://github.com/activej/activej/tree/master/extra/cloud-dataflow) ## Quick start Insert this snippet to your terminal... ``` mvn archetype:generate -DarchetypeGroupId=io.activej -DarchetypeArtifactId=archetype-http -DarchetypeVersion=5.0-beta2 ``` ... and open the project in your favourite IDE. Then, build the application and run it. Open your browser on [localhost:8080](http://localhost:8080) to see the "Hello World" message. #### Fully-featured embedded web application server with Dependency Injection: ```java public final class HttpHelloWorldExample extends HttpServerLauncher { @Provides AsyncServlet servlet() { return request -> HttpResponse.ok200().withPlainText("Hello, World!"); } public static void main(String[] args) throws Exception { Launcher launcher = new HttpHelloWorldExample(); launcher.launch(args); } } ``` Some technical details regarding the above example: - *Features a JAR file size of only 1.4 MB. In comparison, a minimal Spring web app size is approximately 17 MB*. - *The cold start time is 0.65 sec.* - *The [ActiveJ Inject](https://activej.io/inject) DI library which is used, is 5.5 times faster than Guice and hundreds of times faster than Spring.* To learn more about ActiveJ, please visit https://activej.io or follow our 5-minute [getting-started guide](https://activej.io/tutorials/getting-started). Examples for usage of the ActiveJ platform and all the ActiveJ libraries can be found in [`examples`](https://github.com/activej/activej/tree/master/examples) module. **Release notes for ActiveJ can be found [here](https://activej.io/blog)**