PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Littlewing : Passer votre application Java8 en Java11

lundi 3 février 2020 à 15:44

Java 8 est encore largement utilisé dans les entreprises aujourd’hui. Il y a même certains frameworks qui n’ont pas encore sauté le pas.
Je vais essayer d’exposer dans cette article les étapes à réaliser pour migrer (simplement) votre application JAVA8 en JAVA 11.

Dans cet article, je prendrai comme postulat que l’application se construit avec Maven.

Pré-requis

Tout d’abord vérifiez votre environnement d’exécution cible! Faites un tour du coté de la documentation et regardez le support de JAVA.

Si vous utilisez des FRAMEWORKS qui utilisent des FAT JARS, faites de même (ex. pour spring boot, utilisez au moins la version 2.1.X).

Ensuite, vous aurez sans doute à mettre à jour maven ou gradle. Préférez les dernières versions.

Configuration maven

Les trois plugins à mettre à jour obligatoirement sont :

Maven compiler plugin


        maven-compiler-plugin
        3.8.1
        
          11
          UTF-8
        
      

maven surefire / failsafe plugin

Pour ces deux plugins, ajouter la configuration suivante:

 
        maven-surefire-plugin
        2.22.2
        
        [...]
          --illegal-access=permit
          [...]
        
      

Mise à jour des librairies

Bon,la il n’y a pas de magie. Vous devez mettre à jour toutes vos librairies. Mis à part si vous utilisez des librairies exotiques, la plupart supportent JAVA 11 maintenant.

C’est une bonne opportunité de faire le ménage dans vos fichiers pom.xml 🙂

APIS supprimées du JDK

Si vous faites du XML, SOAP ou que vous utilisiez l’API activation, vous devez désormais embarquer ces librairies. Le JDK ne les inclut plus par défaut.

Par exemple:

 
            com.sun.xml.bind
            jaxb-core
            2.3.0.1
            test
        
        
            com.sun.xml.bind
            jaxb-impl
            2.3.0.1
            test
        
        
            javax.xml.bind
            jaxb-api
            2.3.1
        

Modularisation avec JIGSAW

Bon là … je vous déconseille de partir directement sur la modularisation, surtout si vous migrez une application existante. Bien que la modularité puisse aider à réduire vos images docker en construisant vos propres JRE et d’améliorer la sécurité, elle apporte son lot de complexité.
Bref pour la majorité des applications, je vous déconseille de l’intégrer.

Conclusion

Avec toutes ces manipulations, vous devriez pouvoir porter vos applications sur JAVA11. Il y aura sans doute quelques bugs. Personnellement, j’en ai eu avec CGLIB vs Spring AOP sur une classe instrumentée avec un constructeur privé. Sur ce coup j’ai contourné ce problème ( je vous laisse deviner comment 🙂 ).

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Articles similaires

citizenz7 : [NOTE] Obtenir les détails du système et du matériel Linux par la ligne de commande

lundi 3 février 2020 à 09:48
Affichage des informations système de base sur Linux Shell
$ uname
$ uname -s (kernel name)
$ uname -r (kernel release)
$ uname -v (kernel linux version)
$ uname -n (hostname - Network Node Hostname)
$ uname -m (Machine Hardware Architecture: i386, x86_64, etc.)
$ uname -p (processor type)
$ uname -i (hardware plateforme)
$ uname -o (operating system informations)
$ uname -a (display all info)

Affichage d'informations détaillées sur le matériel
$ sudo lshw (Hardware Information)
$ sudo lshw -short (Résumé des infos)
$ sudo lshw -html > hardwareinfo.html (créer une page HTML des résultats)

Affichage des informations sur le CPU
$ lscpu

Affichage des infos sur les périphériques type disques, lecteurs
$ lsblk
$ lsblk -a (informations encore plus détaillées - loop devices)

Affichage des informations sur les périphériques USB
$ lsusb
$ lsusb -v (informations encore plus détaillées : "verbose")

Affichage des informations sur les périphériques PCI
$ lspci (lspci --help pour voir toutes les options)

Affichage des informations sur les périphériques SCSI
$ lsscsi (vous devrez peut-être installer : sudo apt install lsscsi)

Affichage des informations sur les périphériques SATA
$ sudo hdparm [devicelocation] ==> exemple : $ sudo hdparm /dev/sda1

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

genma : Yunohost - Ligne lié à un bug de Needrestart

lundi 3 février 2020 à 09:00

Régulièrement lors du lancement des mises à jour via l'interface web de Yunohost, dans la partie administration, dans les logs qui apparaissent en haut de l'écran, je voyais apparaître les lignes suivantes :
Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and LINES environment variables didn't work. The resize program didn't work. The stty program didn't work. at /usr/share/perl5/NeedRestart/UI.pm line 50.

Dans le fichier /var/log/yunohost/yunohost-api.log, je retrouve le même type d'informations :
Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and LINES environment variables didn't work. The resize program didn't work. The stty program didn't work. at /usr/share/perl5/NeedRestart/UI.pm line 50.

J'ai creusé un peu et j'ai trouvé que c'était lié à
un bug de l'outil NeedRestart.

L'utilitaire needrestart permet de vérifier si les services utilisent bien les dernières bibliothèques ou librairies suite à une mise à jour de sécurité. Tout comme checkrestart, il vérifie tous les processus et liste ceux qui ont besoin d'être redémarrés. Alors pourquoi needrestart à la place de checkrestart ? Tout simplement, needrestart soutient les nouvelles technologies comme LXC et Docker. Source : MemoLinux - needrestart : vérification des services à redémarrer suite à des mises à jour de sécurité

En effet, j'ai bien installé cet outil dans le cadre de l'administration de ma machine (au delà des outils graphiques fournis par défaut dans la partie web l'administration de Yunohost).

Dans ce même descriptif de bug, https://github.com/liske/needrestart/issues/86, on retouve un lien vers des patchs et une solution corrective.

La soluion est donc de modifier unfichier en commentant deux appels / fonctions.

nano /usr/share/perl5/NeedRestart/UI.pm

# workaround Debian Bug#824564 in Term::ReadKey: pass filehandle twice
#my ($cols) = GetTerminalSize($fh, $fh);
#$columns = $cols if($cols);

J'ai appliqué ça. Me reste à investiguer un peu plus pour savoir si le patch est appliqué dans Debian 9, si oui pourquoi il n'a pas été mis avec une mise à jour du logiciel NeedRestart...

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #5

lundi 3 février 2020 à 00:01

Pour la 5ème semaine de l'année 2020, voici 15 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Julien L : GNU Guix System : du mieux et toujours autant de bonheur

dimanche 2 février 2020 à 22:48

Dans un article précédent, j’avais fait une présentation de GNU Guix et de sa distribution système dérivée GuixSD, renommée Guix System. J’avais également expliqué comment j’avais installé et configuré cette distribution sur mon ordinateur personnel, un Dell Precision M4400, afin de le rendre autant que possible fonctionnel.

Je souhaite revenir sur quelques points de mon article afin d’y apporter une mise à jour.

Disposition de clavier BÉPO

Je trouvais dommage que le changement de disposition de clavier soit compliqué.

Avec la version 1.0.0 de GNU Guix, ceci a été grandement amélioré car un système unifié de déclaration d’une disposition de clavier a été mis en place.

Les choses sont maintenant un peu plus simples à spécifier dans le fichier de configuration du système :

(operating-system
  ...
  (keyboard-layout (keyboard-layout "fr" "bepo"))  ;for the console
  ...
  (services (cons (set-xorg-configuration
                    (xorg-configuration             ;for Xorg
                      (keyboard-layout keyboard-layout)))
                  %desktop-services))
...)

Numérisation de documents

J’avais dû créer mon propre paquet sane-backends afin que le système puisse reconnaître mon scanner USB.

Entre temps, le paquet officiel sane-backends a été mis à jour et le support des périphériques USB a été activé. Mon paquet personnel n’est donc plus nécessaire.

Clés USB, cartes SD et autre media amovibles

Il semble que, sur ce point, j’étais resté bloqué au 20e siècle…

La seule solution que j’avais trouvé pour monter des media amovibles en tant qu’utilisateur avait consisté à :

  1. rendre l’exécutable mount (ainsi que umount) setuid;
  2. déclarer chaque medium amovible dans la section file-system de la configuration du système;
  3. créer manuellement un point de montage pour chaque medium.

Tout ceci n’était pas très satisfaisant.

J’ai donc creusé une nouvelle fois le problème et il s’avère qu’il existe maintenant une solution beaucoup plus simple à ce besoin et cette solution s’appelle udisks.

Ce logiciel fournit une commande, udisksctl, qui permet de monter, en tant que simple utilisateur, un medium amovible :

udisksctl mount --block-device 

Par exemple, pour monter une clé USB présentant une partition avec l’étiquette SD_CB_64G, l’utilisateur peut exécuter cette commande :

udisksctl mount --block-device /dev/disk/by-label/SD_CB_64G

Un point de montage est alors automatiquement créé dans le répertoire /media//SD_CB_64G, et le système de fichiers de la partition y est monté.

Pour démonter le système de fichiers, il y a la sous-commande unmount :

udisksctl unmount --block-device /dev/disk/by-label/SD_CB_64G

Il s’agit donc d’une solution qui ne demande pas de configuration particulière (les outils sont déjà installés sur le système de base) et qui est particulièrement flexible (cela fonctionne théoriquement pour tout medium amovible).

Conclusion

J’ajouterais que l’utilisation de GNU Guix est sensiblement plus rapide, en particulier la mise à jour des paquets (guix pull). Les choses vont donc en s’améliorant.

Je galère pour avoir un navigateur entièrement fonctionnel mais j’apprécie toujours la possibilité de se créer ses propres environnements et la facilité offerte lors des mises à jour système.

Gravatar de Julien L
Original post of Julien L.Votez pour ce billet sur Planet Libre.

Articles similaires