28 points par GN⁺ 2025-05-18 | 13 commentaires | Partager sur WhatsApp
  • James Gosling est le créateur de Java, considéré comme un génie pragmatique ayant influencé l’informatique moderne pendant 30 ans
  • Issu d’un milieu modeste, il a appris la programmation en assemblant des ordinateurs avec des pièces récupérées dans des décharges, et cet apprentissage autodidacte a ensuite influencé sa philosophie de conception des langages
  • Son époque chez Sun Microsystems, où coexistaient farces et innovation, a servi de socle à sa créativité singulière et à sa manière de façonner une culture technique
  • Récemment, il a exprimé un fort scepticisme à l’égard des outils d’IA générative et du boom de l’IA, tout en soulignant que l’importance de l’enseignement de la programmation n’a fait que croître
  • Le secret de la longévité de Java ne tient pas à son éclat, mais à une philosophie de conception pragmatique axée sans compromis sur la stabilité, la rétrocompatibilité et la productivité des développeurs

Java at 30: The Genius Behind the Code That Changed Tech

  • Java fête ses 30 ans le 23 mai. C’est un langage généraliste, orienté objet et de haut niveau qui reste aujourd’hui une technologie clé pour faire fonctionner des systèmes de toutes tailles
  • À l’origine même de l’existence de Java se trouvent le sens technique pragmatique et l’intuition créative de James Gosling
  • Gosling est parti de l’histoire d’un adolescent canadien indépendant qui assemblait des ordinateurs à partir de pièces récupérées dans des poubelles pour devenir un programmeur de renommée mondiale
  • La philosophie « write once, run anywhere » est le symbole de Java, et elle s’est prolongée en une philosophie du langage qui a entraîné un changement fondamental dans la manière de développer les logiciels
  • Tout au long de sa carrière, Gosling a concilié excellence technique, esprit joueur et sens éthique affirmé, incarnant une figure de développeur qui a durablement influencé la culture de l’informatique moderne

James Gosling: The Brilliant Mind Behind Java

  • James Gosling n’est pas seulement le « père de Java » : c’est aussi un génie humble capable d’expliquer intuitivement des concepts complexes
  • Trente ans après la création de Java, il revient sur son parcours technologique et retrace l’évolution des langages et de la culture du développement

The Path To Programming: Resourceful Beginnings

  • Dans une enfance marquée par une grande pauvreté, Gosling a développé sa créativité technique en récupérant des téléviseurs dans les poubelles
  • Il a assemblé son premier ordinateur à partir d’un rack de relais mis au rebut par le central téléphonique, symbole de son sens mécanique et de ses capacités d’assemblage déjà précoces
  • En visitant le centre informatique de l’université de Calgary, il a été fasciné par les écrans, les lumières clignotantes et les lecteurs de bandes, ce qui a éveillé une curiosité pour la programmation qui l’a accompagné toute sa vie
  • Il a appris seul en fouillant dans des cartes perforées pour obtenir des mots de passe, et, lycéen, il a créé pour le département de physique de l’université des programmes d’analyse de données satellites, accumulant ainsi une expérience où la programmation était à la fois passion et travail rémunéré
  • Ses premières expériences de programmation couvrent le PL/1 sur mainframe IBM, le Fortran, l’assembleur PDP-8 et le code CDC 6400. Avec son ton sobre caractéristique, il mentionne presque en passant qu’« un été, il a travaillé au développement d’un compilateur COBOL », une tâche que beaucoup de programmeurs expérimentés trouveraient déjà redoutable

Academia to Industry: Finding His Way

  • Gosling décrit le monde académique comme « un laboratoire qui utilise les doctorants comme main-d’œuvre bon marché », révélant un point de vue direct, plus attaché au concret qu’à la théorie
  • Pendant son doctorat à Carnegie Mellon, il travaille aussi dans une startup pour acquérir une expérience réelle, puis termine son cursus, concrétisant un parcours souple entre industrie et université
  • Son premier emploi est chez IBM Research, mais il qualifie l’entreprise de société « dévouée à se tirer une balle dans le pied », conservant ainsi une lecture lucide du fonctionnement des entreprises et de la stratégie technologique
  • Ces premières expériences ont ensuite servi de base à sa compréhension très ancrée dans le réel des cultures d’organisation, qui influencera sa manière de travailler chez Sun Microsystems

The Sun Days: Innovation and Pranks

  • Parmi ses souvenirs les plus heureux chez Sun, Gosling cite les grands projets de farces du 1er avril organisés chaque année, se remémorant une culture d’entreprise où créativité et bonne humeur coexistaient
  • Parmi les farces emblématiques, il évoque une Ferrari installée sur une plateforme flottant au-dessus d’un étang, exemple d’un humour mobilisant à la fois l’ingénierie et le travail d’équipe
  • Une autre farce consistait à aménager dans le bureau du CEO un parcours de golf d’un trou avec gazon artificiel, bunker et obstacle d’eau, présenté comme une tentative originale mêlant technologie et jeu
  • Gosling se souvient de Sun comme d’« un environnement rare où l’excellence technique et la créativité espiègle étaient toutes deux permises », ce qui a façonné sa manière générale de résoudre les problèmes et son rapport à la technologie

Java: Creating a Legacy That Changed Everything

  • Les 30 ans de Java représentent pour Gosling son accomplissement le plus emblématique et le tournant décisif de sa vie technologique
  • Il évoque la profonde satisfaction de voir l’impact laissé sur l’écosystème des développeurs chaque fois que quelqu’un l’arrête dans la rue pour lui dire : « J’ai eu une carrière grâce à Java »
  • Il voulait intégrer dès le départ des fonctionnalités comme les lambdas et les generics, mais il a repoussé leur arrivée selon une philosophie de conception résumée par l’idée de “ne pas les intégrer de la mauvaise manière”
  • À propos de la gestion de Java par Oracle, il estime qu’« ils ont fait mieux que prévu » et souligne que, dans les faits, la participation et les contributions continues de la communauté ont joué un rôle central
  • Java a évolué pour s’optimiser pour le cloud, atteignant un niveau d’aboutissement technique “vraiment impressionnant” dans des domaines comme le support du multicœur, le traitement mémoire et l’amélioration du GC

Beyond Java: Ventures After Sun

  • Après le rachat de Sun par Oracle, Gosling prend une courte pause puis rejoint Google, avant de quitter l’entreprise six mois plus tard pour rejoindre Liquid Robotics
  • Il y développe des systèmes de contrôle pour robots marins autonomes, dans un contexte de travail atypique mêlant technologie et nature, avec par exemple des missions nécessitant de faire du snorkeling à Hawaï
  • Il participe à un projet de surveillance de la température des océans en Arctique et en Antarctique, mais le manque de financement de la recherche environnementale entraîne un conflit avec la logique de startup financée par le capital-risque
  • Face à la pression pour pivoter vers la défense, il part pour des raisons éthiques, puis rejoint AWS où il travaille sur Greengrass et sur des outils de développement, poursuivant des choix de carrière guidés à la fois par l’intérêt technique et des critères éthiques

On Open Source and Industry Trends: Cutting Through the Hype

  • L’open source est présenté non comme un simple outil de collaboration, mais comme un écosystème complexe qui touche aux relations développeurs, à la stratégie marketing et aux modèles d’adoption bottom-up
  • À propos des tendances low-code et no-code, il rappelle qu’on entend ce discours depuis l’époque du COBOL et affiche une position sceptique, les voyant comme des approches spécialisées aux limites nettes dès qu’on les applique à des domaines complexes
  • Selon lui, avec l’IA et le machine learning, le problème tient davantage au nom qu’à la technologie, et il critique la terminologie en estimant que l’expression “techniques statistiques avancées” décrit mieux leur nature réelle
  • Il affirme que l’IA n’est qu’un outil et ne doit pas être confondue avec une entité autonome, plaidant pour qu’on la voie comme un outil sophistiqué d’assistance plutôt qu’une menace directe pour le travail humain

Developer Tools and Preferences: Embracing Progress

  • Gosling utilise NetBeans IDE comme principal outil de développement et affiche son soutien à l’open source sous licence Apache ainsi qu’à une communauté active
  • Il regrette l’attitude de certains développeurs toujours attachés à Vi ou à des outils des années 70 et 80, y voyant une résistance dommageable au progrès technique
  • Il utilise encore parfois Vi parce qu’il fonctionne partout, mais défend fermement l’usage d’IDE modernes pour un véritable environnement de développement

The JVM Vision: From Academic Concept to Global Standard

  • Le concept initial de la Java Virtual Machine (JVM) remonte aux années de doctorat de Gosling, avec des expérimentations sur des formats de distribution neutres vis-à-vis de l’architecture et sur la traduction d’instructions
  • Cette idée a ensuite évolué en plateforme d’exécution généraliste permettant à Java, mais aussi à d’autres langages, de fonctionner sur des matériels variés
  • La philosophie « Write once, run anywhere », d’abord écartée comme sujet de thèse faute de fondement mathématique suffisant, s’est finalement imposée comme une technologie pragmatique qui a bouleversé l’environnement mondial du développement logiciel

More Recent Work: Bridging IoT Gaps at AWS

  • Chez AWS, Gosling a participé au développement de Greengrass, un framework d’applications IoT, où il a mis en œuvre une approche technique visant à simplifier avec élégance des problèmes complexes
  • OTA updates, contrôle à distance, télémétrie, fiabilité réseau, sécurité, gestion de l’authentification : le projet abstrait tout le boilerplate récurrent entre déploiement et exploitation
  • Le code côté device a été publié en open source, afin d’encourager des contributions de portage par la communauté vers des plateformes non prioritaires pour Amazon, comme RISC-V
  • Un autre projet d’outils de développement auquel il a ensuite participé a été interrompu dans le sillage du boom de l’IA, ce qui suggère les dérives d’un secteur davantage guidé par la mode que par l’authenticité technologique

AI Skepticism

  • Dans une interview récente, Gosling a qualifié la révolution de l’IA de « mostly fraud », affichant une vision sceptique qui voit dans l’IA un terme marketing toxique
  • S’il reconnaît une technologie mathématiquement impressionnante, il souligne aussi que le mot IA brouille la nature réelle de ces technologies, qui relèvent surtout de techniques statistiques avancées
  • Il critique sévèrement la vague IA menée par le capital-risque, qu’il décrit comme « un point de rassemblement d’arnaqueurs et de vendeurs de hype », y voyant une quête de gains rapides et d’exit plutôt qu’une recherche de technologies réellement utiles
  • Selon lui, la majeure partie des investissements dans l’IA finira aspirée dans un “trou noir”, avertissement contre des flux financiers guidés par un effet de mode sans vraie durabilité

Is It a Vibe? AI Coding Tools: Impressive Demos, Limited Utility

  • Les outils de code génératif par IA font forte impression au départ, mais reposent sur une structure limitée qui échoue dès que les problèmes deviennent un peu complexes
  • Ces outils ne font que récupérer et répéter des exemples de code existants, alors que les problèmes vraiment intéressants sont toujours nouveaux et se prêtent mal à des outils fondés sur la reproduction
  • Dans les environnements de développement experts, le code répétitif tend à être absorbé dans des bibliothèques, si bien que la génération de code par IA entre structurellement en conflit avec les besoins réels du développement
  • Gosling définit la véritable utilité de l’IA comme un outil de recherche capable de prendre en charge le travail de documentation que personne n’a envie de faire, et met en avant sa valeur comme assistant spécialisé dans l’explication de l’usage des API

Java’s Evolution: Language Features and Runtime Improvements

  • Parmi les évolutions récentes du langage Java, l’inférence de types et les améliorations dans la déclaration des tableaux sont vues comme des extensions utiles qui améliorent le confort de développement
  • Gosling insiste toutefois sur le fait que les progrès les plus marquants de Java résident dans l’amélioration de la qualité de la JVM et des bibliothèques standard
  • La JVM moderne offre des performances d’exécution « à un niveau étonnant » en matière de qualité de code, de performance des threads et de garbage collection
  • En gestion mémoire et en prévisibilité des performances, elle se montre plus efficace qu’un langage C fondé sur malloc, avec la possibilité de régler les pauses du GC jusqu’à quelques millisecondes
  • La JVM actuelle est ainsi présentée comme un environnement d’exécution très performant capable de gérer de manière stable des espaces mémoire gigantesques

Programming Languages for Critical Infrastructure

  • Interrogé sur le langage à choisir pour réécrire le système de contrôle aérien de la FAA, Gosling rejette la prémisse de la question en expliquant que c’est comme vouloir construire une maison en commençant par choisir le marteau
  • Il insiste d’abord sur la nécessité de comprendre clairement les propriétés du domaine de problème — systèmes de communication, réglementations internationales, trajectoires de vol, évitement des collisions — avant de choisir la technologie
  • Il ajoute néanmoins que, pour des systèmes de grande ampleur où la fiabilité est critique, Java peut constituer un candidat solide

The Future of Programming in an AI World

  • Même si l’IA progresse, la programmation reste une compétence essentielle, et Gosling affirme que s’il avait des enfants, il leur apprendrait sans hésiter à coder
  • Il critique les dirigeants de la big tech qui prétendent que l’IA remplacera les développeurs humains, y voyant de simples menaces d’autodéfense destinées à intensifier le travail
  • Pour bien comprendre les systèmes, il faut des compétences en programmation ; même si des machines prennent en charge certaines tâches, la base de compréhension technique humaine doit perdurer

Java’s Longevity Secret

  • Pour expliquer la survie de Java pendant plus de 30 ans, Gosling met en avant sa capacité à résoudre de vrais problèmes, le respect des utilisateurs, la rétrocompatibilité, l’amélioration de la productivité et une philosophie centrée sur la fiabilité
  • Java a toujours privilégié une utilité pragmatique constante plutôt que les effets de mode, avec une philosophie de conception ancrée dans le réel, davantage tournée vers les résultats que vers le style, particulièrement efficace en environnement enterprise
  • Du point de vue selon lequel un logiciel doit « toujours fonctionner correctement », Java reste un outil d’ingénierie honnête et pragmatique

Oracle’s Stewardship: Better Than Expected

  • Gosling estime qu’après le rachat de Sun Microsystems, Oracle a géré Java « bien mieux qu’il ne l’aurait pensé », exprimant sa surprise face à des résultats au-delà de ses attentes
  • Au départ, il craignait un comportement de type « pillage et saccage » au vu du passé de l’entreprise, mais il juge finalement positivement le fait qu’Oracle ait protégé l’équipe Java sans entraver son travail, en lui laissant une certaine indépendance
  • Il note que le soutien financier n’a pas été suffisant, mais accorde une bonne évaluation au maintien d’une structure garantissant l’autonomie de l’équipe technique sans interférence d’entreprise

Crab Lovers Unite!

  • Gosling dit depuis longtemps qu’il veut travailler avec des gens avec qui il aimerait aussi partager un repas, ce qui reflète une vision de la collaboration centrée sur les personnes
  • Le journaliste raconte l’avoir croisé par hasard au restaurant de crabes Thanh Long à San Francisco, capturant ce moment où une figure majeure de la tech apparaît dans le cours ordinaire de la vie
  • Ils ont ensuite partagé un repas de crabe et une conversation, avec la promesse de se revoir au même endroit, transmettant une chaleur humaine qui dépasse la seule technologie

13 commentaires

 
cosine20 2025-05-21

Moi aussi, parmi les langages à typage statique, je pense que Java est celui qui est le plus confortable à utiliser.

En revanche, du point de vue du développement généraliste et pragmatique, écrire en Java des applications orientées utilisateur final avec une interface graphique n’a jamais été un très bon choix. (Dans cette optique, la combinaison C# + .NET est clairement la meilleure.)
Compte tenu des points forts de Java, je pense que le cas d’usage le plus pertinent d’un point de vue pratique reste le backend ou le middleware.

Quoi qu’il en soit, comme c’est un langage que j’ai l’occasion d’utiliser de temps en temps et que je peux manier sans pression à chaque fois, j’en garde surtout de bonnes expériences.

 
mhj5730 2025-05-19

L’anecdote selon laquelle il programmait en démontant des téléviseurs dans une décharge, c’est vraiment le début d’une légende.

 
ndrgrd 2025-05-18

Il est vrai qu’après Java, les langages ont commencé à se concentrer sur la productivité.

Avant cela, le C++, qui était souvent utilisé, est encore aujourd’hui terrible ne serait-ce qu’à lire. Surtout lorsqu’on touche à des projets de longue haleine.

 
3ae3ae 2025-05-18

J’ai du mal à être d’accord avec l’idée que Java a mis l’accent sur la productivité des développeurs
Y a-t-il vraiment un autre langage qui ait évolué au point de devenir aussi profondément dépendant d’un IDE que Java ?

 
3ae3ae 2025-05-19

J’ai posté un commentaire irréfléchi.

 
sunrabbit 2025-05-19

Le fait de dépendre fortement d’un IDE est un problème de l’écosystème Java, qui s’est développé de manière atypique,
et non un problème au niveau de la conception.

Pour le dire crûment, aujourd’hui, pour développer en Java, il n’est pas indispensable d’utiliser un produit JetBrains,
mais tout le monde le fait quand même.

Et si l’on regarde la liste des langages de programmation à l’époque où Java est apparu, beaucoup avaient des implémentations dépendantes de la plateforme, c’est-à-dire de l’OS.
Java a montré l’orientation qu’allaient suivre des langages comme Node, Python ou C#, capables de fonctionner sur différents OS avec le même code.

De nos jours, la compatibilité permettant au même code de tourner sur différents OS est un « bon sens » évident.

 
roxie 2025-05-26

> Franchement, même si vous développez en Java aujourd’hui, vous n’êtes pas forcément obligé d’utiliser un produit JetBrains

Sur ce point... j’ai un peu de mal à être d’accord, hélas...

 
kwj9211 2025-05-19

C’est devenu assez évident aujourd’hui,
mais à l’époque de la sortie de Java, le simple fait de prendre en charge de manière fiable le multiplateforme sans nouveau build devait déjà représenter un gain de productivité considérable, non ?

 
angrycoder 2025-05-18

Comparé aux langages d’avant Java, il semble offrir une meilleure productivité.

 
ahwjdekf 2025-05-18

c++ > c# >= java

 
cosine20 2025-05-21

C# >= Java > C++

 
GN⁺ 2025-05-18
Avis Hacker News
  • Java n’est pas au tout premier niveau en matière de performances, mais il est perçu comme correct, autour de la 3e place derrière C/C++, plus rapide que Go et plus de 10 fois devant Python ou Ruby, ce qui est jugé satisfaisant ; la syntaxe Java n’est pas parfaite, mais sa cohérence et sa prévisibilité sont vues comme des atouts ; avec des outils comme Idea ou Eclipse, on ne s’inquiète pas de la productivité ; sa gestion mémoire diffère de la philosophie Unix, mais une fois comprise, elle apparaît comme un compromis acceptable ; ces trade-offs apportent à la fois vitesse, sécurité mémoire et des avantages pratiques comme les appels dynamiques et le hotswap
    • On réalise à quel point des outils comme IntelliJ pour Java offrent un environnement sans équivalent par rapport aux autres langages ; on se demande pourquoi la communauté Go semble si peu motivée pour développer des conteneurs de structures concurrentes ; en Java, la culture qui pousse à utiliser d’excellents conteneurs pour le code concurrent est enviable, et java.util.concurrent ou JCTools manquent parfois
    • Au début, juste après l’université, on pensait que Java savait tout faire, puis on a compris plus tard que c’étaient surtout la JVM et l’outillage des Java App Servers qui étaient en avance sur leur temps ; le langage lui-même était décevant avant les gains de productivité apparus vers 2006-2007 ; aujourd’hui, on s’intéresse à d’autres langages tournant sur la JVM comme JRuby, Clojure, Scala, Groovy ou Kotlin ; JRuby est particulièrement intéressant car il permet d’exploiter deux écosystèmes matures ; Project Loom, qui permet d’utiliser les Fibers de Ruby sur la JVM, profite aux deux mondes ; les accomplissements de Charles Nutter sont sous-estimés
    • On dit que Java est plus rapide que Go, mais en pratique Go est souvent plus rapide ou consomme 2 à 10 fois moins de mémoire, donc les deux sont plutôt du même niveau ; grâce aux value types de Go, l’optimisation est plus simple ; le fait que Go soit mentionné explicitement est marquant, et comme C# est plus rapide que Java, Java serait plutôt 5e que 3e
    • Les sealed class, switch expression, Project Loom et les records récemment introduits en Java sont appréciés pour la manière naturelle dont ils se sont intégrés à la syntaxe existante ; les outils de diagnostic de Java, comme les analyseurs de heap dumps et de GC, sont aussi perçus comme parmi les meilleurs
    • Il est souligné que les classements de performance des langages dépendent de ce qu’on inclut et de la façon dont on compare ; un lien de benchmark fourni est mentionné
  • Java (la JVM) est parfois davantage apprécié après avoir essayé d’autres langages/écosystèmes réputés meilleurs ; on a souvent l’impression que « l’herbe semble plus verte ailleurs » ; Rust, en revanche, a réellement donné le sentiment d’un grand progrès et d’un langage agréable à utiliser ; il est dommage que Java ne soit plus considéré comme un langage “cool” dans les startups, alors que l’écart de productivité semble presque avoir disparu
    • Après avoir utilisé Rust à plein temps pendant deux mois, on ne comprend pas vraiment l’idée de “joie” par comparaison avec Java, du moins pour le développement serveur ; Rust provoque trop souvent des baisses de productivité à cause des problèmes de lifetime ; on ressent bien la sûreté de type, mais difficile de parler d’une expérience franchement plaisante dans l’ensemble
    • C# est très loin devant Java, avec de vraies différences significatives, par exemple des génériques bien mieux implémentés, des value types présents depuis longtemps et une FFI pratique ; à part Unity, peu de gens semblent s’y intéresser, et Microsoft aurait raté autrefois l’occasion d’en faire un sujet populaire
    • Cette impression viendrait surtout de la différence d’échelle des projets ; passer d’un énorme projet Java legacy de dix ans à un nouveau projet de type hello-world paraît naturellement plus agréable ; les grands rewrites sont bons aussi pour les revues de sécurité, mais la plupart des entreprises n’en ont pas les moyens, à l’exception de cas comme Google
    • Même ressenti : Go a été décevant ; il promettait tout, mais donne au final une impression comparable à Java, voire plus régressive encore avec des erreurs sans stack trace
    • Au milieu de presque 30 ans de carrière, les deux années passées à tenter un projet hors JVM ont été la pire période professionnelle
  • De la gratitude est exprimée envers James Gosling ; grâce au Java World Tour, certains se sont retrouvés premiers dans les recherches “Java consultant”, ce qui leur a permis de vivre durablement à distance depuis la campagne ; Java a eu un impact positif sur la vie de nombreuses personnes ; l’équipe Clojure est aussi admirée pour avoir construit un excellent écosystème sur la JVM
    • D’autres remercient également James Gosling ; en 1995, alors qu’ils travaillaient en C++ chez Taligent, ils ont découvert Java et ont été frappés par sa nouveauté ; après la dissolution de Taligent, ils ont passé une longue partie de leur carrière autour de Java et de logiciels liés à Java
    • James Gosling (Java) et Rich Hickey (Clojure) sont vus comme des créateurs qui ont apporté de la fraîcheur au monde de la programmation à leur époque respective
  • Après avoir travaillé ces dernières années en .NET/C#, certains estiment malgré tout que l’écosystème JVM/Java reste globalement le meilleur qu’ils aient connu ; Java a mieux résolu bien plus de problèmes ; par exemple, Java a traité la répartition des tâches avec le fork/join pool, tandis que .NET s’est contenté d’ajouter le work-stealing à un thread pool global, ce qui fait que du code sync-over-async peut facilement provoquer des deadlocks généralisés ; dans une grosse base de code, convertir entièrement du code sync en async est en pratique quasi impossible ; côté Java, même quand les bibliothèques ou frameworks se trompent, le problème est vite surmonté, tandis qu’en .NET, lorsqu’un souci vient de la bibliothèque standard, du langage ou du runtime, il est difficile à corriger ; Java a souvent mieux fixé les bons standards
    • La thread pool starvation de .NET est extrêmement agaçante, même si son impact aurait diminué récemment ; il semble impossible de concevoir une implémentation totalement immunisée contre les mauvais usages du thread pool ; on peut seulement ajouter des threads ou ordonnancer les tâches plus intelligemment ; l’auteur précise ne pas être expert du sujet
    • Certains pensaient que .NET avait imité les approches gagnantes de l’écosystème Java, mais constatent qu’il y a en réalité de nombreuses différences
    • Il est jugé peu équitable de parler des problèmes de deadlock sans écrire soi-même de code .NET, et peu convaincant de s’appuyer sur un billet de blog vieux de 13 ans
  • Java est vu comme une immense réussite, mais James Gosling n’en serait que le point de départ et non le véritable leader de fond ; dès l’époque Java 1.1-1.2, Mark Reinhold aurait piloté l’intégration du JIT, le développement de HotSpot, l’augmentation massive des classes en 1.2, puis après le rachat par Oracle le support des langages dynamiques, l’open source, le rythme de release rapide et les fondations des fonctionnalités modernes du langage ; les points forts de Java seraient dus avant tout au leadership de Mark Reinhold
    • L’ensemble de l’équipe principale de développement est jugé impressionnant ; Gosling voulait un langage pragmatique, puis Mark Reinhold, Brian Goetz et d’autres l’ont fait évoluer dans un sens favorable aux développeurs ; sans aimer Oracle, certains lui sont reconnaissants d’avoir laissé avancer un groupe aussi solide
    • Kotlin, comme Java, est un langage statiquement typé, et non un langage dynamique
    • Même si Linus n’avait bricolé git que pendant deux semaines en n’apportant que l’étincelle initiale, le fait que la communauté l’ait ensuite développé montre qu’évaluer uniquement le point de départ reste incomplet
  • En tant qu’ingénieur logiciel de plus de 40 ans, il semble plus sage de choisir des outils qui « font le travail » ; aujourd’hui, Java comme C# remplissent bien ce rôle ; personnellement, certains trouvent l’écosystème C# mieux intégré ; quel que soit le use case, on peut créer une application en une minute avec C# ; le langage évolue vite, le recrutement reste stable, .NET est cross-platform, et l’élégance ainsi que l’efficacité du langage facilitent le travail
  • Souvenir d’avoir simulé du code d’OS en Java à l’université ; pour l’étude d’algorithmes abstraits, on comprend que Java puisse être utile en réduisant la complexité, mais personnellement Python aurait semblé plus adapté ; l’idée d’imposer systématiquement Java aux débutants à l’université à cause de son poids industriel convainc peu ; ayant déjà vu BASIC et C au lycée, simuler du code système bas niveau en Java donnait l’impression d’un recul
    • À l’université, certains ont appris les microcontrôleurs en C, les structures de données et l’OOP en Java, puis les systèmes, l’OS et la concurrence en C et assembleur MIPS ; pour les structures de données et les algorithmes, Java distingue plus clairement les types abstraits et les structures qu’en Python, ce qui peut aider à former des concepts plus précis ; en revanche, enseigner les concepts d’OS en Java paraît un peu excessif
    • Les défauts de l’enseignement de Java évoqués par Joel s’appliqueraient aussi à d’autres langages de haut niveau comme Python, et il est rappelé ironiquement que MapReduce, créé par Google en Java, a pris de l’avance sur Microsoft
  • Le succès de Java est reconnu, mais un profond rejet persiste pour plusieurs raisons : héritage de code verbeux dans les grandes entreprises, frameworks complexes, mauvaise qualité de code, culture de production de code “comme du charbon” sans passion ni personnalité ; la JVM donnait l’impression d’une boîte noire, rendant le débogage avec des outils comme strace ou gdb difficile ; la surallocation mémoire compliquait la compréhension de la charge par le kernel ; avec la JVM, sans aide experte, le risque de gros problèmes semblait élevé ; s’ajoutent Oracle, les licences, la gestion des versions du JDK, l’absence d’image “cool” en 2025 et le poids du code legacy ; certains ont construit leur carrière en évitant Java autant que possible ; aujourd’hui, avec la montée de langages performants à compilation statique et petits binaires, la place de solutions comme la JVM ou la VM Python semble progressivement se réduire
    • Il est répondu que la JVM offre parmi les meilleures capacités de débogage au monde : redémarrage/reframing, modification de variables, breakpoints sur exceptions et autres fonctions dynamiques très avancées ; l’intégration avec des IDE comme Idea ou Eclipse est sans comparaison ; des outils de diagnostic comme JMX/JConsole, Java Flight Recorder, jstack, HPROF et bien d’autres sont aussi très nombreux ; côté licence, l’usage open source n’a pas de restriction, et acheter la JVM Oracle reste un choix facultatif ; certains demandent aussi ce qu’on entend exactement par problème de code legacy
    • L’idée que JAVA ne soit pas “cool” est jugée peu convaincante ; les outils du JDK et les IDE surpassent largement strace/gdb
    • Même si ces outils peuvent paraître difficiles au départ, on s’y habitue facilement ; pour certains, une semaine suffit pour devenir expert en tuning GC ; le GC bénéficie d’un meilleur contexte applicatif que le kernel pour gérer la mémoire, ce qui apporte de vrais avantages, même si une certaine complexité de provisioning est admise
    • Après plus de 20 ans avec Java, certains n’ont jamais eu besoin de strace/gdb ; le support du débogage et des IDE est extrêmement solide ; mettre Python et la JVM sur le même plan en performances est jugé inapproprié
    • Cela donne l’impression que ce jugement vient d’une faible pratique réelle de Java, ce qui conduit à réaffirmer que ses outils de débogage et de diagnostic sont parmi les meilleurs
  • Il est rappelé que Gosling, chez Sun, a co-conçu le système de fenêtres NeWS, basé sur PostScript, où le client envoyait des programmes au serveur ; lors de la conception de Java, on voit la trace de cette idée de NeWS comme pages web programmables ; quand on lui a demandé, dans un exemplaire dédicacé de The Java Programming Language, si « Java était la revanche de NeWS », Gosling a répondu par un sourire
    • Comme X a eu Wayland pour successeur, NeWS a en quelque sorte trouvé ses héritiers avec le navigateur + JavaScript (PWA, Electron) ; certains aimeraient savoir ce que Gosling pense du fait que l’approche NeWS semble finalement avoir gagné, y compris dans l’univers Microsoft
    • Il existait aussi Display PostScript ; sur une combinaison SPARCStation + SPARCprinter, toute la logique d’impression tournait côté serveur, si bien qu’une panne du serveur ou de l’imprimante paralysait tout le système ; l’intégration serveur d’impression–imprimante était un cauchemar, ce qui a surtout renforcé la méfiance envers les imprimantes ; si l’écosystème SunOS et SPARC manque, Display PostScript, lui, ne manque pas
  • Certains ont passé une grande partie de leur carrière à coder sur la JVM ; récemment, ils utilisent plutôt Scala, Clojure (préféré) ou Kotlin à la place de Java ; après une période de chômage, une offre en Python a été acceptée ; la demande pour l’expérience JVM semble diminuer ; au fond, tant que le salaire tombe, n’importe quel langage convient, et les projets personnels continuent aujourd’hui en Scala
 
roxie 2025-05-26

On dirait que le clan C# se cache au milieu.