[JAVA] J'ai essayé de construire AdoptOpenJDK 8 (ajout: Amazon Corretto 8 également)

Déclencheur

Oracle paiera pour Java après février (aucun Java gratuit ne sera publié)

Oracle ne publiera pas de Java gratuit après février. Le gouvernement (Bureau de la stratégie globale des technologies de l'information et de la communication (TI) du Secrétariat du Cabinet) a annoncé une politique d'utilisation de Java payant d'Oracle ou de mise à jour d'OpenJDK tous les six mois. https://cio.go.jp/sites/default/files/uploads/documents/technique_report_java.pdf

Cependant, les développeurs et les utilisateurs du système

Je pense. (Les développeurs et les utilisateurs qui n'utilisent pas Java et le désinstallent ont commencé à apparaître)

En particulier pour les développeurs et les utilisateurs qui gèrent des applications clientes riches à l'aide de Java FX et Java Web Start, la mise à niveau vers Java 11 n'est pas immédiatement acceptable.

Il y a AdoptOpenJDK / Amazon Corretto

Il y a du soutien. J'ai pensé que ce serait une bonne idée de les utiliser.

AdoptOpenJDK 8 / Amazon Corretto 8 a un bug

Lorsque j'ai procédé à la vérification, j'ai trouvé un bogue qui ne se produit pas dans OracleJDK 8 mais qui se produit dans AdoptOpenJDK 8 / Amazon Corretto 8. Plus précisément, même si les caractères sont pivotés, les caractères japonais ne sont pas pivotés.

Corrigeons le problème

J'ai en fait bougé ma main. J'ai pu le faire rapidement sous Linux, et j'ai eu du mal à construire sur Windows, donc je vais décrire la construction sur Windows.

travail

Préparation

Installation de Visual Studio Express 2013

https://visualstudio.microsoft.com/ja/vs/older-downloads/ Télécharger à partir de.

Il y avait une URL de lien direct sur le babillard Microsoft, mais on ne sait pas combien de temps il sera disponible pour téléchargement. http://download.microsoft.com/download/E/F/2/EF21D164-8A66-4F08-B71F-26702B180E11/VS2013_RTM_DskExp_JPN.iso

Veuillez installer après le téléchargement. Il n'y a presque pas de choix, installez-le simplement avec obéissance.

Après Visual Studio 2015, utilisez le script de préparation de build (generated-configure.sh)

Veuillez donc sélectionner Visual Studio 2013. Avec Visual Studio 2013 Express, il n'y a aucun problème d'utilisation en entreprise.

Installation de Cygwin

https://cygwin.com/install.html Téléchargez la version 64 bits (setup-x86_64.exe) à partir de.

Une fois téléchargé, exécutez et configurez. Je pense que le "Choose Download Site" sur le chemin se terminera tôt si vous choisissez un site http japonais. Les packages à ajouter sont les suivants.

Télécharger JDK7

Vous avez également besoin d'un JDK pour créer. Il est standard d'utiliser le JDK stable de la version précédente, donc cette fois je vais télécharger et installer le JDK 7 d'Oracle. https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

Vous pouvez copier le JDK 7 inclus avec Pléiades, etc. Dans cet article D:\OpenJDK\jdk7 J'ai copié le JDK dans.

Télécharger Freetype

Freetype est une bibliothèque de dessins de polices. Requis pour créer le fichier Adopt OpenJDK. (Il est inclus dans OpenJDK 11 et semble inutile.)

Vous pouvez construire à partir des sources, mais cette fois, nous obtiendrons le pré-construit. ~~ J'utilise Visual Studio 2013, alors téléchargez vc12 64bit. https://www.opencascade.com/content/3rd-party-components~~

La dernière version du binaire pour Windows est ci-dessous https://github.com/ubawurinna/freetype-windows-binaries

git clone https://github.com/ubawurinna/freetype-windows-binaries Vous pouvez également obtenir le fichier zip.

Dans cet article, je vais vous expliquer les fichiers acquis D:\OpenJDK\freetype Je l'ai copié ci-dessous.

La configuration ci-dessous freetype

Je pense que c'est. Si vous voulez créer un JDK 64 bits, renommez win64 en lib pour la construction

Construire

Obtenir le code source

Lancez le terminal Cygwin64.

Vous pouvez obtenir le code source pour chacun.

Modification du code source

~~ Il s'est avéré que le problème que les caractères ne tournent pas, qui est le problème cette fois, semble avoir déjà été corrigé dans OpenJDK9. https://bugs.openjdk.java.net/browse/JDK-8163278?focusedCommentId=13999670&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13999670 Patch sur la page ci-dessus https://bugs.openjdk.java.net/secure/attachment/63104/jdk9.patch J'essaierai de le refléter docilement. Où réparer AdoptOpenJDK8 openjdk-jdk8u/jdk/src/share/native/sun/font/freetypeScaler.c est. ~~

Il a déjà été corrigé dans freetypeScaler.c de JDK 11 et rétroporté ce code. https://github.com/AdoptOpenJDK/openjdk-jdk11u/commit/f1bf238b695e0b4d49b8264b83228317ee75ebd3#diff-5c6198e34c46737fc7bf8f0eb5fff8d0

JDK11 freetypeScaler.c jdk/src/share/native/sun/font/freetypeScaler.c Écrasé le.

Construire

configure

Exécutez la commande suivante à. 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 L'emplacement du JDK --with-freetype Spécifiez l'emplacement du freetype pour.

--disable-debug-symbols --disable-zip-debug-info En ajoutant, vous pouvez supprimer les informations de débogage et réduire la taille de fichier du JRE / JDK résultant.

configurer le piège

Au début, même si j'ai configuré selon la commande ci-dessus, cela n'a pas fonctionné.

Je pensais que "generated-configure.sh" était bogué, mais j'ai soudainement remarqué un piège dans le chemin du fichier Windows.

Sous Windows, il n'est pas nécessaire de s'échapper avec une barre oblique inverse même s'il y a un espace demi-largeur dans le chemin du fichier, mais sous Linux, etc., il est nécessaire de s'échapper. Ainsi, generated-configure.sh a utilisé intentionnellement le nom de fichier abrégé de Windows et conçu pour ne pas gérer les espaces demi-largeur. Cependant, il semble qu'il y ait des cas où le nom de fichier abrégé n'est pas créé (à partir d'une version au milieu de Windows 10?).

Je l'ai trouvé en vérifiant "dir / x" à l'invite de commande. fsutil file setshortname "Microsoft Visual Studio 12.0" MICROS~2 Après avoir enregistré le nom abrégé avec la commande, j'ai pu terminer la configuration en toute sécurité. dirx.png

make

À make images étant donné que, build/windows-x86_64-normal-server-release/images/j2re-image L'image de JRE build/windows-x86_64-normal-server-release/images/j2sdk-image L'image du JDK est créée au format.

make images COMPRESS_JARS=true Vous pouvez ensuite compresser l'image générée et réduire la taille du fichier.

résultat

Bien que cela soit un peu différent d'Oracle, nous avons pu corriger le bogue de rotation des personnages.

Je pense que la différence d'apparence est due à la différence dans la bibliothèque de dessins de polices (FreeType ou F2T). https://github.com/AdoptOpenJDK/openjdk-build/wiki/Differences-between-Adopt-OpenJDK-binaries-and-Oracle-JDK-Binaries

Serpentin

Adoptez OpenJDK ou Amazon Corretto

AdoptOpenJDK est sponsorisé par de nombreuses entreprises, et IBM et Microsoft en sont les atouts. https://adoptopenjdk.net/sponsors.html

Amazon Corretto est sensationnel, mais jusqu'à présent, il n'est pris en charge que par une seule société Amazon et peut être verrouillé sur AWS. Faites attention aux développements futurs.

A travers ce travail ...

Je viens de rétroporter les correctifs déjà publiés sur Adopt OpenJDK 8 / Amazon Corretto 8, mais l'open source est génial, étant donné qu'il pourrait être utile à quelqu'un d'autre dans le monde. Merci à Oracle de m'avoir donné cette opportunité!

Recommended Posts

J'ai essayé de construire AdoptOpenJDK 8 (ajout: Amazon Corretto 8 également)
J'ai essayé de construire AdoptOpenjdk 11 sur CentOS 7
J'ai essayé de vérifier AdoptOpenJDK 11 (11.0.2) avec l'image Docker
J'ai essayé de vérifier yum-cron
J'ai essayé de construire l'environnement petit à petit en utilisant docker
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé de résumer le support d'iOS 14
J'ai essayé d'interagir avec Java
J'ai essayé d'expliquer la méthode
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
C # (polymorphisme: polymorphisme)
J'ai essayé d'expliquer Active Hash
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé de créer un environnement de développement http2 avec Eclipse + Tomcat
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de résumer les méthodes utilisées
J'ai essayé de migrer le traitement vers VS Code
J'ai essayé de résumer les expressions Java lambda
J'ai essayé de démarrer avec Web Assembly
J'ai essayé de résoudre la recherche binaire d'AOJ
01. J'ai essayé de créer un environnement avec SpringBoot + IntelliJ + MySQL (MyBatis) (Windows 10)
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé de résumer l'API Stream
Qu'est-ce que Docker? J'ai essayé de résumer
J'ai essayé d'utiliser Selenium comme JQuery
J'ai essayé de toucher JavaScript Part.2 orienté objet
J'ai essayé de résumer sur JVM / garbage collection
Essayez de créer un environnement Java 8 sur Amazon Linux2
J'ai essayé de faire une authentification de base avec Java
J'ai essayé d'implémenter des relations polymorphes à Nogizaka.
J'ai essayé de gérer la configuration des jambes de force avec Coggle
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé de gérer les informations de connexion avec JMX
java j'ai essayé de casser un simple bloc
J'ai essayé de lier grafana et postgres [docker-compose]
J'ai essayé de développer un outil de gestion des effectifs
J'ai essayé de développer un site Web pour étudier DUO3.0.
C # (base de l'encapsulation)
J'ai essayé de créer une application de clonage LINE
[Notions de base sur Ruby] J'ai essayé d'apprendre des modules (Chapitre 1)
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
J'ai essayé de lier JavaFX et Spring Framework.
J'ai essayé de configurer tomcat pour exécuter le servlet.
J'ai essayé de développer une application en 2 langues
J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de développer un site Web pour enregistrer les dépenses.
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé de casser le bloc avec java (1)
J'ai essayé de mettre Tomcat
J'ai essayé youtubeDataApi.
J'ai essayé de refactoriser ①