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

Répondre
Partager Rechercher
Citation :
Publié par Lango
Java, personnellement je déteste ce langage (encore plus que C++ ). Donc je m'abstiendrai de commentaires
Citation :
Publié par KeyTronic
Le java pour commencer, mwé mwé quand même, quand je vois comment on trime au début en bts avec ce langage par rapport au autres, trop compliqué.
Citation :
Publié par Bleys d'Ambre
Pour ce qui est du java, ça risque d'être un peu compliqué au départ.
Citation :
Publié par Vyol
- java : <troll>ca pue</troll>
Citation :
Publié par Borus
Evite le JAVA comme la peste (avis totalement perso, mais je n'ai jamais rencontré autant de problème qu'avec cette salop**** de tasse de café...)

Voilà le constat !

Maintenant, j'aimerais comprendre. Pour poser le contexte, je suis en dernière année d'école d'ingénieur en informatique. Avant, j'ai fait un BTS en Info de Gestion.

Pour moi, java reste du pur bonheur. Je trouve ce langage agréable, loin d'être compliqué, et disposant d'un bon support. De plus, soyons honnête, les entreprises jurent bien souvent plus par Java que du Python, caml, Ruby ou PHP. Je parle des grosses entreprises, hein.

Donc, pourquoi est-ce qu'il y a tant d'avis défavorable ici ?

Première hypothèse, c'est l'approche objet qui rebute. Je suis fortement d'avis pour dire que Java est excellent du moment que l'on sait ce que l'on fait en modélisation, en amont de la programmation. Donc oui, faut "s'embêter" à poser bien comme il faut son modèle, à le critiquer, à reconnaître les design patterns existant, etc ... Chose que la plupart des développeurs n'ont pas appris, n'ont pas envie ou encore n'ont pas le temps de faire.

Deuxième hypothèse, vous parlez des anciennes versions de Java qui avaient de nombreux problèmes, étaient effectivement lentes et n'avait pas beaucoup de support. Dans ce cas, j'aurais tendance à dire qu'il vaut mieux étudier sérieusement ce dont on parle et que l'on critique pour être crédible.


Maintenant, j'avoue que je n'ai pas une excitation folle quand je programme. Je suis loin d'être un nerd, et je préfère me focaliser sur du fonctionnel plutôt que de pisser du code. De plus, je ne connais pas beaucoup d'autres langages.

Alors oui, je suis peut-être complètement à côté de la plaque. Peut-être qu'effectivement Java c'est de la merde.
Mais j'aimerais que l'on m'explique.

Voilà, c'est à vous.

PS : je suis en alternance, et la boîte où je travaille utilise quand même pour de vieux projets (comme celui sur lequel je suis), VB 6, des composants COM et une interface web en ASP (pas .NET, hein) et javascript. La vie en entreprise évolue lentement, des fois. *soupire*
Déjà 2 de tes citation ne veulent rien dire car sortie de leur contexte...pour commencer le java n'est certainement pas le plus facile même si dans certains IUT ou BTS ils commencent par ça.

Après certains n'ont pas forcement besoin d'un langage orienté objet et la manipulation est plus compliquée, normale qu'ils trouvent le langage lourd s'il n'ont pas besoin d'objet qui est quand même le point fort de java.

En résumé :
-Lango : apparemment c'est l'orienté objet qui le gène donc normal qu'il aime pas JAVA.
-KeyTronic : Il déconseille java pour débuter (une des citation inadéquate)
-Bleys : pareil
-Vyol : comme marqué c'est un troll (et on ne nourrit pas un troll)
-Boris : Pas assez développer mais c'est vrai que parfois la java c'est casse couille .

Enfin, ces personnes détesteraient peut être encore plus d'autre langage comme l'assembleur mais le java est un langage assez répondu pour que beaucoup de personne puisse avoir une opinion.

Moi personnellement j'aime bien le java mais c'est vrai que sur certains points c'est déstabilisant. J'ai eu l'occasion de manipuler des langage encore plus imbouffable que le java et a coté le java c'est pour les gamins ^^.
Citation :
Publié par KROGOTH
Après certains n'ont pas forcement besoin d'un langage orienté objet et la manipulation est plus compliquée
Java n'est pas un langage orienté objet (comme le C++), c'est un langage objet.

Pour ma part, je suis pas un fan inconditionnel du java, que je considère un peu brouillon, mais bon, ça va faire 6 mois que je ne fais que ça (du J2EE) et c'est pas mortel non plus.

Par contre, je préfère quand même développer en C#.
Citation :
Publié par Fabzien
C#> java
Ca dépend de ce que tu veux faire. Par exemple, grâce à Hibernate, l'interface avec la base de données est beaucoup plus simple à faire en java qu'en C#.

Après, pour du développement web par exemple, le design des pages est beaucoup plus simple à faire en asp.NET qu'en jsf par exemple.
Même si java est effectivement un peu lourd comme langage et bouffe un peu trop de ressources, il ne faut pas exagérer non plus. Soit c'était codé avec les pieds, soit la bécane datait de 90

Surtout qu'il y a eu des efforts de faits qui ont en partie corrigé ces problèmes. Maintenant, le plus gênant, c'est le mécanisme de fonctionnement du garbage collector, qui marche quand il en a envie sans qu'on puisse le contrôler. Mais ce n'est gênant que pour des applications très spécifiques (comme pour le temps réel) pour le reste ça n'a pas une grande importance.
TOUS les chats qui sont en java sont super long à charger (plus que du PDF), limite je crois que FF a planté.

Je n'y connais rien, mais dire que Java n'est pas long... ça revient à dire que toutes les applications java sont mal codées (c'est possible m'enfin quand même).
Eclipse serait pas codé en Java par hasard ?
Vous avez déjà lancé Eclipse ? Vous le trouvez lent ?

La lenteur de Java est un mythe aujourd'hui. Ca a été vrai à une époque, et pour certains usages, comme dit au-dessus, pour les applets par exemple.

Mais sinon, je ne vois toujours pas bien ce que les gens reprochent à Java ici.
je soutient dienekès perso.. je suis aussi en école d 'ingé d 'info ( en premiere année certes ) et je doit avouer que j'ai moins de mal a codé en java qu'en C ou qu'en Assembleur..

après c'est ptet que l'approche est différente selon les matières, les td cd C et de shell etaient moisi par rapport a ceux de java, mais je trouve que quand on code en java tout est bien organisé et on sais ou on va. Le système de classe d'héritage etc sont bien foutu.

Mais je dirais que ca dépend des personnes j'ai beaucoup de potes qui préfèrent largement codé en C. C'est une affaire de goût après tout ^^

Pi bon c'est pas un peu fashion dans ce milieu de dire que le C>* ?
Le C et le java, c'est pas du tout pareil, faut faire attention.

Quant au système d'héritage, ça n'a rien de spécifique à Java, hormis cette conception qu'une classe ne peut hériter que d'une seule classe, ce qui est un peu dommage.
Citation :
Publié par Dienekès
La lenteur de Java est un mythe aujourd'hui. Ca a été vrai à une époque, et pour certains usages, comme dit au-dessus, pour les applets par exemple.
Y'a deux jours j'ai voulu télécharger un mod Freeplayer, j'ai choisis le plus populaire qui était en Java. Lancement, ralentissements, freezes. Désinstallation. Idem niveau torrents, j'avais commencé avec Azureus, c'était lourd. Je suis passé à µtorrent, c'était nickel.

Alors niveau programmateur je sais pas, mais en tant qu'utilisateur j'évite le Java autant que possible. J'y repenserais quand je passerais sur un C2D avec 2Go de ram.
Java est plus simple d'accés au début, mais qu'est-ce que l'on peut faire comme cochonneries avec c'est impressionnant : code imbuvable, lenteur monstrueuse, consommation de la RAM, bugs à foison.

J'ai vu ce que des développeurs professionnels arrivaient à faire avec des langages trés simples (cobol par exemple) et ca faisait peur, avec du Java c'est puissance 1000.

Les défauts de Java sont :
- on est met partout parce que c'est censé savoir tout faire (mauvaise idée)
- la gestion des évenements et des objets : déjà qu'avec du procédurales tu vois du bug partout, avec ces notions c'est au secours niveau résultat et écriture
- les résultats ; regarde les install ou logiciel Oracle en Java et rigole (fuite de mémoire et pas des petites, gestions des tailles risibles) et pourtant oracle c'est censé être une grosse boîte, si tu veux je travaille aussi sur la version de Business Object en Java .... c'est joli et ca explose super vite ...

Java est un bon langage mais faut être super bon pour en faire (ou faire des choses simples et bien cadrées dés le début et cette situation dans le développement j'ai pas rencontré ...)

Autre petit défaut : avec Java les gens s'attachent aux objects, aux méthodes, aux classes mais plus rarement au résultat, à l'utilisation, au fonctionnel car il faut penser sur plusieurs niveaux, les développeurs ont tendance à passer plus de temps dans le code qu'a y réfléchir car il faut l'avouer programmer en Java est assez plaisant.

Un dernier point : Java ca fait joli sur un CV, moralité tout le monde le met, mais tout le monde ne sait pas en faire un minimum correctement, donc au final ca donne des projets qui foirent ou mal fait et une réputation d'exploseur de délais dans le milieu.
La lenteur de Java vient pas vraiment de lui mais du programmeur qui a codé comme un pied car il a appris le java tout de suite sans passer par la case "langage procédural" genre C.

J'aime bien Java, je dois en faire au boulot, mais je déconseille fortement d'en faire tant qu'on ne maitrise pas la programmation procédurale. Les classes toutes faites c'est bien, mais il faut savoir ce qu'il y a derrière.
Citation :
Publié par Le Nain Disco
La lenteur de Java vient pas vraiment de lui mais du programmeur qui a codé comme un pied car il a appris le java tout de suite sans passer par la case "langage procédural" genre C.
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\ )
Citation :
Publié par Imladir
Le C et le java, c'est pas du tout pareil, faut faire attention.

Quant au système d'héritage, ça n'a rien de spécifique à Java, hormis cette conception qu'une classe ne peut hériter que d'une seule classe, ce qui est un peu dommage.
Ca a l'air dommage au premier abord, mais vu le boxon comme peuvent être des héritages multiples dans tous les sens, un héritage unique simplifie la compréhension. L'implémentation (des interfaces) est plus intéressante à ce point de vue, et pour la modularité aussi. Comme toutes les approches et design pattern, ce n'est pas parce qu'une technique est possible qu'il faut en mettre dans tous les coins, sinon ça devient contre-productif.
J'ai effectivement vu des programmes Java ramer et prendre trop de mémoire, c'est du à une méconnaissance du langage (c'est pas parce qu'il ressemble à d'autres langages objet que du code passe-partout-comme-en-C++ sera efficace).

D'ailleurs en faisant le tour des benchmarks Java/C++ disponibles sur internet (et en oubliant les extrêmes), Java n'est plus si loin du C++ en terme de performance, sans forcément arriver à la dépasser un jour cela dit. La compilation à la volée en code natif est certainement la source du plus gros gain de perf (mais là ça dépend de la JVM utilisée).
Citation :
Publié par Imladir
Java n'est pas un langage orienté objet (comme le C++), c'est un langage objet.
Hu ? int est un objet maintenant ? Remarque depuis le JRE 6 peut être, j'avoue que ça fait quelque temps que j'y ait pas touché. Mais Java qui se trimballe encore des types primitifs est pas encore 100% objet ( go python -je crois- ou ruby -j'suis sur- pour du 100% objet. Même le "null" est un objet ).

Sinon bin comme tout langage avec un VM, c'est moins rapide qu'un langage compilé... Maintenant pour beaucoup d'applis est ce que ça gène beaucoup... Pas sur.
Pour tout ce qui est embarqué aussi, le fait d'avoir une VM et donc un accès au hardware plutôt laborieux c'est un handicap.

L'abscence d'héritage multiple (ou de concept approchant) c'est chiant aussi et c'est handicapant. En Ruby les mixin fonctionnent très bien.

Pendant longtemps y a eu l'abscence d'un RAD digne de ce nom, ce qui fait que c'était plutôt chiant si tu voulais dessiner un GUI rapido.

Pis plus générallement tout plein de mauvaises expériences avec, ou Tomcat pour les servlets et toussa. Rails une fois DL, le projet créé, ça prend 2 sec de lancer le serveur de test pré-configuré. Et 2h ensuite pour configurer lighttpd en fast-cgi pour la prod.
Ajoutons un point défavorable pour Java, c'est la compatibilité, qu'elle soit ascendante ou descendante, elle n'est jamais clairement assurée, notamment lors de développement d'interfaces "lourdes", et comme le client Java à toujours le joyeux paramétrage de se mettre à jour en auto par défaut et bien, ça donne des applis java inutilisables dans la plupart des cas.

Prenons un exemple. Interface lourde, module d'administration de switch (disons Cisco par exemple).

En fonction de la version de l'OS du switch, on va avoir une appli d'administration qui est compatible avec une version de Java, et qui ne le sera plus avec la suivante, il faut donc bloquer la mise à jour du client Java, ce qui t'empêchera à l'avenir d'administrer un switch d'une génération ultérieure....
Ouais bon, il reste quelques types primitifs, mais je ne suis pas sur que les faire disparaître soit une si bonne idée que ça, quand on veut juste un int et pas toutes les fonctions qui vont avec les Integer, c'est quand même plus léger.
Citation :
Publié par Imladir
Ouais bon, il reste quelques types primitifs, mais je ne suis pas sur que les faire disparaître soit une si bonne idée que ça, quand on veut juste un int et pas toutes les fonctions qui vont avec les Integer, c'est quand même plus léger.
En même temps si t'es dans une appli où tu dois compter les ms, je suis pas sur que JAVA soit le bon choix quoi. J'veux dire, y a quelques applis ou on veut des perfs (jeux vidéos, calcul scientifique...), mais pour beaucoup, beaucoup d'applis "lambda", que le truc réponde en 30ms ou en 35 franchement... L'user au bout fera pas le différence de toutes manières.

Bref pour moi, l'histoire des types primitifs pour des questions de performances, c'est un peu de l'enculage de mouche, histoire de se faire plaisir quoi et dans 90% des cas on s'en fiche un peu.
Message supprimé par son auteur.
Répondre

Connectés sur ce fil

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