Lightweight asynchronous framework for efficient and scalable web, network and big data solutions
cube

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 full application stack: Event Loop, Promises, HTTP, DI and others, including decentralized big-data technologies and map-reduce algorithms.

DataKernel main goal is to free projects from the frameworks which restrict developers with redundant standards and boilerplates. Get yourself a true freedom to express yourself as a developer - create projects and concentrate on their business logic instead of learning framework specifications.
  • ~165K HTTP requests per second on single core
  • Up to 15M RPC requests per second on single core
  • DK Promise is 7 times faster then Java CompletableFuture
  • DK DI is 4 times faster then Guice and up to 100s times faster then Spring
  • One of the fastest Serializers available
  • The full size of DK web application with embedded HTTP server and integrated React.js is only 2MB (including 1MB of React.js itself)

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 are no under-the-hood magic, endless XML configurations and dependency hell of third-party components glued together via layers of abstractions. DataKernel gives 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 pool 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 standalone high-performance async network solutions and HTTP web applications up to big-data cloud solutions and decentralized internet-wide applications.

Modern approach

DataKernel has simple yet powerful set of abstractions with clean OOP design favoring Java 8+ functional programming style. It also radically downplays 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
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 then Guice and up to 100s times faster then Spring. This result is achieved because of the compiling dependency graph structure at the injector startup time. Thus, there are no overheads during injector runtime and its entire runtime code consists of ~50 lines of code.

Besides being extremely fast, DataKernel DI is even more powerful: support of 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, user-defined binding transformations and binding generators.

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 passing 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.