Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11

~~ Pour les ingénieurs qui n'ont pas réussi à surmonter le style de développement fou ~~

Préparer la mise à niveau de la version JDK

Le cycle de publication des fonctionnalités JDK est désormais un cycle de 6 mois. Sauf si vous disposez d'une version LTS ou d'un support payant, une nouvelle version mettra fin au support de la version précédente. Il est facile d'imaginer qu'une nouvelle version du JDK sortira au milieu d'une longue période de développement et devrait être envisagée à l'avance. Il est possible de procéder au développement avec une version fixe pendant la période de développement, mais il est nécessaire qu'il s'agisse de la dernière version de JDK au moment de la publication du logiciel développé et du C / O du système. Par conséquent, il est essentiel de développer une infrastructure de développement permettant d'effectuer des tests de régression de manière cyclique.

En ce qui concerne Java 11, les API qui étaient auparavant marquées comme obsolètes mais qui étaient toujours disponibles peuvent être supprimées. Il est également nécessaire de pouvoir rattraper rapidement l'impact de ces changements.

Construisez avec Java 9 et prévoyez l'impact lors de la migration vers Java 11 (Ajouté le 21 mai 2018)

À partir de Java 9, il y a eu des changements tels que Project Jigsaw, et des API qui ont déjà été supprimées et des classes d'implémentation internes pouvant être référencées jusqu'à présent Il y a des changements tels que l'impossibilité de s'y référer. Préparons la migration vers Java 11 en construisant et en vérifiant le fonctionnement avec Java 9 au moment où Java 9 est disponible. Il a moins d'impact lors de la migration vers Java 11.

Nécessite le remplacement de l'API supprimé dans Java 11

Les modifications de Java 11 incluent JEP 320, qui supprime Java EE, CORBA, etc. qui ont été déconseillés dans Java 9. Lorsque vous envisagez de migrer à partir de Java 8, vous devrez réécrire dans ces bibliothèques externes alternatives. Dans Java EE, il sera transféré à Jakarta EE, nous prendrons donc des mesures telles que la réécriture du nom du package si nécessaire.

Paquets à supprimer

--java.xml.ws (JAX-WS, technologie associée SAAJ et métadonnées de service Web)

Préparer la mise à niveau de la version des bibliothèques dépendantes

Dans le même temps, il est nécessaire de préparer la mise à niveau de la version de la bibliothèque externe dépendante. Il est naturel de se préparer à la publication des correctifs de sécurité, mais il est facile d'imaginer que ces bibliothèques externes seront mises à niveau au fur et à mesure de la mise à niveau du JDK. Encore une fois, il est nécessaire que les tests de régression soient faciles à réaliser.

Utilisez Package Manager et créez des outils tels que Maven et Gradle avec ces fonctionnalités pour les bibliothèques dépendant de la version.

Aucun coût pour les tests de régression

La digestion de chaque cas de test avec des mains humaines n'est plus obsolète. La seule façon d'effectuer des tests de régression de manière cyclique et facile est de les automatiser. Il n'est pas réaliste de construire tout le code source et d'exécuter tout le code de test sur le PC de développement, alors préparez un serveur dédié.

Cependant, il coûte plus cher de mesurer la couverture et d'écrire du code de test réutilisable pour garantir la qualité. (Ne jamais avoir à être TDD ou Test-First.) Inutile de dire que lorsque vous testez du code qui affecte la base de données, etc., utilisez un code de test simulé ou écrivez qui peut être nettoyé correctement à la fin du test.

Certaines parties sont difficiles à automatiser dans le développement de système avec des écrans. Ici, dans le but de "rattraper rapidement l'impact de la mise à niveau du JDK et des bibliothèques dépendantes", il serait bon que "cela fonctionne comme avant" puisse être testé.

Utilisation des outils CI (intégration continue)

Introduisez des outils CI tels que Jenkins et Travis CI pour automatiser la création de code source, tester l'exécution du code, etc. Défini pour construire dès que les modifications du code source sont reflétées. Il sera effectué dans les coulisses des travaux de développement tels que l'inspection statique, l'exécution du code de test et la mesure de la couverture.

De plus, en faisant bon usage des technologies de virtualisation telles que le cloud (IaaS, PaaS, SaaS, etc.), SDI (Software Defined Infrastructure) et Docker, il est possible de créer rapidement un environnement de vérification qui reflète les changements dans les ressources de développement. est.

Si vous utilisez toujours SVN, passez à Git

Je ne pense pas qu'il soit possible que nous ne gérions pas la version des ressources de développement de nos jours. Ce que vous ne pouvez pas faire avec SVN peut être fait avec Git. Ce que vous pouvez faire avec SVN est plus pratique avec Git. Il est facile d'imaginer que la gestion des versions et la gestion des révisions seront compliquées. Commencez tout de suite avec les serveurs Git avec des fonctionnalités Pull-Request, telles que GitHub et GitBucket. Surtout si la gestion de la configuration n'est pas rigoureuse.

Janvier 2019 Vers la fin de la mise à jour officielle d'Oracle JDK 8

Pensez à choisir l'un des éléments suivants:

Attendons la sortie de Java11 avec enthousiasme! (Ajouté le 08/09/2018)

Selon le calendrier en ici, l'utilisation générale sera disponible le 25/09. Il est sur le point de venir ... Préparons un système parfait et attendons avec enthousiasme.

Il semble qu'une version release candidate soit fournie dans le référentiel des mises à jour de Fedora 27.

Recommended Posts

Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
Introduction à Java pour la première fois # 2
À propos de la procédure pour que Java fonctionne
Quel est le modificateur volatile pour les variables Java?
Premiers pas avec Groovy pour les ingénieurs Java gênants
Préparer l'environnement pour java11 et javaFx avec Ubuntu 18.4
A quoi sert le constructeur?
Entrée dans la console Java
Conseils autour de l'exemple pour publier Lambda de Java sur CodePipeline
Un mémorandum pour atteindre le lieu qui démange pour Java Gold
Réintroduction à Java for Humanities 0: Comprendre l'acte de programmation
Aide-mémoire C # pour les techniciens Java
[java8] Pour comprendre l'API Stream
Bienvenue dans le marais des bibliothèques Java! !!
De quoi avez-vous besoin à la fin pour créer une application Web en utilisant Java? Expliquer le mécanisme et ce qui est nécessaire pour apprendre
Que choisissent les ingénieurs Java pour le «test automatique» de leurs navigateurs? Sélénium? Séléniure? Geb?
kotlin & Java: Comment masquer la barre d'outils uniquement pour des fragments spécifiques
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Réfléchissez à ce qu'il faut faire de la formation de SIer pour les jeunes ingénieurs en développement (partie 3)
Cela fait du bien d'avoir différentes classes pour les mêmes valeurs de table
Qu'est-ce que CHECKSTYLE: OFF trouvé dans la source Java? Checkstyle à savoir de
[Java] Comment utiliser la classe File
Premiers pas avec Ruby pour les ingénieurs Java
Référence Java à comprendre dans la figure
Java SE8 Silver ~ La route à franchir ~
Apprenez de «Et alors», les bases de Java [pour les débutants]
À propos du nouveau modèle de version de Java @ Seki Java (20/07/2018)
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
Guide de style de programmation Java pour l'ère Java 11
Quelle est la meilleure lecture de fichier (Java)
Préparer l'environnement de contrôle de sécurité pour Rails 6
[Java] Comment régler la date sur 00:00:00
[Java] Comment obtenir le répertoire actuel
Quelle est la méthode principale en Java?
Quelles sont les fonctionnalités mises à jour de Java 13
Comment obtenir la date avec Java
Sortie du livre "Introduction à Java"
Apprendre pour la première fois java [Introduction]
[Traitement × Java] Comment utiliser la fonction
Je suis allé au Java Women's Club # 1
[Java] Colorez la sortie standard vers le terminal
[Java] Comment utiliser la classe Calendar
Mémo pour la migration de Java vers Kotlin
Java vs JavaScript: quelle est la différence?
À quoi me suis-je préparé lorsque je suis entré dans un projet de développement d'application Android tout en développant le Web avec Java?
Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)
Que faire si vous avez installé Java pour OS X sur macOS
Un moyen pour les développeurs Java / Scala de faire progresser leur carrière en tant qu'ingénieurs de données.
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
Que trouve-t-on ... (3 points) dans la source Java? Argument de longueur variable à connaître
[Java] Comment tester s'il est nul dans JUnit
Vérifiez les options définies pour le processus Java en cours d'exécution
Ce qui a surpris la boutique Java lorsqu'il a écrit PHP
[Java] Que dois-je utiliser pour écrire des fichiers?
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Qu'est-ce que le modèle Java Servlet / JSP MVC?