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 incomparably faster, which is proven by benchmarks.
ActiveJ has minimum third-party dependencies, yet features a full stack of technologies with an efficient async programming model and powerful DI library ActiveInject.


ActiveJ consists of several loosely coupled components that complement and empower each other: async core (Promise, Eventloop), efficient I/O processing (CSP, Datastream), high-performance Jetty and Netty alternatives that can be used independently of ActiveJ (HTTP, Net), and handy boot utilities (Launcher, Service Graph, etc).

Why ActiveJ?

Excellence of your products

Full stack of unique technologies for lightning-fast and asynchronous web applications with competitive advantage

Superiority of 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

HTTP
ActiveJ - 186.1 Krps
Vert.x - 162.9 Krps
ActiveJ
186.1 Krps
Vert.x
162.9 Krps
Dependency Injection
ActiveJ - 7.2 Mrps Guice - 1.3 Mrps Spring - 1.3 Krps
ActiveJ
7.2 Mrps
Guice
1.3 Mrps
Spring
1.3 Krps
Memcached
ActiveJ - 9.8 Mrps
ActiveJ
9.8 Mrps
RPC
ActiveJ - 15.6 Mrps
ActiveJ
15.6 Mrps
Promise/Futures
ActiveJ - 77.2 Mrps
JDK - 11.7 Mrps
ActiveJ
77.2 Mrps
JDK
11.7 Mrps
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

Perfectly optimized predefined launchers and classes for both typical and more specific use cases combined with ActiveInject 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 which is v2.2, published Sep 11, 2020 (see on GitHub and Maven).

Independent ActiveJ technologies

ActiveJ platform features a list of handy and powerful technologies that can be used independently of ActiveJ.
Lightweight Dependency Injection, an extremely simple and powerful solution. Significantly outperforms existing solution like Spring DI or Guice.
Extremely fast and space-efficient serializers created with bytecode engineering. Introduces schema-less approach for the best performance.
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.
Ultra high-performance binary protocol. Allows to build distributed applications that require efficient client-server interconnections between servers.
Basis for building efficient, scalable remote file storage, supporting data redundancy, rebalancing, and resharding.
A little bit of magic to speed up your code. Optimizes code for JVM and automagically boosts it up by more than 30%.