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.
・ 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.
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)
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.
Zunächst einmal ist Java ein schöner Ort für mich, aber es sieht so aus.
Wie wurden diese verbessert! ??
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
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.
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
Überprüfte Ausnahmen werden nicht mehr erzwungen und die Anruferbehandlung von Ausnahmen wird nicht mehr erzwungen.
Tritt auf, wenn Sie Variablen verwenden, bevor die Instanz erstellt wird.
//Laufzeitfehler für Java
String s = null;
s.length(); // java.lang.NullPointerException
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
}
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 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
-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.
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