Skip to content

Compatibilité Java 8 côté client a minima (Java 11 imposé mais trop limitatif) #38

@fredericBregier

Description

@fredericBregier

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 :

  • Le coeur (non client) est écrit et compilé en Java 11 (mais impose bien sûr d'être exécuté en Java 11, et donc que tout un chacun dispose d'une telle version de Java sur ses OS)
  • Les clients (librairies) sont écrites et compilées en Java 8 afin d'être compatible Java 8 (pas de pression sur les "clients" externes qui utilisent vos outils).

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 ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions