Was ist in "Java 8 bis Java 11" passiert und wie wird eine Umgebung erstellt?

Zweck dieses Artikels

――Dieser Artikel richtet sich an Personen, die absolut süchtig nach "Erstellen einer Java-Umgebung" sind und immer durch komplizierte Informationen verwirrt sind. ――Seit 2017 hat sich Java zu einer sich schnell verändernden Welt entwickelt. In Anbetracht dessen haben wir die von uns untersuchten Informationen zusammengestellt, um die "Kernideen" und "wichtigen Trends" zu verstehen.


I. Grobe Geschichte

Über den Release-Zyklus

――Feature-Releases werden jedes Jahr im März und September bereitgestellt, und die Hauptversionen werden erweitert. Beispiel: Java9 => September 2017, Java10 => März 2018, Java11 => September 2018, ...

image.png

"8 und darüber hinaus"

Verteilungsdifferenzierung

Wie soll ich wählen?

――Es ist realistisch, anhand des Unterstützungsstatus und des Ökosystems, das jede Verteilung umgibt, zu beurteilen.

―― Gegenwärtig gibt es jedoch nur wenige bemerkenswerte Unterschiede, und es ist schwierig, eine Auswahl zu treffen. Features können von nun an herauskommen.

II. Aufbau einer lokalen Entwicklungsumgebung im Jahr 2020

Da die Situation wie in ~~ I beschrieben ist, gibt es keine feste beste und sie neigt dazu, bald veraltet zu sein. ~~

=> SDKMAN! ist die aktuelle Best Practice. (Hinzugefügt am 2020.1.10)

Hier betonen wir "Installation wird nur über die Befehlszeile abgeschlossen" und "Ermöglichen den Wechsel zwischen mehreren Versionen", und die folgenden zwei Muster von Konstruktionsverfahren werden veranschaulicht:

Muster 1: Installation durch SDKMAN!

https://sdkman.io/

SDKMAN! Ist der Vorgänger von GVM, Groovys Multi-Version-Management-Tool. Es verwaltet mehrere Versionen einer Vielzahl von Tools, die sich auf die JVM-Sprache und ihre Build-Tools konzentrieren.

Siehe den Beamten für die Installation von SDKMAN! Nach der Installation wird die Java-Installation mit dem folgenden Befehl abgeschlossen:

sdk install java      

Die derzeit installierte Distribution ist 11 von Adopt Open JDK (Stand Januar 2020).

Bei anderen Distributionen können Sie die drei Unterbefehle "list", "install" und "default" frei überprüfen und wechseln. Verwenden Sie den Bezeichner in der Liste, um die Version und Verteilung anzugeben.

sdk list java

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 13.0.1.j9    | adpt    |            | 13.0.1.j9-adpt      
               |     | 13.0.1.hs    | adpt    |            | 13.0.1.hs-adpt      
               |     | 12.0.2.j9    | adpt    |            | 12.0.2.j9-adpt      
               |     | 12.0.2.hs    | adpt    |            | 12.0.2.hs-adpt      
               |     | 11.0.5.j9    | adpt    |            | 11.0.5.j9-adpt      
               | >>> | 11.0.5.hs    | adpt    | installed  | 11.0.5.hs-adpt      
               |     | 8.0.232.j9   | adpt    |            | 8.0.232.j9-adpt     
               |     | 8.0.232.hs   | adpt    |            | 8.0.232.hs-adpt     
 Amazon        |     | 11.0.5       | amzn    |            | 11.0.5-amzn         
               |     | 8.0.232      | amzn    |            | 8.0.232-amzn        
               |     | 8.0.202      | amzn    |            | 8.0.202-amzn        
 Azul Zulu     |     | 13.0.1       | zulu    |            | 13.0.1-zulu         
               |     | 12.0.2       | zulu    |            | 12.0.2-zulu  
       
...(Unterlassung)...         

 SAP           |     | 12.0.2       | sapmchn |            | 12.0.2-sapmchn      
               |     | 11.0.4       | sapmchn |            | 11.0.4-sapmchn      
