IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Java est-il un langage de programmation mourant ?


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Bonjour,

    Java de manière globale n'est pas spécialement lent si on code correctement.

    Tomcat n'est pas un bon serveur d'appli effectivement, il est lent à démarrer, il est parfois instable (ça dépend évidemment des applis qui sont développées dessus !).
    Testez jboss eap 6.0 ou 6.1 par exemple. Vous aurez un vrai serveur d'appli professionnel. Il y a glassfish également.

    Si on parle de programmes tournant en standalone n'utilisez pas java, ce n'est pas vraiment fait pour ça. Swing en particulier est obsolète. Java c'est fait pour faire de l'appli web côté serveur, éclatez vous avec des jsf2, avec du JPA bien ficelé (attention si c'est pas optimisé, ça peut être extrêmement lent)... le tout est de bien travailler son code, ses requêtes...

    La verbosité, parlons en. En effet je préfère des mots assez explicite que des sigles qui ne veulent rien dire, et ça je n'y toucherait pas.
    Par contre tout ces getters/setters sont bien lourds par exemple, et il y a de nombreuses choses qui pourraient être empruntées à python, scala, ... qui permettraient d'améliorer le langage.

    Certaines choses s'améliorent au fil du temps et de nombreux efforts sont faits, le langage se modernise, je ne pense pas qu'il soit au déclin, par contre peut-être danns le creux de la vague.


    Va-t-il être supplanté ? Pas par python ni javascript qui n'ont pas du tout les mêmes ambitions, qui sont de bons langages mais qui n'ont pas les mêmes domaines d'application (même si il y a django ou d'autres tentatives plus ou moins réussies).

    Scala est à mon avis un langage beaucoup trop complexe à utiliser à fond pour devenir un grand standard _ même si je trouve ce langage génial.

    C++ et C ne sont pas non plus sur les mêmes créneaux.

    Mais surveillons ce malicieux C#, qui sait s'adapter plus vite aux évolutions du temps (il est aussi plus jeune). Je pense qu'ils se valent (sauf pour la portabilité) mais que Java a encore son mot à dire.

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2008
    Messages : 121
    Par défaut
    Pour avoir développer en JAVA durant la majorité de mes études, je dois dire que personnellement je trouve que c'est un super langage que je vois au-dessus du C/C++ au niveau de l'apprentissage.

    En C/C++, tu dois gérer davantage de détails inutiles pour parvenir au même résultat qu'en JAVA (je ne parle pas de QT ici xD)

    Citation Envoyé par Spleeen Voir le message
    - Java est naze niveau perf. Clairement tu dév avec, tu te fous des perfs.
    Pour le même algorithme général, C est quasi 10 fois plus rapide. 7 fois pour C++. C# peut générer un vrai binaire, en perdant le multiplateforme. Mais Java n'est pas multiplateforme dans la pratique, donc bon.
    Ah et pour ceux qui parlait de l'optimisation en ligne de code JAVA/C/C++/C#. Petit site qui parle du nombre de ligne de code par points de fonctions utilisé par certains gestionnaire de projet pour estimé la longueur d'un programme. (quoi que je suis d'accord que l'estimation est une chose que je doute un peu vu que sa dépend du programmeur)
    http://www.qsm.com/resources/functio...anguages-table

    JAVA : 53
    C# : 54
    C : 97
    C++ : 50

    Citation Envoyé par tralloc Voir le message
    Bonjour,
    La verbosité, parlons en. En effet je préfère des mots assez explicite que des sigles qui ne veulent rien dire, et ça je n'y toucherait pas.
    Oui, le nom des méthodes/function en JAVA sont clairs et précise contrairement a d'autre langages.

    Citation Envoyé par tralloc Voir le message
    Par contre tout ces getters/setters sont bien lourds par exemple, et il y a de nombreuses choses qui pourraient être empruntées à python, scala, ... qui permettraient d'améliorer le langage.
    Personnellement, j'adore les get/sets et même en C/C++, dans nos classe on doit utiliser des get/sets si je m'abuse. Du moins, dans tous les cours que j'ai vu c'était comme ça.

    Il y a que le .NET (en langage réellement connu, car j'ai pas le souvenir d'avoir déjà vu une offre d'emploi qui parle de scala,python ou d'autre trucs du genre) qui offre vraiment les propriétés qui font le get/set à l'intérieur qui est sertes plus optimale au niveau du codes, mais pas nécessairement plus claires si tu as du traitement à faire.

    Mais bon, tous ça est laisser à la discrétion du programmeur.

    Citation Envoyé par tralloc Voir le message
    Mais surveillons ce malicieux C#, qui sait s'adapter plus vite aux évolutions du temps (il est aussi plus jeune). Je pense qu'ils se valent (sauf pour la portabilité) mais que Java a encore son mot à dire.
    Oui C# est bien, mais il n'est openSource ni multiplateforme. Contrairement au JAVA.

    Citation Envoyé par xarkam Voir le message
    Pourrais-tu s'il te plait, nous montrer un mauvais exemple de code Java comme tu le fait ici pour c# ?

    Oui, je suis dev c# et je n'utilise jamais var dans des déclaratif (même si resharper le veux)

    C'est pareil que le java, typage fort. Quoi que depuis la 4.0 on a le déclaratif Dynamic (http://msdn.microsoft.com/fr-fr/magazine/ee336309.aspx)
    Personnellement, s'il y a du code que je qualifie de mauvais codes, c'est réellement l'utilisation d'un type générale si je peu le dire ainsi (var, Dynamic) qui peut remplacer n'importe qu'elle type.

    Si les langages sont typé ce n'est pas sans raison. Donc utilisé les type, certes si tu code en JS,PHP tu as pas le choix, mais en prenant ces langages tu t'attends a devoir codé comme ça, donc ces logique. Même si c'est le mal.

    Citation Envoyé par Grom61736 Voir le message
    Okay, tu as gagné, le C/C++ est plus rapide.
    Prends une bonne grosse application programmée par des dizaines de personnes voir plus. Bizarrement, l'avantage de la gestion de la mémoire se transforme en désavantage avec une gestion de la mémoire catastrophique car faite à l'arrache.

    Alors oui, on a le "ah mais non, moi monsieur je programme bien"... Toujours est-il que ce n'est pas le cas de tout le monde.

    Il est clair que si tu veux faire une application où tu vas aller dans les moindre recoin pour grapiller des ms et de la mémoire, vaut mieux pas être dans un langage haut niveau maintenant, pour l'application en entreprise (ce qui permet à un langage de vivre) avec plein de gens pas aussi doué que toi, oui, le GC est plus doué que la moyenne...
    Tiens ça me fait penser à une histoire qu'un de mes profs avait raconter. Lorsqu'il était sur le marché du travail en développant en C/C++ avec une grosse équipe. L'application avec tellement de fuites de mémoire et de ralentissement qu'un des programmeurs a été chargé de développer lui même un «pseudo-garbage collector» dont le résultat ne fut pas 100% optimale mais bon ^^

    Citation Envoyé par Carhiboux Voir le message
    Du code sale en java, il y en a aussi je n'ai pas
    var toto = "rastatpopulos" n'est pas si horrible que cela. On voit vite de quoi il s'agit.

    Maintenant, si j'ai une déclaration du type :
    var titi = monObjet.maMethode();

    Là je suis plus embêté. Et oui, l'IDE me fournit des outils pour savoir, mais il faut chercher un peu. L'information n'est pas immediatement accessible.

    J'aime autant (mais j'admets volontiers tout la subjectivité de la chose) :
    String titi = monObjet.maMathode();
    Justement pour moi c'est ce qui fait la différence entre un bon et mauvais programmeur. La lisibilité de son code, du code devrait ce lui comme une histoire. Si je peu le dire ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String username = CurrentSession.getUsername();
    Si tu lis comme une phrase/histoire :
    Créer une variable username qui est égales à la valeur Username de la session courante.

    Mais bon, tous ça varie en fonction des programmeurs et des normes d'entreprises.

    Citation Envoyé par Spleeen Voir le message
    - Pas de surcharges d'opérateurs... non mais allô quoi !
    La tous ce que je vois, c'est un fan de C/C++, car désoler mais la surcharge d'opérateur ne sert pas a grand chose a mon avis, mis-à-part faire un code qui n'est pas hyper claires.

    Prenons par exemple un classe Employé avec les variables Experience.

    Personnellement si j'ai le choix entre surcharger l'opérateur «+» ou créer une méthode textuel (ajouterExperience), j'aime réellement mieux une méthode textuel que un opérateur qui ne veut rien dire.

    Citation Envoyé par deusyss Voir le message
    Ajouté à cela le rachat de sun par oracle, les proces de ce dernier envers ceux utilisant java (cf android de google), le "soi-disant" quiproquo de cet été sur la javadoc passé sous licence proprio, les antécédent mysql et open office, ...; bref pour moi, Java est condamné dans les 2 à 5 ans à venir.
    Oui malheureusement le rachat risque de briser l'openSource et d'amener JAVA a sa perte... Je suis d'accord pour le mal, car java est très bien.

    Citation Envoyé par deusyss Voir le message
    Pour le remplacer? Python, associé à du C. Ce couple permet de repondre à tous les besoins, il n'y a alors rien d'autre à connaitre pour moi.
    Pourtant comme j'ai dis je vois rarement voir jamais d'offre d'emploi : PYthon, C, C++.

    Majoritairement, c'est : .NET / Java / Delphi

    Je parle pas du Web, là.

    Citation Envoyé par ptah35 Voir le message
    Quand tu manipuleras le nom, tu sauras parfaitement qu'il s'agit d'une chaîne parce que dans le cas d'espèce "rastapopulos" est une manifestement une chaîne et que même quelqu'un qui n'a jamais programmé en C# est capable de dire.

    L'inférence de type permet d'éviter de la redondance, mais si le code n'est pas clair alors on peut choisir de ne pas l'utiliser.
    Oui à la déclaration c'est une chaine, mais le problème a déclarer sans typé reste que la valeur peut-être modifier par n'importe quoi. Et que s'il se passe quelques chose de «croche» dans l'application, ça peut transformer ta variable String et lui affecté une valeur numérique ou autre.

    On n'est jamais sur a 101% de ce qui ce passe dans notre application.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    Citation Envoyé par mat1554 Voir le message

    Oui à la déclaration c'est une chaine, mais le problème a déclarer sans typé reste que la valeur peut-être modifier par n'importe quoi. Et que s'il se passe quelques chose de «croche» dans l'application, ça peut transformer ta variable String et lui affecté une valeur numérique ou autre.

    On n'est jamais sur a 101% de ce qui ce passe dans notre application.
    Absolument pas ! C'est une vrai variable de type string, qui se comporte exactement comme telle. Le var c'est du sucre syntaxique qui évite une multitude de noms à rallonge sans aucune valeur ajoutée (generic de generic, linq, etc....).

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par mat1554 Voir le message
    Personnellement, s'il y a du code que je qualifie de mauvais codes, c'est réellement l'utilisation d'un type générale si je peu le dire ainsi (var, Dynamic) qui peut remplacer n'importe qu'elle type.
    [...]
    Si les langages sont typé ce n'est pas sans raison. Donc utilisé les type, certes si tu code en JS,PHP tu as pas le choix, mais en prenant ces langages tu t'attends a devoir codé comme ça, donc ces logique. Même si c'est le mal.
    [...]
    Oui à la déclaration c'est une chaine, mais le problème a déclarer sans typé reste que la valeur peut-être modifier par n'importe quoi. Et que s'il se passe quelques chose de «croche» dans l'application, ça peut transformer ta variable String et lui affecté une valeur numérique ou autre.
    Vous avez le droit de ne pas tout savoir, mais lorsque vous ne savez pas, de grâce, n'affirmez pas.

    Le mot clé "var" en C# dit seulement que le type de la variable est celui de la valeur avec laquelle elle est initialisée (inférence de type), mais cela reste du typage statique. Le but est juste d'éviter de la redondance.

    JS et PHP sont typés; typage dynamique n'est pas la même chose que non typé!

    Non, en C#, il n'y a pas de différence entre déclarer une variable avec "var" et initialisée avec une chaîne ou la déclarer avec String.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut
    Je fais du java depuis 5 ans, j'ai fais du C# pendant 1 ans et 2 ans de php...; et j'aime beaucoup ces 3 langages mais je dois dire que certaines choses m'irrite.

    Java est un langage de programmation objet, pas un framework.
    Un langage c'est de l'apprentissage, une philosophie à appréhender, et surtout une réponse adéquate à un besoin précis.

    Beaucoup de besoins ne trouvent pas forcement une réponse simple et implémentée dans un langage / framework ce qui donne souvent une utilisation détournée plus ou moins bien implémentée.
    Deplus chaque langage à ses forces et faiblesses !

    Prendre un cas précis sur lequel un langage n'est pas optimisé et dire : regarde, c'est vraiment nul... c'est juste confirmer que le langage n'est pas celui à utiliser pour cette problématique.... pas que le langage doit partir aux oubliettes.

    Concernant le verbosité du langage : Ce n'est pas un débat tellement c'est une question de gout.
    Personnellement j'aime la verbosité, j'aime le typage fort. Je ne suis pas payé à la variable où à la longueur des noms attribués aux méthodes mais j'aime quand ce que je manipule est compréhensible.
    Mais je comprend quand quelqu'un me dit qu'il préfère les déclaration simple et rapide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La phase de déclin peut-elle s'appliquer réellement aux langages de programmation ?
    Oui sur les nouveaux projets ... et non tant que des SI auront des applications vitales dans ces technos (pour ca qu'on cherche encore des développeurs cobold en secteur financier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selon vous, qu'est ce qui maintient Java au top malgré la flambée de nouveaux langages de programmation ?
    Langages ou frameworks ? Non car des langages y'en a pas tout les 4 matins non plus.

    Java c'est :
    * Gratuit (dans les SI ca fait un argument de poids)
    * Un éco-systeme très (trop ?) riche et bien souvent open-source et/ou gratuit.
    * Une grande liberté dans l'implémentation des solutions

  6. #6
    Invité de passage

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Par défaut
    Citation Envoyé par Spleeen Voir le message
    Jamais, dans aucun de mes programmes C/ASM/Python/PHP/ADA/etc je n'ai eu des lignes aussi longues qu'en Java xD
    Alors si c'est pénalisant des noms trop long, même si ce n'est pas LA chose à corriger au plus vite. (cf. les exemples sur http://cl.ly/RvaL)
    Bizarre. Moi, mes lignes, elles font maximum 120 caractères, ce qui est la bonne pratique généralement reconnue.
    Citation Envoyé par Spleeen Voir le message
    Si tu pars sur un postulat idiot, oui tu trouve un résultat idiot. Trouvaille ?
    J'ai étudié et travaille depuis des années en Java. C'est une horreur, disons le d'emblée. Beaucoup (trop de failles de sécu), une JVM très très très gourmande en RAM.
    N'importe quoi. Tu ne libères pas bien tes ressources.
    Citation Envoyé par Spleeen Voir le message
    À titre perso, j'utilise de plus en plus C#, pourtant on peut vraiment pas m'accuser d'être pro-Microsoft, n'utilisant quasiment aucun de leurs outils.
    Mais C# réussi quasiment partout ou Java pêche.
    Quelques trucs comme ça :
    - Avouons-le, l'API Java a été fait par des théoriciens des cordes qui se touchent devant leurs hiérarchies (des profs aussi parfois) mais n'ont pas compris qu'il était PARFOIS utile de créer, pour Swing notamment, des classes concrètes. Pour gérer des trucs dépassés (second degré) comme l'affichage d'une image, la lecture d'une musique ou des graphiques...
    À coté Qt, c'est 3 lignes pour une classe de 100 lignes en Java avec un héritage aux interfaces Java
    Qt ? Le jour où tu feras une application serveur avec, tu me le dis...
    Citation Envoyé par Spleeen Voir le message
    C# lui a déjà tout dans le ventre, comme Qt.
    - Java est naze niveau perf. Clairement tu dév avec, tu te fous des perfs.
    Pour le même algorithme général, C est quasi 10 fois plus rapide. 7 fois pour C++. C# peut générer un vrai binaire, en perdant le multiplateforme. Mais Java n'est pas multiplateforme dans la pratique, donc bon. Qui n'a jamais modifier son code pour l'adapter à Linux, Windows ou Mac ? Tiens centre une fenêtre à l'écran alors !
    Présent ! Après 12 ans de Java, je n'ai pas eu une seule fois besoin de changer mon code pour l'adapter au système sous-jacent.
    Citation Envoyé par Spleeen Voir le message
    - Des types primitifs peuvent servir, désolé.
    Et donc ?
    Citation Envoyé par Spleeen Voir le message
    - Des pointeurs j'en veux quand même, na !
    Tu manipules des pointeurs en .Net ? Explique un peu, pour voir...
    Citation Envoyé par Spleeen Voir le message
    - Pas de surcharges d'opérateurs... non mais allô quoi !
    La surcharge d'opérateur est un gadget, au mieux du sucre syntaxique, au pire une source de bugs compliqués à comprendre
    Citation Envoyé par Spleeen Voir le message
    - Pas de raccourcis pour les TRÈS laborieux getters/setters ! Ni dans les param du constructeurs. Pas de destructeurs ! (faisons confiance au GC, hein )
    Et ça marche ! Quand on sait s'en servir...
    Citation Envoyé par Spleeen Voir le message
    T'en de choses en tête... vous pourrez trouver aussi une comparaison ici (http://cl.ly/RvaL). Peu de choses finalement que Java fait et que C# ne fait pas. Puis Java, ok sur Android... mais sous iOS et WP...

    Par contre, Java permet de créer un code rapidos, le traitement des chaines est un régal, ET... C# n'est encore pas beaucoup appris (mais ça vient dans les écoles . Le jour où, Java ne fera pas pleurer dans les chaumières...

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    Citation Envoyé par Spleeen Voir le message
    J'ai étudié et travaille depuis des années en Java. C'est une horreur, disons le d'emblée. Beaucoup (trop de failles de sécu), une JVM très très très gourmande en RAM.
    La RAM ? on a tous au minimum 2Go (voir 4) sur nos ordinateurs. Je suis pas sur que ce soit vraiment pertinent. Je suis curieux de savoir à combien tu estimes (pas à la louche hein. Avec un benchmark.) la différence en RAM entre un programme natif et Java...
    Citation Envoyé par Spleeen Voir le message
    À titre perso, j'utilise de plus en plus C#, pourtant on peut vraiment pas m'accuser d'être pro-Microsoft, n'utilisant quasiment aucun de leurs outils.
    Mais C# réussi quasiment partout ou Java pêche.
    Quelques trucs comme ça :
    Voyont ça...
    Citation Envoyé par Spleeen Voir le message
    - Avouons-le, l'API Java a été fait par des théoriciens des cordes qui se touchent devant leurs hiérarchies (des profs aussi parfois) mais n'ont pas compris qu'il était PARFOIS utile de créer, pour Swing notamment, des classes concrètes. Pour gérer des trucs dépassés (second degré) comme l'affichage d'une image, la lecture d'une musique ou des graphiques...
    À coté Qt, c'est 3 lignes pour une classe de 100 lignes en Java avec un héritage aux interfaces Java
    C# lui a déjà tout dans le ventre, comme Qt.
    Les " théoriciens des cordes" ont créer dans la plupart des cas des API facile à prendre en main. Les hiérarchies de classes ne posent pas vraiment de problème au contraire elle sont là pour les résoudres (Exemple Collections.sort() est utilisable sur ArrayList, LinkedList...).
    Sinon je dois te l'accorder les API media (lecture/enregistrement de musique, vidéo) sont obsolètes. Mais tu sais, Qt est disponible en Java aussi
    Citation Envoyé par Spleeen Voir le message
    - Java est naze niveau perf. Clairement tu dév avec, tu te fous des perfs.
    Pour le même algorithme général, C est quasi 10 fois plus rapide. 7 fois pour C++. C# peut générer un vrai binaire, en perdant le multiplateforme.
    Troll ? Pour information, la JVM génère du code natif quand c'est nécessaire... Et puis je ne sais pas d'où tu sort tes 7 et 10 fois plus rapide que Java mais c'est clairement n'importe quoi. En faite j'aurais même plutôt tendance à croire (je n'affirme pas, je n'ai pas fait de bench pour vérifier) que l'algo sera plus rapide en Java qu'en C/C++, le code est compilé à l’exécution donc en fonction des spécificités (nombre de coeur, RAM...) de la machine cible.
    Citation Envoyé par Spleeen Voir le message
    Mais Java n'est pas multiplateforme dans la pratique, donc bon. Qui n'a jamais modifier son code pour l'adapter à Linux, Windows ou Mac ? Tiens centre une fenêtre à l'écran alors !
    Ok je te l'accord pour centrer une fenêtre, c'est tricky :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    frame.setLocationRelativeTo ( null );
    Mais ça reste multiplateforme. Si tu utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    frame.setLocationByPlatform(true);
    tu demandes à l'OS de positionner la fenêtre comme il veut, donc oui potentiellement, elle ne sera pas centrée, mais bon si tu ne lit pas la doc...
    Pour le coté, Java pas multiplateforme, il y a toujours de cas (dès qu'on utilise du natif), mais on ne les rencontres pas dans toutes les applications non plus.
    Citation Envoyé par Spleeen Voir le message
    - Des types primitifs peuvent servir, désolé.
    Pas compris le sens de ta remarque.
    Citation Envoyé par Spleeen Voir le message
    - Des pointeurs j'en veux quand même, na !
    Ba toute variable ce qui n'est pas primitive, est un pointeur en Java, même si c'est transparent pour le développeur. La preuve on peut mettre la variable à null.
    Citation Envoyé par Spleeen Voir le message
    - Pas de surcharges d'opérateurs... non mais allô quoi !
    Ok ça rend le langage un peu plus verbeux. Mais franchement, encore une fois, les cas de surcharge à bon escient des opérateurs sont très rares.
    Citation Envoyé par Spleeen Voir le message
    - Pas de raccourcis pour les TRÈS laborieux getters/setters ! Ni dans les param du constructeurs. Pas de destructeurs ! (faisons confiance au GC, hein )
    La je te l'accord rien de standard (il y a des API qui permettent de les générer pré-compilation). Je ne vois pas à quoi tu fait allusion quand tu mentionne les params du constructeur mais la plupart des IDE permettent d'affecter les params du constructeur (et n'importe quelles méthodes) à un nouveau champs ou un champs portant le même nom que le paramètre. Pour le destructeur, ayant fait du C++, c'est un truc qui me manque. J'arrive à faire sans mais c'est pas aussi propre qu'un destructeur.

  8. #8
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Citation Envoyé par atha2 Voir le message
    Troll ? Pour information, la JVM génère du code natif quand c'est nécessaire... Et puis je ne sais pas d'où tu sort tes 7 et 10 fois plus rapide que Java mais c'est clairement n'importe quoi. En faite j'aurais même plutôt tendance à croire (je n'affirme pas, je n'ai pas fait de bench pour vérifier) que l'algo sera plus rapide en Java qu'en C/C++, le code est compilé à l’exécution donc en fonction des spécificités (nombre de coeur, RAM...) de la machine cible.
    Elle compile du code natif mais elle n'optimise pas tout cela faut pas abuser non plus...
    Pour info : http://embarcaderos.net/2011/01/23/p...ion-with-java/
    L'optimisation viendra du code et non de la jvm.
    On a le droit de défendre son bout de gras mais faut peut être pas partir trop loin dans le troll, sinon on va finir par dire que Java est le seul langage qui fait le café !

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Quel est l'intérêt de ce genre d'article ?
    Générer du trafic, mais à part ça ?
    Le pire c'est qu'on y a droit de plus en plus souvent.
    Entre le sujet et les 9/10 des réponses (dont la mienne) sans aucun intérêt, on va pas aller loin.
    La grande majorité des gens qui n'aiment pas Java, ne le connaissent pas et évidemment croient le connaitre et confondent leurs goûts avec de vrais arguments qualitatifs...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 63
    Par défaut Don't feed the troll
    Ça commence vraiment à gaver ce genre d'articles et les réponses qui s'en suivent.

    Entre les gens qui n'ont jamais fait de Java mais qui disent quand même que c'est nul, ceux qui croient qu'on change le code Java pour tourner sous Linux ...

    Bref, c'est tout sauf constructif.
    Je fais du Java tous les jours depuis 9 ans.
    Y a des choses géniales (les IDE, les milliers de frameworks, la communauté open source ...), y a des choses moins bien (une certaine verbosité, une VM qui induit des ressources supplémentaires, la mémoire à savoir paramétrer correctement ...).

    Bref, c'est comme tout, ce n'est pas parfait. Maintenant, j'adore développer dans ce langage.
    Personnellement, je ne crois pas qu'un langage faiblement typé remplacera les lourds du secteurs (tous aujourd'hui fortement typés), mais ce n'est que mon avis.

    Mais en tout cas, un langage :
    - fortement typé
    - massivement open source et communautaire
    - utilisé par des millions de développeurs
    - performant (je serai curieux de voir les perfs des langages interprétés genre PHP, Python & co face à Java)
    - multiplateforme
    - permettant de faire du web, des GUI, du messaging, des démons
    - ayant les meilleurs IDE gratuits que j'ai vu
    - possédant des milliers de bibliothèques utilisées en prod
    - utilisé et soutenu par de grandes multinationales (Oracle, Google, IBM, Red Hat, SAP ...)
    - étant la base des applications l'OS mobile le plus répandu

    ne mourra pas dans les 10 prochaines années. Ni même dans les 30 suivantes.

    Point barre.
    Si vous n'aimez pas Java, ben n'en faites pas, personne vous y oblige.

  11. #11
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Citation Envoyé par Spleeen Voir le message
    J'ai étudié et travaille depuis des années en Java. C'est une horreur, disons le d'emblée. Beaucoup (trop de failles de sécu)
    Si tu avais réellement développé en java, pas taper juste des lignes de code complexées, tu n'allais pas avancer ces propos. C'est décevant de critiquer négativement un langage de programmation parce qu'on est fan d'un autre.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  12. #12
    Membre extrêmement actif

    Développeur NTIC
    Inscrit en
    Janvier 2011
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Développeur NTIC
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 670
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Si tu avais réellement développé en java, pas taper juste des lignes de code complexées, tu n'allais pas avancer ces propos. C'est décevant de critiquer négativement un langage de programmation parce qu'on est fan d'un autre.
    Surtout que les failles de sécu sont pour le plugin web ...

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2011
    Messages : 342
    Par défaut
    Citation Envoyé par Cedric Chevalier Voir le message
    ...
    On commence les posts à troll dès le lundi maintenant ???

  14. #14
    Membre très actif
    Inscrit en
    Juin 2008
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 146
    Par défaut
    Pardonner mon ignorance mais la signification de troll dans les forums ça veux dire quoi exactement ?

    Merci

  15. #15
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 215
    Par défaut
    Citation Envoyé par GPPro Voir le message
    On commence les posts à troll dès le lundi maintenant ???
    Oh zut... Je me croyais déjà vendredi
    Citation Envoyé par hunyka Voir le message
    Pardonner mon ignorance mais la signification de troll dans les forums ça veux dire quoi exactement ?

    Merci
    http://lmgtfy.com/?q=troll

    Pour répondre au sujet initial, j'ai du mal à voir en quoi Java est mourant. Comme CoderInTheDark, ce que je crains, c'est Oracle qui prenne l'idée de changer la licence (ou une autre lubie du genre...)

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    C# c'est sympa, mais justement, le var nom = "rastapopulos"; c'est le genre de ligne de code qui m'agace. Parce que plus loin, quand je vais manipuler nom, je vais pas savoir de quel type de variable il s'agit.
    Bah je vois pas où est le problème... Pour voir quel est le type de la variable, tu as 2 possibilités :
    - regarder sa déclaration : je pense qu'il est assez clair pour n'importe qui que le type est String, d'après la valeur d'initialisation
    - utiliser les fonctions de l'IDE (par exemple regarder le tooltip sur la variable, qui indique son type)
    Je ne vois pas en quoi le fait de préciser le type explicitement aurait rendu les choses plus claires...

    Exemple encore plus flagrant : trouves-tu vraiment que ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var x = new ClasseAvecUnNomSuperLongQuiEstChiantALireEtAEcrire ();
    est moins clair que celui là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasseAvecUnNomSuperLongQuiEstChiantALireEtAEcrire x = new ClasseAvecUnNomSuperLongQuiEstChiantALireEtAEcrire ();
    Pour moi le choix est vite fait, d'autant plus que j'ai horreur de me répéter...

    De toutes façons, personne ne t'oblige à utiliser le typage implicite ; tu peux très bien indiquer le type explicitement si tu préfères, donc ce n'est pas vraiment un argument valable pour ou contre le langage...

    Citation Envoyé par xarkam Voir le message
    Oui, je suis dev c# et je n'utilise jamais var dans des déclaratif (même si resharper le veux)
    Resharper ne "veut" rien... par défaut il te suggère de mettre var là où c'est possible, mais si ça ne te plait pas tu peux très bien désactiver cette suggestion. Resharper est un outil très puissant, mais il faut le configurer pour qu'il soit adapté à ton coding style, sinon il va tout le temps te mettre des warnings qui serviront à rien parce que tu vas les ignorer...

  17. #17
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Par défaut
    Le titre de l'article dit une chose, le corps de l'article une autre. Bon passons sur ce détail.

    Chaque développeur à tendance à défendre sa propre paroisse. La mienne c'est java, je l'avoue sans détour.

    Et franchement, autant je peux me poser des questions sur l'avenir, autant je suis confiant que je pourrais encore vivre en faisant du java dans 10 ans et probablement dans 20 ans.

    Comme bien résumé par Kearz précédemment, ce qui fait selon moi la force de java, c'est le nombre impressionnant d'api de base dans java. Sans rien avoir à importer en plus de ce qui est nativement fourni, on a déjà un nombre assez conséquent -et confortable- d'outils à disposition.

    En important d'autre api/frameworks facilement trouvables et documentés, on peut carrément presque tout faire en java.

    Bref, je trouve beaucoup d'avantages à java que je ne trouve pas aux autres langages.

    C# c'est sympa, mais justement, le var nom = "rastapopulos"; c'est le genre de ligne de code qui m'agace. Parce que plus loin, quand je vais manipuler nom, je vais pas savoir de quel type de variable il s'agit.

    Or je pense qu'il faut un certain degré de formalisme pour que la majorité puisse écrire un code correct.

    C++ ou C# sont certainement très bien, pour peu que l'on ait l'esprit fait d'une certaine façon.

    Maintenant, à mon sens, Java est le langage qui offre à la fois le plus de liberté d'écriture tout en gardant une certaine rigueur dans le typage.

    Avec un minimum de règles, on a vite un code java très lisible.

    Je ne peux pas en dire autant avec C++ ou C#. Dans le premier cas, je trouve que la lecture du code est beaucoup trop pollué par des questions annexes comme la gestion de la mémoire et des références. Dans le deuxième cas, c'est le contraire, je ne sais pas dire quel est le type de telle variable à priori, ce qui est parfois pratique, mais tout le temps trompeur.

  18. #18
    Membre très actif
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 367
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    ...

    C# c'est sympa, mais justement, le var nom = "rastapopulos"; c'est le genre de ligne de code qui m'agace. Parce que plus loin, quand je vais manipuler nom, je vais pas savoir de quel type de variable il s'agit.
    ...
    Pourrais-tu s'il te plait, nous montrer un mauvais exemple de code Java comme tu le fait ici pour c# ?

    Oui, je suis dev c# et je n'utilise jamais var dans des déclaratif (même si resharper le veux)

    C'est pareil que le java, typage fort. Quoi que depuis la 4.0 on a le déclaratif Dynamic (http://msdn.microsoft.com/fr-fr/magazine/ee336309.aspx)

    Mais soit, Java a la lourdeur d'un mammouth. Quant aux api externes en veux-tu en voila, je pense que ça tue le langage. (me souvient lorsque j'ai commencé à me documenter, le nombre de liens sur des api externe à java core retournés par google)

    En 2009, j'ai dit à ma femme que je voulais apprendre le java puisqu'elle est dev java. Elle m'a dirigé vers le c# car plus facile. Elle même c'est mis au c# debut 2010 et depuis n'a que louange vers ce langage.

    Enfin, perso oui, java vas continuer à exister, mais comme dit plus haut, si on veux un java à la pointe, il faut lui adosser des api externes puisque le"core" n'évolue pas vite"

    C'est à mon sens ce qui tuera java. Pourtant, il existe de très bon produit comme pour ne citer qu'eux, jira, confluance, stash, youtrack, alfresco, ect....

    Et il a l'avantage de fonctionne sur toute les plateforme pour ce qui est des webapp. Ce que n'a pas le c#.

  19. #19
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    Maintenant, à mon sens, Java est le langage qui offre à la fois le plus de liberté d'écriture tout en gardant une certaine rigueur dans le typage.
    Vis-à-vis de C++, je ne suis pas d'accord, le C++ est au moins, si ce n'est plus, aussi typé que Java, et niveau liberté d'écriture, avec les différents paradigmes (procédural, objet, template, fonctionnel...) présents, on fait difficilement plus libre.
    Citation Envoyé par Carhiboux Voir le message
    Avec un minimum de règles, on a vite un code java très lisible.

    Je ne peux pas en dire autant avec C++ ou C#. Dans le premier cas, je trouve que la lecture du code est beaucoup trop pollué par des questions annexes comme la gestion de la mémoire et des références. Dans le deuxième cas, c'est le contraire, je ne sais pas dire quel est le type de telle variable à priori, ce qui est parfois pratique, mais tout le temps trompeur.
    Par contre, niveau lisibilité et cohérence de style, je te l'accord, C++ à cause de sa trop grande liberté de codage n'est pas génial. Surtout sur un projet en équipe.

  20. #20
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Par défaut
    Citation Envoyé par Carhiboux Voir le message
    C# c'est sympa, mais justement, le var nom = "rastapopulos"; c'est le genre de ligne de code qui m'agace. Parce que plus loin, quand je vais manipuler nom, je vais pas savoir de quel type de variable il s'agit.
    Quand tu manipuleras le nom, tu sauras parfaitement qu'il s'agit d'une chaîne parce que dans le cas d'espèce "rastapopulos" est une manifestement une chaîne et que même quelqu'un qui n'a jamais programmé en C# est capable de dire.

    L'inférence de type permet d'éviter de la redondance, mais si le code n'est pas clair alors on peut choisir de ne pas l'utiliser.

Discussions similaires

  1. Réponses: 20
    Dernier message: 17/11/2014, 19h33
  2. Java est-il un langage de programmation mourant ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 168
    Dernier message: 18/10/2013, 13h08
  3. Créer appli web:Java est-il le langage idéal pour cette appli?
    Par Terminator dans le forum Général Java
    Réponses: 14
    Dernier message: 10/06/2011, 15h10
  4. [Archive] Quel est votre langage de programmation préféré ? (2004..2008)
    Par Idelways dans le forum Débats sur le développement - Le Best Of
    Réponses: 403
    Dernier message: 04/02/2009, 00h56
  5. Réponses: 2
    Dernier message: 15/07/2007, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo