All Projects → softindex → Datakernel

softindex / Datakernel

Licence: apache-2.0
Alternative Java platform, built from the ground up - with its own async I/O core and DI. Ultra high-performance, simple and minimalistic - redefines server-side programming, web-development and highload!

Programming Languages

java
68154 projects - #9 most used programming language
bytecode
52 projects

Projects that are alternatives of or similar to Datakernel

Activej
ActiveJ is an alternative Java platform built from the ground up. ActiveJ redefines web, high load, and cloud programming in Java, featuring ultimate performance and scalability!
Stars: ✭ 183 (+110.34%)
Mutual labels:  microservice, rpc, async, dependency-injection
Dapeng Soa
A lightweight, high performance micro-service framework
Stars: ✭ 101 (+16.09%)
Mutual labels:  microservice, rpc, async
Airframe
Essential Building Blocks for Scala
Stars: ✭ 442 (+408.05%)
Mutual labels:  rpc, serialization, dependency-injection
Ws Promise Client
PROJECT MOVED: https://github.com/kdex/ws-promise
Stars: ✭ 6 (-93.1%)
Mutual labels:  rpc, async, promise
Protobuffer
A simple wrapper library for protobuf-net with async, gzip and less boilerplate.
Stars: ✭ 50 (-42.53%)
Mutual labels:  async, serialization
Before After Hook
wrap methods with before/after hooks
Stars: ✭ 49 (-43.68%)
Mutual labels:  async, promise
Download
Download and extract files
Stars: ✭ 1,064 (+1122.99%)
Mutual labels:  async, promise
Flowa
🔥Service level control flow for Node.js
Stars: ✭ 66 (-24.14%)
Mutual labels:  async, promise
Fritzbox.js
☎️ The leading AVM Fritz!Box API for NodeJS and JavaScript.
Stars: ✭ 36 (-58.62%)
Mutual labels:  async, promise
Promised Pipe
A ramda.pipe-like utility that handles promises internally with zero dependencies
Stars: ✭ 64 (-26.44%)
Mutual labels:  async, promise
Hprose Golang
Hprose is a cross-language RPC. This project is Hprose for Golang.
Stars: ✭ 1,143 (+1213.79%)
Mutual labels:  rpc, serialization
Emacs Async Await
Async/Await for Emacs
Stars: ✭ 47 (-45.98%)
Mutual labels:  async, promise
Node Qiniu Sdk
七牛云SDK,使用 ES2017 async functions 来操作七牛云,接口名称与官方接口对应,轻松上手,文档齐全
Stars: ✭ 44 (-49.43%)
Mutual labels:  async, promise
Aiodine
🧪 Async-first Python dependency injection library
Stars: ✭ 51 (-41.38%)
Mutual labels:  async, dependency-injection
Breeze
Javascript async flow control manager
Stars: ✭ 38 (-56.32%)
Mutual labels:  async, promise
Haskell Capnp
Cap'n Proto for Haskell
Stars: ✭ 65 (-25.29%)
Mutual labels:  rpc, serialization
Write
Write data to the file system, creating any intermediate directories if they don't already exist. Used by flat-cache and many others!
Stars: ✭ 68 (-21.84%)
Mutual labels:  async, promise
Socket.io Rpc
Extend your promises across a network with socket.io
Stars: ✭ 67 (-22.99%)
Mutual labels:  rpc, promise
Thriftpy
Thriftpy has been deprecated, please migrate to https://github.com/Thriftpy/thriftpy2
Stars: ✭ 1,156 (+1228.74%)
Mutual labels:  rpc, serialization
Rpcx Java
rpcx implementation in Java for server side and client side
Stars: ✭ 71 (-18.39%)
Mutual labels:  microservice, rpc

Maven Central Apache license Twitter

Project status

Please note that DataKernel framework was massively improved and restructured into a new project named ActiveJ. Now it's even more streamlined, convenient, and powerful! We highly recommend you to migrate to ActiveJ.

Introduction

DataKernel is a full-featured alternative web and big data Java framework built from the ground up. 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.

No overhead of intermediate abstractions, legacy standards and third-party libraries makes the framework minimalistic, streamlined and lightning-fast!

Getting started

Just insert this snippet to your terminal...

mvn archetype:generate -DarchetypeGroupId=io.datakernel -DarchetypeArtifactId=archetype-http -DarchetypeVersion=3.1.0

... and open project in your favourite IDE. Then, build the application and run it. Open your browser on localhost:8080 to see the "Hello World" message.

To learn more about DataKernel, visit datakernel.io or follow our 5-minute getting-started guide.

Examples

Basic HTTP server in less than 15 lines of code:

public final class HelloWorldExample { 
    public static void main(String[] args) throws IOException {
        Eventloop eventloop = Eventloop.create();
        AsyncHttpServer server = AsyncHttpServer.create(eventloop,
                request -> Promise.of(
                        HttpResponse.ok200()
                                .withPlainText("Hello, World!")))
                .withListenPort(8080);
        server.listen();
        eventloop.run();
    }
}

AsyncHttpServer is a built-in implementation of an HTTP server that runs asynchronously in a Node.js-inspired Event Loop.

Full-featured embedded web application server with Dependency Injection:

public final class HttpHelloWorldExample extends HttpServerLauncher { 
    @Provides
    AsyncServlet servlet() { 
        return request -> HttpResponse.ok200().withPlainText("Hello, World!");
    }

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

HttpServerLauncher - a predefined DataKernel Launcher that takes care of the application lifecycle and provides needed components for our server

@Provides - one of the DataKernel DI annotations

AsyncServlet - asynchronous servlet interface

Promise - Node.js-inspired async single-threaded Promises, an alternative to CompletableFuture

  • The JAR file size of this example is only 1.4 MB. In comparison, minimal Spring web app size is 17 MB
  • This example utilizes quite a few components - Eventloop, DI, Promise, HTTP, Launcher. Yet, it builds and starts in 0.65 sec.
  • DataKernel DI is 5.5 times faster than Guice and 100s times faster than Spring.
  • DataKernel Promise is 7 times faster than Java CompletableFuture.

Lightning-fast RPC server:

public RpcServer rpcServer(Eventloop eventloop) {
    return RpcServer.create(eventloop)
            .withStreamProtocol(...)
            .withMessageTypes(Integer.class)
            .withHandler(Integer.class, Integer.class, req -> Promise.of(req * 2));
}
  • This RPC server handles up to 15M requests per second on a single CPU core.

Documentation

See the docs, examples, and tutorials on our website.

Need help or found a bug?

Feel free to open a GitHub issue.

Communication

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].