Kotlin (Programmiersprache): Unterschied zwischen den Versionen
(+) |
(+) |
||
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Programmiersprache | {{Infobox Programmiersprache | ||
| Titel | | Titel = Kotlin | ||
| Name | | Name = | ||
| Logo | | Logo = [[File:Kotlin_logo_2021.svg|frameless|border|180px|Logo]] | ||
| Beschreibung | | Beschreibung = | ||
| Paradigma | | Paradigma = Objektorientierte Programmiersprache | ||
| Erscheinungsjahr | | Erscheinungsjahr = 2016 | ||
| Designer | | Designer = JetBrains | ||
| Entwickler | | Entwickler = JetBrains und Open-Source-Entwickler | ||
| AktuelleVersion | | AktuelleVersion = 2.0 | ||
| AktuelleVersionFreigabeDatum | | AktuelleVersionFreigabeDatum = 23. Mai 2024<ref>[https://blog.jetbrains.com/kotlin/category/releases/ Releases : The Kotlin Blog | The JetBrains Blog]</ref><ref>[https://github.com/JetBrains/kotlin/releases Releases · JetBrains/kotlin · GitHub]</ref> | ||
| Typisierung = statisch, stark | |||
| Implementierung = | |||
| Typisierung | | Dialekte = | ||
| Implementierung | | Standardisierungen = | ||
| Dialekte | | Beeinflusst_von = Java, Scala | ||
| Standardisierungen | | Beeinflusste = | ||
| Beeinflusst_von | | Betriebssystem = Jedes mit einer JVM oder JavaScript-Interpreter | ||
| Beeinflusste | | Lizenz = Apache | ||
| Betriebssystem | | Website = [https://kotlinlang.org/ kotlinlang.org] | ||
| Lizenz | |||
| Website | |||
}} | }} | ||
'''Kotlin''' ist eine objektorientierte, statisch typisierte Programmiersprache<ref>[https://www.heise.de/developer/meldung/Programmiersprachenstudie-Kotlin-profitiert-von-Android-4108387.html Programmiersprachen: Kotlin profitiert von Android | heise Developer, 12.07.2018]</ref> für die | <!-- [[File:Kotlin-logo.png|thumb|frameless|border|100px|altes Logo]] --> | ||
'''Kotlin''' ist eine objektorientierte, statisch typisierte Programmiersprache<ref>[https://www.heise.de/developer/meldung/Programmiersprachenstudie-Kotlin-profitiert-von-Android-4108387.html Programmiersprachen: Kotlin profitiert von Android | heise Developer, 12.07.2018]</ref> für die Betriebssysteme [[Android (Betriebssystem)|Android]], [[Apple iOS|iOS]], [[Linux]], [[Microsoft Windows]], macOS sowie Webbrowser. Kotlin des [[Tschechien|tschechischen]] Unternehmens JetBrains ist Open Source, steht unter der Apache-Lizenz und ist mit Java kompatibel. Der Kotlin-Compiler kann Java-Bytecode ausgeben und der Java Kotlin-Code kann Java-Code aufrufen. Gegenüber Java zeichnet sich Kotlin durch eine gute Performance, Sicherheit und gut lesbare Syntax aus. Kotlin ist nach der gleichnamigen [[Russland|russischen]] Insel im [[Finnland|Finnischen]] Meerbusen benannt.<ref name="heise3103333">[http://www.heise.de/newsticker/meldung/Java-Herausforderer-Kotlin-erscheint-in-Version-1-0-3103333.html Java-Herausforderer Kotlin erscheint in Version 1.0 | heise online, 15.02.2016]</ref> Im russischen [[Sankt Petersburg]] hat das tschechische Unternehmen JetBrains mittlerweile den Hauptstandort für seine Entwicklungen.<ref name="heise1434065">[http://www.heise.de/newsticker/meldung/Java-Alternative-Kotlin-nun-Open-Source-1434065.html Java-Alternative Kotlin nun Open Source | heise online, 14.02.2012]</ref> | |||
== Semantik == | == Semantik == | ||
'''"Hello, World!"-Beispiel''' | '''"Hello, World!"-Beispiel''' | ||
<syntaxhighlight lang=kotlin> | <syntaxhighlight lang="kotlin"> | ||
fun main(args : Array<String>) { | fun main(args : Array<String>) { | ||
Zeile 38: | Zeile 37: | ||
Am 19. Juli 2011 hat JetBrains Kotlin auf der JVM Language Summit vorgestellt. Kotlin war da bereits fast ein Jahr in der Entwicklung.<ref>[http://blog.jetbrains.com/kotlin/2011/07/hello-world-2/ Hello World | Kotlin Blog, July 19, 2011]</ref> Im Januar 2012 wählte das [[Vereinigte Staaten|US-amerikanische]] Computermagazin Dr. Dobb’s Journal (DDJ) Kotlin zur Prgorammiersprache des Monats.<ref>[http://www.drdobbs.com/jvm/language-of-the-month-kotlin/232600836 Language of the Month: Kotlin | Dr Dobb's, January 20, 2012]</ref> | Am 19. Juli 2011 hat JetBrains Kotlin auf der JVM Language Summit vorgestellt. Kotlin war da bereits fast ein Jahr in der Entwicklung.<ref>[http://blog.jetbrains.com/kotlin/2011/07/hello-world-2/ Hello World | Kotlin Blog, July 19, 2011]</ref> Im Januar 2012 wählte das [[Vereinigte Staaten|US-amerikanische]] Computermagazin Dr. Dobb’s Journal (DDJ) Kotlin zur Prgorammiersprache des Monats.<ref>[http://www.drdobbs.com/jvm/language-of-the-month-kotlin/232600836 Language of the Month: Kotlin | Dr Dobb's, January 20, 2012]</ref> | ||
Im Februar 2012 hat JetBrains den Quellcode von Kotlin als Open-Source-Software unter der Apache Licence 2 bereitgestellt. Die Sourcen stehen auf GitHub zur Verfügung.<ref name="heise1434065"/> Am 15. Februar 2016 wurde die Version 1.0 nach über fünf Jahren Entwicklung veröffentlicht.<ref name="heise3103333"/> Am 1. März 2017 folgte Version 1.1.<ref>[https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ Kotlin 1.1 Released with JavaScript Support, Coroutines and more | Kotlin Blog, March 1, 2017]</ref> Kotlin 1.1 unterstützt erstmals das Kompilieren nach JavaScript und Koroutinen.<ref>[https://www.heise.de/newsticker/meldung/JVM-Sprache-Kotlin-1-1-ist-fertig-3641686.html JVM-Sprache: Kotlin 1.1 ist fertig | heise online, 02.03.2017]</ref> Mit [[Google Inc.|Googles]] Wechsel 2017 von Eclipse zu IntellJ IDEA<ref>[https://www.heise.de/newsticker/meldung/Kommentar-Kotlin-fuer-Android-Googles-fremde-Lorbeeren-3717940.html Kommentar: Kotlin für Android – Googles fremde Lorbeeren | heise online, 19.05.2017]</ref> wird auch offiziell Kotlin in Android O/Android Studio 3.0 unterstützt. Kotlin und IntelliJ IDEA stammen beide von JetBrains.<ref>[https://www.heise.de/newsticker/meldung/Android-Studio-3-0-hat-Kotlin-an-Bord-3716390.html Android Studio 3.0 hat Kotlin an Bord | heise online, 18.05.2017]</ref> Auf der ersten hauseigenen KotlinConf in [[San Francisco]] gab Andrey Breslav Anfang November 2017 die Veröffentlichung des Release Candidate für Version 1.2 bekannt. Die wichtigste Neuerung dabei ist die Einführung von Multiplattform-Projekten. Das erlaubt es Entwicklern denselben Code für verschiedene Zielplattformen zu kompilieren. Zunächst wird die Java Virtual Machine und JavaScript unterstützt, Kotlin/Native-Support ist geplant. Weiterhin unterstützt Kotlin/Native nun Apple iOS.<ref>[https://www.heise.de/developer/meldung/Programmiersprachen-Kotlin-1-2-RC-ist-freigegeben-und-Kotlin-Native-unterstuetzt-iOS-3877951.html Programmiersprachen: Kotlin 1.2 RC ist freigegeben und Kotlin/Native unterstützt iOS | heise Developer, 03.11.2017]</ref> Version 1.2 wurde am 28. November 2017 veröffentlicht.<ref>[https://www.heise.de/developer/meldung/Programmiersprachen-Kotlin-1-2-vollzieht-den-Spagat-zwischen-JVM-und-JavaScript-3903616.html Programmiersprachen: Kotlin 1.2 vollzieht den Spagat zwischen JVM und JavaScript | heise Developer, 29.11.2017]</ref> | Im Februar 2012 hat JetBrains den Quellcode von Kotlin als Open-Source-Software unter der Apache Licence 2 bereitgestellt. Die Sourcen stehen auf GitHub zur Verfügung.<ref name="heise1434065"/> Am 15. Februar 2016 wurde die Version 1.0 nach über fünf Jahren Entwicklung veröffentlicht.<ref name="heise3103333"/> Am 1. März 2017 folgte Version 1.1.<ref>[https://blog.jetbrains.com/kotlin/2017/03/kotlin-1-1/ Kotlin 1.1 Released with JavaScript Support, Coroutines and more | Kotlin Blog, March 1, 2017]</ref> Kotlin 1.1 unterstützt erstmals das Kompilieren nach JavaScript und Koroutinen.<ref>[https://www.heise.de/newsticker/meldung/JVM-Sprache-Kotlin-1-1-ist-fertig-3641686.html JVM-Sprache: Kotlin 1.1 ist fertig | heise online, 02.03.2017]</ref> Mit [[Google Inc.|Googles]] Wechsel 2017 von Eclipse zu IntellJ IDEA<ref>[https://www.heise.de/newsticker/meldung/Kommentar-Kotlin-fuer-Android-Googles-fremde-Lorbeeren-3717940.html Kommentar: Kotlin für Android – Googles fremde Lorbeeren | heise online, 19.05.2017]</ref> wird auch offiziell Kotlin in Android O/Android Studio 3.0 unterstützt. Kotlin und IntelliJ IDEA stammen beide von JetBrains.<ref>[https://www.heise.de/newsticker/meldung/Android-Studio-3-0-hat-Kotlin-an-Bord-3716390.html Android Studio 3.0 hat Kotlin an Bord | heise online, 18.05.2017]</ref> Auf der ersten hauseigenen KotlinConf in [[San Francisco]] gab Andrey Breslav Anfang November 2017 die Veröffentlichung des Release Candidate für Version 1.2 bekannt. Die wichtigste Neuerung dabei ist die Einführung von Multiplattform-Projekten. Das erlaubt es Entwicklern denselben Code für verschiedene Zielplattformen zu kompilieren. Zunächst wird die Java Virtual Machine (JVM) und JavaScript unterstützt, Kotlin/Native-Support ist geplant. Weiterhin unterstützt Kotlin/Native nun Apple iOS.<ref>[https://www.heise.de/developer/meldung/Programmiersprachen-Kotlin-1-2-RC-ist-freigegeben-und-Kotlin-Native-unterstuetzt-iOS-3877951.html Programmiersprachen: Kotlin 1.2 RC ist freigegeben und Kotlin/Native unterstützt iOS | heise Developer, 03.11.2017]</ref> Version 1.2 wurde am 28. November 2017 veröffentlicht.<ref>[https://www.heise.de/developer/meldung/Programmiersprachen-Kotlin-1-2-vollzieht-den-Spagat-zwischen-JVM-und-JavaScript-3903616.html Programmiersprachen: Kotlin 1.2 vollzieht den Spagat zwischen JVM und JavaScript | heise Developer, 29.11.2017]</ref> | ||
=== | === 2018 bis 2019 === | ||
Am 17. April 2018 veröffentlichte Oracle die universelle virtuelle Maschine GraalVM 1.0. Diese unterstützt alle JVM-basierten Sprachen, darunter Java, Scala, Groovy und Kotlin, JavaScript einschließlich Node.js, LLVM-Bitcode und in experimenteller Form Ruby, R und Python.<ref>[https://www.pro-linux.de/news/1/25827/oracle-ver%C3%B6ffentlicht-graalvm-10.html Oracle veröffentlicht GraalVM 1.0 - Pro-Linux, 23. April 2018]</ref><ref>[https://blogs.oracle.com/developers/announcing-graalvm Announcing GraalVM: Run Programs Faster Anywhere | Oracle Developers Blog, April 17, 2018]</ref> In Kotlin 1.2.50 vom 14. Juni 2018 bekam der Compiler den Progressive-Modus, der Fehlerbehebungen und neue Deprecations direkt wirksam macht. Unter anderem wurde auch das Scripting verbessert. So ist es nun beispielsweise möglich, ein Skript in einem Jar zu definieren. Wird der Jar zu einem Compilation-Klassenpfad hinzugefügt, unterstützen Compiler und das IDEA-Plug-in die Skripte automatisch. Weiterhin können Entwickler nun eingegebene externe Variable zu einer Skriptkompilierung hinzufügen. Diese werden von Kotlin dann dann wie globale Variablen behandelt.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-2-50-mit-neuem-Progressive-Modus-fuer-den-Compiler-4079063.html Kotlin 1.2.50 mit neuem Progressive-Modus für den Compiler | heise Developer, 15.06.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/06/kotlin-1-2-50-is-out/ Kotlin 1.2.50 is out! | Kotlin Blog, June 14, 2018]</ref> Mit Kotlin 1.2.60 vom 1. August 2018 können Entwickler nun in der ebenfalls von JetBrains stammenden Entwicklungsumgebung IntelliJ IDEA das integrierte Build-System nutzen und nicht mehr an Gradle übergeben.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-2-60-vereinfacht-den-Umgang-mit-Multiplattformprojekten-4127005.html Kotlin 1.2.60 vereinfacht den Umgang mit Multiplattformprojekten | heise Developer, 02.08.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/08/kotlin-1-2-60-is-out/ Kotlin 1.2.60 is out! | Kotlin Blog, August 1, 2018]</ref> Auf der KotlinConf in [[Amsterdam]] vom 3. bis zum 5. Oktober 2018 riefen JetBrains und Google gemeinsam die Kotlin Foundation ins Leben, die beide Unternehmen bereits auf der Google I/O 2017 angekündigt hatten. Die Foundation soll die Entwicklung der Programmiersprache fördern und sicherstellen, dass Kotlin freie Software bleibt. Sie verwaltet dabei die Markenrechte für das Projekt, besitzt aber nicht den Code und ernennt den führenden Sprachentwickler. Das bereits als RC veröffentlichte Kotlin 1.3 bringt unter anderem ein neues Modell für die Multiplattformprojekte mit. Koroutinen sind in 1.3 nicht mehr als experimentell gekennzeichnet. Kotlin/Native befindet sich mit 1.3 offiziell in der Betaphase.<ref>[https://www.heise.de/developer/meldung/Programmiersprache-Neuheiten-von-der-KotlinConf-4181685.html Programmiersprache: Eine Stiftung für die JVM-Sprache Kotlin | heise Developer, 05.10.2018]</ref> Am 29. Oktober 2018 wurde Kotlin 1.3 veröffentlicht. Die Koroutinen gelten nun als Stablil. Die Erstellung von Cross-Platform-Projekten wurde weiter verbessert, gilt aber weiter als experimentell. Die neue Kotlin-Version führt das Konzept sogenannter Contracts ein, mit denen Funktionen dem Compiler mitteilen können, wie sie sich verhalten. Zu den weiteren nennenswerten sprachliche Ergänzungen gehören die experimentellen Inline-Klassen und die vier Variablentypen kotlin.UByte, kotlin.UShort, kotlin.UInt, kotlin.ULong für nicht vorzeichenbehaftete (unsigned) Werte. Die experimentellen Variablentypen ermöglichen Low-Level-Funktionen wie Byte-Manipulation.<ref>[https://www.heise.de/developer/meldung/Programmiersprache-Kotlin-1-3-stabilisiert-die-Koroutinen-4206618.html Programmiersprache: Kotlin 1.3 stabilisiert die Koroutinen | heise online, 30.10.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/10/kotlin-1-3/ Kotlin 1.3 Released with Coroutines, Kotlin/Native Beta, and more | Kotlin Blog, October 29, 2018]</ref> | Am 17. April 2018 veröffentlichte Oracle die universelle virtuelle Maschine GraalVM 1.0. Diese unterstützt alle JVM-basierten Sprachen, darunter Java, Scala, Groovy und Kotlin, JavaScript einschließlich Node.js, LLVM-Bitcode und in experimenteller Form Ruby, R und Python.<ref>[https://www.pro-linux.de/news/1/25827/oracle-ver%C3%B6ffentlicht-graalvm-10.html Oracle veröffentlicht GraalVM 1.0 - Pro-Linux, 23. April 2018]</ref><ref>[https://blogs.oracle.com/developers/announcing-graalvm Announcing GraalVM: Run Programs Faster Anywhere | Oracle Developers Blog, April 17, 2018]</ref> In Kotlin 1.2.50 vom 14. Juni 2018 bekam der Compiler den Progressive-Modus, der Fehlerbehebungen und neue Deprecations direkt wirksam macht. Unter anderem wurde auch das Scripting verbessert. So ist es nun beispielsweise möglich, ein Skript in einem Jar zu definieren. Wird der Jar zu einem Compilation-Klassenpfad hinzugefügt, unterstützen Compiler und das IDEA-Plug-in die Skripte automatisch. Weiterhin können Entwickler nun eingegebene externe Variable zu einer Skriptkompilierung hinzufügen. Diese werden von Kotlin dann dann wie globale Variablen behandelt.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-2-50-mit-neuem-Progressive-Modus-fuer-den-Compiler-4079063.html Kotlin 1.2.50 mit neuem Progressive-Modus für den Compiler | heise Developer, 15.06.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/06/kotlin-1-2-50-is-out/ Kotlin 1.2.50 is out! | Kotlin Blog, June 14, 2018]</ref> Mit Kotlin 1.2.60 vom 1. August 2018 können Entwickler nun in der ebenfalls von JetBrains stammenden Entwicklungsumgebung IntelliJ IDEA das integrierte Build-System nutzen und nicht mehr an Gradle übergeben.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-2-60-vereinfacht-den-Umgang-mit-Multiplattformprojekten-4127005.html Kotlin 1.2.60 vereinfacht den Umgang mit Multiplattformprojekten | heise Developer, 02.08.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/08/kotlin-1-2-60-is-out/ Kotlin 1.2.60 is out! | Kotlin Blog, August 1, 2018]</ref> Auf der KotlinConf in [[Amsterdam]] vom 3. bis zum 5. Oktober 2018 riefen JetBrains und Google gemeinsam die Kotlin Foundation ins Leben, die beide Unternehmen bereits auf der Google I/O 2017 angekündigt hatten. Die Foundation soll die Entwicklung der Programmiersprache fördern und sicherstellen, dass Kotlin freie Software bleibt. Sie verwaltet dabei die Markenrechte für das Projekt, besitzt aber nicht den Code und ernennt den führenden Sprachentwickler. Das bereits als RC veröffentlichte Kotlin 1.3 bringt unter anderem ein neues Modell für die Multiplattformprojekte mit. Koroutinen sind in 1.3 nicht mehr als experimentell gekennzeichnet. Kotlin/Native befindet sich mit 1.3 offiziell in der Betaphase.<ref>[https://www.heise.de/developer/meldung/Programmiersprache-Neuheiten-von-der-KotlinConf-4181685.html Programmiersprache: Eine Stiftung für die JVM-Sprache Kotlin | heise Developer, 05.10.2018]</ref> Am 29. Oktober 2018 wurde Kotlin 1.3 veröffentlicht. Die Koroutinen gelten nun als Stablil. Die Erstellung von Cross-Platform-Projekten wurde weiter verbessert, gilt aber weiter als experimentell. Die neue Kotlin-Version führt das Konzept sogenannter Contracts ein, mit denen Funktionen dem Compiler mitteilen können, wie sie sich verhalten. Zu den weiteren nennenswerten sprachliche Ergänzungen gehören die experimentellen Inline-Klassen und die vier Variablentypen kotlin.UByte, kotlin.UShort, kotlin.UInt, kotlin.ULong für nicht vorzeichenbehaftete (unsigned) Werte. Die experimentellen Variablentypen ermöglichen Low-Level-Funktionen wie Byte-Manipulation.<ref>[https://www.heise.de/developer/meldung/Programmiersprache-Kotlin-1-3-stabilisiert-die-Koroutinen-4206618.html Programmiersprache: Kotlin 1.3 stabilisiert die Koroutinen | heise online, 30.10.2018]</ref><ref>[https://blog.jetbrains.com/kotlin/2018/10/kotlin-1-3/ Kotlin 1.3 Released with Coroutines, Kotlin/Native Beta, and more | Kotlin Blog, October 29, 2018]</ref> | ||
Am 23. Januar 2019 wurde Kotlin 1.3.20 veröffentlicht. Damit lassen sich | Am 23. Januar 2019 wurde Kotlin 1.3.20 veröffentlicht. Damit lassen sich über das Kotlin Gradle Plug-in Build Tasks innerhalb eines Projekts parallelisieren. Gradle Kotlin DSL wird für die Entwicklung plattformübergreifender Projekte unterstützt.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-3-20-parallelisiert-Gradle-Tasks-4286235.html Kotlin 1.3.20 parallelisiert Gradle Tasks | heise online, 24.01.2019]</ref><ref>[https://blog.jetbrains.com/kotlin/2019/01/kotlin-1-3-20-released/ Kotlin 1.3.20 released | Kotlin Blog, January 23, 2019]</ref> Seit Kotlin 1.3.30 vom 12. April 2019 wird Windows 32 (mingw_x86) als Target ebenfalls unterstützt. Anwender von Windows oder macOS können seit dieser Version ihre Kotlin/Native-Programme für die Plattformen Linux x86-64, arm32, Android und Raspberry PI kompilieren.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-3-30-verspricht-mehr-Leistung-beim-Annotation-Processing-4399812.html Kotlin 1.3.30 verspricht mehr Leistung beim Annotation Processing | heise online, 15.04.2019]</ref> In Kotlin 1.3.40 vom 19. Juni 2019 sind hauptsächlich der experimentelle Support für NPM, Yarn und Webpack sowie ein neuer Algorithmus für die Typinferenz hinzugekommen.<ref>[https://www.heise.de/developer/meldung/Kotlin-1-3-40-liefert-Erweiterungen-fuer-Kotlin-JS-und-ueberarbeitet-Typinferenz-4452678.html Programmiersprachen: Kotlin 1.3.40 liefert Erweiterungen für Kotlin/JS und überarbeitet Typinferenz | heise online, 21.06.2019]</ref> In Kotlin 1.3.50 vom 22. August 2019 ist unter anderem eine neue API zum Messen von Zeiträumen hinzugekommen. Mithilfe dieser API werden Missverständnisse beziehungsweise Programmierfehler durch das Verwenden falscher Einheiten vermieden. Als Preview ist ein neuer Java-to-Kotlin-Konverter für IntelliJ IDEA dabei. Der Debugger verbessert nun das Zusammenspiel mit IntelliJ. Kotlin/Native 1.3.50 bringt unter anderem Erweiterungen bei der Anbindung an Frameworks unter iOS und macOS, Entwickler können mit dieser Version mit der IntelliJ IDEA Ultimate Edition nun Kotlin/Native-Code debuggen.<ref>[https://www.heise.de/developer/meldung/Programmiersprache-Kotlin-1-3-50-kann-Java-Code-besser-umwandeln-4503272.html Programmiersprache: Kotlin 1.3.50 kann Java-Code besser umwandeln | heise online, 23.08.2019]</ref> Das Cross-Plattform-Framework NativeScript unterstützt mit Version 6.1 vom 4. September 2019 erstmals Kotlin.<ref>[https://www.nativescript.org/blog/nativescript-6.1-kotlin-support-is-here NativeScript 6.1: Kotlin Support is here!, September 04, 2019]</ref> | ||
In Kotlin 1.4 vom 17. August 2020 sind einen Projekt-Wizard für neue Kotlin-Projekte und ein Debugger für Koroutinen als wichtigste neue Funktionen hinzugekommen. Der Compiler bedient nun alle Zielplattform einheitlich. Über eine API lassen sich Compiler-Erweiterungen anbinden. Bei den sprachlichen Änderungen kam unter anderem die Umsetzung von SAM-Interfaces (Single Abstract Method) hinzu.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-4-erweitert-die-Toolchain-und-einige-Sprachelemente-4872606.html Programmiersprache: Kotlin 1.4 erweitert die Toolchain und einige Sprachelemente | heise online, 18.08.20]</ref><ref name="blogkotlin14">[https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/ Kotlin 1.4 Released with a Focus on Quality and Performance – Kotlin Blog | JetBrains, August 17, 2020]</ref> Am 31. August 2020 wurde die Alpha-Version des Software Development Kits (SDKs) Kotlin Multiplatform Mobile (KMM) für Android Studio veröffentlicht. Damit lassen Cross-Plattform-Applikationen für Android und iOS erstellen. Auf einer gemeinsamen Code-Basis lassen sich innerhalb der gleichen IDE (Integrated Development Environment) dann plattformspezifische Ergänzungen aufsetzen.<ref>[https://www.heise.de/news/Kotlin-Multiplatform-Mobile-bringt-Android-und-iOS-unter-einen-Hut-4885878.html Kotlin Multiplatform Mobile bringt Android und iOS unter einen Hut | heise online, 04.09.2020]</ref><ref>[https://blog.jetbrains.com/kotlin/2020/08/kotlin-multiplatform-mobile-goes-alpha/ Kotlin Multiplatform Mobile Goes Alpha – Kotlin Blog | JetBrains, August 31, 2020]</ref> | === ab 2020 === | ||
In Kotlin 1.4 vom 17. August 2020 sind einen Projekt-Wizard für neue Kotlin-Projekte und ein Debugger für Koroutinen als wichtigste neue Funktionen hinzugekommen. Der Compiler bedient nun alle Zielplattform einheitlich. Über eine API lassen sich Compiler-Erweiterungen anbinden. Bei den sprachlichen Änderungen kam unter anderem die Umsetzung von SAM-Interfaces (Single Abstract Method) hinzu.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-4-erweitert-die-Toolchain-und-einige-Sprachelemente-4872606.html Programmiersprache: Kotlin 1.4 erweitert die Toolchain und einige Sprachelemente | heise online, 18.08.20]</ref><ref name="blogkotlin14">[https://blog.jetbrains.com/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance/ Kotlin 1.4 Released with a Focus on Quality and Performance – Kotlin Blog | JetBrains, August 17, 2020]</ref> Am 31. August 2020 wurde die Alpha-Version des Software Development Kits (SDKs) Kotlin Multiplatform Mobile (KMM) für Android Studio veröffentlicht. Damit lassen Cross-Plattform-Applikationen für Android und iOS erstellen. Auf einer gemeinsamen Code-Basis lassen sich innerhalb der gleichen IDE (Integrated Development Environment) dann plattformspezifische Ergänzungen aufsetzen.<ref>[https://www.heise.de/news/Kotlin-Multiplatform-Mobile-bringt-Android-und-iOS-unter-einen-Hut-4885878.html Kotlin Multiplatform Mobile bringt Android und iOS unter einen Hut | heise online, 04.09.2020]</ref><ref>[https://blog.jetbrains.com/kotlin/2020/08/kotlin-multiplatform-mobile-goes-alpha/ Kotlin Multiplatform Mobile Goes Alpha – Kotlin Blog | JetBrains, August 31, 2020]</ref> Kotlin 1.4.30 von 3. Februar 2021 bringt ein optional nutzbares neues JVM-Backend mit. Im Zusammenspiel mit Java lassen sich JVM-Namen für Aufrufe über Annotationen ändern. Inline Classes sind nun im Beta-Status. Diese lassen sich als Value Classes einsetzen.<ref>[https://www.heise.de/hintergrund/Das-Geheimnis-der-Wombat-Wuerfel-5046686.html Das Geheimnis der Wombat-Würfel | heise online, 05.02.2021]</ref> | |||
In Kotlin 1.5.0 vom 5. Mai 2021 sind wenig Neuerungen sondern viele Stabilisierungen zahlreicher in Kotlin 1.4.x eingeführter Sprachfeatures hinzugekommen.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-5-stabilisert-an-allen-Ecken-und-Enden-6038202.html Programmiersprache Kotlin 1.5: Stabilität an allen Ecken und Enden | heise online, 06.05.2021]</ref> In Kotlin 1.5.20 vom 24. Juni 2021 ist unter anderem die Anbindung an das Project Lombok sowie an JSpecify hinzugekommen. Project Lombok kümmert sich um das Generieren von Boilerplate-Code auf Bytecode-Ebene. JSpecify bietet Annotationen unter anderem für die Null-Safety. Für Kotlin/Native kann der Compiler nun KDoc-Dokumentationskommentare exportieren, um sie in Objective-C-Frameworks zu verwenden. Gradle steuert nun das Parallelisieren von Kotlin-Build-Tasks.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-5-20-arbeitet-mit-Project-Lombok-zusammen-6118373.html Programmiersprache: Kotlin 1.5.20 arbeitet mit Project Lombok zusammen | heise online, 25.06.2021]</ref> Die am 25. August 2021 veröffentlichte Version Kotlin 1.5.30 ist planmäßig die letzte 1.5.x Version. Die Version bringt einige für Kotlin 1.6 geplante Sprachfeatures als Preview mit und lässt sich nativ auf den M1-Prozessoren von Apple verwenden. Bis dahin war Rosetta zum Erstellen und Ausführen von Anwendungen auf Apple Silicon notwendig.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-5-30-bereitet-gewuenschte-Sprachneuerungen-vor-6174689.html Programmiersprache: Kotlin 1.5.30 bereitet gewünschte Sprachneuerungen vor | heise online, 26.08.2021]</ref> In Kotlin 1.6 vom 16. November 2021 sind nun vollständige when-Anweisungen und unterbrechende Funktionen als Elterntypen als stabil freigegeben. Die Umwandlung eines regulären zu einem unterbrechenden Funktionstypen ist darin ebenfalls stabil. Auch zahlreiche weitere Funktionen der Standardbibliothek wurden stabilisiert. Kotlin/JVM setzt ab der Version 1.6 wiederholbare Annotationen sprachübergreifend zu Java ein, das Repeatable Annotations kennt. In Kotlin/Native steht nun der neue Memory Manager zur Verfügung.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-6-versiegelt-when-Anweisungen-6269102.html Programmiersprache: Kotlin 1.6 versiegelt when-Anweisungen | heise online, 17.11.2021]</ref> In Kotlin 1.6.20 vom 4. April 2022 sind mit Context Receivers und Definitely Non-Nullable Types zwei sprachliche Neuerungen in Vorbereitung auf Kotlin 1.7 hinzugekommen. Die Toolchain wurde in 1.6.20 um paralleles Kompilieren von Modulen für die JVM und einen inkrementellen Compiler für JavaScript erweitert. Seit dieser Version haben Multiplattformprojekte nun standardmäßig eine hierarchische Struktur, um Code zwischen ähnlichen Plattformen zu teilen.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-6-20-kompiliert-parallel-und-inkrementell-6662818.html Programmiersprache Kotlin 1.6.20 kompiliert parallel und inkrementell | heise online, 05.04.2022]</ref> | |||
Mit Kotlin 1.7 vom 4. Mai 2022 änderte JetBrains die Terminologie und veröffentlichte davon zuerst eine Betaversion. In dieser Version ist unter anderem die Builder-Inferenz hinzugekommen, welche das Aufrufen generischer Builder-Funktionen erleichtert. Weiterhin sind einige Collection-Funktionen zurückgekommen und die Definitely Non-Nullable Types sind stabilisiert worden und nun standardmäßig aktiviert.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-7-Beta-bringt-min-und-max-zurueck-7078138.html Programmiersprache: Kotlin 1.7 Beta bringt min() und max() zurück | heise online, 06.05.2022]</ref><ref>[https://blog.jetbrains.com/kotlin/2022/05/kotlin-1-7-0-beta/ Kotlin 1.7.0-Beta Released | The Kotlin Blog, May 4, 2022]</ref> Am 9. Juni 2022 erschien dann 1.7.0. Darin ist die Alphaversion des neuen Kotlin/JVM-Compilers K2 enthalten. Kotlin unterstützt in Gradle nun das inkrementelle Kompilieren von Änderungen innerhalb abhängiger Module, die nicht in Kotlin geschrieben sind. Das ist mit dem automatisierten Build-Management kompatibel. Die Annotationen der Opt-in-Anforderungen sind nun stabil und die Non-nullable Types und die Builder-Inferenz wurde überarbeitet. Für Typargumente steht mit 1.7.0 der Underscore Operator bereit. Damit lässt sich ein Typargument automatisch ableiten, wenn andere Typen bereits festgelegt sind.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-7-enthaelt-Alphaversion-des-neuen-K2-Compilers-7137155.html Programmiersprache: Kotlin 1.7 enthält Alphaversion des neuen K2-Compilers | heise online, 10.06.2022]</ref> | |||
In Kotlin 1.8.0 vom 12. Januar 2023 ist ein Compiler-Parameter hinzugekommen, der Optimierungen deaktiviert, um das Debuggen übersichtlicher zu gestalten. Weiterhin sind u. a. zwei experimentelle Funktionen hinzugekommen, um Verzeichnisse rekursiv zu löschen oder zu kopieren. Weggefallen sind das JVM-IR-Backend und die Unterstützung von JVM 1.6 = JDK 6 und JVM 1.7 = JDK 7. Die Standard-Libraries sind nun durchgängig für JDK 8 kompiliert. In Kotlin/Native für Anwendungen ohne JVM gab es Verbesserungen bei der Anbindung an Swift und Objective-C.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-8-schneidet-alte-Zoepfe-ab-und-erweitert-das-Debuggen-7458512.html Programmiersprache Kotlin 1.8 schneidet alte Zöpfe ab und erweitert das Debuggen | heise online, 13.01.2023]</ref> Am 3. April 2023 erschien Kotlin 1.8.20. Darin wurde der K2-Compiler als stabil gekennzeichnet. Als Zielplattform steht nun WebAssembly - zunächst als experimentell gekennzeichnet - direkt zur Verfügung. Sieben Plattformziele (wasm32, iosArm32, watchosX86, mingwX86, linuxArm32Hfp, linuxMips32, linuxMipsel32) für Kotlin/Native wurden in Kotlin 1.8.20 als deprecated gekennzeichnet. Weitere Neuerungen sind u. a. eine Vorschau des Serialisierungs-Plug-ins für den K2-Compiler und eine Anbindung an den JS-IR-Compiler für JavaScript.<ref>[https://www.heise.de/news/Programmiersprache-Kotlin-1-8-20-bringt-direkte-Anbindung-an-WebAssembly-8570626.html Programmiersprache Kotlin 1.8.20 bringt direkte Anbindung an WebAssembly | heise online, 05.04.2023]</ref> Mit Kotlin 1.9.20 vom 1. November 2023 erreichte die plattformübergreifende Entwicklung dank Kotlin Multiplatform (KMP) nun den stabilen Status. Durch den stabilen Status erfolgt die Weiterentwicklung von KMP rückwärtskompatibel. Mit KMP lassen sich Anwendungen für Android, iOS, Windows, macOS, Linux und Webbrowsern mit einer gemeinsamen Codebasis erstellen. KMP setzt auf eine Mischung aus Cross-Plattform-Code und nativen Abschnitten für die einzelnen Systeme. Eine der Neuerungen in KMP ist eine Standardvorlage, um plattformübergreifende Projekte für das Build-Werkzeug Gradle zu definieren. Die WebAssembly-Anbindung ist in dieser Version weiterhin als experimentell gekennzeichnet. Der K2-Compiler hat nun auf allen Plattformen die Betaphase erreicht. Parallel zu Kotlin 1.9.20 erschien das UI-Framework Compose Multiplatform 1.5.10.<ref>[https://www.heise.de/news/Kotlin-macht-Ernst-mit-der-plattformuebergreifenden-Programmierung-9352485.html Kotlin macht Ernst mit der plattformübergreifenden Programmierung | heise online, 03.11.2023]</ref> | |||
== Versionen (Auswahl) == | == Versionen (Auswahl) == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- class="hintergrundfarbe5" | |- class="hintergrundfarbe5" | ||
! Version || Datum | ! Version || Datum | ||
|- | |- | ||
| 1.0 || 15. Februar 2016 | | 1.0 || 15. Februar 2016 | ||
|- | |- | ||
| 1.1 || 1. März 2017 | | 1.1 || 1. März 2017 | ||
|- | |- | ||
| 1.1.50 || 22. September 2017<ref>[https://blog.jetbrains.com/kotlin/2017/09/kotlin-1-1-50-is-out/ Kotlin 1.1.50 is out | Kotlin Blog, September 22, 2017]</ref> | | 1.1.50 || 22. September 2017<ref>[https://blog.jetbrains.com/kotlin/2017/09/kotlin-1-1-50-is-out/ Kotlin 1.1.50 is out | Kotlin Blog, September 22, 2017]</ref> | ||
|- | |- | ||
| 1.2 || 28. November 2017<ref>[https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/ Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog]</ref> | | 1.2 || 28. November 2017<ref>[https://blog.jetbrains.com/kotlin/2017/11/kotlin-1-2-released/ Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog]</ref> | ||
|- | |- | ||
| 1.2.70 || 13. September 2018<ref>[https://blog.jetbrains.com/kotlin/2018/09/kotlin-1-2-70-is-out/ Kotlin 1.2.70 is Out! | Kotlin Blog, September 13, 2018]</ref> | | 1.2.70 || 13. September 2018<ref>[https://blog.jetbrains.com/kotlin/2018/09/kotlin-1-2-70-is-out/ Kotlin 1.2.70 is Out! | Kotlin Blog, September 13, 2018]</ref> | ||
|- | |- | ||
| 1.3 || 29. Oktober 2018 | | 1.3 || 29. Oktober 2018 | ||
|- | |- | ||
| 1.3.20 || 23. Januar 2019 | | 1.3.20 || 23. Januar 2019 | ||
|- | |- | ||
| 1.3.30 || 12. April 2019 | | 1.3.30 || 12. April 2019 | ||
|- | |- | ||
| 1.3.40 || 19. Juni 2019 | | 1.3.40 || 19. Juni 2019 | ||
|- | |- | ||
| 1.3.50 || 22. August 2019<ref>[https://blog.jetbrains.com/kotlin/2019/08/kotlin-1-3-50-released/ Kotlin 1.3.50 released | Kotlin Blog, August 22, 2019]</ref> | | 1.3.50 || 22. August 2019<ref>[https://blog.jetbrains.com/kotlin/2019/08/kotlin-1-3-50-released/ Kotlin 1.3.50 released | Kotlin Blog, August 22, 2019]</ref> | ||
|- | |- | ||
| 1.4 || 17. August 2020<ref name="blogkotlin14"/> | | 1.4 || 17. August 2020<ref name="blogkotlin14"/> | ||
|- | |||
| 1.4.20 || 23. November 2020<ref>[https://blog.jetbrains.com/kotlin/2020/11/kotlin-1-4-20-released/ Kotlin 1.4.20 Released – Kotlin Blog | JetBrains, November 23, 2020]</ref> | |||
|- | |||
| 1.4.30 || 3. Februar 2021<ref>[https://github.com/JetBrains/kotlin/releases/tag/v1.4.30 Release Kotlin 1.4.30 · JetBrains/kotlin · GitHub, Feb 3, 2021]</ref><ref>[https://blog.jetbrains.com/kotlin/2021/02/kotlin-1-4-30-released/ 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features | JetBrains Blog, February 4, 2021]</ref> | |||
|- | |||
| 1.5.0 || 5. Mai 2021<ref>[https://blog.jetbrains.com/kotlin/2021/05/kotlin-1-5-0-released/ Kotlin 1.5.0 – the First Big Release of 2021 | The Kotlin Blog, May 5, 2021]</ref> | |||
|- | |||
| 1.5.20 || 24. Juni 2021<ref>[https://blog.jetbrains.com/kotlin/2021/06/kotlin-1-5-20-released/ Kotlin 1.5.20 Released! | The Kotlin Blog, June 24, 2021]</ref> | |||
|- | |||
| 1.5.30 || 25. August 2021<ref>[https://blog.jetbrains.com/kotlin/2021/08/kotlin-1-5-30-released/ Kotlin 1.5.30 Is Now Available! | The Kotlin Blog, August 25, 2021]</ref> | |||
|- | |||
| 1.6 || 16. November 2021<ref>[https://blog.jetbrains.com/kotlin/2021/11/kotlin-1-6-0-is-released/ Kotlin 1.6.0 Released | The Kotlin Blog, November 16, 2021]</ref> | |||
|- | |||
| 1.6.20 || 4. April 2022<ref>[https://blog.jetbrains.com/kotlin/2022/04/kotlin-1-6-20-released/ Kotlin 1.6.20 Released | The Kotlin Blog, April 4, 2022]</ref> | |||
|- | |||
| 1.7.0 || 9. Juni 2022<ref>[https://blog.jetbrains.com/kotlin/2022/06/kotlin-1-7-0-released/ Kotlin 1.7.0 Released | The Kotlin Blog, June 9, 2022]</ref> | |||
|- | |||
| 1.8.0 || 12. Januar 2023<ref>[https://blog.jetbrains.com/kotlin/2023/01/kotlin-1-8-0-released/ Kotlin 1.8.0 Released | The Kotlin Blog, January 12, 2023]</ref> | |||
|- | |||
| 1.8.20 || 3. April 2023<ref>[https://blog.jetbrains.com/kotlin/2023/04/kotlin-1-8-20-released/ Kotlin 1.8.20 Released | The Kotlin Blog, April 25, 2023]</ref> | |||
|- | |||
| 1.9.0 || 6. Juli 2023<ref>[https://blog.jetbrains.com/kotlin/2023/07/kotlin-1-9-0-released/ Kotlin 1.9.0 Released | The Kotlin Blog, July 6, 2023]</ref> | |||
|- | |||
| 1.9.20 || 1. November 2023<ref>[https://blog.jetbrains.com/kotlin/2023/11/kotlin-1-9-20-released/ Kotlin 1.9.20 Released | The Kotlin Blog, November 1, 2023]</ref> | |||
|- | |||
| 2.0 || 23. Mai 2024<ref>[https://blog.jetbrains.com/kotlin/2024/05/celebrating-kotlin-2-0-fast-smart-and-multiplatform/ Celebrating Kotlin 2.0: Fast, Smart, and Multiplatform | The Kotlin Blog, May 23, 2024]</ref> <!-- In GitHub schon am 21. Mai 2024 --> | |||
|} | |} | ||
== Literatur == | == Literatur == | ||
* | *2018: ''Kotlin kompakt'', Thorsten Schleinzer, 42 Seiten, {{ISBN|978-1717768612}} <!-- 22. November 2018 --> | ||
*2019: ''Kotlin von Kopf bis Fuß: Eine Einführung in die Kotlin-Programmierung'', Dawn Griffiths und David Griffiths, 480 Seiten, O'Reilly, {{ISBN|978-3960091127}} <!-- 29. August 2019 --> | *2019: ''Kotlin von Kopf bis Fuß: Eine Einführung in die Kotlin-Programmierung'', Dawn Griffiths und David Griffiths, 480 Seiten, O'Reilly, {{ISBN|978-3960091127}} <!-- 29. August 2019 --> | ||
*2019: ''Kotlin: Einstieg und Praxis'', Karl Szwillus, 360 Seiten, mitp, {{ISBN|978-3958458536}} <!-- 30. November 2019 --> | *2019: ''Kotlin: Einstieg und Praxis'', Karl Szwillus, 360 Seiten, mitp, {{ISBN|978-3958458536}} <!-- 30. November 2019 --> | ||
<!-- 2020: ''Kotlin: Das umfassende Handbuch'', Michael Kofler, 804 Seiten, Rheinwerk Computing, {{ISBN|978-3836272773}} | *2020: ''Programmieren lernen mit Kotlin: Grundlagen, Objektorientierung und fortgeschrittene Konzepte'', Christian Kohls, Alexander Dobrynin und Florian Leonhard, 524 Seiten, Carl Hanser Verlag, {{ISBN|978-3446467026}} <!-- 7. September 2020 --> | ||
*2020: ''Kotlin: Das umfassende Handbuch'', Michael Kofler, 804 Seiten, Rheinwerk Computing, {{ISBN|978-3836272773}} <!-- 23. Oktober 2020 --> | |||
*2021: ''Einstieg in Kotlin: Apps entwickeln mit Android Studio'', Thomas Theis, 526 Seiten, Rheinwerk Computing, 2. Auflage, {{ISBN|978-3836285339}} <!-- 30. September 2021 --> | |||
*2022: ''Kotlin in Produktion: Vom Java- zum Kotlin-Entwickler'', Sven Ruppert, 250 Seiten, dpunkt.verlag, {{ISBN|978-3864907067}} <!-- 30. Juni 2022 --> | |||
== Weblinks == | == Weblinks == | ||
Zeile 85: | Zeile 120: | ||
*[https://blog.jetbrains.com/kotlin/ Kotlin Blog | Kotlin — programming language for the JVM by JetBrains] | *[https://blog.jetbrains.com/kotlin/ Kotlin Blog | Kotlin — programming language for the JVM by JetBrains] | ||
*{{Twitter|kotlin|Kotlin}} | *{{Twitter|kotlin|Kotlin}} | ||
== Quellen == | == Quellen == | ||
<references/> | <references/> | ||
{{Normdaten|TYP=s|GND=1136341129||LCCN=|NDL=|VIAF=|Wikidata=Q3816639}} | |||
{{SORTIERUNG:Kotlin}} | {{SORTIERUNG:Kotlin}} |
Aktuelle Version vom 31. Juli 2024, 08:05 Uhr
Kotlin | |
---|---|
Logo | |
Paradigmen | Objektorientierte Programmiersprache |
Erscheinungsjahr | 2016 |
Designer | JetBrains |
Entwickler | JetBrains und Open-Source-Entwickler |
Aktuelle Version | 2.0 (23. Mai 2024[1][2]) |
Typisierung | statisch, stark |
Beeinflusst von | Java, Scala |
Betriebssystem | Jedes mit einer JVM oder JavaScript-Interpreter |
Lizenz | Apache |
Website | kotlinlang.org |
Kotlin ist eine objektorientierte, statisch typisierte Programmiersprache[3] für die Betriebssysteme Android, iOS, Linux, Microsoft Windows, macOS sowie Webbrowser. Kotlin des tschechischen Unternehmens JetBrains ist Open Source, steht unter der Apache-Lizenz und ist mit Java kompatibel. Der Kotlin-Compiler kann Java-Bytecode ausgeben und der Java Kotlin-Code kann Java-Code aufrufen. Gegenüber Java zeichnet sich Kotlin durch eine gute Performance, Sicherheit und gut lesbare Syntax aus. Kotlin ist nach der gleichnamigen russischen Insel im Finnischen Meerbusen benannt.[4] Im russischen Sankt Petersburg hat das tschechische Unternehmen JetBrains mittlerweile den Hauptstandort für seine Entwicklungen.[5]
Semantik
"Hello, World!"-Beispiel
fun main(args : Array<String>) {
val scope = "World"
println("Hello, $scope!")
}
Geschichte
2011 bis 2017
Am 19. Juli 2011 hat JetBrains Kotlin auf der JVM Language Summit vorgestellt. Kotlin war da bereits fast ein Jahr in der Entwicklung.[6] Im Januar 2012 wählte das US-amerikanische Computermagazin Dr. Dobb’s Journal (DDJ) Kotlin zur Prgorammiersprache des Monats.[7]
Im Februar 2012 hat JetBrains den Quellcode von Kotlin als Open-Source-Software unter der Apache Licence 2 bereitgestellt. Die Sourcen stehen auf GitHub zur Verfügung.[5] Am 15. Februar 2016 wurde die Version 1.0 nach über fünf Jahren Entwicklung veröffentlicht.[4] Am 1. März 2017 folgte Version 1.1.[8] Kotlin 1.1 unterstützt erstmals das Kompilieren nach JavaScript und Koroutinen.[9] Mit Googles Wechsel 2017 von Eclipse zu IntellJ IDEA[10] wird auch offiziell Kotlin in Android O/Android Studio 3.0 unterstützt. Kotlin und IntelliJ IDEA stammen beide von JetBrains.[11] Auf der ersten hauseigenen KotlinConf in San Francisco gab Andrey Breslav Anfang November 2017 die Veröffentlichung des Release Candidate für Version 1.2 bekannt. Die wichtigste Neuerung dabei ist die Einführung von Multiplattform-Projekten. Das erlaubt es Entwicklern denselben Code für verschiedene Zielplattformen zu kompilieren. Zunächst wird die Java Virtual Machine (JVM) und JavaScript unterstützt, Kotlin/Native-Support ist geplant. Weiterhin unterstützt Kotlin/Native nun Apple iOS.[12] Version 1.2 wurde am 28. November 2017 veröffentlicht.[13]
2018 bis 2019
Am 17. April 2018 veröffentlichte Oracle die universelle virtuelle Maschine GraalVM 1.0. Diese unterstützt alle JVM-basierten Sprachen, darunter Java, Scala, Groovy und Kotlin, JavaScript einschließlich Node.js, LLVM-Bitcode und in experimenteller Form Ruby, R und Python.[14][15] In Kotlin 1.2.50 vom 14. Juni 2018 bekam der Compiler den Progressive-Modus, der Fehlerbehebungen und neue Deprecations direkt wirksam macht. Unter anderem wurde auch das Scripting verbessert. So ist es nun beispielsweise möglich, ein Skript in einem Jar zu definieren. Wird der Jar zu einem Compilation-Klassenpfad hinzugefügt, unterstützen Compiler und das IDEA-Plug-in die Skripte automatisch. Weiterhin können Entwickler nun eingegebene externe Variable zu einer Skriptkompilierung hinzufügen. Diese werden von Kotlin dann dann wie globale Variablen behandelt.[16][17] Mit Kotlin 1.2.60 vom 1. August 2018 können Entwickler nun in der ebenfalls von JetBrains stammenden Entwicklungsumgebung IntelliJ IDEA das integrierte Build-System nutzen und nicht mehr an Gradle übergeben.[18][19] Auf der KotlinConf in Amsterdam vom 3. bis zum 5. Oktober 2018 riefen JetBrains und Google gemeinsam die Kotlin Foundation ins Leben, die beide Unternehmen bereits auf der Google I/O 2017 angekündigt hatten. Die Foundation soll die Entwicklung der Programmiersprache fördern und sicherstellen, dass Kotlin freie Software bleibt. Sie verwaltet dabei die Markenrechte für das Projekt, besitzt aber nicht den Code und ernennt den führenden Sprachentwickler. Das bereits als RC veröffentlichte Kotlin 1.3 bringt unter anderem ein neues Modell für die Multiplattformprojekte mit. Koroutinen sind in 1.3 nicht mehr als experimentell gekennzeichnet. Kotlin/Native befindet sich mit 1.3 offiziell in der Betaphase.[20] Am 29. Oktober 2018 wurde Kotlin 1.3 veröffentlicht. Die Koroutinen gelten nun als Stablil. Die Erstellung von Cross-Platform-Projekten wurde weiter verbessert, gilt aber weiter als experimentell. Die neue Kotlin-Version führt das Konzept sogenannter Contracts ein, mit denen Funktionen dem Compiler mitteilen können, wie sie sich verhalten. Zu den weiteren nennenswerten sprachliche Ergänzungen gehören die experimentellen Inline-Klassen und die vier Variablentypen kotlin.UByte, kotlin.UShort, kotlin.UInt, kotlin.ULong für nicht vorzeichenbehaftete (unsigned) Werte. Die experimentellen Variablentypen ermöglichen Low-Level-Funktionen wie Byte-Manipulation.[21][22]
Am 23. Januar 2019 wurde Kotlin 1.3.20 veröffentlicht. Damit lassen sich über das Kotlin Gradle Plug-in Build Tasks innerhalb eines Projekts parallelisieren. Gradle Kotlin DSL wird für die Entwicklung plattformübergreifender Projekte unterstützt.[23][24] Seit Kotlin 1.3.30 vom 12. April 2019 wird Windows 32 (mingw_x86) als Target ebenfalls unterstützt. Anwender von Windows oder macOS können seit dieser Version ihre Kotlin/Native-Programme für die Plattformen Linux x86-64, arm32, Android und Raspberry PI kompilieren.[25] In Kotlin 1.3.40 vom 19. Juni 2019 sind hauptsächlich der experimentelle Support für NPM, Yarn und Webpack sowie ein neuer Algorithmus für die Typinferenz hinzugekommen.[26] In Kotlin 1.3.50 vom 22. August 2019 ist unter anderem eine neue API zum Messen von Zeiträumen hinzugekommen. Mithilfe dieser API werden Missverständnisse beziehungsweise Programmierfehler durch das Verwenden falscher Einheiten vermieden. Als Preview ist ein neuer Java-to-Kotlin-Konverter für IntelliJ IDEA dabei. Der Debugger verbessert nun das Zusammenspiel mit IntelliJ. Kotlin/Native 1.3.50 bringt unter anderem Erweiterungen bei der Anbindung an Frameworks unter iOS und macOS, Entwickler können mit dieser Version mit der IntelliJ IDEA Ultimate Edition nun Kotlin/Native-Code debuggen.[27] Das Cross-Plattform-Framework NativeScript unterstützt mit Version 6.1 vom 4. September 2019 erstmals Kotlin.[28]
ab 2020
In Kotlin 1.4 vom 17. August 2020 sind einen Projekt-Wizard für neue Kotlin-Projekte und ein Debugger für Koroutinen als wichtigste neue Funktionen hinzugekommen. Der Compiler bedient nun alle Zielplattform einheitlich. Über eine API lassen sich Compiler-Erweiterungen anbinden. Bei den sprachlichen Änderungen kam unter anderem die Umsetzung von SAM-Interfaces (Single Abstract Method) hinzu.[29][30] Am 31. August 2020 wurde die Alpha-Version des Software Development Kits (SDKs) Kotlin Multiplatform Mobile (KMM) für Android Studio veröffentlicht. Damit lassen Cross-Plattform-Applikationen für Android und iOS erstellen. Auf einer gemeinsamen Code-Basis lassen sich innerhalb der gleichen IDE (Integrated Development Environment) dann plattformspezifische Ergänzungen aufsetzen.[31][32] Kotlin 1.4.30 von 3. Februar 2021 bringt ein optional nutzbares neues JVM-Backend mit. Im Zusammenspiel mit Java lassen sich JVM-Namen für Aufrufe über Annotationen ändern. Inline Classes sind nun im Beta-Status. Diese lassen sich als Value Classes einsetzen.[33]
In Kotlin 1.5.0 vom 5. Mai 2021 sind wenig Neuerungen sondern viele Stabilisierungen zahlreicher in Kotlin 1.4.x eingeführter Sprachfeatures hinzugekommen.[34] In Kotlin 1.5.20 vom 24. Juni 2021 ist unter anderem die Anbindung an das Project Lombok sowie an JSpecify hinzugekommen. Project Lombok kümmert sich um das Generieren von Boilerplate-Code auf Bytecode-Ebene. JSpecify bietet Annotationen unter anderem für die Null-Safety. Für Kotlin/Native kann der Compiler nun KDoc-Dokumentationskommentare exportieren, um sie in Objective-C-Frameworks zu verwenden. Gradle steuert nun das Parallelisieren von Kotlin-Build-Tasks.[35] Die am 25. August 2021 veröffentlichte Version Kotlin 1.5.30 ist planmäßig die letzte 1.5.x Version. Die Version bringt einige für Kotlin 1.6 geplante Sprachfeatures als Preview mit und lässt sich nativ auf den M1-Prozessoren von Apple verwenden. Bis dahin war Rosetta zum Erstellen und Ausführen von Anwendungen auf Apple Silicon notwendig.[36] In Kotlin 1.6 vom 16. November 2021 sind nun vollständige when-Anweisungen und unterbrechende Funktionen als Elterntypen als stabil freigegeben. Die Umwandlung eines regulären zu einem unterbrechenden Funktionstypen ist darin ebenfalls stabil. Auch zahlreiche weitere Funktionen der Standardbibliothek wurden stabilisiert. Kotlin/JVM setzt ab der Version 1.6 wiederholbare Annotationen sprachübergreifend zu Java ein, das Repeatable Annotations kennt. In Kotlin/Native steht nun der neue Memory Manager zur Verfügung.[37] In Kotlin 1.6.20 vom 4. April 2022 sind mit Context Receivers und Definitely Non-Nullable Types zwei sprachliche Neuerungen in Vorbereitung auf Kotlin 1.7 hinzugekommen. Die Toolchain wurde in 1.6.20 um paralleles Kompilieren von Modulen für die JVM und einen inkrementellen Compiler für JavaScript erweitert. Seit dieser Version haben Multiplattformprojekte nun standardmäßig eine hierarchische Struktur, um Code zwischen ähnlichen Plattformen zu teilen.[38]
Mit Kotlin 1.7 vom 4. Mai 2022 änderte JetBrains die Terminologie und veröffentlichte davon zuerst eine Betaversion. In dieser Version ist unter anderem die Builder-Inferenz hinzugekommen, welche das Aufrufen generischer Builder-Funktionen erleichtert. Weiterhin sind einige Collection-Funktionen zurückgekommen und die Definitely Non-Nullable Types sind stabilisiert worden und nun standardmäßig aktiviert.[39][40] Am 9. Juni 2022 erschien dann 1.7.0. Darin ist die Alphaversion des neuen Kotlin/JVM-Compilers K2 enthalten. Kotlin unterstützt in Gradle nun das inkrementelle Kompilieren von Änderungen innerhalb abhängiger Module, die nicht in Kotlin geschrieben sind. Das ist mit dem automatisierten Build-Management kompatibel. Die Annotationen der Opt-in-Anforderungen sind nun stabil und die Non-nullable Types und die Builder-Inferenz wurde überarbeitet. Für Typargumente steht mit 1.7.0 der Underscore Operator bereit. Damit lässt sich ein Typargument automatisch ableiten, wenn andere Typen bereits festgelegt sind.[41]
In Kotlin 1.8.0 vom 12. Januar 2023 ist ein Compiler-Parameter hinzugekommen, der Optimierungen deaktiviert, um das Debuggen übersichtlicher zu gestalten. Weiterhin sind u. a. zwei experimentelle Funktionen hinzugekommen, um Verzeichnisse rekursiv zu löschen oder zu kopieren. Weggefallen sind das JVM-IR-Backend und die Unterstützung von JVM 1.6 = JDK 6 und JVM 1.7 = JDK 7. Die Standard-Libraries sind nun durchgängig für JDK 8 kompiliert. In Kotlin/Native für Anwendungen ohne JVM gab es Verbesserungen bei der Anbindung an Swift und Objective-C.[42] Am 3. April 2023 erschien Kotlin 1.8.20. Darin wurde der K2-Compiler als stabil gekennzeichnet. Als Zielplattform steht nun WebAssembly - zunächst als experimentell gekennzeichnet - direkt zur Verfügung. Sieben Plattformziele (wasm32, iosArm32, watchosX86, mingwX86, linuxArm32Hfp, linuxMips32, linuxMipsel32) für Kotlin/Native wurden in Kotlin 1.8.20 als deprecated gekennzeichnet. Weitere Neuerungen sind u. a. eine Vorschau des Serialisierungs-Plug-ins für den K2-Compiler und eine Anbindung an den JS-IR-Compiler für JavaScript.[43] Mit Kotlin 1.9.20 vom 1. November 2023 erreichte die plattformübergreifende Entwicklung dank Kotlin Multiplatform (KMP) nun den stabilen Status. Durch den stabilen Status erfolgt die Weiterentwicklung von KMP rückwärtskompatibel. Mit KMP lassen sich Anwendungen für Android, iOS, Windows, macOS, Linux und Webbrowsern mit einer gemeinsamen Codebasis erstellen. KMP setzt auf eine Mischung aus Cross-Plattform-Code und nativen Abschnitten für die einzelnen Systeme. Eine der Neuerungen in KMP ist eine Standardvorlage, um plattformübergreifende Projekte für das Build-Werkzeug Gradle zu definieren. Die WebAssembly-Anbindung ist in dieser Version weiterhin als experimentell gekennzeichnet. Der K2-Compiler hat nun auf allen Plattformen die Betaphase erreicht. Parallel zu Kotlin 1.9.20 erschien das UI-Framework Compose Multiplatform 1.5.10.[44]
Versionen (Auswahl)
Version | Datum |
---|---|
1.0 | 15. Februar 2016 |
1.1 | 1. März 2017 |
1.1.50 | 22. September 2017[45] |
1.2 | 28. November 2017[46] |
1.2.70 | 13. September 2018[47] |
1.3 | 29. Oktober 2018 |
1.3.20 | 23. Januar 2019 |
1.3.30 | 12. April 2019 |
1.3.40 | 19. Juni 2019 |
1.3.50 | 22. August 2019[48] |
1.4 | 17. August 2020[30] |
1.4.20 | 23. November 2020[49] |
1.4.30 | 3. Februar 2021[50][51] |
1.5.0 | 5. Mai 2021[52] |
1.5.20 | 24. Juni 2021[53] |
1.5.30 | 25. August 2021[54] |
1.6 | 16. November 2021[55] |
1.6.20 | 4. April 2022[56] |
1.7.0 | 9. Juni 2022[57] |
1.8.0 | 12. Januar 2023[58] |
1.8.20 | 3. April 2023[59] |
1.9.0 | 6. Juli 2023[60] |
1.9.20 | 1. November 2023[61] |
2.0 | 23. Mai 2024[62] |
Literatur
- 2018: Kotlin kompakt, Thorsten Schleinzer, 42 Seiten, ISBN 978-1717768612
- 2019: Kotlin von Kopf bis Fuß: Eine Einführung in die Kotlin-Programmierung, Dawn Griffiths und David Griffiths, 480 Seiten, O'Reilly, ISBN 978-3960091127
- 2019: Kotlin: Einstieg und Praxis, Karl Szwillus, 360 Seiten, mitp, ISBN 978-3958458536
- 2020: Programmieren lernen mit Kotlin: Grundlagen, Objektorientierung und fortgeschrittene Konzepte, Christian Kohls, Alexander Dobrynin und Florian Leonhard, 524 Seiten, Carl Hanser Verlag, ISBN 978-3446467026
- 2020: Kotlin: Das umfassende Handbuch, Michael Kofler, 804 Seiten, Rheinwerk Computing, ISBN 978-3836272773
- 2021: Einstieg in Kotlin: Apps entwickeln mit Android Studio, Thomas Theis, 526 Seiten, Rheinwerk Computing, 2. Auflage, ISBN 978-3836285339
- 2022: Kotlin in Produktion: Vom Java- zum Kotlin-Entwickler, Sven Ruppert, 250 Seiten, dpunkt.verlag, ISBN 978-3864907067
Weblinks
- https://kotlinlang.org/ Kotlin Programming Language
- Kotlin Blog | Kotlin — programming language for the JVM by JetBrains
- Kotlin bei X/Twitter Fehler beim Erstellen des Vorschaubildes:
Quellen
- ↑ Releases : The Kotlin Blog | The JetBrains Blog
- ↑ Releases · JetBrains/kotlin · GitHub
- ↑ Programmiersprachen: Kotlin profitiert von Android | heise Developer, 12.07.2018
- ↑ 4,0 4,1 Java-Herausforderer Kotlin erscheint in Version 1.0 | heise online, 15.02.2016
- ↑ 5,0 5,1 Java-Alternative Kotlin nun Open Source | heise online, 14.02.2012
- ↑ Hello World | Kotlin Blog, July 19, 2011
- ↑ Language of the Month: Kotlin | Dr Dobb's, January 20, 2012
- ↑ Kotlin 1.1 Released with JavaScript Support, Coroutines and more | Kotlin Blog, March 1, 2017
- ↑ JVM-Sprache: Kotlin 1.1 ist fertig | heise online, 02.03.2017
- ↑ Kommentar: Kotlin für Android – Googles fremde Lorbeeren | heise online, 19.05.2017
- ↑ Android Studio 3.0 hat Kotlin an Bord | heise online, 18.05.2017
- ↑ Programmiersprachen: Kotlin 1.2 RC ist freigegeben und Kotlin/Native unterstützt iOS | heise Developer, 03.11.2017
- ↑ Programmiersprachen: Kotlin 1.2 vollzieht den Spagat zwischen JVM und JavaScript | heise Developer, 29.11.2017
- ↑ Oracle veröffentlicht GraalVM 1.0 - Pro-Linux, 23. April 2018
- ↑ Announcing GraalVM: Run Programs Faster Anywhere | Oracle Developers Blog, April 17, 2018
- ↑ Kotlin 1.2.50 mit neuem Progressive-Modus für den Compiler | heise Developer, 15.06.2018
- ↑ Kotlin 1.2.50 is out! | Kotlin Blog, June 14, 2018
- ↑ Kotlin 1.2.60 vereinfacht den Umgang mit Multiplattformprojekten | heise Developer, 02.08.2018
- ↑ Kotlin 1.2.60 is out! | Kotlin Blog, August 1, 2018
- ↑ Programmiersprache: Eine Stiftung für die JVM-Sprache Kotlin | heise Developer, 05.10.2018
- ↑ Programmiersprache: Kotlin 1.3 stabilisiert die Koroutinen | heise online, 30.10.2018
- ↑ Kotlin 1.3 Released with Coroutines, Kotlin/Native Beta, and more | Kotlin Blog, October 29, 2018
- ↑ Kotlin 1.3.20 parallelisiert Gradle Tasks | heise online, 24.01.2019
- ↑ Kotlin 1.3.20 released | Kotlin Blog, January 23, 2019
- ↑ Kotlin 1.3.30 verspricht mehr Leistung beim Annotation Processing | heise online, 15.04.2019
- ↑ Programmiersprachen: Kotlin 1.3.40 liefert Erweiterungen für Kotlin/JS und überarbeitet Typinferenz | heise online, 21.06.2019
- ↑ Programmiersprache: Kotlin 1.3.50 kann Java-Code besser umwandeln | heise online, 23.08.2019
- ↑ NativeScript 6.1: Kotlin Support is here!, September 04, 2019
- ↑ Programmiersprache: Kotlin 1.4 erweitert die Toolchain und einige Sprachelemente | heise online, 18.08.20
- ↑ 30,0 30,1 Kotlin 1.4 Released with a Focus on Quality and Performance – Kotlin Blog | JetBrains, August 17, 2020
- ↑ Kotlin Multiplatform Mobile bringt Android und iOS unter einen Hut | heise online, 04.09.2020
- ↑ Kotlin Multiplatform Mobile Goes Alpha – Kotlin Blog | JetBrains, August 31, 2020
- ↑ Das Geheimnis der Wombat-Würfel | heise online, 05.02.2021
- ↑ Programmiersprache Kotlin 1.5: Stabilität an allen Ecken und Enden | heise online, 06.05.2021
- ↑ Programmiersprache: Kotlin 1.5.20 arbeitet mit Project Lombok zusammen | heise online, 25.06.2021
- ↑ Programmiersprache: Kotlin 1.5.30 bereitet gewünschte Sprachneuerungen vor | heise online, 26.08.2021
- ↑ Programmiersprache: Kotlin 1.6 versiegelt when-Anweisungen | heise online, 17.11.2021
- ↑ Programmiersprache Kotlin 1.6.20 kompiliert parallel und inkrementell | heise online, 05.04.2022
- ↑ Programmiersprache: Kotlin 1.7 Beta bringt min() und max() zurück | heise online, 06.05.2022
- ↑ Kotlin 1.7.0-Beta Released | The Kotlin Blog, May 4, 2022
- ↑ Programmiersprache: Kotlin 1.7 enthält Alphaversion des neuen K2-Compilers | heise online, 10.06.2022
- ↑ Programmiersprache Kotlin 1.8 schneidet alte Zöpfe ab und erweitert das Debuggen | heise online, 13.01.2023
- ↑ Programmiersprache Kotlin 1.8.20 bringt direkte Anbindung an WebAssembly | heise online, 05.04.2023
- ↑ Kotlin macht Ernst mit der plattformübergreifenden Programmierung | heise online, 03.11.2023
- ↑ Kotlin 1.1.50 is out | Kotlin Blog, September 22, 2017
- ↑ Kotlin 1.2 Released: Sharing Code between Platforms | Kotlin Blog
- ↑ Kotlin 1.2.70 is Out! | Kotlin Blog, September 13, 2018
- ↑ Kotlin 1.3.50 released | Kotlin Blog, August 22, 2019
- ↑ Kotlin 1.4.20 Released – Kotlin Blog | JetBrains, November 23, 2020
- ↑ Release Kotlin 1.4.30 · JetBrains/kotlin · GitHub, Feb 3, 2021
- ↑ 1.4.30 Is Released With a New JVM Backend and Language and Multiplatform Features | JetBrains Blog, February 4, 2021
- ↑ Kotlin 1.5.0 – the First Big Release of 2021 | The Kotlin Blog, May 5, 2021
- ↑ Kotlin 1.5.20 Released! | The Kotlin Blog, June 24, 2021
- ↑ Kotlin 1.5.30 Is Now Available! | The Kotlin Blog, August 25, 2021
- ↑ Kotlin 1.6.0 Released | The Kotlin Blog, November 16, 2021
- ↑ Kotlin 1.6.20 Released | The Kotlin Blog, April 4, 2022
- ↑ Kotlin 1.7.0 Released | The Kotlin Blog, June 9, 2022
- ↑ Kotlin 1.8.0 Released | The Kotlin Blog, January 12, 2023
- ↑ Kotlin 1.8.20 Released | The Kotlin Blog, April 25, 2023
- ↑ Kotlin 1.9.0 Released | The Kotlin Blog, July 6, 2023
- ↑ Kotlin 1.9.20 Released | The Kotlin Blog, November 1, 2023
- ↑ Celebrating Kotlin 2.0: Fast, Smart, and Multiplatform | The Kotlin Blog, May 23, 2024