Kotlins Verbesserungen an Java

Überblick

Kotlin hat die Ergebnisse der Untersuchung der Verbesserungen in Java zusammengefasst und sich auf "Ich bin mit Java nicht zufrieden" konzentriert, einschließlich der Frage, warum Java zu einer solchen Sprachspezifikation geworden ist.

[Einführung]

・ Ich mag Java, aber ich habe Kotlin zu diesem Zeitpunkt noch nicht verwendet. (Der Inhalt kann also dünn sein) ・ Welche Art von Sprache Kotlin ist, Grammatik usw. werden an anderer Stelle häufig erwähnt, daher werde ich sie hier nicht erwähnen.

[Scherz]

Ist Java nicht die glaubwürdigste Sprache unter serverseitigen Programmierern? Das Denken ist erhaben und akzeptiert keine Anfänger. Im Gegensatz zu anderen Sprachen, die in der Mitte objektorientiert wurden, lassen sie keine seltsamen Lücken zu. Das Entwerfen in dieser Sprache ist für Ingenieure, die gerne logisch denken, unwiderstehlich, oder? (Lol)

[Hintergrund der Untersuchung]

Es gibt jedoch viele Leute, die Java nicht mögen, weil es seine Nachteile hat. Und schließlich wollen nur sehr wenige Menschen es privat nutzen (weinen) Während der Lernsitzung, die ich mache, habe ich überprüft, ob es Personen gibt, die Java privat verwenden, und wie erwartet hat sogar einer von 15 Personen Java nicht verwendet (Weinen). Es gab jedoch drei Personen, die Kotlin verwendeten. Von dort aus interessierte ich mich für Kotlin und beschloss, nachzuforschen.

Hauptthema

Zunächst einmal ist Java ein schöner Ort für mich, aber es sieht so aus.

  1. Kultur, um alle Getter / Setter zu schreiben
  2. Inspektionsausnahme
  1. NullPointerException
  2. Gemischter primitiver Typ und Objekttyp

Wie wurden diese verbessert! ??


1. Kultur, um alle Getter / Setter zu schreiben

[Warum? ]]

Zunächst müssen Sie wissen, warum Java alle Getter / Setter schreibt. Ich habe es nicht sehr klar verstanden, aber als ich es nachgeschlagen habe, gab es verschiedene Meinungen. ・ Elementvariablen ausblenden und sicher machen

[Verbesserung]

Dies ist jetzt eine Eigenschaft in C #, Ruby, Swift. Sie müssen also nicht Getter / Setter schreiben. Eigenschaften können in Unterklassen überschrieben werden. Sie können die Implementierung auch in Unterklassen abstrahieren und erzwingen.

2. geprüfte Ausnahme

[Was? ]]

Es scheint, dass dies die einzige Methode ist, die nur in Java angewendet wird. Von einer Methode ausgelöste Ausnahmen müssen explizit als Teil der Syntax der Methode angegeben werden, und der Aufrufer muss damit umgehen oder sie weiter nach oben werfen.

public FileInputStream(String name)
                throws FileNotFoundException

Dies hat folgende Vorteile:

Viele Sprachen und Mechanismen behandeln Ausnahmen als Laufzeit, und Sie wissen nicht, welche Art von Ausnahmen auftreten werden, bis sie tatsächlich auftreten, und ob sie bei diesem Prozess überhaupt auftreten können. Insbesondere im Fall von Java können Sie, da Sie die Arten von Ausnahmen verstehen, eine Menge Wiederherstellung von Ausnahmen erwarten. [Quelle: Inspektionsausnahmen überdenken](http://qiita.com/Kokudori/items/0fe9181d8eec8d933c98#java%E3%81%AE%E6%A4%9C%E6%9F%BB%E4%BE%8B%E5 % A4% 96)

Dies soll nun jedoch ein Fehler sein und wurde nicht in andere objektorientierte Sprachen integriert, die C # darstellen.

Bedeutungslose Fangklauseln werden in Massenproduktion hergestellt und beeinträchtigen tatsächlich die Qualität des Programms. Quelle: Die Skalierbarkeit überprüfter Ausnahmen

[Verbesserung]

Überprüfte Ausnahmen werden nicht mehr erzwungen und die Anruferbehandlung von Ausnahmen wird nicht mehr erzwungen.

  1. NullPointerException

[Was? ]]

Tritt auf, wenn Sie Variablen verwenden, bevor die Instanz erstellt wird.

//Laufzeitfehler für Java
String s = null;
s.length(); // java.lang.NullPointerException

[Verbesserung]

Dem kann nicht geholfen werden, oder? Ich dachte, aber moderne Sprachen haben einen Mechanismus, um dies zu sichern. Referenz: Null unsichere Sprachen sind keine Legacy-Sprachen mehr

Wenn es in Kotlin Null sein kann, wird es zum Zeitpunkt der Deklaration angegeben. Wenn es Null sein kann, führt dies zu einem Kompilierungsfehler, sofern es nicht zuerst überprüft wird.

//Variable?In der beigefügten Deklaration kann Null gesetzt werden.?Ohne ist eine Nullstellung nicht möglich.
val s: String? = null  
s.length //Kompilierungsfehler: only safe (?.) or non-null

//OK schreiben
val s:String? = null
if (s != null){
    s.length // OK
}

4. Gemischter primitiver Typ und Objekttyp

Wie Sie wissen, verfügt Java über acht primitive Typen (Boolean, Char, Byte, Short, Int, Long, Float, Double), die Wrapper-Klassen für Objekttypen haben.

[Warum? ]]

Warum gibt es primitive Variablentypen? Java hat viele seiner Ideen aus C ++ übernommen. Primitive Typvariablen sind eine davon. Und ich war froh, dass ich durch die Einbeziehung dieses Ziels auf den Zustrom bestehender C ++ - Programmierer abzielte. Darüber hinaus scheint der primitive Typ den Vorteil einer hohen Verarbeitungsgeschwindigkeit zu haben. Referenz: Primitive Typen gelten als schädlich

Referenz: Unbekannter Fehler in Java

[Problem]

-Es ist erforderlich, die Verarbeitung ordnungsgemäß zu verwenden, während Sie wissen, ob es sich bei der behandelten Variablen um einen primitiven Typ oder einen Objekttyp handelt. ⇒ [Beispiel] Primitive Typen können mit == verglichen werden, Objekttypen verwenden .equals () usw. -Um eine primitive Typvariable an eine Methode zu übergeben, die einen Objekttyp als Argument verwendet, muss dieser einmal in einen Objekttyp konvertiert werden, wodurch Speicher verschwendet wird.

[Verbesserung]

In Kotlin gibt es keine primitiven Typen. (Es kann jedoch gesagt werden, dass ein Teil der Bequemlichkeit des primitiven Typs verloren gegangen ist.)


Das ist alles, aber vorerst hatte ich den Eindruck, dass die Teile, die ich persönlich nicht sagen konnte, fast verbessert wurden.

Wenn ich etwas mit Java zu tun habe, würde ich gerne Kotlin verwenden.

Recommended Posts

Kotlins Verbesserungen an Java
[Java] Einführung in Java
Einführung in Java
Kotlins Null-Sicherheit zum Senden an Java-Entwickler
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
[Java] Stellen Sie eine Verbindung zu MySQL her
Von Java zu Ruby !!
Einführung in den Java-Befehl
So senken Sie die Java-Version
Migration von Cobol nach JAVA
So deinstallieren Sie Java 8 (Mac)
Java - So erstellen Sie JTable
Verwendung von Java Optional
Neue Funktionen von Java7 bis Java8
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Verwendung der Java-Klasse
Stellen Sie eine Verbindung von Java zu PostgreSQL her
[Java] Verwendung von removeAll ()
[Java] So zeigen Sie Wingdings an
[Java] Einführung in den Lambda-Ausdruck
Shell zum Beenden von Java-Prozessen
Verwendung von Java Map
So legen Sie Java-Konstanten fest
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
[Java] Gründe für die Verwendung von statischen
Verwendung von Java-Variablen
[Java] Einführung in die Stream-API
Java8 startet jetzt ~ Optional ~
So konvertieren Sie Java Base
[Java] Konvertiert ArrayList in Array
Java-Thread locker zu verstehen
[Java] So implementieren Sie Multithreading
Von ineffektivem Java zu effektivem Java
So initialisieren Sie ein Java-Array
[Einführung in Janken (ähnliche) Spiele] Java
Eingabe in die Java-Konsole
So lernen Sie Java Silver SE 8
Verwendung von HttpClient (Get) von Java
Rufen Sie Kotlins versiegelte Klasse von Java aus an
Vorgang zum Verbinden mehrerer Streams @Java
Java mit Ramen lernen [Teil 1]
Java # 6 studieren (Wie man Blöcke schreibt)
[java8] Um die Stream-API zu verstehen
Multithreaded passend zur [Java] Vorlage
[Java] Mit Arrays.asList () zu beachtende Punkte
[Einführung in Java] Informationen zur Stream-API
Java zum Extrahieren von PDF-Textinhalten
So erstellen Sie einen Java-Container
Straße nach Java SE 11 Silberakquisition
So zerlegen Sie eine Java-Klassendatei
Java fügt PowerPoint SmartArt-Grafiken hinzu
Kotlin-Klasse zum Senden an Java-Entwickler
Verwendung von HttpClient (Post) von Java