Das Java-Viertel fühlt sich heutzutage sehr gut an

Einführung

Ich habe Java in meiner Karriere als Ingenieur kontinuierlich verwendet, aber ich denke, dass es viel einfacher zu verwenden ist als zuvor. Während ich Vorträge bei JJUG, JSUG usw. höre, bin ich persönlich der Meinung, dass der aktuelle Java-Bereich sehr fortschrittlich und gut ist.

In der Zwischenzeit sah ich Tweets, dass "Java eine große Population hat und es keinen Grund gibt, es speziell zu übernehmen" und "Java ist Vermächtnis und geringe Produktivität", daher möchte ich meine Gedanken mit diesem Gegenargument schreiben. Ich werde.

Darüber hinaus sind einige der unten beschriebenen Inhalte, dass ** Java besser ist als ein bestimmtes Framework, aber es geht nicht nur um Java "Nachbarschaft" **.

Was ich heutzutage an Java mag

  1. Verbesserung der Sprachspezifikationen und Standardbibliotheken
  2. Wie schnell das Projekt startet
  3. Nutzung der Schimmelpilzsicherheit
  4. Unterstützung für die Mikrodienstarchitektur
  5. Leistungsverbesserung

1. Verbesserung der Sprachspezifikationen und Standardbibliotheken

Es ist lange her, aber ich bin der Meinung, dass sich die Programmiereffizienz und -genauigkeit seit der Einführung von Lambda-Ausdrücken und der Stream-API erheblich verbessert haben. Ich habe auch das Gefühl, dass sich die Standardbibliothek von der einst extremen minimalistischen zu einer positiven Idee hin zu der Realität verschiebt, dass "das, was Entwickler häufig verwenden, in der Standardbibliothek enthalten ist". Darüber hinaus wurde der Veröffentlichungszyklus seit JDK9 überprüft, und es ist zu erwarten, dass die Geschwindigkeit der Sprachentwicklung zunehmen wird. (Es gibt ein Problem mit der JDK-Version, aber ich werde es vorerst belassen.)

2. Wie schnell das Projekt startet

In Spring Framework können Sie sofort eine Webanwendung mit Spring Initializer oder dem Eclipse-Plug-In erstellen. Wenn Sie den integrierten Server verwenden, können Sie den Server über die Hauptfunktion starten, ohne etwas vorzubereiten. Referenz: So erstellen Sie mit SPRING INITIALIZR einen Hinadan für ein Spring Boot-Projekt

Es gibt eine große Anzahl verwandter Bibliotheken, und es ist einfach, sie zu verwenden, indem Sie einfach eine Abhängigkeit in pom.xml schreiben.

3. Schimmelpilzsicherheit

Ich denke, statische Typisierung hat Vor- und Nachteile, aber ich denke, die jüngste Java-Community hat die gute Seite herausgestellt. Stream API Zum Beispiel funktioniert die Stream-API gut mit statischer Typisierung, und selbst wenn Sie einen ziemlich langen Code auf einmal schreiben, funktioniert er fast wie beabsichtigt, wenn er kompiliert wird, und wenn Sie ihn beherrschen, können Sie ihn sehr effizient codieren. Spring Boot Das Spring Framework kann jetzt typsicher mit Anmerkungen anstelle der alten XML-basierten Konfiguration sein. Ich bin der Meinung, dass dies die einfache Definition und Wartbarkeit von Bohnen dramatisch verbessert hat. Referenz: Grundlegendes zur Funktionsweise von Spring Boot AutoConfigure Es gibt verschiedene Vorteile, eine solche Bean zu definieren, aber zum Beispiel wird die Testautomatisierung einfacher und die Kosten für die Aktualisierung der Sprache und des Frameworks können reduziert werden.

DBFlute Ich habe einen sehr guten O / R-Mapper namens DBFlute, der mein Lieblingsframework ist und gegen DB-Änderungen resistent ist. Die Typensicherheit wird aufrechterhalten, indem die Metadaten des Schemas gelesen und der Java-Quellcode automatisch generiert werden. Mit ihm können Sie den Datenzugriff einfach mit präzisem und lesbarem Java-Code implementieren. Wenn er kompiliert wird, wird SQL fast wie beabsichtigt ausgeführt, sodass Sie eine extrem hohe Produktivität erwarten können, wenn Sie ihn beherrschen.

4. Unterstützung für die Mikrodienstarchitektur

Unter dem Namen Spring Cloud werden verschiedene Bibliotheken für die Microservice-Architektur bereitgestellt. Obwohl ich es in der Praxis nicht angesprochen habe, ist meine Herangehensweise an Microservices mit Spring oft Gegenstand von Vorlesungen.

Referenz: Grundlagen der Frühlingswolke zum schnellen Verständnis Referenz: [[Spring Fest 2018 Report] Reise zur internen Produktion der nativen Entwicklung von Zahlungssystem-Cloud-Systemen mit Spring und PCF](https://dev.classmethod.jp/etc/spring-fest-2018-sf_h1 /)

Darüber hinaus gibt es eine Bibliothek namens Mikrometer, in der Daten für die metrische Messung gespeichert und bereitgestellt werden. Sie wurde in mehreren Vorträgen auf der JSUG 2018 vorgestellt. Nachdem die Spring Boot 2-Serie nur durch Beschreiben der Abhängigkeit in pom.xml beschrieben wurde, wird sie beim Start im Hintergrund ausgeführt, und es scheint einfach zu sein, das Messziel anzupassen. Referenz: [Metriken mit einem Mikrometer mit Spring Boot messen und senden] (https://k11i.biz/blog/2018/03/24/spring-boot-with-micrometer/)

5. Leistungsüberlegungen

Ich bin der Meinung, dass mit dem jüngsten Spring Framework viel Arbeit geleistet wird, um sich an die Umgebung anzupassen, in der Leistung dringend erforderlich ist.

WebFlux Mit WebFlux, der Hauptfunktion von Spring5, können Sie eine große Anzahl von Anforderungen mit einer kleinen Anzahl von Threads verarbeiten und Ressourcen effektiv nutzen. Referenz: Überblick über Spring WebFlux verstehen

Da JDBC Reactive derzeit jedoch nicht unterstützt, gibt es immer noch erhebliche Einschränkungen bei der Verwendung in der Praxis, aber es scheint, dass Spring auch daran arbeitet (ich möchte es so oft tun). Referenz: R2DBC wurde bei Spring One angekündigt

Einheimisch

Es scheint, dass GraalVM verwendet werden kann, um Java-Anwendungen zu nativeisieren. In einer Demo auf der JSUG 2018 Keynote habe ich gesehen, wie GraalVM eine Spring-Anwendung nativisiert hat, deren Start normalerweise in Millisekunden länger als eine Sekunde dauert. Derzeit scheint es, dass es nur in sehr begrenzten Situationen angewendet werden kann, aber ich habe gehört, dass wir irgendwann die volle Unterstützung anstreben werden (obwohl ich nicht sicher bin, weil es ein englischer Vortrag war). Referenz: SPRING FEST 2018

abschließend

Versuchen wir eine Reihe von schlechten Sätzen, die nicht sehr gut organisiert sind.

Über den langsamen Fortschritt von Java und die starke "Idee"

Ich denke, Java ist eine Sprache, die trotz der Übergänge der Zeit eine starke "Idee" hat. Ich habe auch das Gefühl, dass viele Java-Frameworks ebenfalls eine starke Idee haben. Vielleicht gibt es einen Unterschied zwischen Vorlieben und Abneigungen, und manchmal entwickelt sich daraus ein Konflikt.

Gefühle von besonderen Vorlieben und Abneigungen gegenüber Oracle für den Artikel "Warum ich in Java-API-Rechtsstreitigkeiten mehr Oracle-Schultern als Google habe" Ich habe nicht, aber ich stimme dem Inhalt zu.

Diskutieren Sie sorgfältig und offen, um das Gesamtgleichgewicht nicht zu stören, wie in "Kann Java mit der Macht der Community wieder großartig sein beschrieben." Der Prozess, Spezifikationen immer wieder zu bestimmen, mag einigen Zuschauern langsam und unprogressiv erscheinen. Ich denke jedoch, dass es sehr sinnvoll ist, dieser Klugheit vollkommen zu entsprechen (obwohl ich mit der Java-Spezifikation nicht völlig unzufrieden bin).

Ob es sich um eine Sprache oder ein Framework handelt, ich denke, es ist wichtig, "Idee" zu verstehen, um sie gut zu nutzen. Auf der anderen Seite, wenn Sie die Idee nicht lesen können oder wenn Sie einen halben Kompromiss sehen, können Sie verwirrt sein, wie man sie verwendet, oder Sie mögen sie möglicherweise nicht.

Über statische Eingabe

Ich schreibe auch relativ gerne JavaScript, daher bin ich mir der Vorteile statisch untypisierter Sprachen bewusst. Beim Wechsel von JavaScript zu Java kann die Menge an Beschreibungen frustrierend sein. Ich weiß also, dass ich eine Gegenreaktion gegen Javas robustes statisch typisiertes System verspüre.

Wie oben erwähnt, bin ich jedoch der Meinung, dass es je nach Verwendung eine mächtige Waffe sein kann. Ich stelle mir vor, dass die Wartung ohne statische Eingabe schwierig sein wird, wenn der Umfang der Software zunimmt.

Besprechen Sie ruhig die Vor- und Nachteile

Java ist alt und weist einige Mängel in Bezug auf Sprachspezifikationen auf, aber ich denke, dass es verzweifelt nach Evolution strebt, während die Abwärtskompatibilität und das allgemeine Gleichgewicht erhalten bleiben. Auf der anderen Seite fragen sich diejenigen, die "Java ist veraltet und unproduktiv" ablehnen, welche scharfe Technologie sie verwenden. Gibt es beispielsweise ein Framework, das einen Spring-ähnlichen Ansatz für die Microservices-Architektur verfolgt (obwohl ich nichts sagen kann, weil ich mit anderen Frameworks nicht vertraut bin)?

Letztendlich denke ich, dass es auf Vorlieben und Abneigungen an der Sprache und dem Rahmen ankommt, aber ich denke, es wäre gut, wenn wir die Vor- und Nachteile ruhig kennen könnten, nachdem wir die jüngsten Umstände kennen.

Vielen Dank, dass Sie bis zum Ende bei uns bleiben.

Nachtrag 2018/11/11

Der Artikel enthielt eine Beschreibung, die eine bestimmte Sprache zerlegte, die jedoch gelöscht wurde, da die Anzahl der Aufrufe größer als erwartet war und die Abweichung vom Hauptthema schwerwiegend war. (Wenn Sie es überprüfen möchten, lesen Sie bitte den Kommentarbereich.) Ich habe nicht die Absicht, es zu verbrennen, deshalb möchte ich in Zukunft vermeiden, eine bestimmte Sprache zu kritisieren.

17.11.2018 Nachtrag

Es gab einige Meinungen und Bedenken bezüglich des JDK, also schrieb ich meine eigenen Gedanken. Es mag falsch sein, aber bitte beziehen Sie sich darauf, wenn Sie möchten. Den aktuellen Stand von Java organisieren und über die Zukunft nachdenken

Recommended Posts

Das Java-Viertel fühlt sich heutzutage sehr gut an
Der Dämon lacht. 2018 Java Nachbarschaft wagen Wahl.
Der Vergleich von enum ist == und gleich ist gut [Java]
[Java] Holen Sie sich das Datum 10 Tage später mit der Calendar-Klasse