What is ActiveJ?
ActiveJ is an alternative Java platform built from the ground up as a replacement of
Spring,
Spark, Quarkus, Micronauts, and other solutions.
It is minimalistic,
boilerplate-free, and provides outstanding performance.
ActiveJ consists of several modules that can be logically grouped into following categories :
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, Eventloop, Net, CSP, 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)
- 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)
- 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, Service Graph, JMX, Triggers)
- Bytecode manipulation
- ActiveJ Codegen - Dynamic class and method bytecode generator on top of ObjectWeb ASM library. Abstracts the complexity of direct bytecode manipulation and allows to create custom classes on the fly using Lisp-like AST expressions. (ActiveJ Codegen)
- ActiveJ Serializer - Extremely fast and space-efficient serializers created with bytecode engineering. Introduces schema-less approach for the best performance. (ActiveJ 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)
- 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)
- ActiveJ RPC - Ultra high-performance binary client-server protocol. Allows to build distributed, sharded and fault-tolerant microservices applications. (ActiveJ RPC)
- Various extra services: ActiveJ CRDT, Redis client, Memcache, OLAP Cube, Dataflow
Why ActiveJ?

Excellence of your products
Rich stack of unique technologies for lightning-fast and asynchronous web
applications with competitive advantage

Alternative architecture
Lightweight and natively scalable async architecture in contrast to
Spring
and other similar solutions

Ultimate performance
Squeezing the last bits of performance from your hardware, proven by
numerous benchmarks

Simple design
ActiveJ was built from the ground up, so it doesn’t feature tons of
abstractions hiding the legacy standards
A step ahead of other solutions
Minimum web application size
ActiveJ
1.4 MB
Spring
17 MB
Web application launch time
ActiveJ
0.65 Sec
Spring
14 Sec
Enjoy the development
Predefined launchers and classes for both
typical
and more specific use cases combined with ActiveJ Inject
DI
library enable extremely fast and convenient app development.
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);
}
}
Genuinely high load networking
Ultra-fast means for I/O processing along with a simple abstraction over low-level async sockets I/O. Create servers that process 45M+ RPS on a single CPU core in a few lines of code.
ChannelSupplier.ofSocket(socket)
.transformWith(ChannelDeserializer.create(INT_SERIALIZER))
.transformWith(StreamMapper.create(x -> x + " times 10 = " + x * 10))
.transformWith(ChannelSerializer.create(UTF8_SERIALIZER))
.streamTo(ChannelConsumer.ofSocket(socket));
ActiveJ in production
ActiveJ has proved its stability and efficiency in our high-load in-house
projects, processing billions of requests daily. For example, AdKernel
is powered with ActiveJ and it is one of the leading ad-tech solutions providers in the market.