Core components of DataKernel Framework


These components form the basis of DataKernel. They include fast asynchronous technologies, Node.js-inspired Promises and Eventloops, launchers for common use cases, tools for smart and efficient application booting. Also, there is UIKernel integration component, which allows to integrate UIKernel JS front-end into your application.
Component Description Benchmarks/examples
ByteBuf ByteBuf is a more lightweight and efficient version of Java’s ByteBuffer class with support of simultaneous input and output. Module’s ByteBufQueue allows you to work with multiple ByteBufs in a convenient way. ByteBufPool significantly reduces memory consumption and Java Garbage Collector load by reusing ByteBufs. You can also get stats on pool’s memory consumption and efficiency. ByteBuf examples
Eventloop Eventloop resembles Event Loop in Node.js and provides efficient non-blocking network and file I/O for building Node.js-like client/server applications with high performance requirements. Although Eventloop runs in a single thread, multiple Eventloops can run at the same time to provide efficient CPU usage. Eventloop examples
Net Net module handles low-level asynchronous socket I/O (TCP/UDP) based on ByteBuf. Provides ability to create servers that utilize Eventloop and support SSL. Net examples
CSP CSP stands for Communicating Sequential Processes. This module provides asynchronous sequential communication between processes via channels similarly to the Go language. CSP examples
Promise Promise module resembles JavaScript Promise and is an alternative to Java’s CompletionStage. It allows to organize asynchronous code in convenient way by creating chains of operations which are wrapped in Promises. They have a minimalistic and extremely fast single-threaded implementation with minimal overhead and memory consumption. Promise examples
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 by providing a class description. It is particularly useful in the situations when you have to adjust class behavior in the runtime, based on some external factors. Codegen examples
Serializer Extremely fast and space-efficient serializers created with bytecode engineering. Introduces schema-less approach for best performance. Serializer examples, Benchmark
Datastream Composable asynchronous/reactive streams with powerful data processing capabilities. Useful for transferring high volumes of lightweight values. Datastream examples, Benchmark
HTTP High-performance asynchronous HTTP client and server. Contains built-in servlets for request dispatching and static content loading. HTTP examples, Benchmark
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. Codec examples
Boot An intelligent way of booting complex applications and services according to their dependencies. Component contains several modules that help to configure and launch an application easier. Boot examples
Launchers Module contains a set of predefined launchers as well as some common initializers for services. Contains standard launchers for CRDT, HTTP, FS and RPC modules. Launchers examples
UIKernel This module represents 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. UIKernel integration example