Lightweight asynchronous framework for efficient and scalable web, network and big data solutions
DK: http - 183.4 Krps
Vert.x: http - 162.9 Krps
DK: HTTP
183.4 Krps
Vert.x: HTTP
162.9 Krps
DataKernel: di - 7.2 Mrps Guice: di - 1.3 Mrps Spring: di - 1.3 Krps
DK: DI
7.2 Mrps
Guice: DI
1.3 Mrps
Spring: DI
1.3 Krps
DataKernel: Memcache - 10.1 Mrps
DK : Memcache
10.1 Mrps
DataKernel: RPC - 15.5 Mrps
DK : RPC
15.5 Mrps
DataKernel: Promise - 77.2 Mrps
JDK: Futures - 11.7 Mrps
DK: Promise
77.2 Mrps
JDK: Futures
11.7 Mrps

Alternative to conventional frameworks

DataKernel is a full-featured alternative web and big data Java framework. It does not use Netty, Jetty, Spring/Guice DI, RxJava etc. Instead, it features a full application stack: Event Loop, Promises, HTTP, DI and others, including decentralized big-data technologies and map-reduce algorithms.

The main DataKernel goal is to free projects from the frameworks that restrict developers with redundant standards and boilerplates. Get the true ability to express yourself as a developer - create projects and concentrate on their business logic instead of learning framework specifications.

Why choose DataKernel:

Best technologies

DataKernel is legacy-free. Build application-specific embedded databases and high-performance HTTP/RPC servers using high-level abstractions, LSM-Tree, Operational Transformations, CRDT, Go-inspired CSP and other modern algorithms and technologies.

Explicit design

There is no under-the-hood magic, endless XML configurations and dependency hell of third-party components glued together via layers of abstractions. DataKernel gives you a full control over your applications.

Born to be async

DataKernel allows you to create async web applications in a Node.js manner while preserving all of the Java advantages. We also use Node.js-inspired features, such as single-threaded async Promises and pools of event loops as the building blocks of our framework.

No overweight

To achieve the lowest GC footprint possible, we’ve designed thoroughly optimized core modules - improved Java ByteBuffer ByteBuf, minimalistic Datastreams, stateless single-threaded Promises and also one of the fastest Serializers available nowadays.

Flexibility

DataKernel has everything you need to create applications of different scales - from stand-alone high-performance async network solutions and HTTP web applications to big-data cloud solutions and decentralized internet-wide applications.

Modern approach

DataKernel has a simple yet powerful set of abstractions with clean OOP design favoring Java 8+ functional programming style. It also radically downplays the Dependency Injection role, giving way to your business logic instead.
cube

Comparison to other popular frameworks

DataKernel
Spring
Node.js
Ruby on Rails
Django
Suitable for enterprise-level solutions
plus
plus
plus
plus
plus
Low entry barrier level
plus
plus
plus
plus
Designed asynchronous
plus
plus
plus
Explicit specifications instead of implicit conventions
plus
plus
plus
Legacy-free, no third-party dependencies
plus
plus
plus
plus
IDE friendly, statically-typed high-performance language
plus
plus
Lightweight asynchronous framework for efficient and scalable web, network and big data solutions
GET STARTED

Create your applications simpler than ever before

A set of predefined launchers and classes for typical use cases allows you to develop apps extremely fast. Create an async HTTP server in less than 15 lines of code with no additional configuration files.
public final class HttpHelloWorldExample extends HttpServerLauncher {
	@Provides
	AsyncServlet servlet() {
		return request -> Promise.of(ok200().withPlainText("Hello World"));
	}

	public static void main(String[] args) throws Exception {
		Launcher launcher = new HttpHelloWorldExample();
		launcher.launch(args);
	}
}

Dependency Injection: Redefined

DataKernel DI is lightning-fast: four times faster than Guice and up to 100s of times faster than Spring. This result is achieved because of dependency graph being compiled at start-up time into efficient runtime internal representation. Thus, there are no overheads during runtime.

Besides being extremely fast, DataKernel DI is even more powerful: it supports nested scopes, singletons, multithreaded and single-threaded modes, object factories, modules and plugins for transforming dependencies graph at startup time, abstracting out all reflection. These plugins extensively use Java 8+ functional-style programming for binding definitions, generators and user-defined binding transformations.

public final class HelloWorldExample extends Launcher {

	@Inject
	String message;

	@Provides
	String message() {
		return "Hello, world!";
	}

	@Override
	protected void run() {
		System.out.println(message);
	}

	public static void main(String[] args) throws Exception {
		Launcher launcher = new HelloWorldExample();
		launcher.launch(args);

	}
}

Get Started

DataKernel is a production-ready framework which constantly evolves and gets new updates. The essential DataKernel modules form the basis of diverse high-load applications processing billions of requests daily: ad-serving solutions, online analytics and web crawlers.

Try DataKernel right now by completing the Getting-Started tutorial. You can also explore docs to find out more about DataKernel modules. It is also worth to note that due to the usage of Node.js-inspired features, DataKernel is a perfect framework to get started with Java if you are a JavaScript developer.