Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

JetBrains hat Kotlin aus zwei Gründen entwickelt: Es gab keine Sprache, die alle Lücken in der Android-Entwicklung mit (veralteten) Java-Bibliotheken füllte, und eine neue Sprache würde es der Android-Entwicklung ermöglichen, Trends zu setzen, anstatt ihnen nur zu folgen.

Im Februar 2015 wurde Kotlin 1.0 offiziell angekündigt. Kotlin ist prägnant, sicher, pragmatisch und konzentriert sich auf die Interoperabilität mit Java-Code. Es kann überall dort eingesetzt werden, wo Java heute verwendet wird: für die serverseitige Entwicklung, Android-Apps, Desktop- oder portable Clients, die Programmierung von IoT-Geräten und vieles mehr. Kotlin wurde unter Android-Entwicklern schnell populär und Googles Entscheidung, Kotlin als offizielle Android-Entwicklungssprache einzuführen, führte zu einem rasanten Anstieg des Interesses an dieser Sprache. Laut der Android Developers Website verwenden derzeit mehr als 60 % der professionellen Android-Entwickler/innen Kotlin.

Die Lernkurve bei Android ist ziemlich steil: Zugegeben, es ist schwer zu lernen und noch schwerer zu meistern. Für viele Android-Entwicklerinnen und -Entwickler gehört es dazu, dass sie im Laufe der Zeit mit unbeabsichtigten Wechselwirkungen zwischen dem Android-Betriebssystem und der Anwendung konfrontiert werden. Dieses Buch will den Leserinnen und Lesern diese Art von Erfahrungen näher bringen, indem es sich mit solchen Problemen in Android befasst. Wir werden nicht nur über Kotlin und Java sprechen, sondern auch über die Gleichzeitigkeitsprobleme, die bei der Verwendung von Android auftreten, und wie Kotlin sie lösen kann.

Wir werden Kotlin manchmal mit Java vergleichen, wenn wir glauben, dass dies einen besseren Einblick ermöglicht (vor allem, weil die meisten Leser/innen einen Java-Hintergrund haben dürften). Anhand von Beispielen zeigen wir, wie man diese Kluft überbrücken kann und dass die Konzepte, die den meisten Kotlin-Operationen zugrunde liegen, dem Java-Äquivalent eher ähneln als nicht. Die Aufgaben sind nach Themen gegliedert, um Softwareentwicklern eine strukturierte Zerlegung dieser Masse an Informationen zu bieten, und sie zeigen, wie man eine Anwendung robust und wartbar macht.

Außerdem werden Benutzer, die mit Java vertraut sind - einschließlich Android-Entwickler - feststellen, dass ihre Lernkurve drastisch abflacht, wenn wir jede der gemeinsamen Aufgaben sowohl in Java als auch in Kotlin vorstellen. Wo es angebracht ist, werden wir die Unterschiede und die Fallstricke der einen oder der anderen Sprache besprechen, aber wir hoffen, mundgerechte und leicht verdauliche Beispiele für eine Aufgabe zu liefern, die "einfach funktioniert" und es dem Leser ermöglicht, das moderne Paradigma zu konsumieren und sich daran anzupassen sowie sich der Bedeutung des aktualisierten Codes sofort und instinktiv bewusst zu werden.

Obwohl Kotlin vollständig mit Java interoperabel ist, hat sich die Entwicklung anderer Java-Anwendungen (serverseitige Programmierung, Desktop-Clients, Middleware usw.) nicht in dem Maße durchgesetzt wie Android. Das liegt vor allem daran, dass der Betreiber von Android (Google) seine Nutzer/innen zum Umstieg "ermutigt". Die Nutzerinnen und Nutzer steigen regelmäßig auf Kotlin um, aber noch mehr greifen für geschäftskritische Aufgaben auf Java zurück. Wir hoffen, dass dieses Buch den Android-Entwicklern als Rettungsanker dient, damit sie sich sicher fühlen, wenn sie sich für die Vorteile und die Einfachheit von Kotlin entscheiden.

Wer sollte dieses Buch lesen?

Jeder der über sechs Millionen Android-Ingenieure. Wir glauben, dass praktisch jeder Android-Ingenieur von diesem Buch profitieren kann. Auch wenn nur ein kleiner Prozentsatz Kotlin fließend beherrscht, werden auch sie wahrscheinlich etwas aus den Informationen lernen, die wir präsentieren. Aber realistisch betrachtet zielen wir auf die große Mehrheit ab, die noch nicht auf Kotlin umgestiegen ist. Dieses Buch ist auch für diejenigen gedacht, die zwar schon einen Zeh in Kotlin getaucht haben, aber noch nicht so vertraut mit Kotlin sind, wie sie es vielleicht bei der Java-zentrierten Android-Entwicklung sind:

Szenario 1

Ein Leser beherrscht Java, hat von der neuen Sprache Kotlin gehört und möchte sie ausprobieren. Also liest er ein Online-Tutorial und fängt an, sie zu benutzen, und es funktioniert wunderbar. Bald merkt er, dass es sich nicht nur um eine neue Syntax handelt, sondern dass die Idiome nicht dieselben sind (z. B. funktionale Programmierung, Coroutines) und eine ganz neue Art der Entwicklung möglich ist. Aber es fehlt ihnen an Richtlinien, an Struktur. Für sie ist dieses Buch die perfekte Lösung.

Szenario 2

Ein Leser ist Teil eines kleinen Teams von Java-Entwicklern. Sie diskutieren darüber, ob sie Kotlin in ihr Projekt aufnehmen sollen. Auch wenn Kotlin angeblich zu 100 % mit Java kompatibel ist, argumentieren einige Kollegen, dass die Einführung einer weiteren Sprache das Projekt komplexer machen würde. Andere vermuten, dass es die Anzahl der Kollegen einschränken könnte, die an dem Projekt arbeiten können, weil sie zwei Sprachen beherrschen müssen. Der Leser kann dieses Buch nutzen, um seine Kollegen zu überzeugen, wenn er zeigen kann, dass die Vorteile die Kosten überwiegen.

Szenario 3

Ein erfahrener Android-Entwickler hat vielleicht schon mit Kotlin herumgespielt oder ein Feature in Kotlin geschrieben, greift aber immer noch auf seine Heimatbasis Java zurück, wenn er etwas zu erledigen hat. Das war das Szenario, in dem wir uns befanden, als wir merkten, dass das Buch, das wir jetzt vorstellen, unser Leben viel einfacher gemacht hätte. Das ist auch der Zustand, den wir am häufigsten um uns herum sehen - viele Android-Entwickler haben Kotlin berührt, und viele haben das Gefühl, dass sie genug verstehen, um es bei Bedarf zu schreiben, aber sie sind sich der Bedeutung von Datenklassen, unveränderlichen Eigenschaften und strukturierter Gleichzeitigkeit entweder nicht bewusst oder einfach nicht davon überzeugt. Wir glauben, dass dieses Buch Neugierige zu überzeugten Evangelisten machen wird.

Warum wir dieses Buch geschrieben haben

Es gibt viele Bücher, die zeigen, wie Android funktioniert, wie Kotlin funktioniert oder wie Gleichzeitigkeit funktioniert. Kotlin erfreut sich bei der Android-Entwicklung großer Beliebtheit, weil es einfach zu übernehmen ist und eine saubere Syntax hat, aber Kotlin bietet Android viel mehr als das: Es bietet neue Möglichkeiten, Gleichzeitigkeitsprobleme in Android zu lösen. Wir haben dieses Buch geschrieben, um eine einzigartige und spezifische Schnittmenge dieser Themen in großer Tiefe darzustellen. Sowohl Android als auch Kotlin verändern sich schnell, sowohl einzeln als auch zusammen. Der Versuch, mit all den Veränderungen Schritt zu halten, kann schwierig sein.

Wir sehen dieses Buch als einen wertvollen Checkpoint in der Geschichte: Es zeigt, wo Android herkommt, wo es jetzt steht und wie es sich mit Kotlin weiterentwickeln wird, wenn die Sprache reift.

Navigieren in diesem Buch

