[JAVA] Ich habe versucht, AdoptOpenJDK 8 zu erstellen (zusätzlich: Amazon Corretto 8)

Auslösen

Oracle zahlt nach Februar für Java (es wird kein kostenloses Java veröffentlicht)

Oracle wird nach Februar kein kostenloses Java mehr veröffentlichen. Die Regierung (Comprehensive Strategy Office des Kabinettssekretariats für Informations- und Kommunikationstechnologie (IT)) hat eine Richtlinie zur Verwendung von Oracle's Paid Java oder zur Aktualisierung von OpenJDK alle sechs Monate angekündigt. https://cio.go.jp/sites/default/files/uploads/documents/technique_report_java.pdf

Allerdings sowohl Entwickler als auch Systembenutzer

Ich denke. (Entwickler und Benutzer, die Java nicht verwenden und es deinstallieren, werden angezeigt.)

Insbesondere für Entwickler und Benutzer, die Rich Client-Anwendungen mit Java FX und Java Web Start verwalten, ist ein Upgrade auf Java 11 nicht sofort akzeptabel.

Es gibt AdoptOpenJDK / Amazon Corretto

Es gibt Unterstützung. Ich dachte, es wäre eine gute Idee, diese zu verwenden.

AdoptOpenJDK 8 / Amazon Corretto 8 hat einen Fehler

Als ich mit der Überprüfung fortfuhr, fand ich einen Fehler, der nicht in OracleJDK 8, sondern in AdoptOpenJDK 8 / Amazon Corretto 8 auftritt. Selbst wenn die Zeichen gedreht werden, werden die japanischen Zeichen nicht gedreht.

Lass es uns reparieren

Ich habe tatsächlich meine Hand bewegt. Ich konnte es unter Linux schnell erledigen und hatte Probleme beim Erstellen unter Windows. Daher werde ich das Erstellen unter Windows beschreiben.

Arbeit

Vorbereitung

Installieren von Visual Studio Express 2013

https://visualstudio.microsoft.com/ja/vs/older-downloads/ Herunterladen von.

Es gab eine direkte Link-URL im Microsoft Bulletin Board, aber es ist nicht bekannt, wie lange sie zum Download zur Verfügung stehen wird. http://download.microsoft.com/download/E/F/2/EF21D164-8A66-4F08-B71F-26702B180E11/VS2013_RTM_DskExp_JPN.iso

Bitte installieren Sie nach dem Download. Es gibt fast keine Auswahl, installieren Sie es einfach gehorsam.

Verwenden Sie nach Visual Studio 2015 das Build-Vorbereitungsskript (generate-configure.sh).

Wählen Sie daher bitte Visual Studio 2013 aus. Mit Visual Studio 2013 Express gibt es kein Problem mit der Verwendung durch Unternehmen.

Installation von Cygwin

https://cygwin.com/install.html Laden Sie die 64-Bit-Version (setup-x86_64.exe) von herunter.

Nach dem Herunterladen ausführen und einrichten. Ich denke, dass die "Choose Download Site" auf dem Weg vorzeitig endet, wenn Sie eine japanische http-Site auswählen. Die hinzuzufügenden Pakete lauten wie folgt.

Laden Sie JDK7 herunter

Zum Erstellen benötigen Sie außerdem ein JDK. Es ist Standard, das stabile JDK der vorherigen Version zu verwenden, daher werde ich dieses Mal JDK 7 von Oracle herunterladen und installieren. https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

Sie können das in Plejaden usw. enthaltene JDK 7 kopieren. In diesem Artikel D:\OpenJDK\jdk7 Ich habe das JDK nach kopiert.

Laden Sie Freetype herunter

Freetype ist eine Bibliothek zum Zeichnen von Schriftarten. Erforderlich, um das Adopt OpenJDK zu erstellen. (Es ist in OpenJDK 11 enthalten und scheint unnötig zu sein.)

