2017 年的 Kotlin 多平台:跨层共享逻辑

原标题Kotlin Multiplatform in 2017: Shared Logic Across Tiers

Dmitry Jemerov 介绍早期 expect/actual 模型、JavaScript 集成与原生计划。

DJDmitry Jemerov讲者
频道
GOTO Conferences
发布
2018年2月21日
视频
45:48
阅读
3 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

在 2017 年的 GOTO 演讲中,Dmitry Jemerov 介绍实验性的 Kotlin 多平台项目、公共代码与平台实现。演讲中的工具和原生限制反映当时情况。

  1. 1JavaScript带类型的外部声明将 Kotlin 代码与 JavaScript API 连接。
  2. 2共享逻辑共享业务逻辑,同时保留平台专用代码。
  3. 3预期与实际实现每个目标平台可以实现公共声明。
  4. 4平台 API这一机制可以涵盖构造函数和顶层函数。
  5. 5构建产物演讲中的 Gradle 设置反映 2017 年的工具链。
  6. 6演示与测试演示在服务器和浏览器渲染共享数据,并运行公共测试。
  7. 7原生平台原生平台支持在当时仍处于初步阶段。

要点建议

  1. 带类型的外部声明将 Kotlin 代码与 JavaScript API 连接。
  2. 共享业务逻辑,同时保留平台专用代码。
  3. 每个目标平台可以实现公共声明。
  4. 这一机制可以涵盖构造函数和顶层函数。
  5. 演讲中的 Gradle 设置反映 2017 年的工具链。
  6. 演示在服务器和浏览器渲染共享数据,并运行公共测试。
  7. 原生平台支持在当时仍处于初步阶段。
全文

按章节阅读整理后的全文

只看原始文稿
01

Kotlin 与 JavaScript

语言目标和浏览器互操作。

在这场 GOTO Berlin 2017 演讲中,JetBrains 工程师 Dmitry Jemerov 介绍当时仍处于实验阶段的 Kotlin 1.2 多平台方案。演讲中的工具、平台支持和 API 是历史信息,可能已经改变。

Jemerov 将 Kotlin 介绍为一种静态类型语言,旨在与现有生态系统互操作。他介绍了当时已有或正在开发的 JVM、JavaScript 和原生目标。

在浏览器端,Kotlin 源码可以编译为 JavaScript,并通过外部声明以带类型的方式访问 JavaScript 库。他还演示了 dynamic 类型;使用它访问属性时会放弃编译期检查。

Jemerov 介绍了当时可用的 React 绑定和开发工具,包括构建集成、调试和重新加载。具体设置针对的是 2017 年的工具链。

02

多平台结构

公共代码与平台实现。

核心思想是共享与平台无关的业务逻辑,同时保留平台专用模块。他并不主张用单一抽象隐藏平台之间的所有差异。

公共代码声明预期功能,每个目标平台提供实际实现。他用 JVM 和 JavaScript 中不同的日期设施举例。

expect/actual 机制可以涵盖接口方法之外的内容,包括构造函数和顶层函数。Jemerov 解释它如何把现有平台类型连接到公共声明。

他讲解早期实现中使用的 Gradle 配置,以及公共库和平台专用库产物。这些构建细节不是当前的安装指南。

03

共享代码演示

渲染、序列化与测试。

在演示中,服务器先渲染初始消息,浏览器再渲染后续消息,双方共享模型、序列化和 HTML 渲染代码。他还在 JavaScript 和 JVM 目标上运行公共测试。

04

原生平台与问答

早期原生工具链及其局限。

Jemerov 介绍早期基于 LLVM 的 Kotlin/Native 工具链和 iOS 支持,包括访问平台库。他称内存管理设计仍是初步方案,并强调原生集成仍在演进。

在问答中,他说公共测试可以检查平台实现是否满足共同预期,而某些行为也可能有意因平台而异。他还介绍了 2017 年时的互操作限制。

同频道的其他文章

3 张幻灯片39:12EN → 简体中文
GOTO Conferences· 2026年10月28日Cate Huston:严谨如何支撑 AI 辅助开发的交付速度Cate Huston · Twill两人团队分享发布关口、自动检查、优先级和加快交付的成本。AI 工程管理Software engineeringAI agents
4 张幻灯片22:33EN → 简体中文
GOTO Conferences· 2026年10月26日William Schor:Netflix 如何从单元测试走向合成金丝雀William Schor · Netflix用生成的工作负载和接近生产的基础设施,测试分布式键值服务。Software engineering
5 张幻灯片34:11EN → 简体中文
GOTO Conferences· 2026年10月23日Anatoliy Bilenko 和 Alberto Carretero:用形式化方法和 AI 让数据库协议可靠Anatoliy Bilenko, Alberto Carretero · CanonicalCanonical 的数据库工程师把可执行规格、基于模型的测试、故障探索和重建的执行历史串起来,并说明为什么这些方法单独用,都无法证明真实系统正确。开发流程与测试Code review & verification可观测性与可靠性+2
28:15EN → 简体中文
GOTO Conferences· 2026年10月22日Steve Poole:开源安全与 AI 带来的维护挑战Olimpiu Pop, Steve Poole为什么漏洞发现加速会给维护者、依赖使用者和升级流程增加压力。Software engineeringAI security
5 张幻灯片46:36EN → 简体中文
GOTO Conferences· 2026年10月21日Don Syme:围绕人类协作构建 Agent 自动化Don Syme · GitHubContinuous AI、仓库工作流,以及无人值守软件维护所需的防护措施。Agent orchestrationSoftware engineering编程智能体
28:23EN → 简体中文
GOTO Conferences· 2026年10月19日学习 Ash:声明式 Elixir 应用、测试与可扩展性Christian Alexander, Rebecca Le, Zach DanielRebecca Le 和 Zach Daniel 解释他们的书与框架如何共同演进。Software engineering