All Projects → ktorio → Ktor

ktorio / Ktor

Licence: apache-2.0
Framework for quickly creating connected applications in Kotlin with minimal effort

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Ktor

Recoil
Asynchronous coroutines for PHP 7.
Stars: ✭ 765 (-91.68%)
Mutual labels:  async, asynchronous
Chili
Chili: HTTP Served Hot
Stars: ✭ 7 (-99.92%)
Mutual labels:  async, asynchronous
Klein
werkzeug + twisted.web
Stars: ✭ 770 (-91.62%)
Mutual labels:  async, web-framework
Reservoir
Android library to easily serialize and cache your objects to disk using key/value pairs.
Stars: ✭ 674 (-92.67%)
Mutual labels:  async, asynchronous
Ea Async
EA Async implements async-await methods in the JVM.
Stars: ✭ 1,085 (-88.19%)
Mutual labels:  async, asynchronous
G3log
G3log is an asynchronous, "crash safe", logger that is easy to use with default logging sinks or you can add your own. G3log is made with plain C++14 (C++11 support up to release 1.3.2) with no external libraries (except gtest used for unit tests). G3log is made to be cross-platform, currently running on OSX, Windows and several Linux distros. See Readme below for details of usage.
Stars: ✭ 677 (-92.63%)
Mutual labels:  async, asynchronous
Vue Loadable
⏳ Improve your loading state control with pretty simple methods and helpers.
Stars: ✭ 23 (-99.75%)
Mutual labels:  async, asynchronous
Bocadillo
(UNMAINTAINED) Fast, scalable and real-time capable web APIs for everyone
Stars: ✭ 401 (-95.64%)
Mutual labels:  asynchronous, web-framework
Iguazu Rest
✨ Iguazu REST is a plugin for the Iguazu ecosystem that allows for pre-built async calls for REST with smart caching.
Stars: ✭ 21 (-99.77%)
Mutual labels:  async, asynchronous
Request.swift
A tiny HTTP client written in swift. URLSession alternative
Stars: ✭ 14 (-99.85%)
Mutual labels:  async, asynchronous
Tornado Celery
Non-blocking Celery client for Tornado
Stars: ✭ 561 (-93.9%)
Mutual labels:  async, asynchronous
Handle Path Oz
Android Library to handle multiple Uri's(paths) received through Intents.
Stars: ✭ 36 (-99.61%)
Mutual labels:  async, asynchronous
Zsh Async
Because your terminal should be able to perform tasks asynchronously without external tools!
Stars: ✭ 528 (-94.25%)
Mutual labels:  async, asynchronous
Swiftcoroutine
Swift coroutines for iOS, macOS and Linux.
Stars: ✭ 690 (-92.49%)
Mutual labels:  async, asynchronous
Quill
Asynchronous Low Latency C++ Logging Library
Stars: ✭ 422 (-95.41%)
Mutual labels:  async, asynchronous
Blockly Gamepad
A Blockly extension designed to develop games (made with love ❤)
Stars: ✭ 18 (-99.8%)
Mutual labels:  async, asynchronous
Predis Async
Asynchronous PHP client library for Redis built on top of ReactPHP
Stars: ✭ 354 (-96.15%)
Mutual labels:  async, asynchronous
Transmittable Thread Local
📌 TransmittableThreadLocal (TTL), the missing Java™ std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
Stars: ✭ 4,678 (-49.1%)
Mutual labels:  async, asynchronous
Parallel Ssh
Asynchronous parallel SSH client library.
Stars: ✭ 864 (-90.6%)
Mutual labels:  async, asynchronous
Csp
Communicating Sequential Processes in JavaScript
Stars: ✭ 33 (-99.64%)
Mutual labels:  async, asynchronous

Ktor

Official JetBrains project Maven Central Kotlin Slack channel GitHub License

Ktor is an asynchronous framework for creating microservices, web applications and more. Written in Kotlin from the ground up.

import io.ktor.server.netty.*
import io.ktor.server.routing.*
import io.ktor.server.application.*
import io.ktor.http.*
import io.ktor.server.response.*
import io.ktor.server.engine.*

fun main(args: Array<String>) {
    embeddedServer(Netty, 8080) {
        routing {
            get("/") {
                call.respondText("Hello, world!", ContentType.Text.Html)
            }
        }
    }.start(wait = true)
}
  • Runs embedded web server on localhost:8080
  • Installs routing and responds with Hello, world! when receiving a GET http request for the root path

Principles

Unopinionated

Ktor Framework doesn't impose a lot of constraints on what technology a project is going to use – logging, templating, messaging, persistence, serialization, dependency injection, etc. Sometimes it may be required to implement a simple interface, but usually it is a matter of writing a transforming or intercepting function. Features are installed into the application using a unified interception mechanism which allows building arbitrary pipelines.

Ktor Applications can be hosted in any servlet container with Servlet 3.0+ API support such as Tomcat, or standalone using Netty or Jetty. Support for other hosts can be added through the unified hosting API.

Ktor APIs are mostly functions calls with lambdas. Thanks to Kotlin DSL capabilities, the code looks declarative. Application composition is entirely up to the developer's choice – with functions or classes, using dependency injection framework or doing it all manually in the main function.

Asynchronous

The Ktor pipeline machinery and API are utilising Kotlin coroutines to provide easy-to-use asynchronous programming model without making it too cumbersome. All host implementations are using asynchronous I/O facilities to avoid thread blocking.

Testable

Ktor applications can be hosted in a special test environment, which emulates a web server to some extent without actually doing any networking. It provides easy way to test an application without mocking too much stuff, and still achieve good performance while validating application calls. Running integration tests with a real embedded web server are of course possible, too.

JetBrains Product

Ktor is an official JetBrains product and is primarily developed by the team at JetBrains, with contributions from the community.

Documentation

Please visit ktor.io for Quick Start and detailed explanations of features, usage and machinery.

  • Getting started with Gradle
  • Getting started with Maven
  • Getting started with IDEA

Reporting Issues / Support

Please use our issue tracker for filing feature requests and bugs. If you'd like to ask a question, we recommend StackOverflow where members of the team monitor frequently.

There is also community support on the Kotlin Slack Ktor channel

Reporting Security Vulnerabilities

If you find a security vulnerability in Ktor, we kindly request that you reach out to the JetBrains security team via our responsible disclosure process.

Inspirations

Kotlin web frameworks such as Wasabi and Kara, which are currently deprecated.

Contributing

Please see the contribution guide and the Code of conduct before contributing.

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