Sie können aus dem Quellcode erstellen, aber dieses Mal erhalten wir den vorgefertigten. ~~ Ich verwende Visual Studio 2013, also lade vc12 64bit herunter. https://www.opencascade.com/content/3rd-party-components~~

Die neueste Version der Binärdatei für Windows finden Sie weiter unten https://github.com/ubawurinna/freetype-windows-binaries

git clone https://github.com/ubawurinna/freetype-windows-binaries Sie können auch die Zip-Datei erhalten.

In diesem Artikel werde ich die erworbenen Dateien erklären D:\OpenJDK\freetype Ich habe es unten kopiert.

Die Konfiguration unter Freetype

Ich glaube, es ist. Wenn Sie ein 64-Bit-JDK erstellen möchten, benennen Sie win64 zum Erstellen in lib um

Bauen

Quellcode abrufen

Starten Sie das Cygwin64-Terminal.

Sie können den Quellcode für jeden erhalten.

Änderung des Quellcodes

~~ Es stellte sich heraus, dass das Problem, dass die Zeichen nicht gedreht werden, was diesmal das Problem ist, in OpenJDK9 bereits behoben zu sein scheint. https://bugs.openjdk.java.net/browse/JDK-8163278?focusedCommentId=13999670&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13999670 Patch auf der obigen Seite https://bugs.openjdk.java.net/secure/attachment/63104/jdk9.patch Ich werde versuchen, es gehorsam zu reflektieren. Wo kann man AdoptOpenJDK8 reparieren? openjdk-jdk8u/jdk/src/share/native/sun/font/freetypeScaler.c ist. ~~

Es wurde bereits in JDK 11s freetypeScaler.c behoben und portiert diesen Code zurück. https://github.com/AdoptOpenJDK/openjdk-jdk11u/commit/f1bf238b695e0b4d49b8264b83228317ee75ebd3#diff-5c6198e34c46737fc7bf8f0eb5fff8d0

JDK11 freetypeScaler.c jdk/src/share/native/sun/font/freetypeScaler.c Überschrieben am.

Bauen

configure

Führen Sie den folgenden Befehl unter aus. bash configure --with-boot-jdk=/cygdrive/d/OpenJDK/jdk7 --with-freetype=/cygdrive/d/OpenJDK/freetype --disable-debug-symbols --disable-zip-debug-info

--with-boot-jdk Der Standort des JDK --with-freetype Geben Sie den Speicherort des freien Typs für an.

--disable-debug-symbols --disable-zip-debug-info Durch Hinzufügen können Sie die Debug-Informationen löschen und die Dateigröße des resultierenden JRE / JDK reduzieren.

Trap konfigurieren

Selbst wenn ich gemäß dem obigen Befehl konfiguriert habe, hat es zunächst nicht funktioniert.

Ich dachte, dass "generate-configure.sh" fehlerhaft ist, aber plötzlich bemerkte ich eine Falle im Windows-Dateipfad.

Unter Windows ist es nicht erforderlich, mit einem Backslash zu maskieren, auch wenn der Dateipfad einen halben Speicherplatz enthält. Unter Linux usw. ist ein Escape erforderlich. Generated-configure.sh verwendete daher absichtlich den abgekürzten Dateinamen von Windows und entwickelte keine Leerzeichen mit halber Breite. Es scheint jedoch Fälle zu geben, in denen der abgekürzte Dateiname nicht erstellt wird (ab einer Version in der Mitte von Windows 10?).

Ich habe es gefunden, indem ich "dir / x" an der Eingabeaufforderung überprüft habe. fsutil file setshortname "Microsoft Visual Studio 12.0" MICROS~2 Nachdem ich den abgekürzten Namen mit dem Befehl registriert hatte, konnte ich die Konfiguration sicher abschließen. dirx.png

make

Beim make images angesichts dessen, build/windows-x86_64-normal-server-release/images/j2re-image Das Bild von JRE build/windows-x86_64-normal-server-release/images/j2sdk-image Das Image des JDK wird in erstellt.

make images COMPRESS_JARS=true Sie können dann das generierte Bild komprimieren und die Dateigröße reduzieren.

