30 秒看懂
在 2017 年的 GOTO 演讲中,Dmitry Jemerov 介绍实验性的 Kotlin 多平台项目、公共代码与平台实现。演讲中的工具和原生限制反映当时情况。
- 1JavaScript带类型的外部声明将 Kotlin 代码与 JavaScript API 连接。
- 2共享逻辑共享业务逻辑,同时保留平台专用代码。
- 3预期与实际实现每个目标平台可以实现公共声明。
- 4平台 API这一机制可以涵盖构造函数和顶层函数。
- 5构建产物演讲中的 Gradle 设置反映 2017 年的工具链。
- 6演示与测试演示在服务器和浏览器渲染共享数据,并运行公共测试。
- 7原生平台原生平台支持在当时仍处于初步阶段。
要点建议
- 带类型的外部声明将 Kotlin 代码与 JavaScript API 连接。
- 共享业务逻辑,同时保留平台专用代码。
- 每个目标平台可以实现公共声明。
- 这一机制可以涵盖构造函数和顶层函数。
- 演讲中的 Gradle 设置反映 2017 年的工具链。
- 演示在服务器和浏览器渲染共享数据,并运行公共测试。
- 原生平台支持在当时仍处于初步阶段。
按章节阅读整理后的全文
Kotlin 与 JavaScript
语言目标和浏览器互操作。
在这场 GOTO Berlin 2017 演讲中,JetBrains 工程师 Dmitry Jemerov 介绍当时仍处于实验阶段的 Kotlin 1.2 多平台方案。演讲中的工具、平台支持和 API 是历史信息,可能已经改变。
Jemerov 将 Kotlin 介绍为一种静态类型语言,旨在与现有生态系统互操作。他介绍了当时已有或正在开发的 JVM、JavaScript 和原生目标。
在浏览器端,Kotlin 源码可以编译为 JavaScript,并通过外部声明以带类型的方式访问 JavaScript 库。他还演示了 dynamic 类型;使用它访问属性时会放弃编译期检查。
Jemerov 介绍了当时可用的 React 绑定和开发工具,包括构建集成、调试和重新加载。具体设置针对的是 2017 年的工具链。
多平台结构
公共代码与平台实现。
核心思想是共享与平台无关的业务逻辑,同时保留平台专用模块。他并不主张用单一抽象隐藏平台之间的所有差异。
公共代码声明预期功能,每个目标平台提供实际实现。他用 JVM 和 JavaScript 中不同的日期设施举例。
expect/actual 机制可以涵盖接口方法之外的内容,包括构造函数和顶层函数。Jemerov 解释它如何把现有平台类型连接到公共声明。
他讲解早期实现中使用的 Gradle 配置,以及公共库和平台专用库产物。这些构建细节不是当前的安装指南。
共享代码演示
渲染、序列化与测试。
在演示中,服务器先渲染初始消息,浏览器再渲染后续消息,双方共享模型、序列化和 HTML 渲染代码。他还在 JavaScript 和 JVM 目标上运行公共测试。
原生平台与问答
早期原生工具链及其局限。
Jemerov 介绍早期基于 LLVM 的 Kotlin/Native 工具链和 iOS 支持,包括访问平台库。他称内存管理设计仍是初步方案,并强调原生集成仍在演进。
在问答中,他说公共测试可以检查平台实现是否满足共同预期,而某些行为也可能有意因平台而异。他还介绍了 2017 年时的互操作限制。
同频道的其他文章
39:12EN → 简体中文
22:33EN → 简体中文
34:11EN → 简体中文
28:15EN → 简体中文
46:36EN → 简体中文
28:23EN → 简体中文