――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.
――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, ...
Nicht alle Feature-Releases sind LTS (Long Term Support) ** von Oracle JDK **. In Java9 oder höher sind Java11 und Java17 LTS-Ziele. Davon abgesehen ist es kein LTS.
Weitere Informationen finden Sie unter Oracle Java SE Support Roadmap.
Durch Open Source können mehrere Anbieter JDK erstellen und ankündigen. Um die Quelle von OpenJDK herum ** gibt es mehrere Distributionen für jedes Unternehmen wie Linux **. (Quelle: Auswahl der besten OpenJDK-Distribution)
Ab 2020 sind die Hauptverteilungen:
Oracle OpenJDK (by Oracle)
Red Hat OpenJDK (by Red Hat)
Azul Zulu (by Azul Systems)
SapMachine (by SAP)
Liberica JDK (by BellSoft)
Amazon Corretto (by Amazon)
AdoptOpenJDK (Community Based)
Die OpenJDK-Distributionen der einzelnen Unternehmen können freigegeben und unterstützt werden, indem die Versionen wie "Nur neueste Version" und "Nur Oracle LTS-Ziel" eingegrenzt werden.
Zum Beispiel hat Oracle Open JDK ab Januar 2020 die neuesten 13 als GA (General-Availability Release) veröffentlicht. Andere Versionen können heruntergeladen werden, ihre Verwendung wird jedoch nicht empfohlen.
Auch ab Januar 2020 hat Amazon Corretto 8 und 11 veröffentlicht.
Eine Reihe von Tests, das so genannte Technology Compatibility Kit (TCK), wird von der OpenJDK-Community (Vertrag mit Oracle) bereitgestellt, um die Verteilung zu unterstützen. Distributionen, die TCK bestehen, können als "Java SE-kompatibel" bezeichnet werden.
Einige Distributionen wie AdoptOpenJDK bestehen TCK nicht, sind aber relativ beliebt.
――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.
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:
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.
** JDK-Installation mit Homebrew **
https://brew.sh/index_ja
openjdk
zu Formeln hinzugefügt. Daher kann es mit Brew Install Open JDK
installiert werden.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.
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
(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