Pourquoi jette-t-on des cailloux à Java ici ?

Répondre
Partager Rechercher
En fait, il y aura toujours des gens qui n'aimeront pas un langage. Donc je ne pense pas que c'est spécialement à cause de Java qui est un très bon langage de programmation selon moi.

Aimer ou pas Java, ben je ne sais pas... Comme c'est ma première année que j'en fais, je ne peux pas vraiment participer au débat car il doit y avoir des gens qui programment en Java depuis des années. Mais de ce que j'en ai vu, c'est très plaisant et très facile.

Comme certaines personnes, j'ai du mal à comprendre les arguments des gens qui n'aiment pas. Si ce n'est que la vitesse, vous devez utilisez des programmes pourris

Citation :
Publié par Corten
Les programmeur Java sont plus payés que les autres. Rien que ça, ça mérite un pugilat

Ouep enfin.. Si c'est vraiment juste pour l'argent, fais du Cobol
Citation :
Publié par Akis
Ouep enfin.. Si c'est vraiment juste pour l'argent, fais du Cobol
Disons que la plage de client est plus reduite et devrait se réduire de plus en plus....
Elle va peut-être se réduire, mais j'ai vu récemment que le Crédit Agricole venait de démarrer un projet important en Cobol (après, je ne pourrais pas donner de source, si ce n'est que c'était dans le métro que j'ai lu ça, donc sans doute 20 minutes ou Métro à priori).
Avantages de Java:
- Portable
- Syntaxe habituelle (c'est du C ! )
- Heritage/objets
- Pas de malloc/free
- Bibliotheque consequente

Desavantages de Java:
- Machine virtuelle tres lourde (120Mo de RAM pour faire tourner hello world.jar... )
- Graphismes lents (ou laids, au choix)
- Temps de chargement du programme importants
- Faut installer la JVM (gros download, invasif sous Windows)

Avantages de Java non exclusifs:
- Portable (C est portable; tous les langages interprettes sont portables aussi)
- Syntaxe habituelle (C, C++, Python etc sont aussi simples que Java)
- Heritage/Objets (non necessaires pour bien programmer, C++, Ruby, PYthon et toute une flopee d'autres en ont aussi)
- Pas de Malloc/free (python, caml, lisp etc n'en ont pas non plus, dans les langages fonctionnels le garbage collecting est bcp plus efficace par nature)
- Bibliotheque consequente (STL, glib etc fournissent autant de trucs)


Pour resumer, Java n'a pas beaucoup d'avantages "exclusifs" qui le rendrait necessaire pour aucune tache. Par contre il a le desavantage d'une VM plutot lourde et d'un garbage collecting moyennement efficace. Pour la peine lancer une appli Java c'est long, ca rame dur, et si ca fait du graphique c'est plus lent qu'un programme dans un autre langage (bien que par ailleurs en flops Java se defende bien).
Citation :
Publié par Mothra
Pour la peine lancer une appli Java c'est long, ca rame dur, et si ca fait du graphique c'est plus lent qu'un programme dans un autre langage (bien que par ailleurs en flops Java se defende bien).
Nan mais sérieusement, vous trouvez qu'Eclipse est lent et moche ? ok, il est un poil long à charger, mais après, il est aussi voire plus réactif et joli que beaucoup d'IDE, non ?
Citation :
Publié par Bratisla
Tant qu'on ne va pas jusqu'à vouloir faire de la modélisation numérique en Java, ça va. (si si, j'ai vu des simulations numériques en Java /o\ )
C'est possible; le rapport de flop degage par un programme en Java est proche de celui obtenu avec un truc en C -O3. Par contre gare a la parallelisation et au memory footprint. Si c'est une appli memory bound Java ca pue direct. Si c'est du distribue; c'est pas corba ou EJB qui va tirer des perfs potables, faut pas rever non plus. Et les threads java a la place de OpenMP je me bidonne d'avance
Citation :
Publié par Dienekès
Nan mais sérieusement, vous trouvez qu'Eclipse est lent et moche ? ok, il est un poil long à charger, mais après, il est aussi voire plus réactif et joli que beaucoup d'IDE, non ?
J'ai utilise Eclipse 1 heure. Pour moi c'etait inacceptablement lent, l'interface. Je suis habitue a un truc ou quand je clique ca apparait instant, pas 0.2s apres. C'est comme Office pour Mac en emulation PPC sur Intel, ou StarOffice ancienne mouture, c'est pas assez lent pour que ca rame vraiment, mais c'est jamais "fluide" pour reprendre une terminologie jeux video. Perso je supporte pas.
Citation :
Publié par Paice
Disons que la plage de client est plus reduite et devrait se réduire de plus en plus....
IBM ayant par ailleurs annonce qu'ils allaient stopper la production de mainframes, cobol devrait disparaitre avec
Citation :
Publié par Mothra
J'ai utilise Eclipse 1 heure. Pour moi c'etait inacceptablement lent, l'interface. Je suis habitue a un truc ou quand je clique ca apparait instant, pas 0.2s apres. C'est comme Office pour Mac en emulation PPC sur Intel, ou StarOffice ancienne mouture, c'est pas assez lent pour que ca rame vraiment, mais c'est jamais "fluide" pour reprendre une terminologie jeux video. Perso je supporte pas.
Même si je préfère Visual Studio (2005 plutôt) Eclipse reste quand même à mon avis assez correct. Et puis j'ai pas ces lag moi...

Par contre, un truc que je lui reproche, c'est qu'on ne puisse pas créer d'interfaces graphiques autrement qu'avec le code brut sans rajouter un plugin. Ou alors je suis pas doué


PS : Mothra tu devrais demander à quelqu'un de t'enseigner le fonctionnement du multi-quote
j'ai utilisé eclipse dernièrement sur une bécane actuelle, ni trop ancienne, ni trop récente, les perfs étaient tout à fait acceptables. Pas de lag apparent.
Citation :
Publié par Mothra
Pour resumer, Java n'a pas beaucoup d'avantages "exclusifs" qui le rendrait necessaire pour aucune tache. Par contre il a le desavantage d'une VM plutot lourde et d'un garbage collecting moyennement efficace. Pour la peine lancer une appli Java c'est long, ca rame dur, et si ca fait du graphique c'est plus lent qu'un programme dans un autre langage (bien que par ailleurs en flops Java se defende bien).
Pris un par un, il y aura toujours un langage plus performant sur un point. Java est plutôt moyennement adapté à tout, voir plus si on oublie les défauts corrigés en cours de route.
Il faut ajouter que ce qui ralenti principalement, c'est le démarrage de la JVM, pas de l'application que tu fais tourner dedans (comme si tu redémarrais ton pc à chaque fois que tu veux lancer une application). Par graphique qui rame tu dois penser aux GUI en SWING qui n'utilisent pas les threads correctement?
Citation :
Publié par highflyer
Pris un par un, il y aura toujours un langage plus performant sur un point. Java est plutôt moyennement adapté à tout, voir plus si on oublie les défauts corrigés en cours de route.
Il faut ajouter que ce qui ralenti principalement, c'est le démarrage de la JVM, pas de l'application que tu fais tourner dedans (comme si tu redémarrais ton pc à chaque fois que tu veux lancer une application). Par graphique qui rame tu dois penser aux GUI en SWING qui n'utilisent pas les threads correctement?
Oui, tu resumes parfaitement ma pensee, de dirais.
Bon, puisqu'on me cite (et que j'en ai vraiment marre de rédiger)...

Donc, il existe une pléthore de langages plus ou moins différents. Aucun n'a réussi à s'imposer et à devenir LE langage. Et pour cause : un langage ne peut être adapté à tous les usages. On n'a pas les mêmes besoins quand on code une bibliothèque de calcul numérique, un script de 10 lignes permettant d'automatiser une tache simple mais répétitive, un servlet, un jeu 3d, etc.

Pour chaque projet, il existe des langages plus ou moins adaptés, et aucun langage n'est le plus adapté pour tous les projets.

Pour moi, un langage est utile s'il existe au moins une application pour laquelle il soit bien adaptée.
Et ce n'est pas le cas de java.

Qu'est-ce qui distingue java des autres langages ?
  • la machine virtuelle java (JVM)
    Ce qui distingue à mon sens java d'autres langages, c'est la JVM. La JVM est là pour la portabilité.
    Est-ce que java est plus portable que C, C++, python, ocaml, etc ? Non. Je dirais même qu'il est moins portable, puisque de nombreux programmes java ne fonctionnent qu'avec la JVM Sun, ou avec la jvm Microsoft.
    Il n'existe pas de JVM sous licence libre permettant de faire tourner une proportion satisfaisante de programmes java.

    Peut-être que certains verront des avantages à ce mécanisme de machine virtuelle, personnellement je n'en vois pas. Elle n'atteint pas son but (la portabilité), et elle pose des nombreux problèmes : installation nécessaire, mais pas intégrable au système pour des raisons de license; grosse quantité de mémoire nécessaire pour la charger.
  • programmation orientée objet
    Ce n'est pas forcément un reproche que je fais à java, mais java est le pire dans ce domaine.
    Personellement, je n'aime pas la POO. C'est un paradigme qui est intéressant, mais il n'est utile que dans de rares cas.
    Dans la majorité des logiciels développés, l'aspect orienté objet n'apporte rien d'intéressant. Mais les gens font de la POO parce que c'est hype, parce que ça fait sérieux, ou parce qu'ils ne savent structurer leur programme que comme ça.

    Pourtant, la POO a un inconvénient de taille, dont on entend rarement parler : il ne respecte pas le principe de localité du code. Quand on veut implémenter un algorithme, le code de cet algorithme se retrouve éparpillé dans les méthodes de toutes les classes participant à la structure. Du coup, difficile d'avoir une vision globale de cet algorithme si on veut pouvoir le modifier, ou simplement le débugger.
    Pour moi c'est un principe essentiel, que respecte la programmation modulaire, mais pas la POO.

    Vous noterez d'ailleurs que la plupart des langages «modernes» (python, ocaml, ruby, php, ...) proposent à la fois une POO et une gestion intelligente des modules.
    Peut-être que java a évolué dans ce sens d'ailleurs ? j'avoue n'avoir pas très bien suivi ça. Mais de toutes façons, java impose la POO, et en soi ça me gène.
  • une syntaxe verbeuse
    Comptez le nombre de lignes nécessaire pour faire un hello world en java.
    Comptez le nombre de lignes nécessaire pour faire un hello world en python.
    Comparez le résultat.

    Java est, après C++ qui détient haut la main la palme, le langage le plus verbeux que je connaisse (mis à part les langages exotiques à la sed, postscript, etc. qui, bien que turing complets, sont faits pour un usage bien particulier).
    Quand on est un programmeur payé au nombre de lignes codées, c'est une bénédiction. Mais quand on cherche simplement à coder un programme qui fonctionne... une syntaxe verbeuse est anti-productive.

    Alors bien sûr il y a des gens qui trouvent ça génial que tous les langages aient la même syntaxe inspirée du C, ça évite d'apprendre d'autres syntaxe. En général ce sont ceux qui programment moins de 10 lignes par an, qui ne font pas la différence entre programmation impérative et fonctionnelle, et qui ont juste la flemme d'apprendre à ne plus mettre un point virgule à la fin de chaque ligne et des accolades autour des blocs.
  • le langage en lui-même.
    rien de spécial à en dire... Il a des trucs que les autres n'ont pas ? je ne crois pas...
    En vrac, pas de récursivité terminale, de lambda-forms, de fermetures, de types abstraits, ...
    Pourtant derrière ces termes techniques, il y a des possibilités du langage bien agréables à utiliser, que permettent d'autres langages.

Du coup, en fait, je ne vois vraiment pas dans quel cas java serait plus intéressant à utiliser qu'un autre langage...
edit: désolé pour le pavé, je voulais pas faire si long... En plus, Mothra et highflyer ont dit avant moi la même chose (mais en moins détaillé).
Après avoir fait du C++ et du PHP pendant quelques années, je préfère Java (même si l'étape de "verbosisation" et d'"objectisation" est pénible elle oblige à concevoir correctement, design pattern par ex.). Quand j'ai commencé je me suis intéressé à https://jogl.dev.java.net/ (les démos sont sympa même si je soupçonne qu'elles ne marchent pas partout) et c'était bien marrant de faire de la 3d en Java (même si le mélange opengl/java c'est comme un mélange eau/huile, procédural/objet).
Citation :
Publié par Corten
gni ?
gni ? C'est bien connu pourtant qu'un développeur Cobol peut lui même fixer ses prix à son patron, il l'obtiendra tellement c'est difficile de trouver des bons développeurs Cobol.
Citation :
Publié par Paice
Disons que la plage de client est plus reduite et devrait se réduire de plus en plus....
J'en doute fortement puisque c'est toujours très très utiliser
Citation :
Publié par Akis
gni ? C'est bien connu pourtant qu'un développeur Cobol peut lui même fixer ses prix à son patron, il l'obtiendra tellement c'est difficile de trouver des bons développeurs Cobol.

J'en doute fortement puisque c'est toujours très très utiliser
C'est vrai que y a encore pas mal de grosses appli critiquent qui tournent en prod dans des grosses boites.
mais les dev Cobol deviennent tellement rare que les boites préferents redévelopper que de payer des gens une fortune pour faire de la maintenance.

Pour en revenir au java.
J'ai travaillé un moment dans une banque qui dit être passée au .NET. En réalité, ils utilisent maintenant .NET à la place de lotus notes pour les applis low sla et java pour les développement critiques (banking online etc).

Sinon dans la boite où je travail actuellement, on a une appli intranet en j2ee utilisée par environ 2000 utilisateurs (+ accès à toutes les communes du pays et toutes les institutions fédérales) et on a pas de problèmes de performances.

Les problèmes couramment cités en exemple pour java peuvent être évités avec une architecture bien pensée et des bonnes pratiques de développement.

Le test driven dev, Agile et toutes les grandes méthodologies dont on entend pas mal parler pour l'instant, ce ne sont peut être que de grands morts pour certains, mais bien mis en place, ça augmente largement la qualité et la lisibilité du code.

Reste le problème de la verbosité du langage qui est facilement contournable grâce aux EDI.
Perso j'ai juste dit ça parce que le java ne me semble pas être le meilleur choix pour débuter. J'ai déjà un bon passé en programmation, je me suis lancé dans le java y'a à peine un an et par moment faut s'accrocher.
Bleys, je ne vous mettais pas au pilori en vous citant nommément. C'est juste que la prolifération de ces avis me faisait m'interroger. Je ne vous ai pris que comme exemple.

On y voit un peu plus clair maintenant. Merci à tous de vos réponses. Il n'y a bien sûr pas de réponse absolue. Chacun répond selon son expérience et son passé.

Pour ma part, je continuerai d'apprendre le Java l'année prochaine, et avec de la chance, ma boîte va me faire bosser dessus à partir de Février prochain. J'y verrais peut-être plus clair à ce moment là.
Citation :
Publié par Akis
J'en doute fortement puisque c'est toujours très très utiliser
Le cobol c'est sur gros systèmes et les gros systèmes yen a de moins en moins, donc forcément, ça facilite pas les choses. L'avantage c'est qu'il y a un paquet d'anciens dev cobol qui vont bientot partir à la retraite, le désavantage c'est qu'il y a un paquet de gros systèmes qui vont bientot partir au rebut.....
Citation :
Publié par Erocdrah
Moi ce que j'aime pas vraiment chez JAVA c'est l'obligation d'installer un truc pour l'utilisateur.
Je préfère à la limite m'emmerder pour rendre mon code portable, mais que l'utilisateur n'est qu'une application a DL au final
il me semble qu'il est aussi possible de générer un programme exécutable en java non portable comme en C


sinon je trouve que la javadoc est quand meme très pratique, au moins on sait ou chercher
Citation :
Publié par Paice
Le cobol c'est sur gros systèmes et les gros systèmes yen a de moins en moins, donc forcément, ça facilite pas les choses. L'avantage c'est qu'il y a un paquet d'anciens dev cobol qui vont bientot partir à la retraite, le désavantage c'est qu'il y a un paquet de gros systèmes qui vont bientot partir au rebut.....
Là où je suis en prestation (monde de l'assurance pour un grand groupe bancaire), les Z/OS ne sont pas près de disparaître. Au contraire, on cherche continuellement des compétences "fraîches" sur le sujet puisque les personnes en poste commencent à vieillir.
Par contre, à noter que la partie présentation via émulation 3270, se voit relooker en appli web via du Websphere.
Je dois avouer que je suis pas fan de java.
Déjà, je suis plutôt orienté dev d'applis web et pour ça, Java nécessite d'installer un paquet de briques dans un environnement classique.

Ensuite, je trouve qu'avec Java, plus qu'avec les autres langages avec lesquels j'ai pu coder, on se tape des problèmes qu'on ne devrait pas avoir. Par exemple les problèmes de path : chaque brique nécessaire à l'appli java a son propre path et au bout d'un moment on s'en sort plus (surtout si on rajoute par-dessus un IDE qui a aussi sa propre gestion des path). Ou encore les problèmes de version : les jars compilées dans une version et exécutées par une vm dans une autre version qui te génère un message d'erreur pas du tout explicite sont toujours un plaisir.

Par contre, pour découvrir et pratiquer l'objet, c'est un très bon langage.

Je suis beaucoup plus impressionné par le .NET, surtout avec les dernières avancées autour de cette techno. J'en avais fait un peu au cours de mes études et je pense que je vais me repencher dessus si j'en ai l'opportunité : à mon avis c'est une techno qui a un plus bel avenir que le j2ee actuellement.
Citation :
Publié par Messire Moustache
Idem niveau torrents, j'avais commencé avec Azureus, c'était lourd. Je suis passé à µtorrent, c'était nickel.
en meme temp Azureus c'est pas un client bittorent , c'est une plate forme bittorent (qui integre un tracker par exemple) (et plein d'autres choses)
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés