转自:开源中国 www.oschina.net/translate/whats-new-in-kotlin-12 多平台项目 (实验性) 多平台项目是 Kotlin 1.2 中的一个新的实验性功能,允许你在...Kotlin – JVM, JavaScript 和(将来的)Native 上所支持的目标平台之间重用代码。...在多平台项目中,你有三种模块: 一个通用(common)的模块 —— 包含非特定于任何平台的代码,以及不附带依赖于平台的 API 实现的声明。...:运行 Kotlin 1.2.0 版本的 JVM 而且,现在允许在 lambda 中进行智能的强制转换,这些局部变量只在 lambda 之前被修改: 6 目标平台:运行 Kotlin 1.2.0 版本的...Items filled with 5: [5, 5, 5, 5, 5] 目标平台:运行 Kotlin 1.2.0 版本的 JVM kotlin-stdlib 中的数学运算 为满足用户长期以来的需求,Kotlin
多平台项目 (实验性) 多平台项目是 Kotlin 1.2 中的一个新的实验性功能,允许你在 Kotlin – JVM, JavaScript 和(将来的)Native 上所支持的目标平台之间重用代码。...在多平台项目中,你有三种模块: 一个通用(common)的模块 —— 包含非特定于任何平台的代码,以及不附带依赖于平台的 API 实现的声明。...在 JVM 平台中,代码如下所示: ? 详细信息请参考此文档,并按照步骤构建多平台项目。...6 目标平台:运行 Kotlin 1.2.0 版本的 JVM 支持 ::foo 作为 this::foo 的缩写 现在可以使用 ::foo 替代 this::foo,写入一个绑定的可调用的引用,而不用明确的接收器...弃用:枚举项中的嵌套类型 在枚举项中,由于初始化逻辑中的问题,定义一个不是内部类的嵌套类型的功能已经被弃用。在 Kotlin 1.2 中这将会引起警告,并将在 Kotlin 1.3 中报错。
基于Kotlin/Native的一款游戏源码:https://github.com/jetbrains/kotlinconf-spinner --------- 二、开发多平台项目 Kotlin 多平台项目允许你将相同的代码编译到多个目标平台...目前支持的目标平台为 JVM 与 JS,即将增加 Native。 目前还是1.2新版本的一个实验性功能。...[40.png] 多平台项目由三种类型的模块组成: ● 公共模块 公用模块只包含与平台无关的Kotlin代码以及Kotlin公共标准库代码。同时还包含不含实现的平台接口声明。...● 平台模块 平台模块可以依赖在指定平台上可用的任何模块与库 (包括对于 Kotlin/JVM 平台的 Java 库与 Kotlin/JS 平台的 JS 库)。...如果之后Kotlin在多平台等实验室特性上有所突破的话,绝对会吸引更多的开发者。
无论您是针对单一平台还是在多平台项目中工作,在任何 Gradle Kotlin 项目中,都不再需要声明与 stdlib 的依赖关系。从 Kotlin 1.4.0 开始,此依赖关系默认添加。...Kotlin Multiplatform 让 Kotlin 成为出色的多平台解决方案是我们的首要任务之一。...您可以使用在多个原生目标之间共享的通用代码中与平台相关的库。 您可以在共享源集中仅指定一次依赖项,而不是在共享和平台专用源集中同一库的不同变体上指定依赖项。...我们继续开发 Kotlin 库格式 Klib,这种格式在后台用于共享多平台库。...Web 目标仍然是 Kotlin 的一项重要战略投资。
Web 应用程序的 Kotlin for JavaScript(Kotlin/JS)以及用于 Java 平台的 Kotlin for JVM(Kotlin/JVM)。...Kotlin 1.5.0 还提供了对 JVM 记录的支持,以确保作为不可变数据的透明载体的记录类 与 Java 特性的互操作性。...Kotlin/Native 获得了对 linuxX64 和 iosArm64 目标的调试模式下的编译器缓存的支持。它还停用了内置的内存泄漏检查器,以避免可能导致应用程序崩溃的问题。...免费在线课程,而且开源了 gRPC-Kotlin/JVM,开发者可以在 Kotlin 项目中更方便地使用 gRPC,以更简单的方式构建可靠的网络连接服务。...gRPC-Kotlin/JVM 构建在 gRPC 的 Java API 之上,提供了对 Kotlin 友好的 gRPC 类,支持 Kotlin 协程。
他们的成就主要都是在UI上跨平台,当然Flutter虽然可以处理一些公共的业务逻辑,但目前在业务较重的情况下仍然需要各自处理。 ...上面官方的描述说了这么多,简单的来说就是KMM注重业务逻辑跨平台,和Flutter、Compose完全相反。即使如此,在这个都想着跨别人的年代,KMM也称自己并没有说过不会做UI的跨平台......源集是一个 Gradle 概念,用于逻辑上组合在一起的多个文件,其中每个组都有自己的依赖项。 在 Kotlin Multiplatform 中,共享模块中的不同源集可以针对不同的平台。 ...支持多个目标的多平台库,可以在公共源集 commonMain 中使用。例如 Koin、Apollo 和 Okio。 android和iOSMain, 这些是来自相关生态系统的常规库。...可以使用 CocoaPods 或其他依赖项管理器的原生 iOS 项目和使用 Gradle 的 Android 项目中使用。
Kotlin 依据其运行的平台不同拥有不同的名字,例如编译为 class 字节码运行于 JVM 及 Android 平台的称为 Kotlin/JVM,编译为原生二进制码无虚拟机环境直接运行于操作系统上的则称为...而这两者是目前为数不多可用的 Kotlin 多平台库。...> 类型,但由于在 Kotlin 工程中 Kotlin 类都不是 NSObject类的子类,这个操作无法完成。...从 1.4.x 版本开始 JetBrains 将 Kotlin 迭代的重点放在了多平台领域。...Ktor 与 kotlinx 库等官方库是目前 Kotlin 跨平台的中坚力量,Ktor 目前可以在多平台环境提供稳定的 HTTP 请求、数据序列化/反序列化功能,是相当强大的 Kotlin 多平台网络库
主要有两个: @kotlin.jvm.JvmName(val name: String): 这个注解可以用来修饰文件和函数,用来指定目标元素编译后的名称。...因此 Kotlin 的 import 语句除了可以导入类和接口外,还可以导入包级函数和包级属性。...); System.out.println(a); 需要注意,Kotlin 没有 Java 中的 import static 用法,如果需要导入一个 Java 类的静态方法,可以用 import Java...类.静态方法 的形式;如果导入一个 Kotlin 类在伴生对象里定义的静态方法,可以用 import Kotlin 类.Companion.静态方法 的形式: // Test.kt package test...、kotlin.sequences.、kotlin.text. JVM 平台: java.lang.、kotlin.jvm. JavaScript 平台: kotlin.js.*
这是kotlin官网首页重点强调的: 100% interoperable with Java™ 这意味着什么呢?或者换个问法:我什么时候可以开始在我的项目中引入kotlin呢?...把 JVM 作为目标平台意味着大量的性能优化工作可以「外包」给 JVM 来做,大大缩减了 Guest 语言的开发预算。...它同样提供了纯粹的面向对象的实现,闭包等等,而且JRuby跟Ruby自身相比多了很多基于Java类库 可以调用,虽然Ruby也有很多类库,但是在数量以及广泛性上是无法跟Java标准类库相比的。...虽然Clojure也能被直接编译成Java字节码,但是无法使用动态语言特性以及直 接调用Java类库。与其他的JVM脚本语言不一样,Clojure并不算是面向对象的。...Fantom Fantom能够在运行时为JVM以及.NET或者JavaScript平台生成字节码,Fantom是与Groovy以及JRuby差不多的一样面向对 象的编程语言,但是悲剧的是Fantom无法使用
整理 | 褚杏娟、核子可乐 近日,JetBrains 发布了 Kotlin 1.8.20 beta 版本,其中包括一项名为“Kotlin/Wasm”的实验性功能,明确将 WebAssembly 设为编译目标...作为一种 JVM 语言,Kotlin 具备垃圾收集机制,但此前 Wasm 一直无法原生支持垃圾收集,这就要求各垃圾收集语言自行提供解决方案。...而 Kotlin 社区也紧跟着这样的趋势发展,出现了愈来愈多的库、框架来支持多平台,如 Arrow、Okio、Apollo 等在新版本中都支持了多平台开发。...如果 Compose for Web(Android 上使用的多平台版 Jetpack Compose)能够用 Kotlin/Wasm 代替 Kotlin/JS 来完美执行基于 Canvas 的像素渲染...有趣的是,只需要提供 WASI 平台中的特定部分,就能使用 Kotlin 的多平台库(例如 kotlinx-datetime 或 Okio)。
Kotlin 的背景 Kotlin 是一门基于 JVM 且与 JAVA 可 100% 互通的编程语言,用 JetBrains 的话来说 Kotlin 是更『现代化、更强大』的编程语言。...JetBrains 对 Kotlin 的愿景是:用同一种语言,桥接多平台的不同应用的端对端开发。包括全栈 Web 应用、Android 和 iOS 客户端、嵌入式/物联网等等。...AS 会添加 Kotlin 依赖,然后把 Java 代码转成同等功能的 Kotlin 代码。 Kotlin 易于上手,可以逐步引入到现有项目中。...还是 JavaScript 目标平台,都可用 Kotlin 写代码然后部署到你想要的地方 import kotlin.browser.window fun onLoad() { window.document.body...---- Koltin 的前景 目前移动端依然把持流量入口,热度不减,市场依旧很大,Kotlin 也已成为 Google 新儿子,是 Android 官方支持的首选开发语言,BAT 等国内外一线互联网公司都已在线上项目中积极使用
Kotlin 是由 JetBrains 开发的一种 JVM(Java 虚拟机)语言,并被谷歌(Google)用作 Android 开发的首选语言。...既然 Java 已经是为跨平台代码而设计的了,那么 Kotlin Multiplatform 又增加了什么呢?答案是 Kotlin 不仅仅是一种 JVM 语言。...它解决了代码共享的两个常见问题,即对于所有目标平台的一个子集,仅需部分共享某些代码的需求,以及需要访问特定于平台的 API。...2022 年的一项调查显示,Kotlin Multiplatform 应用程序的代码共享率高达 63% Kotlin Multiplatform 适用于非 GUI 代码,但有一个相关项目 Compose...去年,谷歌通过 引入 其他一些 Jetpack 库的“实验预览”,表达了对 Kotlin Multiplatform 的一些支持,这些库不是用于生产的,而是用于“在针对 Android 和 iOS 应用程序的多平台项目中使用这些
可调用的引用的智能转换 在 Kotlin 1.3 中,您无法访问智能转换类型的成员引用。...现在,它仅包含可以在所有三个目标平台(JVM、JS、Native)上使用的成员,这样您就可以确保同一代码可以用于任何一个平台。 use() 和时间测量函数的新协定 我们将在标准库中扩大协定的使用。...Kotlin/JVM 从 1.3.70 版起,Kotlin 可以在 JVM 字节码(目标版本 1.8+)中生成类型注解,以便它们在运行时可用。...会在 build/libs 文件夹中生成一个 klib 文件,此文件可以在其他 Kotlin/JS 项目中使用,或在同一项目中用作依赖项。...这有助于确保仍在使用默认后端的用户不会受影响——假定他们已经将项目升级到 1.4-M1。 请注意,如果依赖项和您的项目使用 both 模式构建,仍然存在会导致 IDE 无法正常解析库引用的问题。
Duolingo、 Zomato; 多平台移动端:VMware、 PlanGrid 和 CashApp、Mirego Trikot; Web:JetBrains Space、 Karhoo、 MIPT...新的编译器 新编译器实现的目标是变得更快速、统一 Kotlin 支持的所有平台,并提供用于编译器扩展的 API。...目前有三个后端:Kotlin / JVM,Kotlin / JS 和 Kotlin / Native。前两个以往是独立编写的,没有代码共享。...在 JVM 生态不断发展繁荣的过程中,也诞生了Scala、Groovy、Clojure 等兄弟语言。 Kotlin 也正是 JVM 家族中的优秀一员。...Kotlin 除了简洁强大的语法特性外,还有实用性非常强的API以及围绕它构建的生态系统。例如:集合类 API、IO 扩展类、反射API 等。
这种情况下,可以使用 Kotlin 特别针对这个问题提供的特性: Typealias (本文下称 "类型别名")。类型别名可以使您在不增加新类型的情况下,为现有类或函数类型提供替代名称。...由于类型别名需要在类的外部声明,所以使用时您需要考虑约束它们的可见性。...在多平台工程中使用类型别名 在使用 Kotlin 开发多平台工程时,您可以在公共代码 (common code) 中写一个接口,并在相应的平台代码中实现这个接口。...在公共代码中声明的接口为预期声明,使用 expect 关键字;在相应的平台代码中的扩展为实际声明,使用 actual 关键字。...如果平台代码中已经实现了公共代码中的某个接口,并且所有期望方法的签名一致时,您可以使用类型别名将实际声明的类型名称映射到期望类型上: expect annotation class Test actual
,此外,Kotlin 的跨平台功能将为 Android 和 iOS 应用程序等组件之间共享业务逻辑,服务器也可以与 Web 和移动客户端共享逻辑,而且多平台库让日常的开发变得便捷。...Kotlin 的生态现状 今年以来,Kotlin 的使用率有了很大的增长,自今年 1 月份以来,约有 150 万开发者使用了 Kolin 编程,是去年同期的两倍,来自 Stack Overflow 的一项问卷调查显示...的目标,但达成这个目标的前提是,得先在多平台间实现代码共享,通过支持 JVM、Android、JavaScript 和 Native,Kotlin 现在已经可以处理现代应用程序的任何组件。...虽然 Kotlin 的多平台功能仍处于试验阶段,但 1.3 版本算是向前迈出了一大步。 Kotlin 1.3 还附带了一组多平台库,涵盖了 HTTP、序列化和协同管理等日常任务。...编写多平台代码最简单的方法是依赖这些库,你还可以创建自己的多平台库,将特定平台的依赖项包装到通用 API 中。
使用Kotlin进行Android或者Java服务端开发,可以导入任意的Java库。...跨平台开发 多平台支持 Kotlin的不仅仅用于Java,还可以使用它进行web js和iOS开发,所以市面上之前说Kotlin是一款基于JVM的语言是不准确的。...Kotlin Native Kotlin Native是一种将Kotlin源码编译成不需要任何VM支持的目标平台二进制数据的技术,编译后的二进制数据可以直接运行在目标平台上,它主要包含一个基于LLVM的后端编译器的和一个...设计Kotlin Native的目的是为了支持在非JVM环境下进行编程,如在嵌入式平台和iOS环境下,如此一来,Kotlin就可以运行在非JVM平台环境下。...多平台支持 2.3.2 多平台环境搭建 2.3.3 特定平台申明 2.3.4 标准库支持 2.3.5 JVM特性 2.3.6 JavaScript特性支持 2.4小结 第3章 Kotlin快速入门 3.1
但是对于具体的小部件集合与排列方式,Web 版与桌面版之间确实无法互通。” 说到这里,为什么要把 Compose for Android 扩展到多种其他平台之上?...“Compose 的目标受众主要分为三类。...;第三则是那些不太熟悉 Kotlin 或者 Compose,但又希望开发出精美 UI 的用户,我们希望能为他们提供实现目标的工具。”...我们的目标是为原有框架选项满足不了的用户提供新的解决方案。” 写在最后 那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架?...不过,根据 StackOverflow 的最新调查,Flutter 使用的语言为 Dart;尽管 Dart 语言的人气正在增长(正是受到 Flutter 的推动),但仍然无法与 Kotlin 相提并论。
Kotlin 在 1.8.0 版本开始支持 watchosDeviceArm64 新目标平台,对应于全新的 64 位 Apple Watch 设备。...首先,SQLite 在不同的 Native 平台上都提供相同的 C API,所以我们绝大部分代码是平台(这里特指 Kotlin/Native 的诸多目标平台)无关的。...但由于 Compose Multiplatform 最初支持的平台便是 Android 与 JVM,因此吸引了大量 Kotlin Multiplatform 开发者将自己的多平台应用的支持范围扩展到 JVM...在重写了 native 平台的 driver 和支持了 JVM 平台后,SQLlin 的架构图如下所示: 目前 SQLlin 支持的完整目标平台列表如下: Multiplatform Common Android...目标平台。
领取专属 10元无门槛券
手把手带您无忧上云