Redefining Java for modern web, cloud, high-load, and microservices solutions

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 :
  • 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

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.

ActiveJ releases

These docs cover the most recent ActiveJ release v4.0 (see on GitHub and Maven).