www.wikidata.de-de.nina.az
Kotlin ist eine plattformubergreifende statisch typisierte Programmiersprache die in Bytecode fur die Java Virtual Machine JVM ubersetzt wird aber auch in JavaScript Quellcode oder mittels LLVM in Maschinencode umgewandelt werden kann Kotlin lasst sich ausserdem zur Entwicklung von Android und iOS Apps verwenden 4 Google unterstutzt seit 2017 offiziell die Entwicklung von Android Apps in Kotlin und diese ist seit Mai 2019 die dafur bevorzugte Sprache 5 6 KotlinLogoBasisdatenParadigmen objektorientierte Programmierung funktionale Programmierung imperative Programmierung strukturierte Programmierung deklarative Programmierung generische Programmierung Reflexion nebenlaufige ProgrammierungErscheinungsjahr 2011 erste Erscheinung 2016 stabil Designer JetBrainsEntwickler JetBrains und Open Source EntwicklerAktuelle Version 1 9 10 1 23 August 2023 Typisierung Statische Typisierung Typinferenz starke TypisierungBeeinflusst von Java Scala C Groovy 2 Gosu JavaScriptBetriebssystem Java Virtual Machine Dalvik Virtual Machine JavaScript iOS Watch OS tvOS macOS Linux Microsoft Windows WebAssemblyLizenz Apache 2 3 kotlinlang org Inhaltsverzeichnis 1 Entwicklung 2 Tools 3 Syntax 3 1 Hallo Welt 3 2 Funktionen 3 3 Kontrollstrukturen 3 3 1 If Anweisung 3 3 2 When Anweisung 3 3 3 Repeat Anweisung 3 3 4 For Schleife 3 4 Higher Order Functions 3 5 Null Safety 4 Versionen 5 Rezeption 6 Literatur 7 Weblinks 8 EinzelnachweiseEntwicklung BearbeitenHauptsachlich wurde die Sprache von den damals in Sankt Petersburg ansassigen JetBrains Programmierern entwickelt 7 8 Daher stammt auch der Name Kotlin ist eine Insel vor St Petersburg 9 Nach einem Jahr Entwicklung stellte JetBrains im Juli 2011 das Projekt Kotlin der Offentlichkeit als neue Sprache fur die JVM vor 10 11 Im Februar 2012 veroffentlichte JetBrains den Quellcode unter einer Apache 2 Lizenz 12 Am 15 Februar 2016 wurde die Version 1 0 von Kotlin veroffentlicht 13 Diese Version wird als erster offizieller Stable Release betrachtet Der leitende Entwickler Dmitry Jemerow erklarte dass die meisten Sprachen nicht die Merkmale zeigten nach denen sie gesucht hatten mit Ausnahme von Scala Diese jedoch habe einen langsamen Compiler 11 Daher war eines der erklarten Ziele fur Kotlin die hohe Kompiliergeschwindigkeit wie man sie von Java her kenne Tools BearbeitenAuch die von JetBrains entwickelte IDE IntelliJ IDEA unterstutzt seit der Version 15 Kotlin nativ via eines Plug ins 14 15 Fur Eclipse und Visual Studio Code stehen ebenfalls Plugins zur Verfugung 16 17 18 Es existieren zudem Plugins fur Apache Maven und Gradle und ein Task fur Apache Ant 19 Die offizielle Android Entwicklungsumgebung Android Studio unterstutzt von Version 3 0 an Kotlin als native Sprache zum Entwickeln von Android Apps 20 Im Java Umfeld gibt es zahlreiche Frameworks und Bibliotheken die bei der Test Erstellung helfen Da Kotlin vollstandig interoperabel mit Java ist konnen alle diese Tools ohne Weiteres fur Tests von Kotlin Code verwendet werden 21 Syntax BearbeitenDie Sprache ist syntaktisch nicht zu Java kompatibel aber so gestaltet dass sie mit Java Code interoperieren kann Ausserdem nutzt sie bestehenden Code der Java Class Library JCL z B das Java Collections Framework JCF Anders als in Java wird bei Kotlin der Datentyp einer Variable bei ihrer Deklaration nicht vor dem Variablennamen sondern danach abgetrennt durch einen Doppelpunkt notiert Allerdings unterstutzt Kotlin auch Typinferenz sodass der Typ oft auch weggelassen werden kann wenn er aus dem Zusammenhang klar ist Als Anweisungsende genugt der Zeilenumbruch ein Semikolon ist hierbei nur notwendig wenn eine Zeile aus mehreren Anweisungen besteht 22 Zusatzlich zu Klassen und Methoden in Kotlin member functions aus der objektorientierten Programmierung unterstutzt Kotlin prozedurale Programmierung unter Verwendung von Funktionen sowie bestimmte Aspekte der funktionalen Programmierung 23 Als Einstiegspunkt dient wie bei C u a eine Main Funktion Hallo Welt Bearbeiten Ein Programm das die Zeichenkette Hallo Welt ausgibt fun main Einsprungpunkt Main Funktion println Hallo Welt Gib den String Hallo Welt aus Funktionen Bearbeiten Definition einer Funktion funktionsBeispiel fun funktionsBeispiel Funktion mit zwei Argumenten und einem Ruckgabewert fun add x Int y Int Int return x y Besteht eine Funktion aus nur einem Ausdruck durfen die geschweiften Klammern der Ruckgabetyp und das return weggelassen werden fun add2 x Int y Int x y Einsprungpunkt Main Funktion fun main args Array lt String gt Definition einer verschachtelten Funktion die nur in main aufgerufen werden kann fun test println Hello World Aufrufen der Funktion test Kontrollstrukturen Bearbeiten Kotlin unterstutzt die gangigen Kontrollstrukturen If Anweisung Bearbeiten Weist der schreibgeschutzten lokalen Variable x die Tastatureingabe standard input stream als Integer Wert zu val x readLine toInt if else Anweisung die pruft ob der Integer Wert grosser kleiner oder gleich null ist Mit Ausgabe von Text auf der Konsole if x gt 0 print positiv else if x lt 0 print negativ else print null Int Eingabe 10 gt String Ausgabe positiv When Anweisung Bearbeiten Die when Anweisung dient dem Pattern Matching Nicht spezifizierte Falle konnen mit else abgefangen werden vergleichbar mit default bei switch case Anweisungen in Java Weist der schreibgeschutzten lokalen Variable x die Tastatureingabe standard input stream als Integer Wert zu val x readLine toInt when x 1 gt print x 1 2 gt print x 2 3 4 gt print x 3 oder x 4 in 5 7 gt print x zwischen 5 und 7 else gt print x ist kleiner als 1 oder grosser als 7 Repeat Anweisung Bearbeiten Wiederholt die Funktionsanweisung 2x repeat 2 println Hello Wiki Hello Wiki Hello Wiki For Schleife Bearbeiten Iteriert i innerhalb der 7 downTo 1 Range in Zweierschritten for i in 7 downTo 1 step 2 print i 7 5 3 1 Higher Order Functions Bearbeiten Kotlin unterstutzt die Verwendung von Funktionen hoherer Ordnung sowie von Closures mithilfe von Funktionszeigern anonymen Funktionen und Lambda Ausdrucken Funktion die eine andere Funktion entgegennimmt fun callWithInt number Int fn Int gt Int val result fn number println result Funktion die eine andere Funktion zuruckgibt fun makeAdder a Int Int gt Int fun add b Int a b return add Anders als in Java durfen in Kotlin Closures auf Variablen auch schreibend zugreifen var number 0 fun makeCounter gt Int fun counter number return counter fun double x Int x 2 fun main Aufruf mit Funktionszeiger callWithInt 42 double Aufruf mit anonymer Funktion callWithInt 42 fun x Int x 2 Aufruf mit Lambda Ausdruck callWithInt 42 x gt x 2 Als letztes Argument durfen Lambdas ausserhalb der runden Klammern geschrieben werden Wenn die Funktion nur ein Argument erwartet heisst dieses it falls nicht anders festgelegt callWithInt 42 it 2 val add2 makeAdder 2 println add2 5 gibt 7 aus val counter makeCounter println counter Gibt 1 aus println counter Gibt 2 aus Funktionen hoherer Ordnung werden auch in der Standardbibliothek verwendet insbesondere bei Collections Datentypen wie Listen Maps oder Sets val list setOf 1 2 3 4 5 println list map it 2 2 4 6 8 10 println list filter it gt 2 3 4 5 println list groupBy it 2 1 1 3 5 0 2 4 val cities listOf Berlin Hamburg Munchen Koln Frankfurt Die Anfangsbuchstaben der drei Stadte mit den kurzesten Namen hintereinander val result cities sortedBy it length take 3 map it 0 fold acc char gt acc char println result KBH Null Safety BearbeitenDie falsche Verwendung von Null Pointern die zu sogenannten Null Pointer Exceptions fuhren konnen ist in vielen Programmiersprachen eine haufige Fehlerursache Daher stellt Kotlin eine Reihe von Features zu Verfugung die das Auftreten solcher Null Pointer Exceptions bereits zur Kompilierzeit verhindern sollen So muss der Entwickler zum Beispiel beim Deklarieren einer Variable explizit angeben ob diese den Wert null annehmen darf oder nicht Variablen die null sein konnen werden nullable etwa nullbar genannt Erstellt eine Variable vom Typ Int darf nicht null sein var a Int 123 Erstellt eine Variable die den Wert null annehmen darf var b Int 456 Nicht erlaubt Erzeugt einen Kompilierfehler a null Zugelassen b null Wenn eine Variable die null werden kann verwendet wird ohne sie vorher auf null gepruft zu haben fuhrt dies beim Kompilieren ebenfalls zu einem Fehler fun nullSafety val test String Test Kompilierfehler konnte Null Pointer Exception verursachen println test length Erlaubt da auf null abgepruft wird if test null println test length Auch erlaubt zweite Bedingung wird nur uberpruft wenn die erste falsch ist if test null test length 0 println Leerer String Ebenfalls erlaubt if test null return println test length Kotlin bietet ausserdem fur einige typische Falle besondere Syntax um den benotigten Code zu verkurzen val ort kunde adresse ort val ortOderLeer ort Obiger Code ist gleichbedeutend mit val ort String if kunde null kunde adresse null ort null else ort kunde adresse ort val ortOderLeer String if ort null ortOderLeer else ortOderLeer ortVersionen BearbeitenVersion Datum Wichtige AnderungenM1 12 April 2012 Erster Milestone Release Erster eigenstandig lauffahiger Compiler Erste Version der Kotlin Standardbibliothek 24 M2 11 Juni 2012 Einfuhrung von Zugriffsmodifikatoren Android Support wurde eingefuhrt 25 26 M3 20 September 2012 Mehrfachzuweisungen und Dataclasses wurden eingefuhrt Erste Version von Kotlin Collections Externe Annotationen und lokale Funktionen und Klassen werden ermoglicht 27 M4 11 Dezember 2012 JDK7 Kompatibilitat wurde hinzugefugt Deprecation Support uber neue Annotation 28 M5 04 Februar 2013 Package Classes als Ersatz fur Namespace Klassen Innere Klassen sind nun moglich Default Konstruktoren werden nun automatisch generiert 29 M6 12 August 2013 Annotationen konnen nur Argumente vom Typ Enum verwenden Erste Version auf Maven Central Android Studio Support 30 M7 20 Marz 2014 Inline Support fur Lambda Funktionen wahrend der Kompilierzeit toString equals und hashCode mussen nun explizit uberschrieben werden Throws Annotation fur das Werfen von Exceptions wurde hinzugefugt Streams werden nun unterstutzt 31 M8 02 Juli 2014 Reflections erlauben nun auch den Zugriff auf Felder transient synchronized und strictfp keywords wurden hinzugefugt 32 M9 15 Oktober 2014 Inkrementelles Kompilieren des Quellcodes wird ermoglicht Verbesserter Support fur gemeinsamen Einsatz von Java und Kotlin unter anderem durch Plattformtypen 33 34 M10 17 Dezember 2014 Der reified Parameter kann auch in Inline Funktionen verwendet werden Uber die Java Native API konnen auch native Funktionen deklariert werden 35 M11 19 Marz 2015 Eine Klasse kann nun uber mehrere Konstruktoren verfugen Der Initialisierungsblock wird uber das Keyword init markiert Companion Objekte konnen direkt uber die Containerklasse angesprochen werden Eigene Reflection API unabhangig von der JVM 36 M12 29 Mai 2015 Enums und Annotationen haben eine neue Syntax bekommen Smart Casts wurden verbessert Funktionstypen und erweiterte Funktionstypen konnen nun gegeneinander ausgetauscht werden 37 M13 16 September 2015 Uber lateinit konnen nun auch Felder die keine Null Werte beinhalten durfen uber Dependency Injection initialisiert werden Sealed Klassen ermoglichen Algebraischer Datentypen Annotationen fur Annotationen wurden eingefuhrt Modifikatoren und Annotationen wurden syntaktisch getrennt Erweiterung der Reflection API 38 M14 01 Oktober 2015 Annotationen konnen zur file Klasse hinzugefugt werden Reorganisation von Hilfsklassen in einzelne Klasse fur jeden Datentyp 39 1 0 15 Februar 2016 Erster offizieller Release Zukunftige Versionen sollen abwartskompatibel bleiben Hierzu werden in fruheren Versionen als deprecated markierte Features als Error markiert 40 1 1 01 Marz 2017 Koroutinen erlauben eine einfache Programmierung von asynchronem Code Offizieller Release fur das Kotlin JavaScript Target um Kotlin Code direkt in JavaScript Code zu kompilieren 41 1 2 28 November 2017 Einfuhrung von Multiplattform Projekten um Code zwischen den verschiedenen Ebenen eines Projektes mehrfach zu verwenden Effizientere Kompilierung 42 1 3 29 Oktober 2018 Beta zu Kotlin Native Code kann direkt in native Binary Dateien kompiliert werden 43 1 4 17 August 2020 Verbesserte Performance und Stabilitat Single Abstract Method Konvertierung kann nun auch auf Kotlin Code direkt angewendet werden 44 1 5 5 Mai 2021 Der JVM IR Compiler ist nun der Standardcompiler fur Kotlin Sealed Interfaces und Inline Klassen wurden hinzugefugt 45 1 6 16 November 2021 Einfuhrung von sealed when Ausdrucken Neuer Kotlin Native Speichermanager 46 1 7 09 Juni 2022 Einfuhrung des Kotlin K2 Compilers Inkrementelle Kompilierung unterstutzt nun auch nicht Kotlin Komponenten in einem Gradle Bau 47 1 8 28 Dezember 2022 Performance Verbesserung fur Reflection Bessere Interoperabilitat mit Objective C Swift 48 Rezeption BearbeitenGoogle hat Kotlin auf der Entwicklerkonferenz I O 2019 zur bevorzugten Programmiersprache fur Android erklart 49 Meta Platforms nutzt nach eigenen Angaben in seiner Android Codebase im Oktober 2022 mehr als 10 Millionen Zeilen Code der in Kotlin geschrieben ist 50 In der Ausgabe Januar 2012 des Dr Dobb s Journal wurde die Programmiersprache zur Sprache des Monats language of the month erklart 51 Der Kotlin Website zufolge setzen kleine wie grosse Projekte die Sprache ein Pinterest nutzen monatlich 150 Millionen Anwender Gradle setzt Kotlin fur Installationsskripte ein Evernote verwendet Kotlin fur seinen Android Client Uber nutzt Kotlin fur interne Werkzeuge Corda eine vollstandig in Kotlin entwickelte Open Source Software wird von mehreren Grossbanken verwendet 52 Coursera entwickelt Android Apps zum Teil mit Kotlin Atlassian verwendet Kotlin fur das Werkzeug Trello unter Android 53 Literatur BearbeitenStephen Samuel Stefan Bocutiu Learn Kotlin Programming A comprehensive guide to OOP functions concurrency and coroutines in Kotlin 1 3 2nd Edition Packt Publishing 2019 ISBN 978 1 78980 874 2 google com Irina Galata Joe Howard Kotlin Apprentice Beginning Programming with Kotlin 2018 ISBN 978 1 942878 50 6 google com Peter Sommerhoff Kotlin for Android App Development Addison Wesley 2019 ISBN 978 0 13 485419 9 google com Ted Hagos Learn Android Studio 3 with Kotlin Efficient Android App Development Apress 2018 ISBN 978 1 4842 3907 0 google com Karl Szwillus Kotlin Einstieg und Praxis mitp 2019 ISBN 978 3 95845 853 6 google com Weblinks BearbeitenOffizielle Website kotlinlang org Web Demo und Beispiele Kotlin Language Documentation Abgerufen am 9 Juli 2019 android com Kotlin and Android Stefan Tomm Einfuhrung in Kotlin Informatik Aktuell In informatik aktuell de 14 August 2018 abgerufen am 9 Juli 2019 Alexander Neumann Programmiersprachen Kotlin profitiert von Android heise Developer In heise de 12 Juli 2018 abgerufen am 12 Juli 2018 Rainald Menge Sonnentag Google bietet einen kostenlosen Kotlin Kurs fur Fortgeschrittene an In heise de 19 November 2019 abgerufen am 28 November 2019 Einzelnachweise Bearbeiten github com Introduction to Kotlin Programming In O Reilly Media Inc Archiviert vom Original am 7 Dezember 2017 abgerufen am 21 Juni 2017 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot player oreilly com kotlin license README md In JetBrains kotlin GitHub abgerufen am 20 September 2017 Supported platforms Kotlin Multiplatform Mobile Docs In Kotlin Multiplatform Mobile Docs Help 18 August 2021 abgerufen am 31 August 2021 englisch heise online Google I O Googles Bekenntnis zu Kotlin Abgerufen am 18 Juni 2019 Maxim Shafirov Kotlin on Android Now official In Kotlin Blog 17 Mai 2017 abgerufen am 18 Juni 2019 amerikanisches Englisch Sandra Upson The Language that Stole Android Developers Hearts WIRED 19 Mai 2017 abgerufen am 23 Februar 2018 englisch FAQ Kotlin Programming Language Abgerufen am 21 Februar 2018 englisch Janice Heiss The Advent of Kotlin A Conversation with JetBrains Andrey Breslav In oracle com Oracle Technology Network April 2013 abgerufen am 2 Februar 2014 Hello World a b Paul Krill JetBrains readies JVM language Kotlin In infoworld com InfoWorld 22 Juli 2011 abgerufen am 2 Februar 2014 John Waters Kotlin Goes Open Source In ADTmag com 1105 Enterprise Computing Group 22 Februar 2012 abgerufen am 2 Februar 2014 Andrey Breslav Kotlin 1 0 Released Pragmatic Language for JVM and Android 15 Februar 2016 abgerufen im 1 Januar 1 What s New in IntelliJ IDEA In JetBrains Abgerufen im 1 Januar 1 Kotlin Plugins Abgerufen im 1 Januar 1 Getting Started with Eclipse Neon Kotlin Programming Language In Kotlin Abgerufen im 1 Januar 1 Kotlin for Eclipse Abgerufen im 1 Januar 1 Kotlin Visual Studio Marketplace 9 Juni 2018 abgerufen am 31 August 2021 englisch Kotlin Build Tools Abgerufen im 1 Januar 1 Rainald Menge Sonnentag Entwicklungsumgebung Android Studio 3 0 spricht Kotlin heise de 26 Oktober 2017 abgerufen am 27 Oktober 2017 Kai Schmidt und Markus Schwarz Testen mit Kotlin informatik aktuell de 17 Dezember 2019 abgerufen am 27 Dezember 2019 Semicolons In jetbrains com Abgerufen am 8 Februar 2014 functions In jetbrains com Abgerufen am 8 Februar 2014 Andrey Breslav Kotlin M1 is Out In The Kotlin Blog JetBrains 12 April 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M2 Candidate In The Kotlin Blog JetBrains 4 Juni 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M2 is Out In The Kotlin Blog JetBrains 11 Juni 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M3 is Out In The Kotlin Blog JetBrains 20 September 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M4 is Out In The Kotlin Blog JetBrains 11 Dezember 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M5 is Out In The Kotlin Blog JetBrains 4 Februar 2013 abgerufen am 17 Dezember 2022 amerikanisches Englisch Kotlin M6 is here In The Kotlin Blog JetBrains 12 August 2013 abgerufen am 17 Dezember 2022 amerikanisches Englisch M7 Release Available In The Kotlin Blog JetBrains 20 Marz 2014 abgerufen am 17 Dezember 2022 amerikanisches Englisch M8 is out In The Kotlin Blog JetBrains 2 Juli 2014 abgerufen am 17 Dezember 2022 amerikanisches Englisch M9 is coming In The Kotlin Blog JetBrains 1 Oktober 2012 abgerufen am 17 Dezember 2022 amerikanisches Englisch M9 is here In The Kotlin Blog JetBrains 15 Oktober 2014 abgerufen am 17 Dezember 2022 amerikanisches Englisch M10 is out In The Kotlin Blog JetBrains 17 Dezember 2014 abgerufen am 17 Dezember 2022 amerikanisches Englisch Kotlin M11 is Out In The Kotlin Blog JetBrains 19 Marz 2015 abgerufen am 17 Dezember 2022 amerikanisches Englisch Kotlin M12 is out In The Kotlin Blog JetBrains 29 Mai 2015 abgerufen am 17 Dezember 2022 amerikanisches Englisch Kotlin M13 is out In The Kotlin Blog JetBrains 16 September 2015 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin M14 is out In The Kotlin Blog JetBrains 1 Oktober 2015 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Breslav Kotlin 1 0 Released Pragmatic Language for the JVM and Android In The Kotlin Blog JetBrains 15 Februar 2016 abgerufen am 17 Dezember 2022 amerikanisches Englisch Roman Belov Kotlin 1 1 Released With JavaScript Support Coroutines and More In The Kotlin Blog JetBrains 1 Marz 2017 abgerufen am 17 Dezember 2022 amerikanisches Englisch Dmitry Jemerov Kotlin 1 2 Released Sharing Code between Platforms In The Kotlin Blog JetBrains 28 November 2017 abgerufen am 17 Dezember 2022 amerikanisches Englisch Roman Belov Kotlin 1 3 Released with Coroutines Kotlin Native Beta and more In The Kotlin Blog JetBrains 29 Oktober 2018 abgerufen am 17 Dezember 2022 amerikanisches Englisch Svetlana Isakova Kotlin 1 4 Released with a Focus on Quality and Performance In The Kotlin Blog JetBrains 17 August 2020 abgerufen am 17 Dezember 2022 amerikanisches Englisch Ekaterina Volodko Kotlin 1 5 0 the First Big Release of 2021 In The Kotlin Blog JetBrains 5 Mai 2021 abgerufen am 17 Dezember 2022 amerikanisches Englisch Alina Grebenkina Kotlin 1 6 0 Released In The Kotlin Blog JetBrains 16 November 2021 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Polyakov Kotlin 1 7 0 Released In The Kotlin Blog JetBrains 9 Juni 2022 abgerufen am 17 Dezember 2022 amerikanisches Englisch Andrey Polyakov Kotlin 1 8 0 Released In The Kotlin Blog JetBrains 12 Januar 2023 abgerufen am 14 Januar 2023 amerikanisches Englisch Jorn Brien Kotlin Google macht Java Alternative zur Nummer eins bei der Android App Entwicklung In t3n Magazin 9 Mai 2019 abgerufen am 30 August 2021 Chris Wiltz From zero to 10 million lines of Kotlin In engineering fb com 24 Oktober 2022 abgerufen am 26 Oktober 2022 englisch Andrey Breslav Language of the Month Kotlin In drdobbs com 20 Januar 2012 abgerufen am 2 Februar 2014 Corda Abgerufen im 1 Januar 1 Project Kotlin Abgerufen im 1 Januar 1 Kotlin in backend data processing and service development Normdaten Sachbegriff GND 1136341129 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Kotlin Programmiersprache amp oldid 238061833