Kotlin Multiplatform in 2017: Shared Logic Across Tiers

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

DJDmitry JemerovIntervenant
Chaîne
GOTO Conferences
Publié
21 févr. 2018
Vidéo
45:48
Lecture
2 min
Original
anglais
Ouvrir sur YouTube
En faisant défiler, la vidéo se réduit en bas à droite et continue. Les sous-titres suivent votre langue de lecture.
Langue de lectureDisponible en 2 langues
Cet article n’est pas encore disponible en français ; il s’affiche dans l’original en anglais.
RÉSUMÉ

En 30 secondes

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.

À retenir

  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.
TEXTE INTÉGRAL

Lire le texte remanié, chapitre par chapitre

Transcription seule
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.

Sur la même chaîne

3 diapositives39:12EN
GOTO Conferences· 28 oct. 2026Cate 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.Leadership en ingénierie IASoftware engineeringAI agents
4 diapositives22:33EN
GOTO Conferences· 26 oct. 2026William 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 diapositives34:11EN
GOTO Conferences· 23 oct. 2026Anatoliy 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.Workflows de développement et testsCode review & verificationObservabilité et fiabilité+2
28:15EN
GOTO Conferences· 22 oct. 2026Steve 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 diapositives46:36EN
GOTO Conferences· 21 oct. 2026Don Syme: Building Agentic Automation Around Human CollaborationDon Syme · GitHubContinuous AI, repository workflows and the guardrails needed for unattended software maintenance.Agent orchestrationSoftware engineeringAgents de code
28:23EN
GOTO Conferences· 19 oct. 2026Learning 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