Ergebnis

Obwohl es ein wenig anders aussieht als Oracle, konnten wir den Fehler bei der Zeichenrotation beheben.

Ich denke, dass der Unterschied im Erscheinungsbild auf den Unterschied in der Schriftzeichnungsbibliothek (FreeType oder F2T) zurückzuführen ist. https://github.com/AdoptOpenJDK/openjdk-build/wiki/Differences-between-Adopt-OpenJDK-binaries-and-Oracle-JDK-Binaries

Serpentin

Nehmen Sie OpenJDK oder Amazon Corretto an

AdoptOpenJDK wird von vielen Unternehmen gesponsert, und IBM und Microsoft sind die Stärken. https://adoptopenjdk.net/sponsors.html

Amazon Corretto ist sensationell, wird jedoch bisher nur von einem Amazon-Unternehmen unterstützt und ist möglicherweise an AWS gebunden. Achten Sie auf zukünftige Entwicklungen.

Durch diese Arbeit ...

Ich habe gerade die bereits veröffentlichten Fixes auf Adopt OpenJDK 8 / Amazon Corretto 8 zurückportiert, aber Open Source ist großartig, wenn man bedenkt, dass es für jemand anderen auf der Welt nützlich sein könnte. Vielen Dank an Oracle, dass Sie mir diese Gelegenheit gegeben haben!

Recommended Posts

Ich habe versucht, AdoptOpenJDK 8 zu erstellen (zusätzlich: Amazon Corretto 8)
Ich habe versucht, AdoptOpenjdk 11 unter CentOS 7 zu erstellen
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, yum-cron zu verifizieren
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
Ich habe versucht, eine Umgebung mit WSL2 + Docker + VSCode zu erstellen
Ich habe versucht, die Unterstützung für iOS 14 zusammenzufassen
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, die Methode zu erklären
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
C # (Polymorphismus: Polymorphismus)
Ich habe versucht, Active Hash zu erklären
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, mit Eclipse + Tomcat eine http2-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine einfache Anwendung mit Dockder + Rails Scaffold zu erstellen
Ich habe versucht, die verwendeten Methoden zusammenzufassen
Ich habe versucht, Processing auf VS Code zu migrieren
Ich habe versucht, Java-Lambda-Ausdrücke zusammenzufassen
Ich habe versucht, mit Web Assembly zu beginnen
Ich habe versucht, AOJs binäre Suche zu lösen
01. Ich habe versucht, eine Umgebung mit SpringBoot + IntelliJ + MySQL (MyBatis) (Windows 10) zu erstellen.
Ich habe versucht, das Iterator-Muster zu implementieren
Ich habe versucht, die Stream-API zusammenzufassen
Was ist Docker? Ich habe versucht zusammenzufassen
Ich habe versucht, Selen wie JQuery zu verwenden
Ich habe versucht, JavaScript Part.2 Objektorientiert zu berühren
Ich habe versucht, über JVM / Garbage Collection zusammenzufassen
Versuchen Sie, eine Java 8-Umgebung unter Amazon Linux2 zu erstellen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe versucht, polymorph in Nogizaka zu implementieren.
Ich habe versucht, die Federbeinkonfiguration mit Coggle zu verwalten
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich habe versucht, Anmeldeinformationen mit JMX zu verwalten
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, grafana und postgres [docker-compose] zu verknüpfen
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
C # (Grund der Kapselung)
Ich habe versucht, eine LINE-Klon-App zu erstellen
[Ruby-Grundlagen] Ich habe versucht, Module zu lernen (Kapitel 1)
Ich habe versucht, neunundneunzig in Java auszugeben
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
Ich habe versucht, Tomcat so einzustellen, dass das Servlet ausgeführt wird.
Ich habe versucht, eine Anwendung in 2 Sprachen zu entwickeln
Ich habe versucht, Alexa-Fähigkeiten mit Java zu erstellen
Ich habe versucht, eine Website zu entwickeln, um Ausgaben zu erfassen.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten