Le Java d'aujourd'hui est la lingua franca du domaine de la programmation : en tant que langage, il est plus facile à apprendre que C/C++, se lit plus naturellement que Perl/Lisp et est plus professionnel à utiliser que VB/PHP. Presque personne n'est incapable de comprendre Java, donc lorsqu'on explique un concept, l'écrire en Java le rend compréhensible pour tout le monde.
Et en tant que plateforme, Java possède une bibliothèque de classes englobant tout, une machine virtuelle extrêmement optimisée et des projets open source profondément enracinés. Le résultat est que, quoi que vous vouliez faire, théoriquement — et même, pratiquement, 99 % du temps — cela peut être implémenté en Java.
Au moment où j'écris ces mots, des dizaines de milliers de lignes de code Java voient le jour dans le monde. Donc si « personne ne l'utilise plus » est le critère de mort d'une technologie, alors Java est clairement vivant, et se porte plutôt bien ; si « pouvoir trouver un emploi » est le critère de mort, alors Java est encore plus plein de vie. Je ne connais pas bien la situation nationale, mais sur n'importe quel site d'emploi en Europe ou en Amérique, rechercher des postes ayant Java comme mot-clé permet facilement de constater sa position dominante, battant C++ et donnant une raclée à PHP.
Personne ne se demande pourquoi il est vivant ; nous tenons pour acquis qu'il est vivant, tout comme je ne me demande jamais s'il y aura encore du travail quand j'irai travailler demain — il est vrai.
Mais dans ce cas, autant dire que Java a atteint l'immortalité. Car si vous parcourez TIOBE selon les deux définitions ci-dessus, vous constaterez qu'aucun langage de programmation un tant soit peu connu (et la technologie qui le sous-tend) n'est vraiment mort. Visual Basic est toujours vivant, Delphi est toujours vivant, COBOL est vivant, Fortran est vivant, et même FoxPro est vivant.
Quant à des exemples encore plus confidentiels, avez-vous entendu parler du système IBM AS/400 ? Mon dernier employeur l'utilise encore. Les programmeurs qui le maintiennent obtiennent des salaires de départ ridiculement élevés parce que vingt ans de la logique métier centrale de l'entreprise s'y trouvent — s'il tombe en panne, tout tombe en panne. AS/400 est également vivant.
Alors quand je dis « Java va mourir / est mort », que signifie « mort » ? Très simple : plus personne ne l'aime.
La réponse dans cette même section qui réécrit le poème de Niemöller fait parfaitement écho à la phrase de Paul Graham : « de tous les grands programmeurs qui me viennent à l'esprit, je n'en connais qu'un seul qui programmerait volontairement en Java » : neuf personnes sur dix qui écrivent du Java le font « parce que le travail l'exige » — la dernière parce qu'elle ne connaît rien d'autre. Parmi tous les motifs pour écrire des programmes que je peux imaginer, « parce que le travail l'exige » est le plus décourageant.
Sacrifier la santé de votre prostate et de votre colonne vertébrale, passer de longues heures devant l’écran à endurer l’écriture de programmes en Java juste pour gagner sa vie—je trouve ça ennuyeux de toute façon. Si vous pouvez encore en rire, tant mieux pour vous.
Et à moins que vous n’ayez tout juste voyagé dans le temps depuis 1995, vous devriez pouvoir constater que le Java d’aujourd’hui n’est effectivement pas si attachant que ça.
En matière de fonctionnalités du langage, plutôt que de dire qu’il n’a pas de problèmes majeurs, il est plus exact de dire que ses problèmes ont déjà de nombreux contournements matures, comme les méthodes statiques qui ne peuvent pas être redéfinies, les exceptions vérifiées superflues et les génériques à moitié cuits. Ce qui est vraiment pénible, ce sont les fonctionnalités qui lui manquent—je peux dire que struct, delegate, async/await, gestionnaire d’événements, accesseur, la prise en charge de la surcharge d’opérateurs (bon, celle-ci n’est pas forcément une bonne chose) et même l’inférence de type en C# manquent tous en Java (ou ne peuvent être implémentés que par des bibliothèques tierces qui ne font qu’effleurer la surface), sans parler des vrais génériques à l’exécution. Pris isolément, on pourrait penser que chaque point n’est rien, mais quand tous s’accumulent, C# devient bien plus attachant que Java.
Ces fonctionnalités finiront peut-être par apparaître un jour dans Java, tout comme Java 7 a finalement eu le switch sur les chaînes et try-with-resources, et Java 8 a finalement eu les lambdas. Mais tant qu’elles n’apparaissent pas, vous devez endurer, en plus du labyrinthe technique gonflé, complexe et imprononçable de Java EE. Et grâce à Oracle, vous ne savez pas combien de temps vous devrez endurer—pour référence, Java 8 est à peu près l’équivalent de .NET Framework 3.0, et .NET Framework 3.0 datait de 2006, lorsque le plus grand acteur du marché du téléphone mobile était Nokia.
À tout point de vue, Oracle n'est pas une entreprise qui améliore ses outils en pensant aux développeurs. Elle est plus détestée par les développeurs que Microsoft, qui dispose au moins de la bibliothèque de documentation MSDN bien organisée et détaillée, de la plateforme open source CodePlex, médiocre mais en constante amélioration, et d'un gros chauve qui transpire à travers sa chemise sur scène en criant « developers developers developers ».
Et qu'a fait Oracle ? Elle a laissé MySQL au bord de la route, en pâture aux chiens. Elle a mis à la porte la communauté de développement OpenOffice. Elle a poursuivi Android en justice de manière absurde.
Ainsi, la démission de James Gosling au moment même où Oracle rachetait Sun est ce qu'on appelle de la clairvoyance.
Pas étonnant que tout le monde rivalise pour inventer de nouveaux langages sur la JVM et porter d'autres langages vers la JVM. C'est juste que ces tentatives sont trop dispersées dans leurs efforts, et aucune n'a réussi à dominer la scène et à redonner espoir à la communauté Java.
Notre situation actuelle est que personne n'a écrit de Java ME depuis 2007 ; à part quelques projets d'IDE, le programme le plus célèbre en Java SE n'est que Minecraft ; Java EE et Android sont les deux seules parties de Java encore bien vivantes. Dalvik est une faction à part, donc rien à dire là-dessus. La JVM sur *nix est en fait le seul pilier restant de Java en tant que plateforme. Elle n'avait jamais eu de véritable concurrent auparavant — soit trop immature, soit trop peu consistant — et cette situation a perduré jusqu'au 12 novembre 2014.
Et voici la réponse à votre question : Microsoft, dont le PDG a déclaré il y a plus de dix ans que « Linux est un cancer », prend désormais officiellement en charge sa plateforme de production à forte valeur ajoutée fonctionnant sous Linux, et elle est open source et gratuite.
Tous les fournisseurs de services dans le monde qui peuvent vous vendre un hébergement virtuel sous Linux sont soudainement devenus, du jour au lendemain, des fournisseurs d'hébergement .NET. Les personnes qui n'aiment pas Java ont soudain un nouveau choix : une documentation complète, un bon support, une feuille de route claire, une communauté solide, des outils faciles à utiliser, une fiabilité de niveau entreprise, et le meilleur, c'est que 90% de l'expérience Java antérieure peut être transférée en toute transparence.
Je n'ai jamais dit que les résultats de cela seraient immédiats. Mais quand je pense à quel point Java était autrefois omniprésent — il fonctionne même à l'intérieur de votre carte SIM, encore aujourd'hui — et qu'il pourrait pourtant, au cours de ma vie, devenir le COBOL de 1973, je ressens combien les choses sont impermanentes. Je crois que les systèmes Java existants deviendront progressivement du code hérité, et les gens continueront de les maintenir uniquement parce qu'ils doivent être maintenus.
De nouvelles luttes surgiront encore. Après tout, un chameau maigre est plus grand qu'un cheval, et une bande de rats peut ronger la carcasse d'un chameau pendant un bon moment — pour apaiser la douleur que votre âme délicate pourrait ressentir en lisant cette phrase, j'admets que je ne suis qu'une puce sur l'un des rats qui rongent Java (hum ? En fait, vous ne souffrez pas du tout ? Voyez, même vous n'aimez pas Java) — ce sera sans aucun doute un long processus. Donc, si vous êtes un nouveau programmeur Java, vous n'avez pas besoin de vous inquiéter de l'évolution de votre carrière. À moins que l'humanité invente une technologie d'immortalité, vous ne vivrez pas assez longtemps pour voir le jour où vous ne pourrez pas trouver d'emploi parce que vous ne connaissez que Java.
Même dans le pire des cas, si vous pouvez vraiment vous conduire vous-même dans une telle impasse, autant vous tourner tôt vers le management.
Enfin, je n'ai pas « crié » pour que Java aille mourir, car ce n'est ni une déclaration, ni une malédiction, mais simplement une conclusion tirée après avoir observé la situation actuelle. Bien sûr, « va mourir » est difficile à interpréter sans charge émotionnelle, tout comme lorsque je tape kill -9, il est difficile de ne pas faire penser que je déteste ce processus. Même si, en réalité, je ne le déteste pas. Si je le déteste, ce n'est que pour un instant.
De plus, ce genre de discours selon lequel « les grands programmeurs ne choisissent que l’outil le plus adapté pour résoudre le problème, et ne débattent pas de qui est bon ou mauvais » — la première moitié est vraie, la seconde relève complètement du mythe. Tout le monde n’est pas pragmatique. Beaucoup de grands programmeurs débattent de quels outils sont bons ou mauvais. Les gens qui disent cela doivent lire davantage.
Déclaration d’intérêts et clause de non-responsabilité:
Je suis actuellement un programmeur Java. Pour être précis, quand j’écris du code pendant mon travail à temps plein, 60% de celui-ci est du Java, y compris EJB, JPA, JSF, Swing, et même GWT. La dernière fois que j’ai sérieusement écrit plus de dix lignes de C# remonte à huit ans. J’ai commencé à écrire cette réponse parce que je m’ennuyais en attendant un vol. Je ne m’attendais pas à écrire autant. Je n’essaie de convaincre personne, donc si vous n’êtes pas d’accord, à vous de voir.
Source : Zhihu