Kotlin Multiplatform in 2017: Shared Logic Across Tiers

Dmitry Jemerov explains the early expect/actual model, JavaScript integration and native plans.

DJDmitry Jemerov연사
채널
GOTO Conferences
게시일
2018년 2월 21일
영상
45:48
읽기
2분
원문
영어
YouTube에서 열기
스크롤하면 영상이 오른쪽 아래로 작아져 계속 재생됩니다. 자막은 읽기 언어를 따릅니다.
읽기 언어2개 언어로 읽을 수 있음
이 글은 아직 한국어 번역이 없어 영어 원문으로 표시합니다.
요약

30초 요약

In a 2017 GOTO talk, Dmitry Jemerov introduces experimental Kotlin multiplatform projects, common code and platform implementations. The tooling and native limitations described reflect that period.

  1. 1JavaScriptTyped external declarations connect Kotlin code to JavaScript APIs.
  2. 2Shared logicShare business logic while retaining platform-specific code.
  3. 3Expected and actualCommon declarations can be fulfilled by each target.
  4. 4Platform APIsThe mechanism can include constructors and top-level functions.
  5. 5Build artifactsThe talk’s Gradle setup reflects the 2017 toolchain.
  6. 6Demo and testsA demo renders shared data on server and browser and runs common tests.
  7. 7NativeNative support was still preliminary at the time.

핵심 정리

  1. Typed external declarations connect Kotlin code to JavaScript APIs.
  2. Share business logic while retaining platform-specific code.
  3. Common declarations can be fulfilled by each target.
  4. The mechanism can include constructors and top-level functions.
  5. The talk’s Gradle setup reflects the 2017 toolchain.
  6. A demo renders shared data on server and browser and runs common tests.
  7. Native support was still preliminary at the time.
전문

챕터별로 다듬은 전문 읽기

원본 자막만 보기
01

Kotlin and JavaScript

Language goals and browser interoperability.

In this GOTO Berlin 2017 talk, JetBrains engineer Dmitry Jemerov presents the then-experimental Kotlin 1.2 multiplatform approach. Tooling, platform support and APIs described in the talk are historical and may have changed.

Jemerov introduces Kotlin as a statically typed language designed to interoperate with existing ecosystems. He describes the JVM, JavaScript and native targets available or under development at the time.

For the browser, Kotlin source can compile to JavaScript and use external declarations for typed access to JavaScript libraries. He also demonstrates a dynamic type, which gives up compile-time checks for those accesses.

Jemerov describes React bindings and development tooling available at the time, including build integration, debugging and reloading. The exact setup is specific to the 2017 toolchain.

02

Multiplatform structure

Common code and platform implementations.

The central idea is to share platform-independent business logic while retaining platform-specific modules. He does not propose hiding every difference between platforms behind a single abstraction.

Common code declares expected functionality, and each target supplies an actual implementation. His example uses different date facilities on the JVM and in JavaScript.

The expect/actual mechanism can cover more than interface methods, including constructors and top-level functions. Jemerov explains how it can connect existing platform types to common declarations.

He walks through the Gradle configuration and common and platform-specific library artifacts used in the early implementation. These build details are not a current setup guide.

03

A shared-code demonstration

Rendering, serialization and tests.

In a demo, the server renders initial messages and the browser renders later messages using shared model, serialization and HTML-rendering code. He runs common tests against both JavaScript and JVM targets.

04

Native and questions

The early native toolchain and limitations.

Jemerov describes the early LLVM-based Kotlin/Native toolchain and iOS support, including access to platform libraries. He calls the memory-management design preliminary and emphasizes that the native integration was still evolving.

During questions, he says common tests can check that platform implementations satisfy shared expectations, while some behavior may intentionally differ by platform. He also describes interop limitations as they stood in 2017.

같은 채널의 다른 글

슬라이드 3장39:12EN
GOTO Conferences· 2026년 10월 28일Cate Huston: How Rigour Supports AI-Assisted Development VelocityCate Huston · TwillA two-person team’s experience with release gates, automated checks, prioritization and the cost of shipping faster.AI 엔지니어링 리더십Software engineeringAI agents
슬라이드 4장22:33EN
GOTO Conferences· 2026년 10월 26일William Schor: From Unit Tests to Synthetic Canaries at NetflixWilliam Schor · NetflixHow generated workloads and production-like infrastructure help test a distributed key-value service.Software engineering
슬라이드 5장34:11EN
GOTO Conferences· 2026년 10월 23일Anatoliy Bilenko and Alberto Carretero: Making Database Protocols Reliable with Formal Methods and AIAnatoliy Bilenko, Alberto Carretero · CanonicalCanonical’s database engineers connect executable specifications, model-based tests, failure exploration, and reconstructed execution histories—and explain why none of these techniques proves a real system correct on its own.개발 워크플로와 테스트Code review & verification관측 가능성과 안정성+2
28:15EN
GOTO Conferences· 2026년 10월 22일Steve Poole on Open-Source Security and AI’s Maintenance ChallengeOlimpiu Pop, Steve PooleWhy faster vulnerability discovery increases pressure on maintainers, dependency users and upgrade processes.Software engineeringAI security
슬라이드 5장46:36EN
GOTO Conferences· 2026년 10월 21일Don Syme: Building Agentic Automation Around Human CollaborationDon Syme · GitHubContinuous AI, repository workflows and the guardrails needed for unattended software maintenance.Agent orchestrationSoftware engineering코딩 에이전트
28:23EN
GOTO Conferences· 2026년 10월 19일Learning Ash: Declarative Elixir Apps, Testing and ExtensibilityChristian Alexander, Rebecca Le, Zach DanielRebecca Le and Zach Daniel explain how their book and the framework evolved together.Software engineering