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

Répondre
Partager Rechercher
Un des trucs qui m'énerve le plus en java, c'est ce genre de trucs :

Code:
12:30:37,281 ERROR [SeamExceptionFilter] uncaught exception handled by Seam
Ca fait une demi-heure que je cherche où cette put*** d'exception peut bien être balancée, pourtant pas compliqué d'afficher une stacktrace non ?
Citation :
Publié par Dienekès
Donc, parce que des gens ne sont pas capables d'arriver aux mêmes perfs avec cet outil, c'est l'outil qui est mauvais ?
Java se veut simple, hors si on programme les choses simplement et de facon intuitive les interfaces graphiques sont innaceptablement lent. Quand on fait une interface graphique en GTK, meme si on programme comme une burne, elle est rapide, en VB aussi (et pourtant VB c'est de la bonne merde), comme quoi ya bien un probleme qui vient de Java sur ce point.
Citation :
Publié par Mothra
Java se veut simple, hors si on programme les choses simplement et de facon intuitive les interfaces graphiques sont innaceptablement lent. Quand on fait une interface graphique en GTK, même si on programme comme une burne, elle est rapide, en VB aussi (et pourtant VB c'est de la bonne merde), comme quoi ya bien un probleme qui vient de Java sur ce point.
En même temps, le plugin graphique de eclipse est incroyablement lent et génère un code horrible.
A ce niveau la netbeans fait beaucoup mieux avec matiss.
Citation :
Publié par Imladir
Ca fait une demi-heure que je cherche où cette put*** d'exception peut bien être balancée, pourtant pas compliqué d'afficher une stacktrace non ?
C'est pour ça que je bénis chaque jour Lutz Roeder et son outil Reflector pour .Net

Depuis que j suis passé de Java à C#, je ne voudrai pas revenir en arrière (enfin sauf que j'ai envie d'étendre Visual Studio et ses interfaces COM à la noix .. )
Imladir, tu as tout a fait raison
actuellement sur un CV - a destination de SSII surtout - la combo C#/.Net + Java/J2EE c'est ce qui est le plus demandé (dans la partie prog)

Personnellement, Java je l'ai appris il y a 8/9 ans et ca a toujours été mon langage préféré détroné il y a peu par le C# (après tout c'est du java ou on a enlevé tous les problèmes ^^)

après tout dépend de ce qui doit etre fait, client lourd, riche, déporté .....
mais bon au final Java est maintenant très employé dans le milieu professionel et .Net s'est fait aussi une belle place en peu de temps
__________________
http://mithrilendil.free.fr/images/mithrilendilsig.jpg

Pour re re répondre au thread initial, a l'heure actuelle, sur mon cv il doit y avoir (entre autres) C, C++, OCaml, Python et PHP (donc un langage proche de la machine, un objet, un fonctionnel, un langage de script et un langage web), donc le java ne m'est pas utile ; grosso modo : tout ce que je pourrais faire en java, je pourrais le faire en mieux avec un des langages sus cités, d'ou mon "<troll>ca pue</troll>"

[et puis c'etait un peu d'humour potache en meme temps ^^]
Citation :
Publié par Dienekès
En gros tu reproches à Java d'être le tournevis qui a permis à des gens de construire une voiture merdique avec laquelle tu t'es pris un accident parce qu'elle ne tenait pas la route.
Et c'est forcément de la faute du tournevis. Pas celle du mec qui l'a utilisé ? Ni de celui qui a fait les plans de la voiture ?

Merde, je suis ouvert à toute sorte d'argumentation, du moment qu'elle est sérieuse.


Et c'est un peu la même chose pour Blacky---. Je reconnais largement que tu n'es pas né de la dernière pluie, mais quand même. Il existe des applications Java qui sont rapides (comme je le répète, Eclipse n'est pas lent). Donc, parce que des gens ne sont pas capables d'arriver aux mêmes perfs avec cet outil, c'est l'outil qui est mauvais ?


Mais bon, là encore, je n'ai pas forcément le même recul, et je ne me place pas au même niveau que vous face au langage. Je ne prétends pas avoir la vérité absolue. C'est juste que la logique m'échappe des fois, dans vos jugements.
L'outil en question je l'utilise depuis des lustres. Le matin, l'après midi, le soir je le vois sans être le seul que cet outil est lent et fait planter inexorablement certains équipements lorsqu'un simple telnet suffirait par ex. Tu le dis toi même tu n'as pas le mm recul donc mon argumentaire est au delà de ce que tu connais.

Si encore cet outil était le seul que j'utilise qui soit codé en Java, je pourrais me dire : "Fichtre, les développeurs n'ont pas eu beaucoup de logique je me dois les prévenir et les remettre dans le droit chemin". Bah non, parce que ce n'est pas le cas.

Pourtant,[Lango :] on reste poli.

Bref, sujet stérile.

ps : tiens cadeau pour pas t'ennuyer.
Zwara, tu vois, je pourrais faire mon petit con et reporter ton message à la modération vu le ton que tu emploies. Parce que, même si tu n'en es pas convaincu, je respecte largement les avis qui sont détaillés ici, qui sont contre Java, mais qui expliquent pourquoi, avec des arguments que je comprends et où l'auteur reste poli envers tous ses interlocuteurs !

(Dans le tas et au hasard, les posts de RisWaaq, ... et ils ne sont pas du même avis que moi, tu noteras !)

Mais non, je vais prendre la peine de nourrir ton propre petit troll déjà bien gras.

Et je vais même le faire en langage suffisamment simple pour que tu comprennes :

Tu dis que Java, c'est lent, et que ça génère des erreurs. Je te dis qu'il existe des solutions développées en Java, comme Eclipse, qui réagit au quart de tour, d'après ce que j'en vois régulièrement, et qui ne plante pas. De là, j'en déduis que les outils que tu utilises ne sont pas bien codés puisqu'avec la même technologie on peut avoir un bon résultat.
Et là, tu me sautes à la gorge ? Allons, soyons sérieux, essaye d'argumenter un peu.

Parmi les réponses que j'ai linké au dessus, il y a des arguments qui sont recevables : méconnaissance du langage et des bonnes façons de développer en général, problème de compatibilité entre différentes versions de la JVM, un sentiment personnel vis-à-vis de la programmation objet que l'on peut juger inutile (oui, c'est un jugement de valeur, une question de "foi", mais je peux le comprendre), ou encore la verbosité du langage.

Car ce sont des éléments soit factuels que l'on ne peut pas remettre en question, soit des approches forcément relatives à l'auteur.

Mais quand tu pourras me prouver que tout ce qui tourne en Java est forcément lent, là j'admettrais que ton argument est valable. Pas avant. Et ne serait-ce qu'avec l'IDE Eclipse, je vois mal comment tu le prouveras.

Voilà, si tu veux que je fasse mon prétentieux, j'espère que tu es servi.


Ah, et au passage, j'ai fait 32 au test de Coin².
Citation :
Publié par puchiko
@Vyol : tu pourrais le faire, mais aussi vite qu'avec un langage Java/C# (enfin qu'une plateforme JEE / .Net )?
Fondamentalement, je ne vois pas ce qui m'en empecherait... Tu as des exemples précis?
- Manipuler des documents Office ?
- Faire une application riche (manipulant des ressources réseaux et locales) ?
- Ecrire un programme pour ton PDA / téléphone portable ?
- Faire un site web avec gestion de la navigation / authentification / autorisation ?
- Faire un web service ?
Citation :
Publié par puchiko
- Manipuler des documents Office ?
Si tu parles des documents MS office, le format étant fermé, c'est aussi difficile quel que soit le langage, puisqu'il n'existe pas de bibliothèque gérant ces formats.
Si tu parles de open document, je ne vois pas ce que java apporte de particulier là dessus... D'ailleurs open office, koffice, gnumeric, etc. ne sont pas écrits en java.

Citation :
- Faire une application riche (manipulant des ressources réseaux et locales) ?
Vraisemblablement plus rapide à faire en python qu'en java...
Après, ça dépend de ce que tu appelles application riche...

Citation :
- Ecrire un programme pour ton PDA / téléphone portable ?
Là ça dépend du PDA/téléphone portable. C'est sûr que s'il n'exécute que du java, tu auras du mal à le programmer en autre chose que java...
Citation :
- Faire un site web avec gestion de la navigation / authentification / autorisation ?
- Faire un web service ?
en python ou en php, plus rapidement qu'en java
Citation :
Publié par puchiko
- Manipuler des documents Office ?
Comme l'a dit Lango c'est un format bloqué que tu ne peux pas manipuler comme ça, cependant, si tu parles juste d'exportation dans des fichiers excel, tu peux le faire avec beaucoup de langages.

Citation :
Publié par puchiko
- Faire une application riche (manipulant des ressources réseaux et locales) ?
C'est-à-dire ? des applis distribuées ?

Citation :
Publié par puchiko
- Ecrire un programme pour ton PDA / téléphone portable ?
C'est vrai que J2ME permet de faire des trucs sympas, ceci dit, c'est surtout parce que le standard qu'imposent les téléphones portables est le java. Si ç'avait été du C on aurait codé ces programmes en C.

Citation :
Publié par puchiko
- Faire un site web avec gestion de la navigation / authentification / autorisation ?
Une fois de plus comme Lango: php / python. Le java c'est bien pour les gros sites webs commerciaux ou les sites à forte fréquentation grâce à sa gestion par thread différente du php par exemple.

Citation :
Publié par puchiko
- Faire un web service ?
Un web service peut être codé dans n'importe quel langage.
Bonjour tout le monde

J'ai pris le temps de bien lire toutes les pages et je crois qu'on a presque tout dit.
Etant moi même développeur Java, je retiendrais surtout les arguments suivant:

- c'est pratique, portable, facile à programmer (sûrement un peu trop )
- ça sera toujours plus lent qu'un programme compilé... forcément
- la vitesse de Java et sa stabilité dépend surtout du développeur.

Quand, j'ai commencé, en tant qu'étudiant à mon BTS, j'avais codé un chat avec gestion des web cam.
J'avais réussi à faire des fuites mémoire... bref, InternetExplorer pesait plus de 100Mo, et finissant inévitablement par planter.

Depuis, l'expérience m'a appris à coder plus proprement, et je crois en avoir définitivement terminé avec les codes imbuvable


Et je terminerais par un exemple sur l'un des types de programmes qui demandes beaucoup de ressources, et que l'on connait tous (on ne serait pas ici sinon : les jeux vidéo.

Voici des screen du moteur Java Monkey Engine, qui permet de créer une scène 3D avec OpenGL.
http://www.jmonkeyengine.com/index.p...d=68&Itemid=84

On remarque sur les screens les plus ancien pres de 80 FPS.
Je ne connais pas la machine utilisé, forcément...
Mais sur mon portable ( P M 740, 2 Go de RAM, GeForce GO 6200 128Mo), je tourne à 30 FPS sur cet exemple.
Je bosse principalement avec .Net.

- Manipuler des documents Office ?

Possible en utilisant COM (bouh c'est moche, mais c'est possible mais il faut faire gaffe sur le Dispose des objets gérant les COM) ou en XML depuis Office 2003.

- Faire une application riche (manipulant des ressources réseaux et locales) ?

Je parle ici des Smart Client. Il y a des frameworks existants permettant de construire de telles applications (le framework est compliqué) cf http://www.cabpedia.com/index.php?title=Main_Page

- Ecrire un programme pour ton PDA / téléphone portable ?

Si le PDA utilise Windows Mobile 5, utiliser le Compact Framework .Net permet de développer rapidement (mais peut être pas proprement) une appli.
Si effectivement le périphèrique utilise Java, ben faut la faire en Java.

- Faire un site web avec gestion de la navigation / authentification / autorisation ?

.Net 2.0 utilise des patterns providers pour tout ça. Utilisé avec Visual Studio 2005, construire un tel site est rapide.

- Faire un web service ?

Un attribut dans une classe qui doit être contenu dans un projet Web Service. Bref, 1 minute (et encore moins si vous le ne faites pas à la main). La génération de la wsdl est automatique.
Bref, je ne sais pas si c'est aussi rapide en java (un coup d'annotation sans doute, mais peut être un peu de tuning du serveur d'appli), mais je ne connais pas la façon de faire en Python ou en Php.
Si quelqu'un peut m'éclairer ça serait sympathique

@Bleys d'Ambre : on parlait ici de rapidité d'écriture dans un langage par rapport à une tâche donnée. Je ne doute pas que l'on puisse faire tout et n'importe quoi en Assembleur, C, Fortran etc .. mais ca sera juste moins rapide / pratique / de roue à redévelopper.
Pour la mort de Cobol (je connais, j'en ai fait pas mal) : il y a de plus en plus d'utilisation sur unix voir windows (et ca marche trés bien, ca reste un langage trés propre, super rapide, facile à maintenir et proche de la machine)... mais graphiquement .... que c'est moche
J'ai vu beaucoup de développement : Java-cobol pour reprendre les anciens fonctionnement (quand le graphique est branché sur les traitements ca donne de bonne choses, par contre quand on remplace le code cobol par du Java on pleure généralement sur les résultats, même sur des traitements simples parce que 1ms de perdu sur des millions de lignes à traiter ca fait mal (ce sont surtout les banques et les assurances avec leur gros volume qui utilisent cobol).

Java est bien gentil mais la plupart des produits java sont lents/gourmand/bugués alors ca veut dire que les développeurs sont tous nuls ?

Java veut trop faire de chose (ou on lui demande d'en faire trop, je crois que c'est surtout ca).

Il faudrait limiter son développement à ce qu'il sait faire et ne pas en abuser parce que ca fait 'hype'

Ce que j'ai pu en voir en développement : la programmation en Java fait toujours exploser les délais ... parce que le langage fait plein de choses donc on peut avoir des failles et aussi parce que c'est plus convivial et utilisable que beaucoup de langages et donc le client voudrait bien un chtit bouton en plus qui lui ouvre ses mails/avertisse sa femme de ménage de faire la lessive et donne à manger au chien.

Bref je trouve qu'il est super quand c'set à l'initiative des développeurs, ca donne souvent de belles choses, mais quand ca part d'un cahier des charges le passage en sucette est souvent le résultat .....

PS : les développeurs Java sont mieux payés que les cobolistes dans les boites que j'ai faites parce que cobol c'est beaucouuuuup plus simple donc on peut s'y mettre (les gens qui font du C n'ont surement aucune difficulté à se mettre à Cobol).
Citation :
Publié par Dienekès
Tu dis que Java, c'est lent, et que ça génère des erreurs. Je te dis qu'il existe des solutions développées en Java, comme Eclipse, qui réagit au quart de tour, d'après ce que j'en vois régulièrement, et qui ne plante pas. De là, j'en déduis que les outils que tu utilises ne sont pas bien codés puisqu'avec la même technologie on peut avoir un bon résultat.
Et là, tu me sautes à la gorge ? Allons, soyons sérieux, essaye d'argumenter un peu.
[...]
Mais quand tu pourras me prouver que tout ce qui tourne en Java est forcément lent, là j'admettrais que ton argument est valable. Pas avant. Et ne serait-ce qu'avec l'IDE Eclipse, je vois mal comment tu le prouveras.
On va s'amuser un peu et comparer Eclipse à Blender, un logiciel de 3D. Les deux programmes ont des sources de même taille, blender est écrit entièrement en C. Blender compilé pèse 8Mo et met 5sec a se lancer, éclipse fait plus de 100Mo et met 45sec pour démarrer. On pourrait aussi comparer Azureus et µTorrent avec des résultats similaires. Je suis conscient qu'on ne devrait pas généraliser sur 2 cas particuliers mais il faut avouer que ça cache un problème.

Dans certains cas comme pour des applications serveur, un tel poids est acceptable car on peut toujours rajouter des processeurs. Mais pour des applications desktops c'est très pénible.

Citation :
Publié par Kedare
si non plus serieusement la programmation fonctionnel est la plus grosse daube jamais inventé dans la programmation a mon avis .. c'est totalement inutile , enfin si , ça sert a crée des syntax incomprehensible (qui a dit Ocaml ?)
Je crois surtout que tu n'as pas vraiment essayé a fond la programmation fonctionnelle. ça t'ouvres de nouvelles manières de résoudre les problèmes qui sont souvent très élégantes et efficaces. Et le multi thread devient extraordinairement facile et agréable a utiliser (pas besoin de sémaphores et autres moniteurs). Je n'ai jamais essayé l'Ocaml mais on m'a dit bcp de bien du Haskell et de Erlang, et je te conseille le Oz, qui est multi-paradigme et qui te permettra donc si tu le désires de faire de l'orienté objet fonctionnel ^^

EDIT : je viens de trouver un lien vers un pdf d'un de mes livres de programmation favoris, "la Bible" du programmeur : http://www.ulb.ac.be/di/rwuyts/INFO0...i2003-book.pdf (attention 900 pages) Peut être que ca éclairera ceux qui sont pas
convaincus de l'utilité d'utiliser autre chose que l'orienté objet
Citation :
Publié par Airmed / Ildefonse
Je capte pas trop pourquoi compare un programme compile bas niveau et un programme qui va etre interprete.
Le second sera FORCEMENt plus lent.
Pas forcément : un langage haut niveau a une vue d'ensemble plus logique de ton programme et est sensé pouvoir effectuer des optimisations beaucoup plus efficaces. Par exemple l'interpréteur de Python en python est bien parti pour être plus performant que celui écrit en C
Évidemment ça dépend du domaine dans lequel tu veux obtenir des performances, je pense que tout le monde est d'accord pour dire que des opérations arithmétiques sur des tableaux statiques seront toujours plus rapides en langages compilés car c'est comme ça que fonctionne la machine.

La ou ca devient intéressant c'est lorsqu'on a des applications lourdement multi-thread avec un grand nombre d'objets très dynamiques. Dans ces cas les langages compilés peuvent devenir plus lents car :
1) ils doivent eux aussi émuler des comportements qui ne sont pas proches de la machine (threads, allocation de mémoire)
2) Ils manquent d'information pour savoir comment l'optimiser correctement
3) de par leur nature plus fixes ils ne peuvent pas s'optimiser dynamiquement. Par exemple Psycho compile par plusieurs versions des fonctions avec des paramètres constant et sait passer de l'une à l'autre.

