Avant ça je pensais que j'avais un bon PC...
Version imprimable
Avant ça je pensais que j'avais un bon PC...
c'est surtout très loin du sujet du débat, donc si on pouvait rester dessus.
Je ne faisais qu'illustrer ton 2 procs sinon rien...
Bref je pense avoir eu les réponses que je souhaitais.
Je vais m'y mettre dès que j'aurais fini de maîtriser MVC3...
++
Laurent
Ben aucun, je lis, C# vs Java, pas C++ vs Java... Je ne connais pas C++ mais en C# on trouve pas mal de similitudes avec Java donc, savoir s'il est possible de complètement décolérer une appli d'une base et de quelle façon dans les deux me parait être dans le sujet...
Java est sous licence GNU.
C# est propriétaire Microsoft.
Je me fais l'écho de Richard Stallman, et encourage tout développeur censé à se spécialiser en Java plutôt qu'en C# (http://www.fsf.org/news/dont-depend-on-mono).
En tant que dév, le simple fait de devoir faire tourner mes applications sur une plateforme dont je ne maîtrise rien du développement et qui se contrefout de mes problèmes a tendance à me donner de l'urticaire (oui, je bosse sur des technos serveur et j'ai besoin de maîtriser au maximum l'OS (bien sur, mes serveurs tournent tous sous Linux)). Si C# devient (dans le futur) le langage haut niveau le plus présent, et que Microsoft décide d'obliger l'utilisation de plateforme Windows pour le faire tourner, je vais perdre facilement 30% de perf...
Donc, Java !!!!!
Déjà au niveau licence ce que tu dis est faux. Mais soit, après la récente acquisition de java par oracle, ce que ce dernier s'est empressé de faire a fait comprendre à tout le monde (sauf toi? :aie:) que l'aspect open source de java ne garantissait rien du tout. Oracle a ses droits sur java, il l'a fait douloureusement comprendre.
Sache aussi que microsoft a donné des garanties pour mono, pour le reste de ton post, je ne veux pas trop m'attarder dessus car c'est du bullshit windows vs linux de niveau scolaire.
L'open JDK est en licence GPL. Pour être "java", il faut passer le java compatibility kit, qui nécessite un accord de licence stipulant, notamment, que la jvm ne tournera pas sur des périphériques mobile ou embarqués. C'est un embroglio dû, en partie, à certains brevets que tu est supposé devoir violer pour être compatible et pour lequels feu sun, maintenant oracle, a payé des oryalties pour pouvoir exempter toute implémentation de la jvm.
Java n'est donc pas encore entièrement libre, il suffit de suivre les prises de bec entre le projet Harmony et Oracle pour s'en rendre compte.
Il n'est pas libre du tout.
Une implémentation du JDK est libre, ainsi que gcj, et c'est tout.
Le langage est propriété d'Oracle. Dire qu'un langage est libre n'a aucun sens à vrai dire. Seules des implémentations de ces compilo, lib, interpréteurs, VM, etc peuvent être libres.
Un langage va ensuite soit appartenir à quelqu'un, soit être sous la soupe d'un comité de standardisation, international pour certains.
Certes, Java est de plus en plus opté dans plusieurs domaine pour plusieurs raisons mais le C# a l'aussi sont publique ;)
C'est clair !!
Tu as déjà vu quelque chose de libre chez Sun ? Euh, oui ! Et chez Oracle ? Euh, non ! :aie:
Ces 2 langages ont de l'avenir, j'ai récemment cherché du travail (C++), et j'ai remarqué qu'il y avait beaucoup d'offres Java/J2EE mais aussi pas mal en C# (il parait qu'il y a une pénurie).
Plus important que le langage (syntaxe/grammaire) c'est la librairie qui est importante.
Les libraires .Net sont clairement un avantage quand on veut faire une application windows, en particulier une application graphique. Celles de Java sont avantagées dés qu'on cherche a être multiplateforme (malgré tout mon respect a Mono).
Coté versions des langages/librairies, je trouve autant de défaut à la rapidité des évolutions .Net qu'a la lenteur des évolutions de Java. J'ai a peine le temps de monter en compétence dans une version de .Net que la suivante arrive, remettant pas mal de choses en cause. Quand a Java, ca me donne de plus en plus l'impression d'un patchwork hétérogène de packages, chacun ayant sa logique propre.
Au temps pour moi.
Je vais pas supprimer mon message en ce sens que vos réponses sont intéressantes, même si j'aurais vraiment du tourner 7 fois ma langue dans ma bouche avant de parler (et vérifier mieux ce que je pensais vrai).
Non moi, je peux mesurer au nombre d'appel d'offres que la segmentation est plutôt sur l'utilisation ou pas d'open source. Aujourd'hui j'aurai tendance à dire que .Net est très demandé dans le dev commando ou de proximité, et Java reste très orienté serveur. Cependant, difficile de faire une stat. Mais ce que je vois c'est que ces deux technologies sont souvent mutuellement exclusive. C'est l'un ou l'autre; les seules transitions sont des migrations.
Disons que .Net a pour lui une productivité supposée supérieure dans certains domaines (IHM principalement) et de séduire certains décideurs par le côté closed source, suivi par un éditeur.
Dans les arguments pro .Net on me dit souvent :
- Plateforme homogène
- IDE performant
- Productivité
- Développement client simple
Dans les arguments pro .Java on me dit souvent :
- Maturité technologique
- Portabilité
- Technologie orientée serveur
Je crois que le clivage entre les deux vient bien souvent de la perception de l'open source des décideurs.
Il est clair que dans le cas d'un client full-microsoft (windows, AD, exchange, sharepoint, SQL server), c'est presque dommage de venir avec du java même si ce dernier ferait parfaitement l'affaire. Question d'homogénéité technologique aussi.
De l'autre côté, il m'est arrivé de voir des clients exiger du java pour les mêmes raisons, serveurs majoritairement linux, BDD oracle etc...
En fait, je me demande même si c'est vraiment le choix du développeur. En revanche décider d'acquérir des compétences approfondies sur l'un ou l'autre de ces langages est clairement coûteux. Cela fait 3-4 ans que je n'ai plus fait de .Net, c'est clair que c'est comme vélo mais lorsqu'on s'y remet après une absence, on pédale nettement moins vite.
Sans être exclusif, maîtriser en profondeur .Net et java avec toute la connaissance de l'écosystème que ça implique, je pense que c'est dur. Il y a des gens ici qui sont experts des 2 technos?
Possible.
En dehors du fait que je ne comprends pas ce que tu entends pas "dev de proximité" (pour commando, j'ai une idée), je ne vois pas bein en quoi .net serait moins orienté serveur que java : dit autrement,on ne voit pas en quoi la relative faiblesse supposée de java (sous toutes réserves : n'ayant pas utilisé de java depuis près de 10 ans, je ne m'hasarderais pas à émettre une opinion la dessus) sur les applis "stations de travail" lui donnerait un avantage en terme de techno serveur.Citation:
Aujourd'hui j'aurai tendance à dire que .Net est très demandé dans le dev commando ou de proximité, et Java reste très orienté serveur.
Assez d'accord, même si de facto, dans beaucoup de boite, on a des applis dans les deux technos qui échangent des infos entre elles.Citation:
Cependant, difficile de faire une stat. Mais ce que je vois c'est que ces deux technologies sont souvent mutuellement exclusive. C'est l'un ou l'autre; les seules transitions sont des migrations.
Il n'existe pas d'open source en .net ? ah bon.Citation:
Disons que .Net a pour lui une productivité supposée supérieure dans certains domaines (IHM principalement) et de séduire certains décideurs par le côté closed source, suivi par un éditeur.
Les IDE java ne sont pas performant ? (c'est une question, encore une fois je n'ai pas touché aux technos java depuis des éternités, même en archi, et bien sur encore moins en dev.)Citation:
Dans les arguments pro .Net on me dit souvent :
- Plateforme homogène
- IDE performant
- Productivité
- Développement client simple
Pour la portabilité c'est une évidence. Pour les deux autres points, on peut penser qu'au bout de 9 ans .Net a atteint une certaine maturité technologique; quant à la techno orientée serveur, encore une fois, là je ne vois pas trop en quoi .Net est inférieur sur ce point. (mais ma méconnaissance des technos java fait que j'ai peut être raté quelque chose).Citation:
Dans les arguments pro .Java on me dit souvent :
- Maturité technologique
- Portabilité
- Technologie orientée serveur
Possible.Citation:
Je crois que le clivage entre les deux vient bien souvent de la perception de l'open source des décideurs.
Ils le sont incontestablement, surtout si tu regardes intelliJ. Cependant en .Net il y a un seul IDE de référence, des libs et frameworks de référence (asp.net, winforms, wcf) et tout ceci est fortement intégré avec designer visuel, binding, débuggage sur serveur ou terminal mobile etc... et tout ça en 3 clics sans que le développeur ne bidouille des descripteurs XML ou quoi que ce soit.
Par ailleurs tous les composants tiers commerciaux (telerik, devexpress) s'intègrent 100% dans VS.net. Le revers de la médaille, c'est le manque de diversité mais dans l'autre sens, on obtient une grande homogénéité.
Ca existe évidemment, mais à une moins grande échelle qu'en Java. A titre d'exemple tu peux trouver des solutions java de BI et de reporting complètes entièrement à base de composants open source, du serveur d'application jusqu'au rapport papier en passant par l'ETL.
Pour moi java a un bien plus grand écosystème de librairies open source que .Net, il suffit de voir ce que proposent des acteurs tels que apache. A titre d'exemple, plusieurs des produits cités précédemment sont des portages java -> .net.
J'entends par là une solution légére type client / serveur avec des liaisons de données à faire dans un délai très court. Sur ce type de dev .Net est très prisé dans mon secteur.
Je ne parle pas de l'ecosystéme mais de Microsoft et du principe de produit. Heureusement qu'il existe de l'open source en .NET; mais sortie de la fabrique, les composants et librairies Microsoft sont suffisantes pour produire une application sans recourir à des libs externes, quelle que soit la licence.
Les IDE Java sont bons, juste que VS 2010 est vraiment bon et propose une bonne standardisation. Tout le monde aura les mêmes méthodes. Pour certains décideurs, c'est un avantage. Maintenant je trouve Eclipse et NetBeans très bons. Ce n'est pas mon jugement de la qualité, mais sur l'environnement de développement le fait que Microsoft se pose en tant qu'éditeur de sa techno et propose une solution en standard très fonctionnelle pour la gestion du code, des sources et du build (VS + TFS). Je ne pense pas nécessairement à une comparaison meilleur ou moins bon, mais plutôt à une perception de l'offre qui est plus rationnelle en .Net.
Le fait d'avoir des conteneurs de référence, des normes, d'être multiplateforme...Mine de rien en .NET avant 2008 (donc il y a juste 3 ans) pour WCF et 2011 pour avoir un Orm (en dehors de solutions libres ou commerciales) labelisé microsoft fonctionnel; la gestion des caches distribués, le messaging, le workflow qui a 2/3 ans; il y a beaucoup de choses qui manquent encore d'expérience et de maturité. Ceux qui se sont cassés les pognes avec les serialisations WCF savent de quoi je parle.
Je ne critique pas WCF; loin de là; il y a de bonnes idées, mais on reste quand même loin de la facilité d'EJB3 (et sans parler de persistence). Après je suis aussi mauvaise langue : comme EJB3 a une spec, on pourrait probablement implémenter un NBoss avec ENB3.:D
Ok, mais tu ne réponds pas sur sa supposée faiblesse comme serveur.
Donc, un point qui serait plutôt positif a priori mais que tu décrits comme négatif dans ton précédent post supra.Citation:
Je ne parle pas de l'ecosystéme mais de Microsoft et du principe de produit. Heureusement qu'il existe de l'open source en .NET; mais sortie de la fabrique, les composants et librairies Microsoft sont suffisantes pour produire une application sans recourir à des libs externes, quelle que soit la licence.
J'ai une fois de plus beaucoup de mal à te suivre : tu argumentes dans le sens inverse de ta conclusion.Citation:
mais plutôt à une perception de l'offre qui est plus rationnelle en Java qu'en .Net.
Comme mentionné dans ma réponse supra, l'aspect multiplateforme est certainement le point fort de java; personne ne contredit ce point.Citation:
Le fait d'avoir des conteneurs de référence, des normes, d'être multiplateforme...
Non, WCF c'est la FX 3.0, donc aout 2006; workflow idem (et parfaitement utilisable).Citation:
Mine de rien en .NET avant 2008 (donc il y a juste 3 ans) pour WCF
Il y avait Linq2Sql depuis 2008 mais en effet il est difficile de la qualifier de fonctionnel. En revanche, ton propos est tout à fait contradictoire sur au moins un point : il faut que l'orm soit labellisé Microsoft, alors que du libre sur Java te semble acceptable; c'est un peu contradictoire.Citation:
et 2011 pour avoir un Orm (en dehors de solutions libres ou commerciales) labelisé microsoft fonctionnel;
Non, 5; et j'ai déployé un assez gros projet tout à fait opérationnel avec cette première version - au même moment, la FNAC ne pouvait pas en dire autant, mais ils avaient un CP un peu "jeune".Citation:
le workflow qui a 2/3 ans;
Ne connaissant rien à ces termes java, je n’émettrais pas d'opinion la dessus. Cela ne change rien au fait que ton argumentation est tout de même un peu confuse.Citation:
Je ne critique pas WCF; loin de là; il y a de bonnes idées, mais on reste quand même loin de la facilité d'EJB3 (et sans parler de persistence). Après je suis aussi mauvaise langue : comme EJB3 a une spec, on pourrait probablement implémenter un NBoss avec ENB3.:D
J'ai plutôt l'impression que tu cherches pas vraiment à comprendre. Donc restons-en la.:ccool:
Je ne donnais pas mon avis, mais un retour de éléments que l'on m'oppose dans mon métier aujourd'hui. Après je peux ou ils peuvent avoir tort pour toi. C'est aussi le concept des avis.
Je ne cherche pas a argumenter pro/anti c#/java.
Quant a WF parfaitement fonctionnel à sa sortie, j'ai supposé que c'était une litote, autant que WinFx. Je suppose qu'après comment, où et la charge d'usage peuvent aussi influer sur l'avis.
Si je ne faisais que ce que j'aime, je ferai tous mes dev en Scala, mon scripting en ruby et je ne ferai pas d'IHM.:P
Pour ceux que ça intéresse, sachez que l'application de contrôle du serveur de diffusion au cinéma (projecteur numérique 3D, système Dolby) est écrit en Java. L'interface est plutôt jolie, on ne dirait pas du Swing ou autre bibliothèque d'UI au premier abord et le tout est fiable (au prix où le matériel coûte, il y a intérêt).
Évidemment, on parle d'une application métier pesant plusieurs centaines de Mo reparties dans de très nombreux .JAR.
Je sais que ma contribution n'apporte que peu d'eau au moulin, mais c'est histoire de prouver (s'il y a encore lieu d'être) que Java peut être utilisé pour des applications professionnelles fiables et d'en donner un exemple tout à fait concret.
Même avec swing tu peux faire des applications très jolie, il te suffit d'utiliser un look and feel de qualité comme celui-ci (commercial qui fonctionne avec swingx).
http://www.jyloo.com/synthetica/screenshots/
Ou encore pour rester dans le gratuit
http://www.jtattoo.net/ScreenShots.html
Donc même si les lAF par défaut de la JRE ont un look dégueulasse (c'est mon opinion, même nimbus est bof avec tous ses dégradés et le contraste moisi de ses widgets) tu peux sortir un truc agréable si tu t'en donnes la peine.
Cependant, si tu te concentres sur l'API swing, même en utilisant un excellent designer visuel comme celui d'instantiations, tu y passeras probablement plus de temps que sous winforms pour sortir une UI complexe.
Je pense que tout le monde est d'accord sur le fait que les 2 technos sont tout à fait enterprise-ready.Citation:
Je sais que ma contribution n'apporte que peu d'eau au moulin, mais c'est histoire de prouver (s'il y a encore lieu d'être) que Java peut être utilisé pour des applications professionnelles fiables et d'en donner un exemple tout à fait concret.
Petite question d'un Bac +2 avec deux ans d'expérience...
Actuellement au chômage et avec une possibilité de formation, je souhaiterais avoir votre avis sur le langage à choisir ; le plus porteur d'emploie (en fonction de mon expérience et de mon niveau d'études).
Je pose cette question car je ne peux avoir une formation que sur un des deux, et j'avoue ne pas vraiment savoir vers quoi me tourner.
Merci d'avance pour vos réponse.
Cordialement Koban.
Tu pourrais choisir le C#, aujourd'hui il est de plus en plus connu, il permet de autant de choses que Java, est (pour la plupart des classes) portables (Mono) sous Linux et Mac. Surtout dernièrement Java perd un peu d'intérêt.
Mais la question la plus importante c'est quand même : pour qui tu développe ? Pour un client Microsoft (et dans ce cas fonce sur C# !!) ou pour M. Tout OS (dans ce cas tu pourrais prendre Java pour sa portabilité naturelle ou utiliser C# et t'adapter (facile) à Mono), c'est au choix. Mais dans la portabilité je te conseille quand même Java, c'est "fait" pour ça alors que pour C#, Mono commence à mûrir mais pas encore au point d'en faire un .NET complètement portable.
Apprendre les principes et syntaxes des deux ne coûtent pas grand chose et permet de suivre une discussion concernant l'un ou l'autre.
Pour le reste seule l'apprentissage sur le tas et fonction de l'environnement dans lequel tu tombes, seront vraiment formateur. Chaque boîte/service/équipe a sa façon d'utiliser une technologie ; mais c'est peut-être plus homogène en .Net.
Bref, quand on cherche du boulot, il faut surtout être polyvalent et curieux :)
Je n'ai aucune expérience en C# mais 10 ans de C, notamment de Microsoft derrière moi et 10 ans de Java.
J'ai une question pour les développeurs C#, comment se passent les mises à jour, de plateforme, de composants, d'outils?
Je dis ça parce que j'ai un souvenir épouvantable de mon expérience C Microsoft de devoir retravailler en profondeur tout le code a chaque nouvelle version d'un "petit quelque chose" changeant trop souvent presque tout. En Java, même si on a du essuyer des débuts un peu catastrophiques, même si la "portabilité" reste limitée aux réalités des implémentations (dont le comportement peut être différent tout en étant compliant), c'est quand même une réalité. On peut sereinement envisager de faire évoluer une plateforme et profiter de ces évolutions sans devoir réécrire la moitié de son projet et surtout des composants sur lesquels tu as capitalisé.
Sur ce point, ça se passe au moins aussi bien que java, et même peut être mieux si on considère que tout le monde utilise les implémentations de référence. En ce sens, ce n'est pas comme dans java ou différents serveurs d'applications avaient toujours un petit truc à leur sauce. Même si depuis 1.5, ça c'est calmé.