================================================================================

Bei der Installation des zweiten und der nachfolgenden JDKs werden Sie gefragt, ob Sie diese Distribution als Standard festlegen möchten.

sdk install java 13.0.1-open # Oracle OpenJDK 13

Downloading: java 13.0.1-open

...(Unterlassung)...

Installing: java 13.0.1-open
Done installing!

Do you want java 13.0.1-open to be set as default? (Y/n): Y

Setting java 13.0.1-open as default.

Wenn Sie den Standardwert festlegen, wechselt die Java-Version zu diesem Zeitpunkt. Sie müssen keinen Pfad festlegen. Versuchen Sie, den Start von jshell zu überprüfen.

jshell
|Willkommen bei JShell--Version 13.0.1
|Geben Sie für eine Übersicht Folgendes ein: /help intro
jshell>

jshell ist eine Java REPL, die aus Java 9 hinzugefügt wurde. Sie sind vielleicht in anderen Sprachen damit vertraut, aber es ist nützlich für eine kleine Funktionsprüfung der Standard-API. Sie können mit / exit beenden, gehen Sie also zurück und versuchen Sie es erneut.

sdk default java 11.0.5.hs-adpt

Default java version set to 11.0.5.hs-adpt
jshell
|Willkommen bei JShell--Version 11.0.5
|Geben Sie für eine Übersicht Folgendes ein: /help intro
jshell>

Ich konnte bestätigen, dass die Version gewechselt wurde.

Muster 2: Installation von Homebrew & jEnv

Muster 2: Installation von Homebrew & jEnv

  • Im Vergleich zu SDKMAN! Ist es komplizierter und wird nicht empfohlen. Dies kann eine Referenz dafür sein, wie der Pass auf der Rückseite übergeben wird *

** JDK-Installation mit Homebrew **

https://brew.sh/index_ja

  • Vor relativ kurzer Zeit (wahrscheinlich im November 2019) wurde openjdk zu Formeln hinzugefügt. Daher kann es mit Brew Install Open JDK installiert werden.
  • Die derzeit installierte Distribution ist Oracle Open JDK.
  • Wenn Sie Java 8 oder früher installieren müssen oder eine andere Distribution verwenden möchten, verwenden Sie derzeit Homebrew Cask (nicht in diesem Artikel enthalten).
  • Unterstützte Formeln finden Sie hier schnell => https://formulae.brew.sh/formula/

Sie werden eine Warnung (Warnung) bemerken, wenn die Installation erfolgreich ist. Das Folgende ist die Nachricht, als ich es mit Catalina + zsh ausprobiert habe.

==> Pouring openjdk-13.0.1+9.catalina.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH run:
  echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.zshrc

Es ist leicht geschrieben, aber jeder Absatz ist wichtig. Abhängig von der Umgebung können die Details der Nachricht und die auszuführenden Maßnahmen unterschiedlich sein.

For the system Java wrappers to find this JDK, symlink it with...

Es ist nicht klar, worauf sich "System-Java-Wrapper" beziehen, aber es ist erforderlich, symbolische Links zu erstellen, um den später beschriebenen Befehl "java_home" auszuführen.

openjdk is keg-only, which means it was not symlinked into /usr/local,...

Dies bedeutet, dass es nicht mit "/ usr / local" verknüpft ist. Dies bedeutet, dass die Eingabe von "Java" in das Terminal an dieser Stelle nicht bedeutet, dass das hier installierte OpenJDK sofort funktioniert.

If you need to have openjdk first in your PATH run:...

Damit das hier installierte OpenJDK zuerst als Pfad durchsucht werden kann, muss der Pfad beim Starten der Shell hinzugefügt werden.

Diesmal ist es jedoch eine Richtlinie, mehrere Versionen von JDK mit einem anderen Tool zu verwalten. Vermeiden Sie es daher, den Java-Pfad direkt in ~ / .zshrc zu schreiben.

Erstellen Sie in diesem Sinne einfach den in der ersten Nachricht empfohlenen symbolischen Link:

sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Dies sollte die folgenden Befehle ermöglichen:

java --version

openjdk 13.0.1 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
/usr/libexec/java_home

/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home

** Registrieren Sie sich bei jEnv **

http://www.jenv.be/

Ein Tool, das die Verwaltung mehrerer Versionen eines JDK erleichtert, z. B. pyenv. Der Installationsvorgang wird offiziell übergeben. Nach dem Ausführen von "Brew Install" müssen Sie den Pfad übergeben.

Mit pyEnv können Sie beispielsweise Python mit Befehlen wie "pyenv install 3.5.0" installieren. Wie Sie jedoch aus den bisherigen Vorgängen ersehen können, verfügt jEnv selbst nicht über die Funktion zum Herunterladen des JDK. Der Befehl "jenv add" erfordert als Argument "den vollständigen Pfad zu" JAVA_HOME "des heruntergeladenen JDK". Auf diesen Pfad kann mit dem oben genannten Befehl java_home verwiesen werden.

/usr/libexec/java_home

/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home

Dann können Sie das JDK zu jEnv hinzufügen:

jenv add `/usr/libexec/java_home`

openjdk64-13.0.1 added
13.0.1 added
13.0 added

** Mehrere Versionen installiert **

Wenn Sie beispielsweise ab dem obigen Status Oracle Open JDK 11 zusätzlich installieren möchten, gehen Sie wie folgt vor:

# 1.Installieren Sie das JDK
brew install openjdk@11

# 2.Erstellen Sie einen Symlink unter JavaVirtualMachines
# (Kopieren Sie den Befehl, der während der Brühinstallation an der Eingabeaufforderung angezeigt wird)
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

# 3.Zur jEnv-Verwaltung hinzufügen
jenv add `/usr/libexec/java_home -v 11`

Überprüfen Sie, ob jEnv mehrere Versionen verwalten kann, und überprüfen Sie den Start von jshell.

jenv versions

* system
  11.0
  11.0.5
  13.0
  13.0.1
  openjdk64-11.0.5
  openjdk64-13.0.1

Stellen Sie die Version auf 13 ein.

jenv global 13.0 

jenv versions

  system
  11.0
  11.0.5
* 13.0
  13.0.1
  openjdk64-11.0.5
  openjdk64-13.0.1
jshell
|Willkommen bei JShell--Version 13.0.1
|Geben Sie für eine Übersicht Folgendes ein: /help intro
jshell>

Wechseln Sie dann die Versionen und versuchen Sie es gleich.

jenv global 11.0

jenv versions

  system
* 11.0
  11.0.5
  13.0
  13.0.1
  openjdk64-11.0.5
  openjdk64-13.0.1
jshell
|Willkommen bei JShell--Version 11.0.5
|Geben Sie für eine Übersicht Folgendes ein: /help intro

Ich konnte bestätigen, dass die Version gewechselt wurde.

Wenn Sie dies bisher tun, können Sie sagen, dass es sich um eine lokale Entwicklungsumgebung handelt, die das Hinzufügen von Distributionen und Versionen in gewissem Umfang übernehmen kann.

III. Quellen und Referenz-URLs

Aufgrund des oben beschriebenen Hintergrunds hängen die Informationen, auf die Entwickler verweisen sollten, von der ausgewählten Distribution ab.

Es wäre schön, eine Seite zu finden, auf der Sie einen Überblick über die aktuelle Situation erhalten. Im Moment empfiehlt es sich jedoch, zunächst auf die offizielle Oracle-Roadmap zu verweisen, die die Entwicklung von OpenJDK leitet.

Oracle Java SE Support-Roadmap https://www.oracle.com/technetwork/jp/java/eol-135779-ja.html

In einigen Fällen veröffentlichen Anbieter wie Red Hat ihre Verteilungslebenszyklen und -richtlinien.

OpenJDK Life Cycle and Support Policy https://access.redhat.com/articles/1299013

Andere Referenz-URL

(Dieser Artikel besteht hauptsächlich aus Auszügen und Zusammenfassungen aus den folgenden Artikeln. Wenn Sie also mehr wissen möchten!)

Über das neue Release-Modell und das Lizenzangebot von JDK https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html

Project Jigsaw https://openjdk.java.net/projects/jigsaw/

Was soll man für das zukünftige JDK wählen? Wie man wählt (v1.2) https://www.slideshare.net/TakahiroYamada3/how-to-choose-jdk-20191101 (Hinzugefügt am 09.03.2018. Danke @yamadamn)

So wählen Sie die beste OpenJDK-Distribution aus https://www.slideshare.net/TakahiroYamada3/how-to-choose-the-best-openjdk-distribution-201905

Zusammenfassung, um diejenigen, die in "Java bezahlt" falsch verstehen, so einfach wie möglich zu erklären. https://togetter.com/li/1343743

OpenJDK - Wikipedia https://ja.wikipedia.org/wiki/OpenJDK

Oracle JDK vs. OpenJDK builds comparison https://devexperts.com/blog/oracle-jdk-vs-openjdk-builds-comparison/

Recommended Posts

Was ist in "Java 8 bis Java 11" passiert und wie wird eine Umgebung erstellt?
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
So ändern Sie die Java-Version und führen sie in einer Umgebung aus, in der Java nicht frei installiert werden kann
So lösen Sie Ausdrucksprobleme in Java
[Rails] So erstellen Sie eine Umgebung mit Docker
So erstellen Sie ein ausführbares JAR in Maven
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Wie man JAVA in 7 Tagen lernt
Aufrufen und Verwenden der API in Java (Spring Boot)
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So entwickeln und registrieren Sie eine Sota-App in Java
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
So verketten Sie Zeichenfolgen mit Java
[Java] Verwendung statischer Modifikatoren (Was sind statische endgültige und statische Importe)
So erstellen Sie eine Apache Flink-Anwendung in 5 Minuten von Grund auf neu
So ermitteln Sie die Länge einer Audiodatei mit Java
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
So führen Sie eine Basiskonvertierung in Java durch
[Java] Wie man Dateien ausgibt und schreibt!
Wie man SquashTM baut und wie man Japanisch unterstützt
So erzwingen Sie Codierungskonventionen in Java
Einbetten von Janus Graph in Java
So erhalten Sie das Datum mit Java
Verwendung von Umgebungsvariablen in RubyOnRails
Von Java nach C und von C nach Java in Android Studio
So erstellen Sie eine Rails 6-Umgebung mit Docker
So testen Sie eine private Methode und verspotten sie teilweise in Java
So erstellen Sie mit rbenv eine Umgebung für eine beliebige Version von Ruby
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
Versuchen Sie, eine Java 8-Umgebung unter Amazon Linux2 zu erstellen
Es wurde ein Fehler behoben, der beim Versuch auftrat, Spark in einer Umgebung zu verwenden, in der Java 8 und Java 11 gleichzeitig vorhanden sind
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Ich möchte eine E-Mail in Java senden.
So zeigen Sie eine Webseite in Java an
So installieren Sie Titan 2D (v4.2.0) in einer virtuellen Umgebung
So erhalten Sie eine Klasse von Element in Java
Erstellen Sie eine E2E-Testumgebung mit Selenium (Java).
So verbergen Sie Nullfelder als Antwort in Java
Rails6.0 ~ So erstellen Sie eine umweltfreundliche Entwicklungsumgebung
Wie man Java SE8 Gold bekommt und studiert
So erstellen Sie eine API mit GraphQL und Rails
So erstellen Sie Parkett-Tools und führen Parkett-Dateien zusammen
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
So erstellen Sie die einfachste Blockchain in Ruby
Wie schreibe ich Java String # getBytes in Kotlin?
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So greifen Sie auf Java Private-Methoden und -Felder zu
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Verketten von durch Kommas getrennten Zeichenfolgen mit StringJoiner auch in einer Java7-Umgebung
So senden Sie benutzerdefinierte Metriken und Ereignisse mit Laravel in einer Docker-Compose-Umgebung an Datadog