Core components of DataKernel Framework


These components form the basis of DataKernel framework. They include fast asynchronous technologies, Node.js-inspired Promises and Eventloops, launchers for common use cases, tools for smart and efficient application booting.

If you want to create Java web applications using DataKernel, we suggest you to learn docs in the following order:

Component Description
DI Custom Dependency Injection, an extremely lightweight yet simple and powerful solution.
Launcher Takes care of full application lifecycle and also provides handy diagnostic.
Service Graph Starts/ends services according to their dependency graph, designed to be used with DI and Launcher. Supports user-specific dependencies and standart Java services.
Worker Pool Allows to create multithreaded applications without overhead and complexities of traditional multithreading programming.
Configs Useful component which provides configs to your applications in a handy way.
HTTP High-performance asynchronous HTTP client and server alternative for Netty, Jetty and container-based servers. Contains built-in servlets for request dispatching and static content loading.
Eventloop Resembles Node.js Event Loop and provides efficient non-blocking network and file I/O for building Node.js-like client/server applications with high performance requirements.
Promise Resembles JavaScript Promise, alternative to Java’s CompletionStage. Allows to organize asynchronous code in convenient way by creating chains of operations wrapped in Promises. Promise has an extremely fast single-threaded implementation with minimal overhead and memory consumption.
ByteBuf More lightweight and efficient version of Java’s ByteBuffer class with support of simultaneous input and output. Module’s ByteBufPool significantly reduces memory consumption and GC footprint by reusing ByteBufs.

The following docs cover the components which aren’t always required to create web applications. Yet, they prove to be useful in more specific use cases:

Datastream Composable asynchronous/reactive streams with powerful data processing capabilities. Useful for transferring high volumes of lightweight values with zero overhead per message.
CSP Stands for ‘Communicating Sequential Processes’, provides asynchronous sequential communication between processes via channels similarly to the Go language.
Net Handles low-level asynchronous socket I/O (TCP/UDP) based on ByteBuf. Provides ability to create servers that utilize Eventloop and support SSL. A simple and fast Netty alternative.
Serializer Extremely fast and space-efficient serializers created with bytecode engineering. Introduces schema-less approach for best performance.
Codegen Dynamic class and method bytecode generator on top of ObjectWeb ASM. An expression-based fluent API abstracts the complexity of direct bytecode manipulation, so you can use it to create custom classes on the fly.
Codec Contains tools for encoding/decoding primitives and objects with built-in support of conversion to/from JSON and ByteBuf. The process resembles serialization and can be used to convert objects to a custom representation.
UIKernel Integration with UIKernel JS frontend library: JSON serializers, grid model, basic servlets. With this module you can build a server application that will be compatible with UIKernel.