Manchmal fügen wir Codeschnipsel als Screenshots anstelle der normalen Atlas-Code-Formatierung ein. Das ist vor allem bei Koroutinen und Abläufen nützlich, da die Aufhängungspunkte klar erkennbar sind. Außerdem erhalten wir Typ-Hinweise von der IDE.

Kapitel 1, "Kotlin Grundlagen" und Kapitel 2, "Das Kotlin Collections Framework" behandeln die wichtigsten Neuerungen, die mit Android in Kotlin eingeführt wurden. Während die Informationen in diesen Kapiteln ausreichen, um ein gutes Grundwissen über Kotlin zu erlangen, werden in weiteren Kapiteln komplexere/fortgeschrittenere Funktionen behandelt. Benutzer, die mit Java oder ähnlichen syntaktischen Strukturen vertraut sind, werden die Übersetzung als überraschend natürlich empfinden.

Kapitel 3, "Android-Grundlagen" und Kapitel 4, "Gleichzeitigkeit in Android" vermitteln dir die Grundlagen des Android-Systems in Bezug auf Speicher und Threading. Wie in jedem anderen Betriebssystem ist Gleichzeitigkeit schwer zu erreichen.

Kapitel 5, "Thread Safety", bis Kapitel 11, "Performance Considerations withAndroid Profiling Tools", befassen sich mit häufigen Problemen im Zusammenhang mit Speicher und Threading und zeigen auf, wie sich das Android-Framework im Laufe der Zeit weiterentwickelt hat, um Entwicklern mehr Kontrolle darüber zu geben. Gleichzeitig zeigen diese Kapitel, wie die Erweiterungen und Sprachfunktionen von Kotlin Entwicklern helfen können, bessere Anwendungen schneller zu schreiben.

Kapitel 12, "Trimming Down Resource Consumption with Performance Optimizations" (Ressourcenverbrauch mit Leistungsoptimierungen reduzieren), erforscht die Verwendung von leistungsstarken Android-Entwickler-Tools, um die Leistung und speicherbezogene Analysen unter der Haube zu untersuchen - damit du Dinge sehen kannst, von denen du nie etwas wusstest. Dieses Buch bietet Ingenieuren professionell entwickelte und kuratierte Implementierungen der häufigsten Aufgaben, die bei der nativen Android-Entwicklung anfallen. Viele Aufgaben bestehen aus einem realen Problem, gefolgt von der entsprechenden Lösung in Java und Kotlin. Wenn weitere Erklärungen erforderlich sind, folgen die Lösungen einem schnellen Vergleichs- und Kontrastmodell, wobei der Schwerpunkt auf Kürze und natürlicher Sprache liegt.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/ProgrammingAndroidWithKotlin zum Download bereit .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eineGenehmigung erforderlich.

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Programming Android with Kotlin " von Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, G. Blake Meike, und Mike Dunn (O'Reilly). Copyright 2022 Pierre-Olivier Laurence, Amanda Hinchman-Dominguez, and O'Reilly Media, Inc. 978-1-492-06300-1."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/pak aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://youtube.com/oreillymedia

Danksagungen

Dieses Buch wurde dank unserer technischen Prüfer, Adnan Sozuan und Andrew Gibel, erheblich gestärkt und verbessert. Wir danken den Mitarbeitern von O'Reilly, die uns zusammengebracht und uns die nötige Unterstützung gegeben haben, um dieses Buch ins Leben zu rufen, insbesondere Jeff Bleiel und Zan McQuade.

Wir danken Roman Elizarov und Jake Wharton dafür, dass sie sich die Zeit genommen haben, mit uns über die Richtung der Entwicklung von Gleichzeitigkeit in Kotlin und Low-Level-Optik in Android zu sprechen.

Wir danken unseren Freunden, unserer Familie und unseren Kollegen für ihre Unterstützung. Wir danken der Kotlin-Community und den Menschen, die sich die Zeit genommen haben, frühe Entwürfe zu lesen und uns Feedback zu geben.

Und schließlich widmen wir dieses Buch Mike Dunn: Co-Autor, Kollege, Freund und Vater. Wir vermissen ihn sehr und hoffen, dass dieses Buch etwas ist, auf das er stolz gewesen wäre.

Get Android mit Kotlin programmieren now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.