-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compatibilité Java 8 côté client a minima (Java 11 imposé mais trop limitatif) #38
Comments
En regardant les pom.xml, vous compilez en effet en Java 11 pour l'ensemble (coeur Vitam et "client"). Donc incompatibilité à partir de la version 3 avec tous ceux qui utilisent et sont compatibles avec Java 8 (> 80% du parc)... Peut-être faire comme certains grands projets qui ont différentes distributions: jdk11 / jdk 8 ? A minima, si pour le coeur c'est compréhensible (encore que ?), pour les parties clientes, cela vous coupe d'un grand nombre d'acteurs... Qu'en pensez-vous ? |
Confirmation: avec les jar Vitam, Java 11 devient une condition sine qua non de l'usage de Vitam. Exemple de build maven avec Java 8 pour un programme utilisant les dépendances "'clientes" Vitam : Conséquences : soit les autres projets migrent eux-aussi à Java 11, interdisant à tous leurs clients avec Java 8 de l'utiliser, soit ils ignorent la version 3.0.x de Vitam et restent définitivement en version 2.X... Je pense que votre argument de "les clients ont des OS qui imposent Java 11" ne justifiait pas le passage en Java 11 de vos sources et binaires, car un Jar en Java 8 fonctionne sous Java 11, à l'inverse un jar en Java 11 ne fonctionnera jamais sous Java 8. Vous vous coupez donc de nombreux utilisateurs, ce qui me semble contraire à ce que vous annonciez. |
Pour info, côté binaire, voici mes dépendances (hors test):
Côté tests, il faut ajouter:
Le besoin n'était que d'adresser les API externes Ingest et Access, plus les fonctions de validation d'opérations longue durée. Pour les tests automatisées, il faut simuler un certain nombre de choses, d'où les dépendances étendues. Et je dois de plus m'assurer en version 3.0.1 avec Java 11 (j'ai les deux sur mon poste) d'une possible régression fonctionnelle suite à l'upgrade de 2.5 à 3.0. |
Selon mes informations, il serait utile d'avoir l'une des deux options suivantes de votre côté pour éviter de perdre tous vos clients qui ne peuvent pas monter en Java 11 (8, 9, 10). Je rappelle : Ceux qui sont en Java 11 peuvent tourner des "jar" compilés en Java 8, mais pas l'inverse. Option A) Tous les jars sont compilés en Java 8, ce qui les rend compatibles pour Java 8, 9, 10, 11 et suivants... Clairement ce que je préconiserais
Option B) Vous avez 2 séries de Jar:
|
A noter que ce passage en Java 11 conduit à créer une version dégradée des outils clients de Vitam puisque les dépendances sont très différentes et incompatibles (Java 8 vs 11)... cf example WaarpVitam waarp/WaarpVitam#5 |
Il semble que la 3.0.3 ne fixe pas ces points. Je me trompe ? |
Hello,
Je n'ai pas regardé encore comment vous construisez les binaires (jar) Java, mais cet article est me semble-t-il assez en phase avec votre cas :
https://medium.com/uptake-tech/migrating-to-java-11-while-maintaining-a-java-8-client-library-f618a3ca6499
L'idée générale est :
Malheureusement, pas moyen, selon la littérature, d'avoir une compilation d'un code source Java 11 vers un code Java 8 sans risque sans cette option
-release
qui check la compatibilité du code source (et donc impose les changements dans le code source pour être compatible). Pas de compatibilité descendante (11 vers 8), mais uniquement ascendante (8 vers 11).En limitant les modifications de compatibilité aux librairies dites "clientes" (et elles sont nombreuses dans Vitam), cela restreint la portée de maintenir Java 8 dans le code (10 à 20% du code total ?). C'est un moindre mal, sans doute.
Qu'en pensez-vous ?
The text was updated successfully, but these errors were encountered: