The time has finally come to announce the DataKernel 3.0 release! With these new fast asynchronous solutions your creation of Java web apps will become even simpler. No more endless framework specifications, boilerplate code, containers, abstractions and XML hell. Let’s take a closer look at the key features:
DI - a new lighting-fast DI implementation with support of scopes, custom multi- and single-threaded injectors, user-defined bindings and transparent dependency graph introspection. No third-party dependencies, completely optional reflection and mind-blowing benchmarks.
HTTP module to let you conveniently create asynchronous HTTP servers and clients with low-overhead and ultimate performance due to an extremely simple inner architecture with no legacy adapters. Features a collection of built-in asynchronous servlets for request handling and static content loading. Includes support of relative pathing and a set of pre-defined launchers for typical use-cases. An efficient alternative to Netty, Jetty, and container-based servers.
Net as a simple, comfortable and fast Netty alternative for handling low-level asynchronous socket I/O with the support of Promises, CSP compatibility and extensive optimization to ensure negligible performance overhead.
RPC as a perfect solution for creating efficient memcache-like servers with outstanding performance - up to 15M requests per second on a single core! Includes a set of implemented pre-defined strategies to suit all your needs.
Eventloop as an inspired by Node.js Event Loop implementation that provides the tools to build efficient Node.js-like client-server applications. Features asynchronous I/O operations, multithreading, task scheduling and reuse of byte buffers to reduce GC load.
Promise as a JS-inspired improved alternative to Java CompletionStage to efficiently organize asynchronous code with the support of chained mechanism and extremely fast single-threaded implementation that can process millions of calls per second.
ByteBuf as a GC-friendly extremely lightweight alternative to Java ByteBuffers. Features buffer reuse, effective management of multiple buffers and a number of utility classes for resizing, conversion, etc.
Datastream module as the fastest data streaming solution with zero overhead per message for server communication. Includes efficient congestion control, support of composable stream operations and CSP compatibility.
CSP as a Go-inspired tool to provide I/O communication between channels. Features high performance and throughput speed by using extremely fast Promises, optimization for working with ByteBuffs and asynchronous back pressure management.
Also, there are some important helper components:
A new Launcher implementation based on the DI module to provide you with the tools to easily manage and diagnose your app’s lifecycle in a single package.
Service Graph as a part of the DI and Launcher modules to let you start and stop any application services according to their dependency graph. Features customization by user-specific dependencies, support of multiple standard Java services as well as DataKernel’s eventloops, async servers and services.
Worker Pool as the means to create efficient multithreaded applications without overhead and races while preserving the natural Java multithreading features, including full interoperability with Java Threads, Futures and blocking I/O operations.
Codegen for user-friendly runtime-creation of methods and classes without reflection overhead. In fact, it’s an embedded Lisp with a codegen and automatic type inference. Its runtime-generated code works as fast as a manually written one. Includes an expression-based API to help you avoid the complexity of direct bytecode manipulations and focus on your business logic instead.
Serializer as a bytecode generator of extremely fast and space-efficient serializers for data saving or transferring. Includes no overhead by using the schema-less approach and compatibility with dynamically created classes.
Codec for encoding and decoding primitives and objects in a fast and efficient way. Features built-in conversion to/from JSON and ByteBuf, allows convenient creation of complex codecs by composing simpler ones.
Configs module as an extension for property files to provide necessary configs to your app with the support of standard converters, default property values, and saving all the used properties into a file.
CRDT module to help you make your own cooperative editing apps with the CRDT approach of conflict resolutions.
Ready to create next-level Java applications? Let’s get started!
Follow DataKernel on other platforms: