Sujet :
Débats sur le développement - Le Best Of
-
Modérateur
Java 11 : migrer ou changer de langage
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
-
Nouveau Candidat au Club
changer de langage.
Java est devenue un cancer a cause d'oracle et de ces licences.
Moi je suis pas avocat, je suis développeur en informatique. Il me faut travailler avec du domaine publique ou équivalent. Donc python 100% gratuit et libre. Je peut même vendre ma propre version de python si je veut et la majorité des libs existantes.
Bref pourquoi encore s’embêter avec des licences a gogo et des armées d'avocats et des process qui n'en finissent pas.
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é.
-
Membre éclairé
Envoyé par
gangsoleil
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.
Je ne code plus en Java depuis longtemps mais je pense vraiment que language le plus proche de Java est le C#. Personnellement, je ne vois quasiment aucune différence entre ces 2 langages à s'exception que C# n'est utilisable pratiquement que sous Windows mais bon pour faire des logicielles d'entreprise ou perso cela fait largement l'affaire, je préfère même au java.
Beaucoup de gens se plaignent que le C# est propriétaire Microsoft mais en vrai cela ne change pas grand-chose.
-
Membre expérimenté
Qu'en est-il de Kotlin et de Scala au niveau des licenses ? Estimez-vous qu'ils seront impactés également ? J'avoue ne pas comprendre ce que du "support payant" implique, l'accès à l'API Java 8 va-t-il devenir payant ?
Si ce n'est pas ça, qui ici a déjà utilisé le support Java et sous quelle forme ?
Désolé si la question paraît idiote ... J'utilise Java et Kotlin au quotidien mais je ne me suis jamais intéressé à ces questions ...
-
Membre éprouvé
Envoyé par
Matthieu76
Je ne code plus en Java depuis longtemps mais je pense vraiment que language le plus proche de Java est le C#. Personnellement, je ne vois quasiment aucune différence entre ces 2 langages à s'exception que C# n'est utilisable pratiquement que sous Windows mais bon pour faire des logicielles d'entreprise ou perso cela fait largement l'affaire, je préfère même au java.
Beaucoup de gens se plaignent que le C# est propriétaire Microsoft mais en vrai cela ne change pas grand-chose.
Je ne sais pas comment tu as pu échapper à l'information du reboot de C# en open source.
Le Framework .NET est effectivement intrinsèquement lié à Windows. Pas .NET Core/ASP.NET Core
Si il faut une application avec une GUI, il existe https://github.com/AvaloniaUI/Avalonia , et ainsi on a une application cross-plateformes, codée avec un langage open source (licence MIT).
Personnellement, Java pour du client-serveur peut très aisément être remplacé par du C# (.NET Core/ASP.NET Core).
Pour une GUI, il faudra dès lors voir ce qu'il est possible de faire avec Avalonia.
Quant aux "paquets" tout est géré par NuGet.
-
Membre éprouvé
Envoyé par
Shepard
J'avoue ne pas comprendre ce que du "support payant" implique, l'accès à l'API Java 8 va-t-il devenir payant ?
Je pense que c'est au niveau des mises à jour de sécurité et des bugs. Si un trou béant est trouvé dans Java 8, tu ne pourra te procurer le fix que contre payement.
Envoyé par
Shepard
Si ce n'est pas ça, qui ici a déjà utilisé le support Java et sous quelle forme ?
Mais il me semble que Kotlin est un sur-ensemble à Java non ?
Ce qui laisserait la question de fond sur Java.
-
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.
-
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…
-
En alternatives à Java il y a aussi Golang qui est intéressant, sinon un bon vieux C++ qui est bien plus abordable de nos jours que sa réputation ne le laisse entendre.
-
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…
-
Membre averti
Errata
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
-
Membre éprouvé
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.
Il y aussi Jython pour ce qui est d'une implémentation apparemment performante 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.
Sinon pour répondre à l'article original, à mon avis oracle pousse les entreprise à migrer plus rapidement, en estimant qu'ils (oracle) seront plus réactifs à corriger les bugs s'ils n'ont qu'une version à gérer. De même, il pourront mettre toutes leurs ressources qui géraient les versions précédentes sur la version courante (ou les mettre à la porte...). Avant (et encore maintenant), les entreprises mettaient minimum 1 an avant de migrer 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é. Pas sur que ce soit une bonne idée, même avec le cloud et autre container, il est toujours compliqué de downgrader une application (parce que la dernière version du code utilise des features spécifiques à la version de java buggée).
sur le retrait de Java Web Start, Java FX, les applets, Java EE, CORBA du JDK, il faut séparer plusieur cas :
-Java EE (renommé Jakarta EE) a été confié à la Eclipse Fondation et Java FX devrait être aussi confié à une fondation open source.
-CORBA je n'ai pas vu d'info mais au vu de l'existant, ça devrait être pareil.
-Applet ? Il existe encore des gens qui utilisent des Applets en 2018 ? Malheureusement je crois que oui (il me semble que c'est pas mal utiliser dans la recherche pour afficher des simulations).
Mon impression générale est que Oracle essai de diminuer les coups liés à Java. S'il voulait vendre il ne s'y prendrait pas différemment... Mais je vois pas problème à long terme pour Java, il y aura toujours une entreprise comme IBM ou Redhat pour reprendre la gestion.
Pour un nouveau langage, au bouleau sur du dev backend, on est passé de Java EE à Go (pour uniquement des raisons techniques que et non juridiques ou causé par le passage à Jakarta EE). Le langage Go (compilé) est très simple, bien conçu (les interfaces sont implémentées implicitement (validées à la compilation), ce qui simplifie beaucoup de chose niveau archi) et la librairie /tooling standard est nickel niveau IO, HTTP, goroutine, chan, templating et test. Par contre je ne sais pas ce que ça vaut niveau GUI standalone, ce topic : https://stackoverflow.com/questions/...upport-library évoque plusieurs alternatives, sinon il existe sur github des portages non officiel de Qt en go.
EDIT:
Envoyé par
dad3zero
Heu… Alors pour rappel, la dernière release de Jython, c'est 2015. Aucun support Python 3, rapport de perfs en chute libre…
Au temps pour moi j'avais perdu le projet de vu depuis un baille (et pour cause).
Envoyé par
dad3zero
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…
Le rapport c'est la pratique DevOps qui vise à unifier les équipes dev et opérationnelles, le tout étant agile. Après je ne dis pas que toutes les entreprises sont prêtes/adaptées pour ça. Note qu'on parle de Méthodes agiles, ce n'est pas parce qu'on est agile qu'on déploie à l'arrache.
-
Expert éminent
Envoyé par
atha2
Il y aussi Jython pour ce qui est d'une implémentation apparemment performante 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.
Comme l'a souligné dad3zero, Jython est mort.
Envoyé par
atha2
Le langage Go (compilé) est très simple, bien conçu (les interfaces sont implémentées implicitement (validées à la compilation), ce qui simplifie beaucoup de chose niveau archi)
Moi aussi, pour l'architecture, je préfère généralement le sous-typage structurel à l'héritage. Mais il en faut bien plus que ça pour que je considère un langage de programmation moderne comme "bien conçu".
Je suis en train de rechercher quel langage est le mieux conçu selon mes critères, mais le peu que j'ai vu du langage Go m'a fait fuir très vite. Je pense par exemple à la page Why Go Is Not Good. Je ne sais pas si de tels choix sont le fruit de l'ignorance ou bien s'ils l'ont fait exprès pour que Go paraisse plus familier auprès des développeurs de nos générations.
Je suis en train d'approfondir Haskell et D que je trouve mieux conçus que les langages que je connais déjà. Je n'ai pas encore regardé Rust.
PS : Je ne conseille pas une migration de Java vers Haskell, car ce dernier est dur à apprendre. D s'apprend plus facilement et peut s'apprendre progressivement, car il supporte un style de programmation proche du Java, en plus d'autres styles. Mais je ne sais pas encore si une migration de Java vers D serait judicieuse, car je ne connais pas encore les bibliothèques autour du D.
-
De toute façon, ce sont les premiers de cordée (les développeurs de framework de dev pour l'essentiel qui décideront pour nous).
Si vous nagez dans l'open source, vos intérêts seront ceux de vos fournisseurs de framework si surtout il s'agit de fondations à but non lucratif. Mieux s'il s'agit de logiciel libre.
Sinon, il se peut que se créent des partenariats avec Oracle : je développe mon framework propriétaire (voire open source) en jdk 11 contre une commission pour chaque licence Java vendue avec chaque licence d'utilisation de mon framework qui se traduira dans les faits par des rabais sur les licences java 11.
-
Pour ma part, je suis un peu inquiet à propos d'Eclipse qui est très réactif avec les versions de Jdk. Photon supporte jdk 10, par exemple. Eclipse Quantum acceptera quoi ?
bien que j'ose croire qu'il n'y aura pas de rupture de la politique d'édition et que les versions suivantes d'eclipse accepteront les versions antérieures de jdk.
-
-
java permet de tous faire
donc il faut un langage pouvant tous faire, ce que ne fais pas D ou Haskel, ils serons assez limité (mais peuvent répondre aux besoins de certains)
Mais si vous voulez un langage pour faire des IHM, du calculs et du web, alors python reste aujourd'hui la meilleur alternativement, il est même bien plus polyvalent que Java.
Mais il est complètement stupide de migrer un site web en Java EE vers du D par exemple, puisque D ne permet pas de faire un site web (enfin on peut créer un serveur web mais c'est de la bidouille, rien de sérieux).
Par contre migrer vers du PHP7 ou du python avec Django est un choix plus intelligent.
D c'est uniquement pour faire des calculs c'est tous, pas de web, pas d'ihm...etc.
-
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,
@++
-
Modérateur
Hello,
Merci pour tous ces retours, c'est vraiment super.
Mon problème actuel -- et je ne suis pas le seul dans ce cas -- est que nous avons une grosse application Java qui utilise certains de ces merveilleux composants qui vont être payants (pour faire des raccourcis) en Java 8 -- donc en janvier 2019.
Le coût de migration vers Java 11 est loin d'être négligeable, et je pense que c'est une bonne occasion de se poser sérieusement la question de la migration ou de la ré-écriture, chacune ayant ses avantages et ses inconvénients.
Ma crainte avec la migration est que ces changements vont maintenant être réguliers : Java 12 et 13 auront une durée de vie de 6 mois, comme 9 et 10, et 14 (prochaine LTS) apportera son lot de changements, avec potentiellement encore de gros changements, donc encore un réel coût.
Quant à la ré-écriture, c'est encore plus complexe ou presque.
Le soucis que je vois pour C# est que ce langage n'a pas la réputation d'être multi-plateformes (oui, j'ai vu pour les parties core, il faut que je me renseigne là-dessus). Pour Kotlin et Scala, le manque de notoriété de ces langages (manque de lib, manque de développeurs) va être rhédibitoire.
Reste python avec un framework de type Django ou autre. Je suis persuadé des possibilités, reste à voir les perfs à grande échelle.
Je reste ouvert à tous les avis, commentaires et autres.
-
Discussions similaires
-
Réponses: 4
Dernier message: 06/04/2011, 11h30
-
Réponses: 0
Dernier message: 30/10/2009, 17h39
-
Réponses: 7
Dernier message: 04/10/2009, 22h01
-
Réponses: 4
Dernier message: 23/04/2007, 12h23
-
Réponses: 5
Dernier message: 02/02/2006, 16h01
×
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité,
merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager