« Il existe deux sortes de langages de programmation : ceux dont les gens se plaignent, et ceux que personne n’utilise. » — Bjarne Stroustrup.
« Les personnes qui critiquent et se plaignent de Java sont généralement jeunes, et semblent avoir été davantage exposées à JavaScript qu’à quoi que ce soit d’autre. Comparé à JS, Java peut paraître un peu lourd et restrictif. Il y a du boilerplate partout, ainsi qu’un système de types strictement appliqué par le compilateur. Mais si j’avais le choix, je prendrais une base de code Java imparfaite plutôt que JS. Sans l’ombre d’un doute. »
« Ce n’est qu’après avoir acquis une véritable expérience avec du code réparti sur des dizaines ou des centaines de fichiers qu’on commence à comprendre que les soi-disant “restrictions” de Java sont en réalité des garde-fous qui empêchent de se tirer une balle dans le pied. »
« Découvrir Java puis y revenir a été une révélation. J’ai réalisé que j’aimais Java et son écosystème. J’ai donc décidé de noter quelques-uns de mes aspects préférés de l’écosystème Java. Alors, si quelqu’un dénigre Java, voici 25 raisons de lui expliquer pourquoi il a tort. »
- Un écosystème mature
- WRITE ONCE, RUN EVERYWHERE
- Compatibilité avec les versions précédentes (Backward compatibility)
- Langage à typage fort
- Cycle de publication rapide, amélioration continue
- De bons IDE
- Support de Native Image avec GraalVM
- Bibliothèques et frameworks open source
- Multithreading
- Une orientation objet mature
- Gestion de la mémoire et garbage collection
- Observabilité et monitoring
- Support de la programmation fonctionnelle
- Documentation abondante
- Outils de build et gestion des dépendances
- Puissantes capacités de test
- Une immense communauté
- Annotations
- Fonctionnalités de sécurité
- Un riche ensemble d’API
- Performances
- Concurrence structurée
- Threads virtuels
- Pattern matching pour l’instruction
switch - Templates de chaînes de caractères
62 commentaires
En réalité, tous les avantages listés pour Java me semblent être des points sur lesquels d’autres langages font bien mieux que Java.
Personne ne semble mentionner Spring.
Je n’ai pas de reproche particulier à faire au langage Java lui-même,
mais le fait que, dans la réalité coréenne, il faille apprendre Spring m’a paru assez pesant, ce qui l’a rendu moins attrayant à mes yeux.
Java, c’est bien, mais Spring, c’est… horrible T_T
Les 25 n’ont aucun vrai pouvoir de différenciation. Indépendamment du respect que je peux avoir, ce sont des hyènes festoyant sur le grand banquet du legacy.
Ils avancent pas moins de 25 raisons pour expliquer pourquoi Java reste populaire en 2024,
mais il semble qu’il existe largement assez de langages capables de le remplacer sans que ce soit forcément Java...
C’est plutôt la JVM qui est populaire.
La plupart de ces raisons ne constituent pas vraiment des points forts si on les compare aux écosystèmes des autres langages modernes, et l’auteur semble avoir rédigé son texte sans vraiment distinguer Spring de Java.
Il est naturel de préférer un langage comme Java, puisque son environnement de développement est bien établi.
De la même manière, comme on ne peut être performant qu’en travaillant dans cet environnement, on a envie d’y rester, et si l’on nous demande de passer à un autre environnement, cela peut aussi susciter une certaine réticence.
Cela dit, à l’avenir, l’IA fera probablement bien mieux le travail de codage pour ce type de langages, et il semblera plus nécessaire que jamais d’avoir la capacité d’adaptation pour survivre dans des environnements variés, plutôt que de compter uniquement sur son environnement de confort.
Dans cette optique, la capacité à s’adapter à différents langages n’est plus une option, mais semble désormais indispensable.
S'il faut créer une web app d'entries, j'utiliserais forcément Java. Rien qu'avec le point n°1, la question est réglée... Pour du développement simple, du développement rapide, je trouve que Python est un bon choix. Et JS... moi, je le trouve tellement fouillis que ça m'agace.
Si je devais faire du Java, je ferais plutôt du Kotlin, et je considère que, plus qu’un langage comme Java, la famille .NET est celle qui suit l’évolution de Kotlin. Java devrait sans doute surtout rester comme langage de maintenance pour les serveurs d’administrations publiques autrefois construits en Java ; en Corée, les CEO ont tendance à s’obstiner avec Java parce qu’ils sont familiers de ce mot vu dans la publicité. Essayez Kotlin et .NET avant d’envisager Java.
Puisqu’on parle de Java, j’en profite pour poser la question… et Go, vous en pensez quoi ? Personnellement, je préfère en fait Kotlin à Java, mais j’ai accumulé trop de frustrations avec Gradle, donc je suis finalement en train de me fixer sur Go. Pour l’avoir utilisé, même brièvement, je me suis dit que partout où Java est nécessaire, Go pourrait peut-être aussi faire l’affaire.
Dans le cas de JS/TS, moi aussi j’aime bien, mais malgré tout, le comparer à Java sur un pied d’égalité me paraît un peu exagéré. Quoi qu’il en soit, il y a la contrainte du single thread, et même si certains font du multiprocessing avec pm2 ou autres, Java a aussi de très bons virtual threads, et je pense en réalité que c’est mieux. Bon, cela dit, en poursuivant ce raisonnement, j’ai fini par voir les goroutines et me poser sur Go… haha ;;
Je pense qu’il vaut mieux utiliser chaque langage au bon endroit selon les besoins. Même en 2024, j’aime toujours autant le PHP, et j’apprécie aussi JS, Java (Kotlin), même si ce n’est pas au niveau de Go pour moi. Un langage reste un outil, donc tant qu’on l’utilise correctement selon son objectif, n’est-ce pas l’essentiel ? Je laisse ce commentaire dans cet esprit.
Je pense que c’est vraiment devenu un langage tout à fait utilisable maintenant. Au travail aussi, je bosse uniquement en go.
À l’époque où on utilisait godep et glide, dès qu’une dépendance se décalait ne serait-ce qu’un peu, on pouvait passer la journée entière à tout bricoler pour que ça s’emboîte, au point de se demander si c’était vraiment un langage ou juste quelque chose qui tournait autour d’un langage.. 😂
Même s’il existe une contrainte liée au single-thread, à l’ère de l’orchestration où on encapsule dans des conteneurs pour éviter qu’un pod ne consomme trop de CPU, je ne me dis pas que cette contrainte soit si importante que ça.
À moins qu’au lieu de lancer plusieurs conteneurs sur un même serveur comme avant, on parle d’un conteneur qui consommerait énormément de CPU.
Dans la plupart des cas, les serveurs web ne consomment pas beaucoup de CPU et ont surtout beaucoup de débit d’E/S, donc je pense que Node peut aussi être considéré comme une option.
Bien sûr, si c’est un domaine très gourmand en CPU, on peut envisager un autre langage, ou appeler du code natif via napi.
Je pense que c’est un langage utile pour les tâches asynchrones, car il a la particularité de bien abstraire ce type de travail avec les goroutines. Le code asynchrone en Rust ou en Python me donne l’impression d’être trop réfléchi. Il tend aussi à avoir une charge cognitive assez élevée, aussi bien à l’écriture qu’à la lecture.
Je n’ai utilisé que Go avant l’arrivée des generics, mais je trouve que c’est un excellent langage. Au début, les outils étaient vraiment médiocres, mais ils se sont beaucoup améliorés.
La syntaxe est un peu rustique, mais c’est aussi ce qui la rend facile à apprendre.
Ne vous disputez pas....
Le débat s’échauffe.
Si vous avez une objection, veuillez n’indiquer que son contenu.
Les commentaires contraires aux règles d’utilisation du site ont été supprimés.
Par ailleurs, veuillez noter que les comptes dont l’activité non conforme aux règles s’est répétée ont été bloqués.
Nous vous remercions de maintenir un débat constructif.
Java 1.8 est vraiment une excellente version !
Je pense que le slogan « write once run everywhere », c’est peut-être le moment de le laisser un peu de côté maintenant… lol
Mais bon, c’est Java après tout ! lol
Coder en Java dans IDEA est un plaisir ; sans IDEA, j’aurais été malheureux. (Je l’ai d’ailleurs été.)
En Corée, il y a aussi l’avantage à l’embauche et le framework e-government, au point qu’on parle presque d’une « république Java », donc il y a beaucoup de développeurs Java.
Dans les entreprises, il arrive souvent qu’on passe d’autres langages à Java, et d’après mon expérience, certains ? développeurs Java veulent vraiment ne faire que du Java.
Ils disent que les applications existantes construites dans d’autres langages posent problème et qu’il faut migrer vers Java. Mais ils ne veulent pas non plus faire du Kotlin.
J’ai eu l’impression qu’il y avait une certaine réticence à apprendre quelque chose de nouveau. Comme une attitude du genre : puisqu’on peut tout faire en Java, pourquoi faire autrement ?
Ceux qui font du SI n’utilisent pas les génériques, non ?
On dirait bien que c’est justement ça le problème… hahaha
À ce niveau-là, on dirait que Java est une religion.
Les gens qui critiquent Java et s'en plaignent sont généralement jeunes et semblent être plus exposés à JavaScript qu'à quoi que ce soit d'autre.Si on reformule cette phrase à l'envers, cela veut aussi dire que beaucoup de personnes qui ont utilisé js ont constaté par expérience que Java n'était pas terrible.
Pourquoi ne pas reconnaître que chacun a ses avantages et ses inconvénients, et se contenter de dire que Java est meilleur...
C'est un peu comme les gens qui disent que SQL est mieux sans avoir utilisé une document db, indépendamment de ses caractéristiques.
J'ai l'impression qu'on oublie le fait qu'il y avait déjà une situation où Java était largement utilisé, et qu'on n'arrive pas à changer parce que beaucoup de développeurs seniors ne savent faire que du Java et ne veulent pas changer. À l'heure actuelle, je pense que les points forts propres à Java sont presque inexistants.
D’après ma longue expérience, je pense que Python et JS ont une proportion de fanatiques encore plus élevée.
Je pense que c’est probablement parce qu’ils sont dans une position où ils doivent plutôt mettre en avant JS/Python que Java, donc vous pouvez avoir l’impression qu’ils défendent leur point de vue avec plus d’insistance.
Personnellement, j’ai vu certaines personnes qui n’envisagent même pas du tout un autre langage que Java. À l’inverse, celles qui utilisaient d’autres langages semblaient pour la plupart prêtes à en utiliser un autre selon la situation.
Je peux imaginer que ce soit le cas si Java est la première langue qu’on apprend, mais comme je n’ai jamais vu ce cas autour de moi, j’ai du mal à me le représenter.
De mon côté aussi, le premier langage que j’ai appris en entrant à l’université, en cours, c’était le C++, puis j’ai naturellement découvert d’autres langages au fil des années, donc apprendre un nouveau langage ne me pèse pas tant que ça… En réalité, la syntaxe de base (déclaration de variables, structures de contrôle, fonctions, etc.) se ressemble plus ou moins partout.
Dans ce genre de cas, j’ai l’impression que c’est peut-être parce qu’on a appris le langage de manière trop étroite au départ, ce qui a réduit le spectre. Et j’ai davantage observé cela chez des personnes qui ont découvert Python comme premier langage pour le deep learning ou la statistique mathématique. Moi aussi, d’ailleurs, donc comme ce sont des retours d’expérience des deux côtés, on peut sans doute dire que les deux points de vue se valent.
J’ai eu une expérience similaire, donc je pense la même chose.
Les personnes qui aiment Python ne prétendent pas que Python est une bonne langue. Pour JS non plus, il n’y a pas vraiment de gens qui insistent pour dire que c’est un bon langage. Que ce soit Python ou JS, c’est surtout que leur écosystème est bon pour développer dans certains domaines. J’ai l’impression qu’il n’y a que les gens de Java qui insistent coûte que coûte pour dire que c’est forcément bien..
Même les développeurs JS en font eux-mêmes une blague. Est-ce vraiment un langage... sans
ts, on serait mal, bouhou.Si on devait vraiment prendre la défense de Java, on dirait qu’à l’inverse, c’est surtout Java qui devient particulièrement souvent la cible de moqueries pour toutes sortes de raisons. Un peu comme l’oncle du quartier que tout le monde connaît... ?
Quand je cherche des contenus sur Java sur Google ces jours-ci,
je tombe sur une avalanche de billets de blog coréens qui répètent tous la même chose apprise en académie,
et ça m’agace parce qu’il est difficile de trouver des références correctes.
La recherche Google s’est beaucoup dégradée...
18, 25, 20, 10, 8, 6, 5, 3, 2, 1, etc. ne sont pas l’apanage de Java. Comparaison erronée
À bien y regarder, Java dispose lui aussi de ce genre de fonctionnalités et il n’y a pas vraiment de raison de le critiquer ; je ne pense pas que cela veuille dire qu’il faut utiliser Java uniquement parce que c’est possible seulement avec Java.
Au contraire, en le lisant, je n’arrive qu’à me dire… euh, .NET n’est-il pas meilleur ?
J’aime aussi C#, mais en dehors d’un environnement Windows, je me demande s’il est vraiment nécessaire de l’utiliser.
C’est le même contenu que le commentaire ci-dessus. Cette époque est vraiment révolue depuis très longtemps.
Le choix tardif de MS a vraiment déformé la perception des gens à ce point.
Si l’on ne développe que des applications Windows, l’écosystème MS offre beaucoup d’avantages, mais sur Linux ou macOS, je pense qu’il n’y a rien de mieux que Java. MS le prend en charge tardivement, mais il n’y a pas vraiment de raison de l’utiliser. Le timing n’est pas bon.
Ce n’est plus le .NET de l’époque du .NET Framework, alors pourquoi le limiter aux applications Windows ?
Il y a déjà un moteur de jeu basé sur .NET qui tourne sur les téléphones que vous avez entre les mains ;
222
333
Ce n’est pas pour critiquer Java, mais si Java agace, c’est surtout parce que les développeurs Java sont particulièrement enclins à rabaisser ceux des autres langages, à faire des comparaisons, et à afficher une étrange fierté mal placée autour de Java. J’aime Java, mais je ne comprends pas pourquoi ils font ça. Chaque langage a sa propre philosophie, ses avantages et ses inconvénients, et son propre écosystème, c’est tout. Pourtant, certains affichent soudainement cette étrange fierté autour de Java, ce qui les rend antipathiques.
Il semble qu’il faille présenter des éléments pour étayer la fierté des développeurs Java envers Java. S’il est difficile d’en fournir, j’estime qu’il s’agit d’une affirmation difficile à accepter.
J’ai l’impression qu’il y a toujours ce genre de personnes pour n’importe quel langage ou outil. Au moment de sa sortie, Java était un langage plus branché que le C/C++, tout en étant largement utilisé en entreprise, ce qui a élargi le vivier de développeurs et l’a sans doute rendu plus visible.
Et ces derniers temps, j’ai l’impression que ce sont les développeurs Rust qui jouent ce rôle.
Étonnamment, si Java est devenu dominant, c’est parce qu’ils ont dépensé énormément d’argent en marketing mdr hahaha
https://www.youtube.com/watch?v=NVuTBL09Dn4
Il y a une vidéo YouTube sur la manière dont un langage devient grand public, et je pense que d'autres la trouveront intéressante aussi !
https://www.youtube.com/watch?v=QyJZzq0v7Z4
Il faut s’en prendre aux développeurs Java, pas à Java lui-même…
C’est plutôt une question de compréhension de l’écrit de votre côté…
Même si je ne réponds pas, quelqu’un d’autre l’a déjà écrit.
Pas du tout ?
On dirait que tu ne sais même pas ce qu’est la littératie.
Si l’idée vous est soudain venue de comparer Eclipse, créé en Java, à VSCode, créé en JavaScript (TypeScript)... est-ce une mauvaise comparaison ? Bien sûr, Eclipse offre davantage de fonctionnalités.
C’est une mauvaise comparaison..
Il faut regarder à quelle époque ils sont sortis.
Quand Eclipse est arrivé, pendant un certain temps, Eclipse avait un statut comparable à celui de VS Code aujourd’hui.
Moi aussi, je trouve vraiment Eclipse peu pratique à utiliser, donc je ne l’utilise pas,
mais à l’époque, il n’y avait pas vraiment d’autre option valable qu’Eclipse.
L’atout de JavaScript, c’est que le moteur V8 est maintenu par Google.
Java abandonné..
Le backend d’une application Electron, c’est bien du JavaScript, non… Le processus principal et le processus de rendu s’exécutent séparément, mais tous les deux fonctionnent avec du code JavaScript.
De la même manière, la JVM n’est-elle pas au final aussi un runtime implémenté en natif ?