Ktor 1.0发布:JetBrains推出的Kotlin Web框架

news/2024/7/7 13:49:39

以下由Kotlin中文站翻译自JetBrains官方博客,本文由Kotlin中文站授权转载:

在我们开展Kotlin工作时,我们实现了很多特性,以便用于构建符合使用习惯且高效的API。我们始终期待着能有一个将这些特性发挥得淋漓尽致的Web框架。今天,我们终于可以说已构建了这样的框架!欢迎你,刚迈向成熟的Ktor1.0。

Ktor是一个使用Kotlin在互联系统中构建异步服务器与客户端的框架 。由Kotlin团队创建,因此它充分利用了语言特性,为开发人员提供了出色的开发体验和运行性能。

Ktor完全是由协程构建起来的,使得编写复杂的异步代码简单得像同步代码一样。协程的运行也非常高效。同时,Kotlin的特性允许我们提供领域专用语言 (DSL) – 一种简洁且开发人员易于使用的API,用于配置应用程序,这些代码就像魔法一样神奇。

当然,Ktor不是使用Kotlin构建服务端应用程序的唯一选择。我们希望能看到其他的框架,能如同Spring和Vert.x那样为Kotlin提供”一等公民”的支持,使用这些框架能确保您的投资及开发经验不会白费。与此同时,协程和DSL是Ktor独特的优势,相信这会是您新的后端项目或微服务的一个好选择。

Ktor已经部署在许多大规模运营项目的生产环境中。例如,HLTV.org每月有大约2亿次的浏览量,经过Ktor的总共有大约31亿次的浏览量。Ktor在最新的ThoughtWorks Technology Radar榜上有名。

详细内容

Ktor有两个重要组成部分,其一是运行在JVM上的HTTP服务器框架,另一个是多平台HTTP客户端。作为JetBrains的项目,Ktor自然会提供有用的工具,帮助您快速开始新的项目。

服务器

HTTP服务器部分基于经过验证的成熟技术构建,如Netty,Jetty和Java servlet。当使用像Netty或Jetty这样的轻量级引擎时,它会有超快的启动速度,并在秒级时间内准备好接受连接。它完全符合The Twelve-Factor规范,易于在容器中部署,并且可以轻松嵌入到桌面(甚至Android)应用程序中。您也可以在Tomcat等应用程序服务器中运行它。

Ktor提供了丰富且易于使用的可扩展机制,在此基础上实现了大多数内置功能。第三方功能与内置功能区别不大。开箱即用,Ktor包括这些基本功能:会话,身份验证,JSON序列化,流行模板引擎,Web套接字,metrics等等。它还支持高效的开发工作流程,具有快速启动,自动重新加载以及易于使用的单元编写和集成测试工具。

客户端

客户端也是异步的,基于与服务器相同的协程和IO原语构建。这使其非常适合于构建异步微服务架构,将所有后端功能连接到异步管道。

客户端采用多平台库开发,目前支持JVM,JS,Android和iOS。这使得可以以统一的方式检索移动设备和网页上的数据,且允许应用程序执行或构建复杂的匿名函数链来响应成功或失败。

工具

最后,这些工具可自由定制你所需要的功能,并使用Ktor获得完整工作的入门应用程序。这既适用于Web,也适用于IntelliJ IDEA的插件。

与其他Kotlin库一样,Ktor是免费的开源软件,在GitHub上开发,并在Apache 2协议下发布。

除此之外,网站还提供了快速入门指南,服务器和客户端的参考文档,以及大量示例项目。如果您更喜欢视频,Ryan Harter的KotlinConf 2018演讲将能很好地介绍如何在后端使用Ktor。


http://www.niftyadmin.cn/n/4073954.html

相关文章

常用Linq操作

常用&#xff1a;https://zhuanlan.zhihu.com/p/141469940 IEnumerable<int> s new List<int>() { 1,2,3,4,5,6,7,9};IEnumerable<int> res s.Where(t > t > 5);int count s.Count(t > t > 5);int sum s.Sum();IEnumerable<int> res1…

数据库中间件 MyCAT 源码分析:【单库单表】插入

2019独角兽企业重金招聘Python工程师标准>>> ???关注**微信公众号&#xff1a;【芋艿的后端小屋】**有福利&#xff1a; RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址您对于源码的疑问每条…

特性类基础

特性类 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEngine;[Demo(10,Name "小韩")] public class NewBehaviourScript : MonoBehaviour {// Start is called before the …

微博能否在中国流行?

上周四&#xff0c;流行歌王迈克尔杰克逊(Michale Jackson)在洛杉矶的家中突发心脏病&#xff0c;当他被救护车抬出家门时&#xff0c;有位路人用手机向Twitter发布一条消息&#xff1a;天哪&#xff0c;我在杰克逊家门口&#xff0c;有人被抬出去了&#xff0c;肯定是发生什么…

Swift开发教程--怎样自己定义TabBarItem的图片显示

在做项目的时候&#xff0c;假设使用系统的UITabBarController的时候&#xff0c;底部的tab自己定义图片显示是蓝色和灰色的。这不是我们所想要的效果。 假设想显示自己定义的按下和弹起的图片效果。这个时候就须要对TabBarItem进行改动。 下面就是详细的演示样例&#xff1a; …

Python实现下载文件的三种方法

下面来看看三种方法是如何来下载zip文件的&#xff1a;方法一&#xff1a; import urllib print "downloading with urllib" url http://www.jb51.net//test/demo.zip urllib.urlretrieve(url, "demo.zip") 方法二&#xff1a; import urllib2print "…

DoTween常用示例——2

public class DoTweenTest : MonoBehaviour {private Tween mTweener;void Start(){//SetLoops////路径&#xff1a;开始位置->目标位置->开始位置->目标位置 共3秒时间transform.DOMove(Vector3.one, 3).SetLoops(3, LoopType.Yoyo);//路径&#xff1a;走到vec.one*1…

能让小白领暴富的兼职

在国内&#xff0c;已有不少靠兼职成为百万富翁的例子&#xff0c;而靠兼职暴富也已经不是新鲜事&#xff0c;但对于朝九晚五困在办公室的小白领来说&#xff0c;一夜暴富成为百万富翁&#xff0c;似乎还只是一个梦想……这里&#xff0c;我们列出一些常见兼职的市场薪酬行情&a…