Den aktuellen Status von Java organisieren und die Zukunft betrachten

1. Zuallererst

Als ich den [vorherigen Artikel] schrieb (https://qiita.com/dossari-book-archive/items/ad4f7bcaaebca6281154), sah ich viele Meinungen über das bezahlte Oracle JDK. Die Java-Nachbarschaft wird durch ein Zittern erschüttert, sie kann nicht mehr kostenlos genutzt werden, der Besitz von Java selbst durch Oracle ist ein Risiko, und was interessiert Sie in einer solchen Situation, wie zum Beispiel "gutes Gefühl"? Sagst du, etc ...

Ich kenne nichts anderes als reines Programmierwissen über Java, deshalb dachte ich, ich sollte es nicht zu sehr anfassen. Bevor ich jedoch "gutes Gefühl" schrieb, dachte ich, es wäre besser, darüber nachzudenken, also beschloss ich, ein wenig zu recherchieren und diesen Artikel zu schreiben (ich würde es begrüßen, wenn Sie auf den falschen Teil hinweisen könnten).

Worum geht es dann? ** Ich hatte den Eindruck, dass es viele Kritikpunkte an der Gebühr für Oracle JDK und Meinungen zu Trends im Java-Bereich gibt, die eine etwas andere Richtung haben **. .. Zumindest denke ich, dass die Sprachspezifikation und die Gebühr für das Oracle JDK in gewissem Maße separat betrachtet werden können. Um diesen Bereich nicht zu verwirren, möchte ich die aktuelle Situation zusammenfassen und dann zukünftige Trends beschreiben.

2. Bestätigen Sie das aktuelle "Java" erneut

Wem gehört Java?

Vorerst möchte ich betonen, dass ** Java nicht für Oracle ist, sondern für die Community **.

Vor nicht allzu langer Zeit gab es einen Artikel auf der Oracle-Website, in dem dies behauptet wurde, und ich denke, dass dies derselbe bleiben wird (der Grund ist in der folgenden Erklärung enthalten). ["Gehört Java zu Oracle?", "Nein, gehört es immer noch zur Java-Community!"](Https://www.oracle.com/technetwork/jp/database/articles/pickup/index-1838236-ja. html)

Java-Spezifikationen werden von der Community festgelegt

Java-Spezifikationen werden nicht von Oracle, sondern von JCP (Java Community Process) festgelegt. "JCP" wird so wie es ist aus IT Glossary zitiert.

JCP ist der Name einer internationalen Organisation, die den Prozess der Entwicklung von Java-bezogenen Technologien und der Standardisierung von Spezifikationen veröffentlicht. 1998 von Sun Microsystems gegründet.

JCP besteht aus Unternehmens- und Einzelmitgliedern. Einzelne Mitglieder haben das Recht, Java-bezogene Technologien vor ihrer Veröffentlichung zu bewerten und Änderungen ihrer Spezifikationen anzufordern. Die Zieltechnologien sind Sprachspezifikationen, Plattformen, Anwendungsprogrammierschnittstellen usw.

JCP-Mitglieder verfügen über individuelle Lizenzen und können unabhängige Spezifikationen basierend auf dem TCK (Technology Compatibility Kit) implementieren, sofern die Kompatibilität in Java gewährleistet ist. Allgemeine Unternehmensmitglieder können gegen eine Gebühr Mitglieder werden, aber Einzelpersonen, Bildungsgruppen, gemeinnützige Organisationen usw. können kostenlos auf das TCK von JSR zugreifen.

JCP scheint gefährdet gewesen zu sein, als Oracle Sun übernommen hat, aber das ist eine Schande. Ich denke, es wird auch in Zukunft so bleiben.

Die endgültige Entscheidung über die Java-Spezifikation wird durch Abstimmung von JCP-Mitgliedern getroffen, die Stimmrechte haben, während Oracle (sicherlich) keine besonderen Stimmrechte hat.

Weitere Informationen zu JCP finden Sie im Folgenden.

Beziehung zwischen JCP und Oracle

Die oben erwähnte Oracle-Website enthält die folgende Erklärung.

Wie steht Oracle zu Java? Oracle ist sozusagen das PMO (Program Management Office) von JCP, der Administrator von Java und JCP. Wenn Sie beispielsweise etwas in JCP entscheiden, läuft der Prozess nur dann reibungslos ab, wenn jemand den Prozess moderiert. Als Java-Administrator trägt Oracle dazu bei, dass diese Prozesse reibungslos ablaufen.

Persönlich glaube ich nicht, dass Oracle seine derzeitige Position aufheben und alle seine Java-Spezifikationsentscheidungen monopolisieren kann. Wenn wir das, was sich bisher entwickelt hat, mit der Macht der Community monopolisieren, verlieren wir unweigerlich das Image des Unternehmens und von Java.

Was ist ein "Java-Produkt"?

Produkte, die das TCK (Technology Compatiblility Kit) bestanden haben, sind als "Java" -Produkte zertifiziert. Das Oracle JDK, das heutzutage ein heißes Thema ist, ist eines der "Java-Produkte" und nur eines davon. Jedes "Java-Produkt", das TCK bestanden hat, sollte sich auf der Oberfläche gleich verhalten, unabhängig davon, welche Distribution Sie verwenden. Selbst wenn Sie sich in Zukunft für eine andere Version aus dem Oracle JDK entscheiden, müssen Sie sich daher grundsätzlich keine Gedanken darüber machen, welche Distribution für die Programmierung verwendet werden soll, es sei denn, Sie verwenden die einzigartigen Funktionen des Produkts.

OpenJDK und Oracle

OpenJDK ist ein Open-Source-Produkt, das seit den Tagen von Sun verschiedene Übergänge durchlaufen hat, und es scheint, dass die derzeit auf dem Markt befindlichen Java-Produkte mehr oder weniger auf OpenJDK basieren. Oracle hat einen wesentlichen Beitrag zur OpenJDK-Entwicklung geleistet und erklärt, dass dies auch weiterhin der Fall sein wird.

Referenz: Was sind JDK, Oracle JDK, OpenJDK, Java SE? Referenz: [Oracle Code One 2018] Ein solider Schritt beschleunigt die Entwicklung von Java

Erneuerung des Release-Modells

Als Reaktion auf die Kritik, dass das Release-Intervall lang und der Fortschritt der Sprache selbst langsam ist, wurde das Release-Modell nach der Überprüfung von Java 9 überprüft und alle sechs Monate wurden wichtige Versions-Upgrades durchgeführt. Die Hauptänderung besteht jedoch darin, dass der Veröffentlichungszyklus beschleunigt wurde und die Anzahl der Spezifikationsänderungen und -ergänzungen nicht dramatisch zugenommen hat. Daher denke ich nicht, dass wir uns vorerst Sorgen über die signifikante Abnahme der Abwärtskompatibilität machen sollten. Tatsächlich habe ich gehört, dass Java 9 und spätere Updates ziemlich gut zu funktionieren scheinen (ich werde später auf Java 9-Probleme eingehen).

Referenz: Bericht über die Java 9-JavaOne-Konferenz 2017 hinaus Referenz: Zukünftiges Java, das das neue Release-Modell, die Erfassungsmethode und den Support-Zeitraum übernimmt, wird sich folgendermaßen ändern

Oracle-Beitrag

Unabhängig von Vorlieben und Abneigungen ist es zweifelhaft, dass Oracle bedeutende Beiträge zu Java geleistet hat, einschließlich der Community-Entwicklung, die die Absichten von Sun geerbt hat, der langfristigen kostenlosen Bereitstellung von Java-Produkten einschließlich Binärdateien und der Entwicklung von OpenJDK. Ist es nicht eine schreckliche Tatsache? Daher denke ich, dass es etwas anders ist, Oracle dafür verantwortlich zu machen, dass es nur für das Oracle JDK bezahlt.

In Anbetracht der Tatsache, dass die aus der Gebühr erhaltenen Mittel in interessante Versuche wie GraalVM investiert werden, ist dies als allgemeiner Entwickler ein Nachteil. Ich denke, es ist nur eine Geschichte.

Oracle hat es jedoch vermieden, explizite Aussagen zu LTS (Long-Term Support) für OpenJDK zu machen, und es scheint, dass dies zumindest für Java 11 nicht realisiert wird. Wenn LTS frühzeitig garantiert worden wäre, wäre es meiner Meinung nach überhaupt keine große Sache gewesen, aber dies ist ein schwieriger Ort. Wir werden dies später diskutieren.

3. Was ist die Absicht, für Oracle JDK zu bezahlen?

Es ist schwer zu lesen, wo LTS vermieden wird, während die Unterstützung für OpenJDK klar angegeben wird, aber ich werde es für mich selbst in Betracht ziehen.

Wer ist das Ziel des bezahlten Oracle JDK?

Es gibt definitiv Leute da draußen, die bezahlte, bekannte, von Unternehmen unterstützte Produkte kostenlosen Open-Source-Produkten vorziehen. Oracle glaubt, dass es möglicherweise für diese Personen und Unternehmen im Namen seiner eigenen Marke und der Erfolgsbilanz von Oracle JDK zahlt.

Unterstützung für OpenJDK

Obwohl das Oracle JDK in Rechnung gestellt wird, sollten wir das Open JDK anscheinend nicht beenden, da wir eine große Anzahl von Java-Benutzern und die von ihnen unterstützte Open Community beibehalten müssen. Wenn ich jedoch das LTS für OpenJDK deklariere, denke ich, dass ich es vermeide, da das Risiko besteht, dass es begraben wird, weil es nicht von OrcleJDK unterschieden werden kann. Ich denke, dies ist die Ursache für Verwirrung an Orten, an denen es schwierig ist, sich anzupassen.

Erwartungen an die Unterstützung von OpenJDK LTS durch Dritte

Während ich diesen Artikel schrieb, kamen ziemlich schockierende Neuigkeiten herein. [Breaking News] Amazon Corretto, ein OpenJDK, das auf mehreren Plattformen verwendet werden kann, wurde angekündigt!

Ich habe jedoch das Gefühl, dass Oracle auf einen solchen Fluss gewartet hat. Ich denke, dass es sich nicht mit der oben erläuterten Zielschicht von Oracle überschneidet und sich nicht zu einem Kuchenwettbewerb mit dem Oracle JDK und anderen entwickeln wird.

Darüber hinaus ist zu erwarten, dass dies das Verlassen von Java-Benutzern verhindert und zur Aufrechterhaltung der Community führt. Wenn die Anzahl der Nicht-Oracle-Unterstützer für OpenJDK zunimmt, wird dies meiner Meinung nach ein guter Ablauf mit wenigen Nachteilen für Oracle sein.

4. Punkte, um auf zukünftige Trends zu achten

Es ist unwahrscheinlich, dass sich Java aufteilt

Die Spaltung der Java-Community, die sich bisher entwickelt hat, hat zu viele Nachteile, so dass es den Anschein hat, als würde sie sich in Richtung Vermeidung bewegen. Ich glaube zum Beispiel nicht, dass Java selbst ein anderes Projekt erstellen und erstellen wird, um um Benutzer zu konkurrieren (ist das überhaupt nicht möglich?).

Leistungsbilanz zwischen Open JDK und Oracle JDK

Ist es ein Gleichgewicht zwischen der Dauer des Beitrags von Oracle zu OpenJDK und der Frage, ob OpenJDK den Anteil an Oracle JDK übernehmen wird?

Persönlich erwarte ich, wie oben erläutert, nicht, dass das Open JDK den Anteil des bezahlten Oracle JDK übernimmt, aber ich frage mich, wie Oracle funktionieren wird, wenn dies nicht der Fall ist.

Welche Distribution soll verwendet werden?

Wenn Sie Java weiterhin kostenlos verwenden möchten, müssen Sie festlegen, welche Distribution Sie verwenden möchten. Im Moment scheint Amazon Corretto das mächtigste zu sein, aber ich denke, wir müssen ein Auge darauf haben, bis sich die Situation beruhigt hat (oder ob es sich überhaupt beruhigt hat).

5. Woran sollte die eigentliche Site in Zukunft arbeiten?

Basierend auf dem, was ich bisher gesagt habe, möchte ich Ihnen einige Gedanken darüber geben, was Java-Benutzer in Zukunft tun sollten.

Überwindung der Java 9-Barriere

Grundsätzlich handelt es sich bei einem größeren Versions-Upgrade um Java mit hoher Abwärtskompatibilität. Sie müssen jedoch nur vorsichtig sein, wenn Sie ein Upgrade von Java 8 auf Java 9 oder höher durchführen. Mit der Einführung des modularen Systems sieht es so aus, als würde sich an der Oberfläche nicht viel ändern, aber es hat intern drastische Änderungen. Selbst wenn es kompiliert wird, besteht eine gute Chance, dass die App überhaupt nicht gestartet wird oder während des Betriebs nicht funktioniert. Daher ist es besser, die Java 9-Barriere so schnell wie möglich zu überwinden (obwohl es sich jetzt eher so anfühlt).

Referenz: Bericht über die Java 9-JavaOne-Konferenz 2017 hinaus

Einführung eines Testautomatisierungsmechanismus

Ich denke, dass ein Testautomatisierungsmechanismus auch dann angewendet werden sollte, wenn LTS für OpenJDK nicht mehr verfügbar ist und eine häufige Aktualisierung erforderlich wird. Selbst während der LTS wird, wenn eine schwerwiegende Sicherheitslücke gefunden wird, eine Versionsaktualisierung durchgeführt, sodass ich denke, welcher Weg eingeführt werden sollte.

Wie im Artikel Vorheriger Artikel erwähnt, gibt es einige, die über ein umfangreiches Testframework verfügen. Wenn Sie es gut verwenden können, aktualisieren Sie die Arbeit Sie können die Kosten niedrig halten.

6. Fazit

Ein bisschen Sorge am Ende.

Was ist mit anderen Versionsaktualisierungen als Java?

Als ich den [vorherigen Artikel] schrieb (https://qiita.com/dossari-book-archive/items/ad4f7bcaaebca6281154), gab es einige Meinungen, die über die Kosten eines Upgrades auf Java besorgt waren. Natürlich können Versionsprobleme auch in anderen Sprachen auftreten.

Java selbst ist sehr abwärtskompatibel, und da es sich um eine Kompilierungssprache handelt, halte ich das Aktualisieren von Arbeiten für eine recht einfache Kategorie. Abhängig von der Sprache kann die Kompatibilität auch bei kleineren Versions-Upgrades nicht aufrechterhalten werden. Wie gehen Sie damit um?

Wenn Sie aufgrund von Bedenken hinsichtlich der Kosten für die Aktualisierung der Arbeit von Java zu einer anderen Sprache oder einem anderen Framework wechseln, können Sie bei der Auswahl dieser Sprache oder dieses Frameworks Sicherheit, einfache Arbeit und Verbesserung des Testframeworks sicherstellen Ich bin sehr besorgt, ob der Abschluss berücksichtigt wird.

Wie gut kennen Sie die aktuelle Situation?

Um ehrlich zu sein, gibt es nichts zu sagen, wenn Sie den in diesem Artikel erwähnten aktuellen Java-Status kritisieren und Java verlassen. Wenn Sie zum ersten Mal viel gelernt haben, nutzen Sie diese Gelegenheit, um Java zu erforschen und zu überdenken.

Selbst wenn die Ansichten in diesem Artikel falsch sind, hoffe ich, dass Sie die Gelegenheit erhalten, die aktuelle Situation zu bekräftigen und zukünftige Trends zu berücksichtigen.

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

Recommended Posts

Den aktuellen Status von Java organisieren und die Zukunft betrachten
[Android] [Java] Verwalten Sie den Status der CheckBox von ListView
[Java] Der verwirrende Teil von String und StringBuilder
Ich habe die Eigenschaften von Java und .NET verglichen
[Java / Kotlin] Ändern Sie die Größe unter Berücksichtigung der Ausrichtung des Bildes
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Der Vergleich von enum ist == und gleich ist gut [Java]
Java-Sprache aus der Sicht von Kotlin und C #
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
Vor- und Nachteile von Java
[Hinweis] Java Ausgabe der Summe von ungeraden und geraden Elementen
Ich habe das Verhalten von Java Scanner und .nextLine () nicht wirklich verstanden.
Befehl zum Überprüfen der Anzahl und des Status von Java-Threads
Java-Anfänger fassten das Verhalten von Array und ArrayList kurz zusammen
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
[Java] Löschen Sie die Elemente von List
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
[Java Edition] Geschichte der Serialisierung
Informationen zur aktuellen Entwicklungsumgebung (Java 8)
Dies und das von JDK
Lesen Sie die ersten 4 Bytes der Java-Klassendatei und geben Sie CAFEBABE aus
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Der Ursprung von Java-Lambda-Ausdrücken
Eine Sammlung von Phrasen, die das "unterschiedliche Gefühl" von Java und JavaScript beeindruckt
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Über die Klassifizierung und das Konzept von Immutable / Mutable / Const / Variable von Java und Kotlin.
Beachten Sie den internen Zustand (Unveränderlichkeit) von Objekten und die Nebenwirkungen von Methoden
Analysieren und objektivieren Sie JSON mithilfe der Annotation @JsonProperty von Jackson, einer Java-Bibliothek
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
[Java-Verbesserungsfall] Wie man die Grenze des Selbststudiums und darüber hinaus erreicht
Finden Sie das Maximum und Minimum der fünf in Java eingegebenen Zahlen
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Zeigen Sie den japanischen Kalender und Tag mit der Java8-Standardklasse an
Holen Sie sich das Ergebnis von POST in Java
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
Untersuchen Sie die Speichernutzung von Java-Elementen
[Java] Ermittelt den Tag eines bestimmten Tages
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
Ein- und Ausklappen des Inhalts der Recycler-Ansicht
Informationen zur Funktionsweise von next () und nextLine ()
Vergleichen Sie Elemente eines Arrays (Java)
[Java] So erhalten Sie das aktuelle Verzeichnis
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Was sind die aktualisierten Funktionen von Java 13
Messen Sie einfach die Größe von Java-Objekten
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
Rückblick auf die Grundlagen von Java
[Java 7] Teilen Sie die Java-Liste und führen Sie den Prozess aus
Ausgabe des Buches "Einführung in Java"
Über die Anzahl der Threads von Completable Future
Die Geschichte des Schreibens von Java in Emacs
Ich habe das Zustandsmuster und das Strategiemuster studiert
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
[Java] Überprüfen Sie die Anzahl der Zeichen
Zusammenfassung von Java Math.random und Import (Kalender)