C'est rarement utilisé, mais ça existe : http://msdn.microsoft.com/en-us/library/y31yhkeb.aspx
Très utile pour faire du traitement d'image ou toute autre application où les performances sont critiques.
C'est rarement utilisé, mais ça existe : http://msdn.microsoft.com/en-us/library/y31yhkeb.aspx
Très utile pour faire du traitement d'image ou toute autre application où les performances sont critiques.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Il y a un lobbying tellement monstrueux autour de Java qu'il va pas disparaître du jour au lendemain.
Après mon avis personnel : je le trouve trop verbeux et trop lent (mais la lenteur est sous condition de mes compétences en Java, à savoir que je ne suis absolument pas un expert de ce langage !), par contre on voit graviter de nombreux outils puissants autour de ce langage ainsi que de nombreuses librairies.
« Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
« Le watchdog aboie, les tests passent »
Je ne risque pas de dire beaucoup de bien je Java, je déteste Java depuis le début quand il faisait ramer ma machine dès qu'une page web contenait une applet, il fallait à peu près 5 minutes pour que mon PC redevienne utilisable.
Je dirais qu'il faut distinguer quatre choses:
- Le langage Java en lui-même, le framework et la machine virtuelle: ces 3 là étaient plus ou moins la même chose, maintenant il y a des frameworks et des machines virtuelles alternatives à ce que propose la version sun/oracle (android est un exemple),
- les domaines d'utilisation de Java
En ce qui concerne le langage lui-même, ça ressemble quand même énormément à du C++ sans pointeur et quelques spécificités liées au mode d'exécution (typage dynamique, garbage collector, etc.). Tout langage a ses avantages et ses inconvénients, je ne vois pas pourquoi Java serait plus en déclin que C++ ou C# de ce point de vue là.
En ce qui concerne le framework, je trouve la documentation très mal faite, on s'y retrouve très difficilement, difficile de faire des recherches dedans. Cela-dit c'est le cas de beaucoup de framework (.Net même punition) et je compare surtout avec la doc de Qt qui est très bien faite.
En ce qui concerne les machines virtuelles, ce serait intéressant d'avoir des chiffres sur les "parts de marché" en temps d’exécution (si c'est possible) des différentes machines virtuelles aujourd'hui. Surtout en ce qui concerne le rapport Dalvik/JVM Oracle. Avec le nombre de machines Android qui tournent 24/24, pas certain que le JVM Oracle soit encore leader.
Mais je pense que le plus intéressant c'est surtout ce qui concerne les domaines d'utilisation. Plus que le langage Java lui-même, les utilisations principales de Java que je connais sont:
- android
- applets sur des pages web
- serveurs d'applications (genre tomcat)
- logiciels divers qui utilisent Java pour être directement multiplateformes
(je met volontairement de côté le java sur carte à puce, ça n'est plus vraiment le même sujet)
En ce qui concerne les applets je pense qu'elle sont destinées à disparaître. Ce n'est pas encore complètement possible pour le moment (une applet Java est souvent encore la seule chose +/- portable pouvant accéder au disque dur et à des fonctions de l'OS: je dois avoir un sujet ouvert depuis longtemps quelque part sur ce forum pour faire de la signature par certificat électronique et accéder au magasin de certificat de l'OS, à part une applet Java on n'a rien trouvé de portable) mais quand je vois ques les applets Java ne peuvent pas fonctionner sous android par exemple... c'est que c'est mort pour les applets. Et HTML5 et compagnie est pas un pas de plus vers la fin des applets Java (et de flash)
Pour la portabilité il y a quand même mieux que Java, même si ça demande un peu plus de travail pour le développeur, quoi que: des frameworks natifs portables (genre Qt), ou du développement dans d'autres langages interprétés/précompilés mais plus légers, selon le domaine et les préférences de chacun: python, ocaml, etc... ou même javascript)
Reste les serveurs d'applications et android. Je pense que c'est de ces deux choses que dépendra l'avenir de Java, donc la question n'est pas vraiment dans les mains des développeurs mais plutôt dans celles des "décideurs":
- pour android il est déjà possible de développer directement en natif et Intel encourage dans ce sens. En plus Google nous a habitué à abandonner facilement des technos au profit d'autres jugées plus rentables.
- pour les serveurs d’applications: ça pourrait tourner "à la COBOL", les applications métiers vraiment utiles pourraient continuer à être supportées mais face aux différentes "saveurs" de clouds existantes et à venir... difficile de savoir aujourd'hui qui aura le meilleur discours commercial pour séduire les décideurs.
D'une façon ou d'une autre, pour survivre, une techno numérique doit s'adapter en permanence et proposer des évolutions intéressantes, sinon elle est vite rattrapée. La longévité de C ou C++ par exemple n'est pas liée au langage lui-même mais au fait que toutes les nouvelles techno apparue au fur et à mesure on souvent été (directement ou assez facilement) accessibles depuis un programme C ou C++. Au niveau Java, est-ce que Oracle a annoncé des choses palpitantes depuis qu'ils ont récupéré Java ?
Une techno hyper interessante pour faire des appli web avec Java : GWT.
Bien codé ça permet d'avoir une Web UI dynamique très réactive et un code hyper structuré. Il y a une forte communauté derrière et une bonne intégration à Eclipse.
Je dois avouer que le truc que j'aime le moins avec Java c'est J2EE...
Du code sale en java, il y en a aussi je n'ai pas dit que ce n'était pas possible hein. J'en vois régulièrement.
Et l'exemple avec le nom de classe interminable en est un.
Je vais corriger un peu mon exemple parce que c'est vrai que le
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();
Un developpeur qui se fout des performances a raison dans plus de 90% des cas...
Lorsque tu as besoin de multiplier 2 matrices (de taille raisonnable) une fois par mois, ca ne sert a rien de passer 2 semaines a trouver un algo qui te fera gagner quelques secondes.
Normalement, il faut d'abord faire quelque chose qui fonctionne avant de se poser des questions d'optimisation, selon la bonne vieille regle des 80/20 : tu passes 80% de ton temps dans 20% de ton code : tant que tu n'as pas identifie exactement les 20%, ca ne sert a rien d'optimiser !
Je ne compte plus combien de gens j'ai vu optimiser, a mort, la lecture de la configuration pour un programme serveur qui tourne en 24/7... Ca ne sert a rien.
Par contre, une fois ton application ecrite, un petit coup de profiler qui te donne les quelques methodes dans lesquelles tu passes le plus de temps, et hop, c'est bon.
Tu remarqueras que ces notions sont independantes du langage.
Et je pense que tu ne t'es pas penche sur les performances des JVM depuis un bout de temps
C'est un peu comme comparer les performances des processeurs en comparant les bogomips (c'est a dire le nombre de NOP qu'un processeur peut executer par seconde) : ca te donne une idee de quelque chose, mais pas de programmes reels.Enfin, un test simple, fait une multiplication de deux matrices. Avec un bête algo. Prends le meilleur pour chaque langage, en gardant la même complexité Oméga.
Tu n'as jamais lancé de profiler ? Fait un clock() pour voir ? Je sais pas c'est la base normalement...
Java est utilise dans la plupart des cas pour faire des serveurs qui sont utilises par de multiples clients. Oui, Java va etre plus lent que le C pour faire un appel a clock(). Mais ce n'est pas pour cela qu'il est utilise -- et le C non plus.
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.
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 La phase de déclin peut-elle s'appliquer réellement aux langages de programmation ?
Langages ou frameworks ? Non car des langages y'en a pas tout les 4 matins non plus.
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 ?
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
Pour une bonne résolution :
- N'hésitez pas à donner le maximum d'informations sur vos problèmes, ca vous fera gagner du temps en évitant les aller-retours.
- Si vous utilisez maven, pensez à rajouter votre pom !
--> Le meilleur code est celui qui concrétise ce qui a été posé et analysé sur le papier
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...
Voyont ça...
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
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.
Ok je te l'accord pour centrer une fenêtre, c'est tricky :
Mais ça reste multiplateforme. Si tu utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 frame.setLocationRelativeTo ( null );
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 frame.setLocationByPlatform(true);
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.
Pas compris le sens de ta remarque.
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.
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.
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.
Le java n’est pas prêt de disparaitre, il est omniprésent et possède des avantages indéniables.
Pour l’anecdote, dans ma boite nous ne somme pas censé développer en Java (ce n’est pas du tout notre expertise) et pourtant une multitude d’outils (VDoc, Talend, etc...) nous "obligent" à mettre les mains dans le cambouis et donc à développer en Java.
Bref, je ne m’inquièterais pas pour ce langage personnellement, je pense qu’il existera encore lorsque je prendrais ma retraite ^^
Pour la culture =P , certains langages de la plateforme .Net te permettent effectivement de jouer avec les pointeurs (quand je dis "certains langages", je crois qu’il n’y a que Vb.Net qui ne permet pas de manipuler des pointeurs, pour les autres langages de la plateforme les pointeurs sont accessibles dans un contexte unsafe).Envoyé par Traroth2
Pour ce qui est des usages, disons que ça peut permettre de faire du marshalling pour interfacer du code managé avec une bibliothèque native (typiquement, écrite en C ou C++), bien que pour cela, personnellement, je préfère utiliser C++/CLI (le C++ managé de la plateforme .Net). Ou alors faire un peu de traitement d’image ponctuellement. Bref, ce n’est pas non plus tous les jours qu’on se sert des pointeurs en .Net, mais ça a le mérite d’exister.
La situation est très simple.
Ceux qui ont un intérêt à ce que cette technologie ne meurt pas(développe en Java pour vivre principalement) trouverons des arguments pour aller dans le sens du "oui java à encore un avenir radieux devant lui", ceux qui développe dans d'autre langages ont quant à eux intérêt à dire l'inverse pour se donner une plus-value sur le marché du travail.
1/ Il est possible d'avoir un peu d'honnetete intellectuelle. Tu trouveras ici des gens qui font du Cobol qui peuvent tout a fait te montrer que oui, c'est un langage en declin, et qu'en meme temps ils ont du boulot pour 2.
2/ La preuve, j'ai plutot defendu Java jusqu'ici, alors que j'y suis relativement allergique.
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.
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.
Pour commencer le JAVA est un des langages (si ce n'est le langage) le moins aimer des développeurs . Sur certains blog la pratique du JAVA en milieu pro peut être assimilé à se mettre un cactus dans le <ul> .. Pourquoi est il là ? Pas difficile, comme le COBOL, toutes les SSII ne jure que pas le JAVA et le J2EE. J'accorde au JAVA une seule vertu, il est bien fait pour les étudiants et pour faire des concepts, passé ça.. prenons quelques exemples : la stacktrace java, super trouvaille ça, le mec qui à pondu ça aurait voulu faire pire dans le genre chiantissime il n'aurait pas pu, après il y à toute la partie "branlette intellectuelle" de java avec tout ces paterns, la verbosité des noms, les factory de class abstraite qui sorte des class abstraite.. que seule celui qui a codé sait comment utiliser, ça c'est super, sans parler de struts/spring et du J2EE en générale, ou comment faire des site web avec un QI minimum de 254.. non, je n'aime pas le java, je déteste le java ! Pour moi la programmation ne doit pas être fait par et pour des élites, mais pour tout le monde.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Personellement, je n'ai jamais aimé java. Les multiples mise à jours qu'ils nécessite et sa lourdeur dans beaucoup de domaine m'ont toujours parus des contraintes.
Même s'il est bien documenté et beneficie d'une communauté active, principalement du à de nombreuses SSII qui en ont fait leur langage et ne veulent changer, cela fait quelques temps deja que j'annonce à mes collegues que pour moi c'est un langage mort. J'ajouterai que ces SSII ne reflechissent pas aux besoins reels du client: "Un appel d'offre? on va leur proposer du java". Vu et constater egalement pour des produit de production censé etre reactif. Verdict? un cata complete niveau perf, et e ne parle pas de la realisation...
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.
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.
"La connaissance appartient à tout le monde" (Film Antitrust)
Tout le nécessaire pour Python:
*News/Accueil *Cours/tutoriels *FAQ *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels
Heu, hé bien justement, java est surement le langage le plus accessible qui permets le plus de choses.
Pour moi, c'est le C++ qui est un langage réservé à l'élite tant il est complexe à manier. Il offre souvent de très bonnes solutions. Mais trop complexe selon moi.
A contrario, le Java est exactement ce que tu décris, un langage accessible à tout le monde. Tellement que l'on voit de tout parmi les devs Java.
Si tu trouves Java compliqué, je ne sais pas ce qu'il te faut... je vois dans ta signature que tu connais jQuery... bah pour ma part, j'ai plus de mal avec jQuery que Java. Mais je connais la cause: je manque de bases en Javascript. Donc je ne m'en étonne pas plus que ca.
Maintenant, si tu as les bases du langage java et que tu prends le temps de lire des tuto, struts c'est finger in the nose. Ya genre trois concepts de base à comprendre et roule ma poule.
Je connais même des devs qui ne comprennent pas le fonctionnement de Struts mais qui sont tout à fait capable de pondre une appli struts... Ils reprennent toujours la même recette sans se poser de questions inutiles.
Bref, java est facilement accessible au masses parce que contrairement au C++ il ne s'occupe pas de ces horreurs que représente la gestion de la mémoire (là encore, je ne juge pas la valeur intrinsèque du langage, juste sa facilité d'utilisation ).
Parce que beaucoup de gens trouve toujours pleins de choses a redire. Mais mes experiences personnelle et professionnelles, m'ont bien demontré que quand on connait ces deux langages, on sait s'adapater à tous les situations (et j'en ai rencontrés un certains nombres).
Maintenant, à chacun son avis. Mais je pense que si le C est toujours autant enseigné, que java est en declin dans beaucoup d'ecole et d'université au profit de Python, ce n'est pas pour rien.
"La connaissance appartient à tout le monde" (Film Antitrust)
Tout le nécessaire pour Python:
*News/Accueil *Cours/tutoriels *FAQ *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager