Developpez.com

Le Club des Développeurs et IT Pro

Java 11 : migrer ou changer de langage

Qu'envisagez-vous de faire suite aux derniers changements annoncés par Oracle ?

Le 2018-07-02 15:26:37, par gangsoleil, Modérateur
Bonjour,

Suite au changement radical de la roadmap Java par Oracle, et au passage du support long terme payant, je me demande quels sont les impacts de ces changements, et s'il est préférable de migrer ou bien de changer de langage.

Je m'explique : la question n'est pas le changement de version une fois (même de Java 8 à 11). De même que les entreprises ont dû faire évoluer les versions précédentes de Java, un unique changement de version n'est pas le sujet. En revanche, ici, ce n'est plus un unique changement de version : le support de Java 8 devient payant, et une nouvelle version de Java va sortir tous les 6 mois, à priori avec le support payant de la version N-1 à chaque fois. Ainsi, en mars 2019, Java 12 devrait sortir et le support de Java11 deviendra payant, etc.

Pour les entreprises qui sont en Java8, il y a plusieurs changements majeurs -- Java Web Start, Java FX, les applets, Java EE, CORBA sont enlevés par exemple. Le coût de ces changements technologiques est loin d'être anodin, et on peut craindre que d'autres fonctionnalités soient ainsi enlevées, ou forcées, dans les prochaines versions.

Du coup, je me pose, sérieusement, la question : faut-il faire ces changements, prévoir d'en faire d'autres dans le futur, et caler sa roadmap sur celle de Java -- avec un décalage -- ou bien faut-il envisager de changer de langage ?

Et si l'on veut changer, pour quel langage ?? Attention, ce que je veux dire ici, c'est quel langage pourrait fournir le même genre de choses, c'est-à-dire être complet, avec une partie graphique "simple", etc.

Est-ce que vous avez analysé ce problème ?
Est-ce que vous avez déjà pris des décisions dans un sens ou dans l'autre ?

Merci de vos retours
  Discussion forum
142 commentaires
  • Tcharl
    Membre averti
    C'est les majors LTS (Java 8, Java 11, puis toutes les 3 versions donc 14, 17, etc. Qui vont faire devenir payantes les lts précédente. Donc pas de souci si tu fais 8, 11,14,17 au moment où elles sortent, tu ne payeras rien, et tu auras eu le temps de prototyper entre temps avec les versions intermédiaires.

    Pas de souci donc, ça ne paraît pas si bloquant que ça, faut pas se leurrer, ça embête tout le monde de maintenir des versions 'legacy'. Sinon il y a kotlin ou rust, suivant le contexte
  • Pyramidev
    Expert éminent
    Envoyé par ShigruM
    J'ai migré a 100% vers python3, mon seul regret sur ce langage c'est python2.7 qui fait office de tumeur/boulet sur ce magnifique langage.
    Python est riche, mais est réputé pour sa faible vitesse d'exécution, même si on utilise une implémentation plus performante que CPython. Donc migrer de Java vers Python 3 nécessite de ne pas avoir des besoins trop exigeants en performance.
  • Mickael_Istria
    Membre émérite
    Envoyé par ShigruM
    Java est devenue un cancer a cause d'oracle et de ces licences.

    Moi je suis pas avocat, je suis développeur en informatique.
    Justement, evite de dire n'importe quoi si t'es pas au courant des parties legales...
    Java reste ouvert et bien ouvert, les implems comme OpenJDK sont du vrai OSS sans contreparties. La licence c'est GPLv2+CE. Seuls le JDK d'Oracle et d'autres JDK specifiques sont commerciaux et sous contraintes d'utilisation; mais c'est bien explique et quoi qu'il en soit, il y a toujours moyen d'utiliser OpenJDK sans probleme. Donc, non Java c'est pas un cancer, et c'est en fait plus ouvert que ca ne l'a jamais ete.

    Du coup, la discussion a tourne au grand n'importe quoi. Beaucoup semblent faire l'amalgamme entre Java et Oracle JDK. C'est completement erronne. Java c'est une spec qui est OSS regie par le JCP qui emet des JSR; et tout ca est ouvert et implique de multiples vendeurs. Apres, les implems de Java sont nombreuses (Oracle JDK, OpenJDK -1/2 Oracle + 1/2 IBM en gros-, Zulu...), et vous etes libres de choisir celle que vous voulez. OpenJDK est open-source et n'est en rien affecte par les decisions d'Oracle a propos d'OracleJDK.
  • Mickael_Istria
    Membre émérite
    Envoyé par Anselme45
    Tôt ou tard avec Oracle, tout deviendra payant!
    D'ailleurs de nombreux exemples le prouvent, OpenJDK, NetBeans, GlassFish, Java EE, Java Mission Control... Ah non, en fait, c'est le contraire, Oracle a quasiment rendu open-source tout son porte-feuille Java!

    Alors, il est, me semble-t-il, inutile de vouloir se faire une formation accélérée de "juriste émérite"... Autant utiliser son temps de développeur à trouver une alternative à Java pour le futur!
    Sans chercher a comprendre l'ecosysteme et en ne se basant que sur ses impressions ou ressentiments, on manque de lucidite et on fait des mauvais choix technologiques et strategiques, qui ne sont pas rentables voire dangeureux a long terme.
  • GLDavid
    Expert confirmé
    Bonjour

    Question intéressante.
    Bon, on commence par le commencement: j'ai été programmeur Java professionnel, une publi où je suis coauteur contient une de mes applis en Java, bref, j'ai été un ardent supporter de Java jusqu'à récemment.
    Pour moi, la vente de Sun a été un crève-coeur mais ce fut encore plus terrible quand j'ai lu qu'Oracle en était le bénéficiaire. On connait tous sa politique de rachat pour mieux étouffer la concurrence et son agressivité envers le client. Il m'a fallu trouver une alternative. Je bosse dans le domaine pharma, chimie, biologie et Java présentait l'avantage d'avoir un écosystème scientifique particulièrement large. Comment s'y retrouver?

    Déjà, JDK peut être trouvé avec OpenJDK. Si tant est que l'on soit constraint d'utiliser Java, OpenJDK est alors incontournable.
    Dans le cas contraire, et bien je preconise... C#. Et oui, malgré que j'ai pu vomir à l'époque triomphante de Java sur .NET à ses débuts, force est de constater que .NET es devenu mature et particulièrement riche. Tout ce que fait Java, C# le fait et c'est meme Java qui est à la traîne en terme de fonctionnalités. Tu veux faire du web? MVC.NET est alors apprécié (désolé les amis mais SPring est intéressant, très puissant, mais très complexe à configurer avec tous ses fichiers). Et niveau écosystème, est-ce que je m'y retrouve? Et bien oui, de nombreuses libraries existent maintenant en .NET dans mes domains, facilitant ma transition. Dernier point comme il a été dit auparavant, .NET core permet un développement 'cross-platform' et c'est une force de Java qui se retrouve du côté .NET.

    J'entends effectivement que .NET c'est Microsoft, c'est le mal absolu, blablabla... Oui, il y a des alternatives sous forme de langages interprêtés comme python qui est un outsider de choix. Mais pour l'entreprise, .NET est devenu fiable comme choix et est reconnu dans tous les départements IT que j'ai pû accompagner.

    Tout dépendra du développement que tu veux faire,

    @++
  • GordonFreeman
    Membre éclairé
    Entre ceci :
    Envoyé par Drowan
    Si je comprends bien, l'idée derrière ça c'est un peu de mettre une amende à ceux qui reste sur des vielles versions mais qui veulent quand même les correctifs.
    Ainsi Oracle souhaite forcer l'utilisation de la dernière version et avoir moins besoin de maintenir les vieilles
    Et ceci :

    Envoyé par Mickael_Istria
    Justement, evite de dire n'importe quoi si t'es pas au courant des parties legales...
    Java reste ouvert et bien ouvert, les implems comme OpenJDK sont du vrai OSS sans contreparties. La licence c'est GPLv2+CE. Seuls le JDK d'Oracle et d'autres JDK specifiques sont commerciaux et sous contraintes d'utilisation; mais c'est bien explique et quoi qu'il en soit, il y a toujours moyen d'utiliser OpenJDK sans probleme. Donc, non Java c'est pas un cancer, et c'est en fait plus ouvert que ca ne l'a jamais ete.

    Du coup, la discussion a tourne au grand n'importe quoi. Beaucoup semble faire l'amalgamme entre Java et Oracle JDK. C'est completement erronne. Java c'est une spec qui est OSS regie par le JCP qui emet des JSR; et tout ca est ouvert et implique de multiples vendeurs. Apres, les implems de Java sont nombreuses (Oracle JDK, OpenJDK -1/2 Oracle + 1/2 IBM en gros-, Zulu...), et vous etes libres de choisir celle que vous voulez. OpenJDK est open-source et n'est en rien affecte par les decisions d'Oracle a propos d'OpenJDK.
    Je crois que tout est dit.

    Donc aucune raison de s'exciter, les alternative à l'implémentation d'Oracle sont là et le sont depuis bien longtemps et vont perdurer bien au delà d'Oracle.

    Donc smile and enjoy OpenJDK
  • GordonFreeman
    Membre éclairé
    Envoyé par gangsoleil
    Juste pour savoir, vous avez quelle portion de vos clients qui gèrent eux-même leur JDK/JRE qui utilisent OpenJDK et pas celui d'Oracle ? Que ce soit dans mon ancienne entreprise ou bien dans mon entreprise actuelle, il n'y en a aucun. Les seuls à ne pas utiliser le JRE Oracle sont ceux qui ont une architecture matérielle incompatible (à savoir des processeurs IBM powerPC, et dans ce cas ils utilisent le JRE d'IBM, ce qui pose des problèmes).

    Donc je pense que non, le passage vers OpenJDK ne va pas se faire non plus dans la minute.
    Alors ou je travaillais avant toutes nos applis (dont la plus grosse 2,3 millions de ligne de code) étaient développé avec les JDK Oracle par les dev et étaient déployés dans des serveurs WebSphere et tournaient sur le JDK d'IBM -> aucun soucis!

    Le plus gros problème était les évolutions du JDK IBM qui ne suivaient pas forcément les release officielles, Si je ne m'abuse le JDK 6 d'IBM n'est jamais sortis.

    Donc forcément tous nos clients utilisaient le JDK d'IBM...

    En théorie une implémentation de JDK (validée par le Technology Compatibility Kit (TCK) ) se remplace par une autre. Et ça se vérifie plutôt pas mal (même qu'il peut y avoir parfois quelques petites subtilités/fourberies cachées...)
  • Jamatronic
    Membre éprouvé
    Revenez au bon vieux C, un monde dans lequel personne ne cherchera à vous en*@!###.

    Ah non ! C'est vrai, vous ne pourriez plus.
  • dad3zero
    Membre actif
    Envoyé par gangsoleil
    Du coup, je me pose, sérieusement, la question : faut-il faire ces changements, prévoir d'en faire d'autres dans le futur, et caler sa roadmap sur celle de Java -- avec un décalage -- ou bien faut-il envisager de changer de langage ?

    Et si l'on veut changer, pour quel langage ?? Attention, ce que je veux dire ici, c'est quel langage pourrait fournir le même genre de choses, c'est-à-dire être complet, avec une partie graphique "simple", etc.
    Si c'était si simple…

    En théorie, ça devrait. Mais dans la réalité, qui migrerait tout un SI Java vers autre chose ?

    L'autre point est la compétence disponible. Il me semble aussi qu'un dev Java pourrait migrer vers du C# (désolé pour l'approximation du symbol) vu la proximité des technos, mais vers autre chose, c'est toujours compliqué. Python a le vent en poupe, mais son aspect dynamique fait que l'on perd la moitié des devs en chemin.

    Migrer n'est pas si anodin quand on a déjà un existant. Pour tout nouveau projet (dans une infra existante ou son propre business), il faut jauger entre ces points négatifs et la disponibilité des compétences.

    Envoyé par ShigruM
    J'ai migré a 100% vers python3, mon seul regret sur ce langage c'est python2.7 qui fait office de tumeur/boulet sur ce magnifique langage. Une fois python2.7 enterré une bonne fois pour toute le langage devrait davantage sublimé.
    Le problème du boulet Python 2 est malheureusement un problème d'utilisateurs. La gouvernance est critiquable (le support de Python 2 n'aurai jamais dû être prolongé), mais il illustre la difficulté de migration. Néanmoins, j'ai plaisir à voir en formation que Python 2 devient très anecdotique.

    Envoyé par Pyramidev
    Python est riche, mais est réputé pour sa faible vitesse d'exécution, même si on utilise une implémentation plus performante que CPython. Donc migrer de Java vers Python 3 nécessite de ne pas avoir des besoins trop exigeants en performance.
    "Réputé"…*On parle de Java qui est aussi "réputé" être lent… Je ne suis pas en train de lancer la polémique à quel point c'est vrai, oui le coté interprété fait que Python est mathématiquement "plus lent". Maintenant, Youtube, Pinterest ou Instagram sont suffisamment peu exigeants pour se contenter de Python pour leur front, à chacun de voir son besoin en comparaison…
  • dad3zero
    Membre actif
    Envoyé par atha2
    Il y aussi Jython pour ce qui est d'une implementation perfomante de python, par contre ça utilise les api et le runtime java donc pas sur que ça aide si on cherche à ne pas avoir de problème juridique.
    Heu… Alors pour rappel, la dernière release de Jython, c'est 2015. Aucun support Python 3, rapport de perfs en chute libre…

    Avant les entreprises mettaient minimum 1 an avant de migré de version (le temps de valider le comportement de la mise à niveau et que les premiers bugs aient été corrigé). Aujourd'hui avec la mouvance agile, Oracle essaie de nous dire, on aura peut-être des bugs mais on vous promet que ils seront rapidement corrigé.
    Je ne vois pas du tout le rapport avec la mouvance agile… L'agilité relève de la gestion de projet, pas de l'exploitation qui elle a une considération de qualité de service…