Donc il est toujours possible de faire un benchmark qui avantage tel ou tel langage. Ce qui est important c'est de savoir les avantages et inconvénients en termes de perf / facilité de prog de chaque paradigme/langage et d'utiliser celui qui convient.

Ce que je reproche à java c'est qu'en se prétendant comme solution universelle il ne brille dans aucune catégorie et est donc systématiquement dépassé a tout point de vue par des solutions hybrides.

SI tu veux des benchmarks tu peux voir ici :
http://shootout.alioth.debian.org/ mais c'est a prendre avec des pincettes car ça n'évalue pas le temps passé a programmer/ débugger chaque programme, ni la lisibilité de ceux ci.
Citation :
Publié par -efbie-
On va s'amuser un peu et comparer Eclipse à Blender, un logiciel de 3D. Les deux programmes ont des sources de même taille, blender est écrit entièrement en C. Blender compilé pèse 8Mo et met 5sec a se lancer, éclipse fait plus de 100Mo et met 45sec pour démarrer. On pourrait aussi comparer Azureus et µTorrent avec des résultats similaires. Je suis conscient qu'on ne devrait pas généraliser sur 2 cas particuliers mais il faut avouer que ça cache un problème.
Autant, je suis d'accord de dire que Eclipse est lent quand il tourne avec beaucoup de projets et que la gestion des workspace laisse à désirer, autant je trouve que ta comparaison entre blender et eclipse n'a aucun sens.

Les deux applications ne travaillent pas au même niveau : les appels massif à la réflection dans le cas de eclipse, ça fait mal. Après eclipse est en bytecode et pas en binaire, forcement il pèsera plus au final.

Malgré tous les défauts que je lui trouve, je l'utilise tous les jours et j'en suis satisfait. Un template de workspace/un fichier de config xml à importer, une gestion intelligente des plugins et la majorité des problèmes gênants d'eclipse sont évités.
Citation :
Publié par -efbie-
1) ils doivent eux aussi émuler des comportements qui ne sont pas proches de la machine (threads, allocation de mémoire)
2) Ils manquent d'information pour savoir comment l'optimiser correctement
3) de par leur nature plus fixes ils ne peuvent pas s'optimiser dynamiquement. Par exemple Psycho compile par plusieurs versions des fonctions avec des paramètres constant et sait passer de l'une à l'autre.
1/ J'ai pas suivi en quoi le langage jouait tant que ca sur le multi thread. Dans ces cas la c est l'OS qui joue beaucoup, non ?
3/ moui mais c'est bIaise. dans ton langage interprete, tu peux effectivement toujours optimiser l'interpreteur, alors que tu peux pas modif ton CPU
Répondre

Connectés sur ce fil

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