Kotlin: Die Geheimwaffe für plattformübergreifende Magie

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Kotlin nicht nur für Android ist?

\n\n

Wenn Sie immer noch denken, dass Kotlin nur ein "verbessertes Java" für Android ist, dann übersehen Sie das Wesentliche. In einer Welt, in der jeder einen Code schreiben und überall ausführen möchte, wird Kotlin Multiplatform (KMP) zu einem echten "Killer" von Frameworks wie Flutter und React Native. Aber im Gegensatz zu diesen zwingt Sie Kotlin nicht, auf native UI zu verzichten oder JavaScript zu lernen.

\n\n

Stellen Sie sich vor: Sie schreiben die Geschäftslogik, Netzwerkanfragen und die Datenbankarbeit einmal in Kotlin. Und dann verwenden Sie diesen Code auf Android, iOS, im Web und sogar auf dem Server (Ktor). Klingt nach Science-Fiction? Willkommen in der Realität der plattformübergreifenden Entwicklung mit Kotlin.

\n\n

In diesem Artikel erzählen wir nicht nur von der Theorie. Wir zeigen echte Codebeispiele, vergleichen KMP mit der Konkurrenz und geben Ihnen einen schrittweisen Plan, wie Sie noch heute beginnen können.

\n\n

Was ist Kotlin Multiplatform (KMP) und warum wird es benötigt?

\n\n

KMP ist kein Framework. Es ist eine in die Sprache Kotlin integrierte Compiler-Technologie. Sie ermöglicht es, gemeinsamen Code (common code) für verschiedene Plattformen zu kompilieren:

\n\n
    \n
  • Android — JVM-Bytecode (wie üblich).
  • \n
  • iOS — natives Binärformat (über LLVM).
  • \n
  • JavaScript/Web — JS-Code für den Browser.
  • \n
  • Native (Linux, Windows, macOS) — über Kotlin/Native.
  • \n
\n\n

Das Hauptmerkmal: Sie schreiben expect/actual — Sie deklarieren die erwartete API im gemeinsamen Code und implementieren sie für jede Plattform separat. Alles andere ist gemeinsam.

\n\n

Beispiel 1: Gemeinsames Modul für Netzwerkanfragen

\n\n

Schreiben wir einen einfachen HTTP-Client, der auf Android und iOS funktioniert. Dafür verwenden wir Ktor — einen in Kotlin geschriebenen Client.

\n\n

Schritt 1: Projektstruktur (Gradle)

\n\n

In der Datei build.gradle.kts Ihres gemeinsamen Moduls:

\n\n
plugins {\n    kotlin("multiplatform")\n    id("io.ktor.plugin") version "2.3.7"\n}\n\nkotlin {\n    androidTarget()\n    iosX64()\n    iosArm64()\n    iosSimulatorArm64()\n\n    sourceSets {\n        val commonMain by getting {\n            dependencies {\n                implementation("io.ktor:ktor-client-core:2.3.7")\n                implementation("io.ktor:ktor-client-content-negotiation:2.3.7")\n                implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")\n            }\n        }\n        val androidMain by getting {\n            dependencies {\n                implementation("io.ktor:ktor-client-android:2.3.7")\n            }\n        }\n        val iosMain by creating {\n            dependsOn(commonMain)\n            dependencies {\n                implementation("io.ktor:ktor-client-darwin:2.3.7")\n            }\n        }\n    }\n}
\n\n

Schritt 2: Gemeinsamer Code (commonMain)

\n\n

Erstellen wir eine data class und einen API-Client:

\n\n
// commonMain/kotlin/com/example/User.kt\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class User(\n    val id: Int,\n    val name: String,\n    val email: String\n)\n\n// commonMain/kotlin/com/example/ApiClient.kt\nimport io.ktor.client.*\nimport io.ktor.client.call.*\nimport io.ktor.client.plugins.contentnegotiation.*\nimport io.ktor.client.request.*\nimport io.ktor.serialization.kotlinx.json.*\n\nclass ApiClient {\n    private val client = HttpClient {\n        install(ContentNegotiation) {\n            json()\n        }\n    }\n\n    suspend fun fetchUser(id: Int): User {\n        return client.get("https://jsonplaceholder.typicode.com/users/$id").body()\n    }\n}
\n\n

Sehen Sie? Keine if-Abfragen, keine plattformspezifischen Prüfungen. Einfach reines Kotlin.

\n\n

Beispiel 2: Expect/Actual für die Arbeit mit SharedPreferences

\n\n

Angenommen, wir müssen einen Token speichern. Auf Android — SharedPreferences, auf iOS — UserDefaults. Wir zeigen die Magie von KMP:

\n\n

Gemeinsamer Code (commonMain):

\n\n
// commonMai                

Blogs

Buchempfehlungen