Kotlin (Programmiersprache)
![]() | |
Paradigma | Multi-Paradigma: objektorientierter, funktional, Imperativ, Block strukturiert, deklarativ, generisch, reflektierend, gleichzeitig |
---|---|
Entworfen von | Jetbrains |
Entwickler | Jetbrains |
Erstmals erschienen | 22. Juli 2011 |
Stabile Version | 1.7.10[1] ![]() |
Disziplin tippen | Gefolgert, statisch, stark |
Plattform |
|
OS | Plattformübergreifend |
Lizenz | Apache -Lizenz 2.0 |
Dateiname -Erweiterungen | .KT, .KTS, .KTM |
Webseite | Kotlinlang |
Beeinflusst von | |
Kotlin (/ˈkɒtlɪn/)[2] ist ein plattformübergreifend, statisch typisiert, allgemeiner Zweck Programmiersprache mit Geben Sie Inferenz ein. Kotlin ist so konzipiert, dass er vollständig mit miteinander interoperiert wird Java, und die JVM Version von Kotlins Standardbibliothek abhängig von der Java -Klassenbibliothek,[3][Fehlgeschlagene Überprüfung] Typ -Inferenz erlaubt es jedoch zu Syntax prägnanter sein. Kotlin zielt hauptsächlich auf das JVM ab, kompiliert aber auch auf JavaScript (z. B. für Frontend -Webanwendungen verwendet Reagieren[4]) oder nativen Code über Llvm (z. B. für Native iOS Apps Sharing Geschäftslogik mit Android Apps).[5] Sprachentwicklungskosten werden von getragen Jetbrains, während die Kotlin Foundation die Kotlin -Marke schützt.[6]
Am 7. Mai 2019 kündigte Google an, dass die Kotlin -Programmiersprache nun ihre bevorzugte Sprache ist Android App -Entwickler.[7] Seit der Veröffentlichung von Android Studio 3.0 Im Oktober 2017 wurde Kotlin als Alternative zum Standard -Java -Compiler aufgenommen. Der Android Kotlin -Compiler erzeugt standardmäßig Java 8 -Bytecode (die in späterer JVM ausgeführt wird). Der Programmierer entscheiden sich jedoch für die Optimierung von Java 9 bis 18 bis 18 Jahre.[8] oder ermöglicht mehr Funktionen; hat bidirektional Aufzeichnungsklasse Die in Java 16 eingeführte Interoperabilitätsunterstützung für JVM, die als stabil als von Kotlin 1.5 gilt.
Kotlin hat Unterstützung für das Web; Durch Kompilieren von JavaScript (d. H. Kotlin/JS mit dem klassischen Back-End, wird seit Version 1.3 als stabil erklärt), während der neuere Kotlin/JS ((Ir-Basis) ist in der Beta ab Version 1.5.30. Kotlin/Native (für z.B. Apfel Silizium Unterstützung) wird seit Version 1.3 als Beta angesehen.[9][10]
Geschichte


Im Juli 2011, Jetbrains Enthüllte Projekt Kotlin, eine neue Sprache für die JVM, die seit einem Jahr entwickelt war.[11] Jetbrains leitete Dmitry Jemerov sagte, dass die meisten Sprachen nicht über die Suchfunktionen verfügten, mit Ausnahme Scala. Er zitierte jedoch den langsamen Zusammenstellung Zeit von Scala als Mangel.[11] Eines der erklärten Ziele von Kotlin ist es, so schnell wie Java zusammenzustellen. Im Februar 2012 hat JetBrains das Projekt unter dem geöffnet Apache 2 Lizenz.[12]
Der Name kommt von Kotlin Island, nahe St. Petersburg. Andrey Breslav erwähnte, dass das Team beschloss, es nach einer Insel zu nennen, genau wie Java nach der indonesischen Insel von benannt wurde Java[13] (Obwohl die Programmiersprache Java vielleicht eher nach dem Kaffee als nach der Insel benannt wurde).[14]
Jetbrains hofft, dass die neue Sprache fahren wird Intellij Idee Verkauf.[15]
Kotlin 1.0 wurde am 15. Februar 2016 veröffentlicht.[16] Dies gilt als die erste offiziell stabile Veröffentlichung, und JetBrains hat sich zu einer langfristigen Rückwärtskompatibilität verpflichtet, beginnend mit dieser Version.
Bei Google I/O 2017 kündigte Google erstklassige Unterstützung für Kotlin an Android.[17]
Kotlin 1.2 wurde am 28. November 2017 veröffentlicht.[18] Das Teilen von Code zwischen JVM- und JavaScript -Plattformen wurde zu dieser Version neu hinzugefügt (ab Version 1.4 ist eine Multiplattform -Programmierung von Version 1.4 ist eine Alpha Besonderheit[19] Verbessert von "experimentell"). EIN voller Stapel Demo wurde mit dem neuen Kotlin/JS -Gradle -Plugin gemacht.[20][21]
Kotlin 1.3 wurde am 29. Oktober 2018 veröffentlicht und brachte Coroutinen für asynchrone Programme ein.
Am 7. Mai 2019 kündigte Google an, dass die Kotlin -Programmiersprache jetzt die bevorzugte Sprache für Android -App -Entwickler ist.[7]
Kotlin 1.4 wurde im August 2020 mit z. Einige geringfügige Änderungen an der Unterstützung der Apple -Plattformen, d. H. Zu der Ziel c/Schnell Interop.[22]
Kotlin 1.5 wurde im Mai 2021 freigelassen.
Kotlin 1.6 wurde im November 2021 veröffentlicht.
Kotlin 1.7 wurde im Juni 2022 freigelassen, einschließlich der Alpha Version des neuen Kotlin K2 Compiler.[23]
Entwurf
Entwicklungsleiter Andrey Breslav hat gesagt, dass Kotlin eine industrielle Stärke sein soll objektorientierter Sprache und eine "bessere Sprache" als Java, aber immer noch vollständig mit Java -Code interoperabel sein, sodass Unternehmen eine schrittweise Migration von Java nach Kotlin durchführen können.[24]
Semikolons sind optional als Aussage Terminator; In den meisten Fällen a Neue Zeile ist ausreichend für die Compiler zu schließen, dass die Aussage beendet ist.[25]
Kotlin Variable Erklärungen und Parameterlisten habe den Datentyp kommen nach dem variablen Namen (und mit a Doppelpunkt Separator), ähnlich wie Ada, BASIC, Pascal, Typoskript und Rost. Dies führt laut einem Artikel von Roman Elizarov, dem aktuellen Projektleiter, zu einer Ausrichtung der variablen Namen und ist für die Augen angenehmer, insbesondere wenn einige variable Erklärungen in Folge vorhanden sind und ein oder mehrere der Typen für Typinferenz oder für Typinferenz zu komplex sind oder zu komplex sind muss für menschliche Leser explizit erklärt werden.[26][27]
Variablen in Kotlin können schreibgeschützt sein, deklariert mit dem val Schlüsselwort, oder veränderlich, deklariert mit dem var Stichwort.[28]
Klassenmitglieder sind standardmäßig öffentlich und Klassen selbst sind selbst Finale Standardmäßig ist das Erstellen einer abgeleiteten Klasse deaktiviert, es sei denn, die Basisklasse wird mit dem deklariert offen Stichwort.
In Ergänzung zu Klassen und Mitgliedsfunktionen (die Methoden entsprechen) der objektorientierten Programmierung unterstützt auch Kotlin auch Verfahrensprogrammierung mit Hilfe von Funktionen.[29] Kotlin -Funktionen und Konstrukteure unterstützen Standardargumente, Argument der variablen Länge Listen, Benannte Argumente und Überlastung durch einzigartige Signatur. Klassenmitgliedfunktionen sind virtuell, d. H. Auf der Grundlage des Laufzeittyps des Objekts, das sie aufgerufen werden, versandt.
Kotlin 1.3 Support für Verträge.[30] die für die Standardbibliothekserklärungen stabil sind, aber immer noch für benutzerdefinierte Erklärungen experimentieren. Verträge sind inspiriert von Eiffel Entwurf durch Vertrag[31] Programmierparadigma.
Laut Kotlin -Entwicklern können Sie anrufen JavaScript Code von Kotlin, z. Schreiben Sie vollständige Typ-Safe Reagieren Anwendungen oder schreiben und pflegen Sie die Webanwendungen mit Full-Stack-Validierungslogik mit dem Frontend, oder Sie können "Bibliotheken aus Ihrem Kotlin-Code generieren, die als Module aus jeder in JavaScript oder geschriebenen Codebasis konsumiert werden können Typoskript".[32]
Syntax
Prozessualer Programmierstil
Kotlin entspannt Javas Beschränkung, zuzulassen statisch Methoden und Variablen existieren nur innerhalb eines Klassenkörpers. Statische Objekte und Funktionen können auf der oberen Ebene des Pakets definiert werden, ohne dass ein redundanter Klassenniveau erforderlich ist. Für die Kompatibilität mit Java bietet Kotlin a JVMNAME
Annotation, die einen Klassennamen angibt, der verwendet wird, wenn das Paket von einem Java -Projekt angezeigt wird. Zum Beispiel, @File: JVMNAME ("JavaclassName")
.
Haupteintrittspunkt
Wie in C, C ++, C#, Java und gehen, das Einstiegspunkt zu einem Kotlin Programm ist eine Funktion namens "Main", die ein Array mit einem beliebigen Übergeben übergeben werden kann Befehlszeile Argumente. Dies ist optional, da Kotlin 1.3.[33] Perl, Php und Unix Shell Stil String -Interpolation wird unterstützt. Geben Sie Inferenz ein wird auch unterstützt.
// Hallo Welt! Beispiel Spaß hauptsächlich() { val Umfang = "Welt" println("Hallo, $Umfang! ") } Spaß hauptsächlich(Args: Array<Saite>) { zum (arg in Args) println(arg) }
Erweiterungsfunktionen
Ähnlich wie bei C#ermöglicht Kotlin eine Erweiterungsfunktion zu einer Klasse ohne die Formalitäten der Erstellung einer abgeleiteten Klasse mit neuen Funktionen. Eine Erweiterungsfunktion hat Zugriff auf die gesamte öffentliche Schnittstelle einer Klasse, mit der eine neue Funktionschnittstelle zu einer Zielklasse erstellt werden kann. Eine Erweiterungsfunktion erscheint genau wie eine Funktion der Klasse und wird in der Code -Abschluss -Inspektion von Klassenfunktionen angezeigt. Zum Beispiel:
Paket MyStringxtensionen Spaß Saite.lastchar(): Verkohlen = erhalten(Länge - 1) >>> println("Kotlin".lastchar())
Durch Platzieren des vorhergehenden Code in der oberen Ebene eines Pakets wird die String-Klasse um a erweitert, um a zu enthalten lastChar
Funktion, die nicht in der ursprünglichen Definition der String -Klasse enthalten war.
// Overloading '+' Operator mit einer Erweiterungsfunktion Operator Spaß Punkt.Plus(Sonstiges: Punkt): Punkt { Rückkehr Punkt(x + Sonstiges.x, y + Sonstiges.y) } >>> val P1 = Punkt(10, 20) >>> val p2 = Punkt(30, 40) >>> println(P1 + p2) Punkt(x=40, y=60)
Argumente mit Spread Operator auspacken
Ähnlich wie bei Python packt der Spread-Operator Stern (*) den Inhalt eines Arrays als von Kommas getrennte Argumente für eine Funktion aus:
Spaß hauptsächlich(Args: Array<Saite>) { val aufführen = Liste von("Args:", *Args) println(aufführen) }
Erklärungen zerstören
Erklärungen zerstören Zersetzen Sie ein Objekt gleichzeitig in mehrere Variablen, z. Ein 2D -Koordinatenobjekt könnte sein zerstört in zwei Ganzzahlen, x und y.
Zum Beispiel die Map.Entry
Das Objekt unterstützt Destructuring, um den Zugriff auf seine Schlüssel- und Wertfelder zu vereinfachen:
zum ((Schlüssel, Wert) in Karte) println("$Schlüssel: $Wert")
Verschachtelte Funktionen
Mit Kotlin können lokale Funktionen in anderen Funktionen oder Methoden deklariert werden.
Klasse Benutzer(val Ich würde: Int, val Name: Saite, val die Anschrift: Saite) Spaß SaveUsertOdb(Benutzer: Benutzer) { Spaß bestätigen(Benutzer: Benutzer, Wert: Saite, Feldname: Saite) { benötigen(Wert.ist nicht leer()) { "Benutzer kann nicht retten $ {Benutzer.Ich würde}: leer $Feldname" } } bestätigen(Benutzer, Benutzer.Name, "Name") bestätigen(Benutzer, Benutzer.die Anschrift, "Adresse") // Benutzer in der Datenbank speichern ... }
Die Klassen sind standardmäßig endgültig
In Kotlin muss die Basisklasse explizit als "offen" markiert werden, um eine neue Klasse von einem Basisklassen -Typ abzuleiten. Dies steht im Gegensatz zu den meisten objektorientierten Sprachen wie Java, in denen die Klassen standardmäßig geöffnet sind.
Beispiel für eine Basisklasse, die offen ist, eine neue Unterklasse davon abzuleiten.
// Öffnen in der Klasse bedeutet, dass diese Klasse abgeleitete Klassen erlaubt offen Klasse Megabutton { // no-open auf einer Funktion bedeutet das // Polymorpisches Verhalten deaktiviert, wenn die Funktion in der abgeleiteten Klasse überschrieben wurde Spaß deaktivieren() { ... } // Öffnen Sie eine Funktion, bedeutet das // polymorphes Verhalten zulässig, wenn die Funktion in der abgeleiteten Klasse überschrieben ist offen Spaß animieren() { ... } } Klasse Gigabutton: Megabutton() { // Explizite Verwendung des Schlüsselworts überschrieben, das zum Überschreiben einer Funktion in der abgeleiteten Klasse erforderlich ist überschreiben Spaß animieren() { println("Giga -Klick!") } }
Abstrakte Klassen sind standardmäßig geöffnet
Abstrakte Klassen Definieren Sie abstrakte oder "reine virtuelle" Platzhalterfunktionen, die in einer abgeleiteten Klasse definiert werden. Abstrakte Klassen sind standardmäßig geöffnet.
// Hier ist kein offenes Schlüsselwort erforderlich, es ist standardmäßig bereits geöffnet, es ist bereits geöffnet abstrakt Klasse Animiert { // Diese virtuelle Funktion ist ebenfalls standardmäßig bereits geöffnet abstrakt Spaß animieren() offen Spaß Stopanimating() { } Spaß Animatetwice() { } }
Die Klassen sind standardmäßig öffentlich
Kotlin stellt die folgenden Schlüsselwörter bereit, um die Sichtbarkeit für die Erklärung auf höchster Ebene wie Klassen und für Klassenmitglieder einzuschränken: Öffentlichkeit
, intern
, geschützt
, und Privatgelände
.
Bei Antrag auf ein Klassenmitglied:
Stichwort | Sichtweite |
---|---|
Öffentlichkeit (Ursprünglich) | Überall, überallhin, allerorts |
intern | Innerhalb eines Moduls |
geschützt | Innerhalb von Unterklassen |
Privatgelände | Innerhalb einer Klasse |
Bei einer Deklaration auf der obersten Ebene:
Stichwort | Sichtweite |
---|---|
Öffentlichkeit (Ursprünglich) | Überall, überallhin, allerorts |
intern | Innerhalb eines Moduls |
Privatgelände | Innerhalb einer Datei |
Beispiel:
// Klasse ist nur für das aktuelle Modul sichtbar intern offen Klasse TalkativeButton{ // Methode ist nur für die aktuelle Klasse sichtbar Privatgelände Spaß Schrei() = println("Hey!") // Methode ist für die aktuellen Klassen- und abgeleiteten Klassen sichtbar geschützt Spaß flüstern() = println("Lass uns reden!") } intern Klasse Mytalkativbutton: TalkativeButton() { Spaß ausstatten() = super.flüstern() } Mytalkativbutton().ausstatten()
Primärkonstruktor vs. Sekundärkonstruktoren
Kotlin unterstützt die Spezifikation eines "Primärkonstruktors" als Teil der Klassendefinition selbst, die aus einer Argumentliste besteht, die dem Klassennamen folgt. Diese Argumentliste unterstützt eine erweiterte Syntax auf Kotlins Standardfunktionsargumentlisten, die die Erklärung der Klasseneigenschaften im primären Konstruktor ermöglicht, einschließlich Sichtbarkeit, Erweiterbarkeit und Mutability -Attributen. Bei der Definition einer Unterklasse können Eigenschaften in Super-Interfaces und Superklassen im primären Konstruktor überschrieben werden.
// Beispiel der Klasse unter Verwendung der primären Konstruktorsyntax // (nur ein für diese Klasse benötigter Konstruktor) offen Klasse Basiser(offen var abgemeldet: Boolesche) offen Klasse Poweruser(geschützt val Spitzname: Saite, Finale überschreiben var abgemeldet: Boolesche = Stimmt):Basiser(abgemeldet) { }
In Fällen, in denen mehr als ein Konstruktor für eine Klasse benötigt wird, kann ein allgemeinerer Konstruktor verwendet werden Sekundärkonstruktorsyntax Das ähnelt stark der Konstruktorsyntax, die in den meisten objektorientierten Sprachen wie C ++, C#und Java verwendet wird.
// Beispiel der Klasse unter Verwendung der sekundären Konstruktorsyntax // (mehr als ein für diese Klasse benötigter Konstruktor) Klasse Kontext Klasse AttributeSet offen Klasse Aussicht(CTX:Kontext) { Konstrukteur(CTX: Kontext, Attr: AttributeSet): Dies(CTX) } Klasse MyButton : Aussicht { // Konstruktor #1 Konstrukteur(CTX: Kontext) : super(CTX) { } // Konstruktor #2 Konstrukteur(CTX: Kontext, Attr: AttributeSet) : super(CTX, Attr) { // ... } }
Versiegelte Klassen
Die versiegelten Klassen und Schnittstellen beschränken die Subklassenhierarchien und bedeutet mehr Kontrolle über die Erbschaftshierarchie.
Erklärung der versiegelten Schnittstelle und Klasse:
versiegelt Schnittstelle Expr versiegelt Klasse Arbeit
Alle Unterklassen der versiegelten Klasse sind zur Kompilierungszeit definiert. Nach der Zusammenstellung des Moduls mit der versiegelten Klasse können keine neuen Unterklassen hinzugefügt werden. Beispielsweise kann eine versiegelte Klasse in einer kompilierten JAR -Datei nicht unterklassifiziert werden.
versiegelt Klasse Fahrzeug Daten Klasse Auto(val Markenname: Saite, val Eigentümer: Saite, val Farbe: Saite): Fahrzeug() Klasse Fahrrad(val Markenname: Saite, val Eigentümer: Saite, val Farbe: Saite): Fahrzeug() Klasse Traktor(val Markenname: Saite, val Eigentümer: Saite, val Farbe: Saite): Fahrzeug() val Kiacar = Auto("Kia", "John", "Blau") val Hyundaicar = Auto("Hyundai", "Britto", "Grün")
Datenklassen
Kotlins Datenklasse
Konstrukt definiert Klassen, deren Hauptzweck besteht, Daten zu speichern. Dieses Konstrukt ähnelt den normalen Klassen, mit der Ausnahme der Schlüsselfunktionen gleich
, tostring
, und Hash-Code
werden automatisch aus den Klasseneigenschaften generiert. In Java wird erwartet, dass solche Klassen eine Standardform von Funktionen wie diese bieten. Datenklassen sind nicht erforderlich, um Methoden zu deklarieren, obwohl jeder mindestens eine Eigenschaft haben muss. Eine Datenklasse wird häufig ohne Körper geschrieben, obwohl es möglich ist, einer Datenklasse Methoden oder sekundäre Konstrukteure zu geben, die für eine andere Klasse gültig sind. Das Daten
Schlüsselwort wird vor dem verwendet Klasse
Schlüsselwort zum Definieren einer Datenklasse.[34]
// Datenklasse mit Parametern und deren optionale Standardwerte Daten Klasse Buch(val Name: Saite = "" ", val Preis: Int = 0) Spaß hauptsächlich(Args: Array<Saite>) { // Erstellen Sie ein Datenklassenobjekt wie jedes andere Klassenobjekt var Buch 1 = Buch("Kotlin -Programmierung", 250) println(Buch 1) // Ausgabe: Buch (Name = Kotlin -Programmierung, Preis = 250) }
KOTLIN Interactive Shell
$ kotlinc-jvm Typ: Hilfe für Hilfe; : Kündigen Sie zum Beenden >>> 2 + 2 4 >>> println("Hallo Welt!") Hallo Welt!
Kotlin als Skriptsprache
Kotlin kann auch als Skriptsprache verwendet werden. Ein Skript ist eine Kotlin -Quelldatei (.KTS) mit ausführbarer Ebene.
// list_folders.KTS importieren java.io.file val Ordner = Datei(Args[0]).Listfiles { Datei -> Datei.isdirectory() } Ordner?.für jeden(::println)
Skripte können durchgeführt werden, indem Sie das übergeben -Skript
Option und die entsprechende Skriptdatei an den Compiler.
$ kotlinc -cript list_Folders.KTS "path_to_folder_to_inspect"
Nullsicherheit
Kotlin unterscheidet dazwischen Nullbar und nicht nullbare Datentypen. Alle nullbaren Objekte müssen mit einem "?" Postfix nach dem Namen Typ. Vorgänge für nullbare Objekte benötigen spezielle Sorgfalt von Entwicklern: Null-Check muss durchgeführt werden, bevor der Wert verwendet wird. Kotlin bietet Null-Safe-Betreibern, um Entwicklern zu helfen:
- ?. (Sicherer Navigationsbetreiber) kann verwendet werden, um sicher auf eine Methode oder Eigenschaft eines möglicherweise Null -Objekts zuzugreifen. Wenn das Objekt null ist, wird die Methode nicht aufgerufen und der Ausdruck bewertet NULL.
- ?: (Null -Koalescing -Operator) oft als die bezeichnet Elvis -Betreiber:
Spaß sag Hallo(kann sein: String?, endgültig: Int) { // Verwendung des Elvis -Operators val Name: Saite = kann sein ?: "Fremder" println("Hallo $Name") }
Ein Beispiel für die Verwendung des sicheren Navigationsoperators:
// kehrt null zurück, wenn ... // - foo () gibt NULL zurück, // - oder wenn foo () nicht null ist, aber bar () kehrt null zurück, // - oder wenn foo () und bar () nicht null sind, aber baz () gibt null zurück. // umgekehrt ist der Rückgabewert nicht null, wenn und nur wenn foo (), bar () und baz () nicht null sind Foo()?.Bar()?.Baz()
Lambdas
Kotlin unterstützt Unterstützung für Funktionen höherer Ordnung und Anonyme Funktionen oder Lambdas.[35]
// Die folgende Funktion nimmt eine Lambda, f, und führt f die Zeichenfolge "Lambda" aus, // beachten Spaß Executelambda(f: (Saite) -> Einheit) { f("Lambda") }
Lambdas werden mit Klammern deklariert, {} . Wenn ein Lambda Parameter einnimmt, werden sie innerhalb der Klammern deklariert und gefolgt von der -> Operator.
// Die folgende Anweisung definiert eine Lambda, die einen einzelnen Parameter nimmt und an die Println -Funktion weitergeht val l = { c : Irgendein? -> println(c) } // lambdas ohne Parameter dürfen einfach mit {} definiert werden val L2 = { drucken("Keine Parameter") }
Komplexes Beispiel "Hallo Welt"
Spaß hauptsächlich(Args: Array<Saite>) { grüßen { zu.Platz }.drucken() } // Inline-Funktionen höherer Ordnung in der Reihe Spaß grüßen(s: () -> Saite) : Saite = Gruß und ein anderer s() // Infixfunktionen, Erweiterungen, Typinferenz, Nullable -Typen, // Lambda -Ausdrücke, bezeichnet dies, Elvis Operator (? :) :) Infix Spaß Saite.und ein anderer(Sonstiges : Irgendein?) = Buildstring() { anhängen(Dies@und ein anderer); anhängen("" "); anhängen(Sonstiges ?: "" ") } // unveränderliche Typen, delegierte Eigenschaften, faule Initialisierung, Stringvorlagen val Gruß durch faul { val Doppel: Saite = "ll"; "er$ {Doppel}Ö" } // Versiegelte Klassen, Begleitobjekte versiegelt Klasse zu { Begleiter Objekt { val Platz = "Welt"} } // Erweiterungen, Einheit Spaß Saite.drucken() = println(Dies)
Werkzeug
- Intellij Idee hat Plug-in-Unterstützung für Kotlin.[36] Intellij IDEA 15 war die erste Version, die das Kotlin -Plugin im Intellij -Installateur bündelte und Kotlin -Unterstützung für den Box bietet.[37]
- Jetbrains bietet auch ein Plugin für Finsternis.[38][39]
- Die Integration mit gemeinsamen Java -Build -Tools wird unterstützt, einschließlich Apache Maven,[40] Apache Ant,[41] und Gradle.[42]
- Android Studio (Basierend auf Intellij IDEA) hat offizielle Unterstützung für Kotlin, ab Android Studio 3.[43]
- EMACs hat einen Kotlin -Modus in seinem MelPA -Paket -Repository.
- Vim Hat ein Plugin auf GitHub gewartet.[44]
- JSON2KOTLIN erzeugt Pojo Style Native Kotlin Code für Web -Service -Antwort -Mapping.
Anwendungen
Als Kotlin als offizielle Android -Entwicklungssprache bei angekündigt wurde Google I/O Im Mai 2017 wurde es neben Java und C ++ die dritte Sprache, die für Android vollständig unterstützt wurde.[45] Ab 2020 wird Kotlin immer noch am häufigsten für Android verwendet. Google schätzt, dass 70% der Top 1000 -Apps im Play Store in Kotlin geschrieben sind. Google selbst hat 60 Apps in Kotlin geschrieben, einschließlich Karten und Laufwerk. Viele Android -Apps wie Googles Zuhause werden derzeit nach Kotlin migriert und verwenden daher sowohl Kotlin als auch Java. Kotlin auf Android wird für seine vorteilhaft angesehen Null-Zeiger-Sicherheit sowie für seine Funktionen, die für kürzere, lesbarere Code sorgen.[46]
Zusätzlich zu seiner herausragenden Verwendung bei Android gewinnt Kotlin in der serverseitigen Entwicklung an Traktion. Das Federgerüst Offiziell fügte die Kotlin -Unterstützung mit Version 5 am 4. Januar 2017 offiziell hinzu.[47] Um Kotlin weiter zu unterstützen, hat Spring seine gesamte Dokumentation in Kotlin übersetzt und für viele kotlinspezifische Funktionen wie Coroutinen integriert.[48] Zusätzlich zum Frühjahr hat JetBrains ein Kotlin-First-Framework namens KTOR zum Erstellen von Webanwendungen hergestellt.[49]
Im Jahr 2020 fanden Jetbrains in einer Umfrage unter Entwicklern, die Kotlin verwenden, dass 56% Kotlin für mobile Apps verwendeten, während 47% es für ein Web-Back-End verwendeten. Etwas mehr als ein Drittel aller Kotlin -Entwickler sagten, dass sie aus einer anderen Sprache nach Kotlin wandern. Die meisten Kotlin -Benutzer zielen auf Android (oder anderweitig auf der JVM) ab, wobei nur 6% kotlin nativ waren.[50]
Annahme
Im Jahr 2018 war Kotlin die am schnellsten wachsende Sprache auf Github mit 2,6 -mal mehr Entwicklern als 2017.[51] Laut der Survey 2020 Stack Overflow Developer -Umfrage ist es die viertliebste Programmiersprache.[52]
Kotlin wurde außerdem für 2019 mit dem O'Reilly Open Source Software Conference Breakout Award ausgezeichnet.[53]
Viele Unternehmen/Organisationen haben Kotlin für die Backend -Entwicklung eingesetzt:
- Google[54]
- Norwegische Steuerverwaltung[55]
- Gradle[56]
- Amazonas[57]
- Bargeld App[58]
- Jetbrains[59]
- Fluss[60]
- Allegro[61]
- OLX[62]
- Shazam[63]
- Entscheidend[64]
- Raketenreisen[65]
- Meshcloud[66]
- Zalando[67]
Einige Unternehmen/Organisationen haben Kotlin für die Webentwicklung verwendet:
Eine Reihe von Unternehmen hat öffentlich angegeben, dass sie Kotlin benutzten:
- Tropfstat[72]
- Basislager[73]
- Pinterest[74]
- Coursera[75]
- Netflix[76]
- Uber[77]
- Bargeld App[78]
- Trello[79]
- Duolingo[80]
- Corda, ein verteiltes Hauptbuch, das von einem Konsortium bekannter Banken entwickelt wurde (wie z. Goldman Sachs, Wells Fargo, JP Morgan, Deutsche Bank, UBS, HSBC, BNP Paribas, Societe Generale), hat über 90% Kotlin -Code in seiner Codebasis.[81]
Siehe auch
Verweise
- Dieser Artikel enthält Zitate aus Kotlin -Tutorials, die unter einer Apache 2.0 -Lizenz veröffentlicht werden.
- ^ https://github.com/jetbrains/kotlin/releases/tag/v1.7.10; Veröffentlichungsdatum: 7. Juli 2022; Abgerufen: 17. Juli 2022.
- ^ "Was ist die richtige englische Aussprache von Kotlin?". 16. Oktober 2019. Abgerufen 9. November 2019.
- ^ "Kotlin-Stdlib". kotlinlang.org. Jetbrains. Abgerufen 20. April 2018.
- ^ "Kotlin für JavaScript - Kotlin -Programmiersprache". Kotlin. Abgerufen 20. August 2020.
- ^ "Kotlin für plattformübergreifende mobile Entwicklung". Jetbrains: Entwicklerwerkzeuge für Profis und Teams. Abgerufen 20. August 2020.
- ^ "Kotlin Foundation - Kotlin -Programmiersprache". Kotlin.
- ^ a b "Kotlin ist jetzt die bevorzugte Sprache von Google für die Entwicklung von Android App". Techcrunch. Abgerufen 8. Mai 2019.
- ^ "Kotlin FAQ". Abgerufen 16. Juli 2022.
Mit Kotlin können Sie die Version von JVM für die Ausführung auswählen. Standardmäßig erzeugt der Kotlin/JVM -Compiler Java 8 -kompatible Bytecode. Wenn Sie Optimierungen verwenden möchten, die in neueren Versionen von Java verfügbar sind, können Sie die Ziel -Java -Version von 9 bis 18 ausdrücklich angeben. Beachten Sie, dass in diesem Fall der resultierende Bytecode möglicherweise nicht auf niedrigeren Versionen ausgeführt wird.
- ^ "Stabilität der Kotlin -Komponenten". Kotlin. 21. Mai 2021. Abgerufen 29. Juli 2021.
- ^ "Kotlin 1.5.0 - Die erste große Veröffentlichung von 2021". Kotlin. 4. Mai 2021. Abgerufen 29. Juli 2021.
- ^ a b Krill, Paul (22. Juli 2011). "Jetbrains vorlegt JVM Language Kotlin". InfoWorld. Archiviert Aus dem Original am 7. September 2019. Abgerufen 2. Februar 2014.
- ^ Waters, John (22. Februar 2012). "Kotlin geht Open Source". Adtmag.com. 1105 Enterprise Computing Group. Archiviert Aus dem Original am 18. Februar 2014. Abgerufen 2. Februar 2014.
- ^ Mobius (8. Januar 2015), Андрей бреслав - Kotlin дustres Android: коротко и яroh, abgerufen 28. Mai 2017
- ^ Kieron Murphy (4. Oktober 1996). "Warum haben sie sich entschieden, es Java zu nennen?". JavaRld. Archiviert Aus dem Original am 15. März 2019. Abgerufen 14. Oktober 2017.
- ^ "Warum Jetbrains Kotlin braucht".
Wir erwarten, dass Kotlin den Verkauf der Intellij -Idee vorantreibt
- ^ "Kotlin 1.0 veröffentlicht: Pragmatische Sprache für JVM und Android | Kotlin Blog". Blog.jetbrains.com. 15. Februar 2016. Abgerufen 11. April 2017.
- ^ Shafirov, Maxim (17. Mai 2017). "Kotlin auf Android. Jetzt offiziell".
Heute kündigte das Android-Team im Google I/O-Keynote erstklassige Unterstützung für Kotlin an.
- ^ "Kotlin 1.2 Veröffentlicht: Code zwischen Plattformen | Kotlin Blog". blog.jetbrains.com. 28. November 2017.
- ^ "Multiplattform -Projekte - Kotlin -Programmiersprache". Kotlin. Abgerufen 20. August 2020.
Das Arbeiten auf allen Plattformen ist ein explizites Ziel für Kotlin, aber wir sehen es als eine Prämisse für ein viel wichtigeres Ziel: Code zwischen Plattformen. Mit Unterstützung von JVM, Android, JavaScript, iOS, Linux, Windows, Mac und sogar eingebetteten Systemen wie STM32 kann Kotlin alle Komponenten einer modernen Anwendung verarbeiten.
- ^ "Kotlin/Kotlin-Full-Stack-Anwendung-Demo". Kotlin. 3. April 2020. Abgerufen 4. April 2020.
- ^ "Kotlin Full Stack App Demo: Aktualisieren Sie alle Versionen mit der Arbeit mit 1.3.70 Release". yotrack.jetbrains.com. Abgerufen 4. April 2020.
- ^ "Was ist neu in Kotlin 1.4 - Kotlin -Programmiersprache". Kotlin. Abgerufen 20. August 2020.
In 1.4.0 ändern wir die aus Kotlin erzeugte schnelle API in Bezug auf die Art und Weise, wie Ausnahmen übersetzt werden.
- ^ "Was ist neu in Kotlin 1.7.0 | Kotlin". Kotlin Hilfe. Abgerufen 20. Juni 2022.
- ^ "JVM Languages Report erweiterte Interview mit dem Kotlin -Schöpfer Andrey Breslav". Zeroturnaround.com. 22. April 2013. Abgerufen 2. Februar 2014.
- ^ "Semikolons". jetbrains.com. Abgerufen 8. Februar 2014.
- ^ "Typen bewegen sich nach rechts". Mittel. Mittel. 16. Juli 2020. Abgerufen 6. November 2021.
- ^ "Roman Elizarov ist die neue Projektleiterin für Kotlin". Der Kotlin -Blog. Jetbrains. Abgerufen 7. November 2021.
- ^ "Grundlegende Syntax". Kotlin. Jetbrains. Abgerufen 19. Januar 2018.
- ^ "Funktionen". jetbrains.com. Abgerufen 8. Februar 2014.
- ^ "Was ist neu in Kotlin 1.3 - Kotlin -Programmiersprache". Kotlin. Abgerufen 4. April 2020.
- ^ "Entwurf nach Vertragsdesign (DBC) Konstruktionsüberlegungen". Kotlin -Diskussionen. 16. August 2012. Abgerufen 4. April 2020.
Implementieren Sie die vollständige Semantik von Eiffel DBC und verbessern Sie sie.
- ^ "Kotlin für JavaScript | Kotlin". Kotlin Hilfe. 21. Januar 2021. Abgerufen 19. März 2021.
- ^ "Kotlin -Beispiele: Kotlin -Programmierung mit gutem Beispielsweise lernen".
- ^ "Einführung in Datenklassen in Kotlin".
- ^ "Funktionen höherer Ordnung und Lambdas". Kotlin. Jetbrains. Abgerufen 19. Januar 2018.
- ^ "Kotlin :: JetBrains Plugin Repository". Plugins.jetbrains.com. 31. März 2017. Abgerufen 11. April 2017.
- ^ "Was ist neu in Intellij IDEA 2017.1". Jetbrains.com. Abgerufen 11. April 2017.
- ^ "Erste Schritte mit Eclipse Neon - Kotlin -Programmiersprache". Kotlinlang.org. 10. November 2016. Abgerufen 11. April 2017.
- ^ "JetBrains/Kotlin-Eclipse: Kotlin-Plugin für Eclipse". Github. Abgerufen 11. April 2017.
- ^ "Verwenden von Maven - Kotlin -Programmiersprache". kotlinlang.org. Abgerufen 9. Mai 2017.
- ^ "Verwenden von Ant - Kotlin -Programmiersprache". kotlinlang.org. Abgerufen 9. Mai 2017.
- ^ "Verwenden Sie Gradle - Kotlin -Programmiersprache". kotlinlang.org. Abgerufen 9. Mai 2017.
- ^ "Kotlin und Android". Android -Entwickler.
- ^ "Udalov/Kotlin-Vim: Kotlin-Plugin für Vim. Mit: Syntax-Hervorhebung, Grundeinschluss, syntastische Unterstützung". Github. Abgerufen 30. August 2019.
- ^ Lardinois, Frederic (17. Mai 2017). "Google macht Kotlin zu einer erstklassigen Sprache zum Schreiben von Android-Apps". Techcrunch.com. Abgerufen 28. Juni 2018.
- ^ "Kotlin -Programmiersprache: Wie Google es verwendet, um die Codefehler zu zerquetschen, die die meisten Abstürze verursachen". ZDNET.
- ^ "Einführung der Kotlin -Unterstützung in Spring Framework 5.0". Frühling. Entscheidend. 4. Januar 2017. Abgerufen 29. September 2020.
- ^ "Der Zustand der Kotlin -Unterstützung im Frühling". Jetbrains. Abgerufen 6. Dezember 2020.
- ^ "Überprüfung von Microservices Frameworks: Ein Blick auf Spring Boot -Alternativen". Dzone.
- ^ "Kotlin -Programmierung - Der Zustand des Entwickler -Ökosystems 2020". Jetbrains. Abgerufen 29. September 2020.
- ^ "Der Zustand der Oktoverse". Archiviert von das Original am 22. März 2019. Abgerufen 24. Juli 2019.
- ^ "Stack Overflow Developer Survey 2020". Abgerufen 28. Mai 2020.
- ^ "Kotlin gewinnt das Breakout Project of the Year Award bei Oscon '19". Abgerufen 24. Juli 2019.
- ^ "Zustand von Kotlin auf Android". Youtube. Abgerufen 29. September 2020.
- ^ "Kotlinconf 2019: Kotlin leitet Steuern in Norwegen von Jarle Hansen & Anders Mikkelsen". Youtube. Abgerufen 29. September 2020.
- ^ "Gradle Kotlin DSL Primer". docs.gradle.org. Abgerufen 29. September 2020.
- ^ "QLDB bei Amazon". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Volle Kotlin multiplattform gehen". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Kotless". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Verwenden von Kotlin für die Backend -Entwicklung bei Flux". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Kotlin bei Allegro". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Greenfield Kotlin bei Olx". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Kotlin in Shazam". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Anwendungsüberwachung mit Mikrometer". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Groovy und Kotlin Interop bei Rocket Travel". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Kotlin auf dem Backend in Meshcloud". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Zally - eine API -Linter". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Kotlinconf 2019: Kotlin im Weltraum von Maxim Mazin". Youtube. Abgerufen 29. September 2020.
- ^ "KOTLINCONF 2017 - Frontend Kotlin aus den Schützengräben von Gaetan Zoritchak". Youtube. Abgerufen 29. September 2020.
- ^ "Fritz2". Sprechen Kotlin. Abgerufen 29. September 2020.
- ^ "Java/Kotlin -Entwickler - Barclays - Prag - Wizbii". Wizbii.com. Abgerufen 29. September 2020.
- ^ "Kotlin in der Produktion - was funktioniert, was ist gebrochen". Blog.dripstat.com. 24. September 2016. Abgerufen 11. April 2017.
- ^ "Wie wir die Android -App von Basecamp 3 zu 100% Kotlin - Signal gegen Rauschen gemacht haben". Signal v. Rauschen. 29. April 2017. Abgerufen 1. Mai 2017.
- ^ "Droidcon NYC 2016 - Kotlin in der Produktion". Youtube. Abgerufen 24. Juli 2019.
- ^ "Zweisprachiger@Coursera werden". 26. April 2018. Abgerufen 24. Juli 2019.
- ^ "Rob SPIELDNER auf Twitter". Abgerufen 24. Juli 2019.
- ^ "2017 Wer benutzt Kotlin?". 7. Februar 2017. Abgerufen 24. Juli 2019.
- ^ "Square/Sqldelight". GitHub. Abgerufen 24. Juli 2019.
- ^ "Dan Lew auf Twitter". Abgerufen 24. Juli 2019.
- ^ "Duolingo auf Twitter". Abgerufen 13. April 2020.
- ^ "Kotlin 1.1 mit JavaScript -Unterstützung, Coroutinen und mehr veröffentlicht". Abgerufen 1. Mai 2017.