CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Choix] C# ou Java

Pseudo supprimé
Pseudo supprimé 27 avril 2010 à 23:11:39

Salut à tous.

Je sais que il y a pas mal de débats là dessus, cependant j'hésite énormément entre apprendre le Java et le C#.

Je connais déjà le C++ que j'utilise pour le développement de jeux et je voudrais apprendre Java ou C# en deuxième langage pour le "développement rapide" (Petites applications sans se prendre la tête par exemple).

Je veux ne pas apprendre le langage pour rien donc il faut que sa pérennité soit assurée et de préférence, un des langages les plus populaire (Doc, sources disponibles, assistance de la communauté, ...).

Me dirigeant vers des études d'informatiques, je voudrais si possible, choisir le langage le plus adapté.

J'ai déjà des notions dans les deux et ils ont chacun des avantages, voila pourquoi j'hésite.

Déjà Visual Studio est vraiment très bien je trouve (La conception de Forms est vraiment simplifiée au maximum) ce qui me fait pencher pour le C#.

Enfin bref, je voudrais votre avis sur la question...

C'est vraiment dur de devoir choisir parce que c'est renoncer aux avantages de l'autre :-(

Merci d'avance.

Pseudo supprimé
Pseudo supprimé 27 avril 2010 à 23:14:53

Ah et j'ajoute que le développement sera sous Windows et pour Windows (En gros la portabilité du C# suffit amplement).

dnob700
dnob700
Niveau 10
27 avril 2010 à 23:29:20

Alors prend C#. L'intérêt du Java est qu'il est mieux supporté pour l'instant sur les autres plateformes. Mais l'écosystème .NET est plus riche : il y a plus de langage vers lesquels il sera facile de migrer plus tard si tu as envie car ils partagent le même framework (il y en a plusieurs sur la JVM aussi maintenant mais pas autant), le runtime est bien meilleurs, avec plus de fonctionnalité et plus de performance. Et, en effet, l'intégration avec Visual Studio est si bonne que c'est en soi un argument.

Pseudo supprimé
Pseudo supprimé 27 avril 2010 à 23:34:34

Merci de ta réponse.

C'est vrai que développer sous Visual Studio, c'est top.
En fait j'hésite avec le Java parce qu'il est plus pratiqué, plus prisé, plus enseigné (De ce que j'en ai vu, mais à grande échelle, c'est peut-être faux), il est polyvalent (Développement sur système embarqués c'est quand même un argument de poids). Je trouve aussi Java plus élégant.

J'ai aussi les livres de Delannoy sur le Java donc l'apprentissage aurait été assez simple.

Dans tous les cas, je serai déçu d'avoir mis de côté l'autre langage :-(

D'autres avis ?

Pseudo supprimé
Pseudo supprimé 27 avril 2010 à 23:42:13

Simple test sur ce forum:

134 topics contiennent "Java" et 24 seulement contiennent C#...

Pensez-vous que Java va finir par perdre du terrain au profit du C# ou que celui-ci va continuer à être devant le second ?

godrik
godrik
Niveau 30
28 avril 2010 à 04:17:44

De ce que j'ai pu voir de java et C#, la difference entre les deux langages est clairement existante, mais si tu fias du C++ et l'un d'entre eux, passer a l'autre devrait etre relativement facile.

saleGauss
saleGauss
Niveau 9
28 avril 2010 à 10:12:16

Je vais te donner l'autre point de vue, par rapport à ce que t'as dit Dnob.

Bon avant tout, saches que j'adore aussi Visual Studio pour développer sous Windows, et que pour moi, rien ne le vaut en confort d'utilisation.

Cependant, tu souhaites, tu l'as dis, t'orienter dans des etudes d'informatique.
Saches que (je sais, c'est bete), les facs ont l'habitude de boycotter Microsoft. Donc je comptes pas faire du C# dans ta fac. Ou alors, ca sera en fin de formation, pour un besoin très spécial. Mais la probabilité est quasi nulle.
Quand tu auras des cours de programmation orientée objet (en L2 ou L3 suivant les facs), ils prendront très probablement soit Java, soit C++, soit Ada.
Dans ma fac, ils ont fait le choix Java, et je suis à peu près d'accord avec ce choix.
Ils voulaient de la portabilité, que le langage soit bien documenté, qu'il réponde à plusieurs types de besoin (embarqué, classique...), etc...
Et Java repondait plutot bien à ces critères.

Après, cela dit, si tu connais le C++, ce que j'aurais vraiment envie de te dire c'est "Arrête là les langages Objet. Va apprendre un vrai beau langage. Je parle bien sur des langages fonctionnels. Ocaml ou Haskell t'apprendra bien plus que Java et C# réunis si tu connais deja le C++".
Mais si je disais ça, je m'éloignerais de ta question de depart...

_skip
_skip
Niveau 10
28 avril 2010 à 10:36:58
  1. saleGauss Voir le profil de saleGauss
  2. Posté le 28 avril 2010 à 10:12:16 Avertir un administrateur
  3. Cependant, tu souhaites, tu l'as dis, t'orienter dans des etudes d'informatique.

Saches que (je sais, c'est bete), les facs ont l'habitude de boycotter Microsoft. Donc je comptes pas faire du C# dans ta fac. Ou alors, ca sera en fin de formation, pour un besoin très spécial. Mais la probabilité est quasi nulle.

:d) C'est le cas en France?
Ici on voit plutôt les technos microsoft prendre de la place, msdnAA + contrats oblige.

  1. JvJ Voir le profil de JvJ
  2. Posté le 27 avril 2010 à 23:11:39 Avertir un administrateur
  3. Je sais que il y a pas mal de débats là dessus, cependant j'hésite énormément entre apprendre le Java et le C#.

:d) Dans les 2 cas tu peux pas te tromper.

Je connais déjà le C++ que j'utilise pour le développement de jeux et je voudrais apprendre Java ou C# en deuxième langage pour le "développement rapide" (Petites applications sans se prendre la tête par exemple).

:d) Mouais, dans ce cas j'ai presque envie de te conseiller de te tourner vers du python. C# et java sont mieux adaptés à mon expérience pour les gros développements orientés BDD et service. Ca veut pas dire qu'on peut pas faire des choses plus petites avec, mais l'écart de productivité entre un C++ avec Qt n'est pas énorme pour une petite appli desktop.

Je veux ne pas apprendre le langage pour rien donc il faut que sa pérennité soit assurée et de préférence, un des langages les plus populaire (Doc, sources disponibles, assistance de la communauté, ...).

:d) Les 2 technos ont une bonne communauté, mais java a plus de ressource open-source question libs et tout ça. Bien que de nombreuses librairies java populaires bénéficient de portages 1:1 vers .Net.

Par contre, .Net est des kilomètres devant Java niveau langage à mon sens.

Pseudo supprimé
Pseudo supprimé 28 avril 2010 à 11:48:09

Merci pour vos avis, c'est exactement ce que j'attendais.

Pour ce qui est de OCaml ça ne m'intéresse pas, je n'en vois pas l'utilité dans mon cas.

Pour python bof, les langages interprétés je préfère éviter.

Ce qui me rebute en Java, c'est les interfaces graphiques. On les fait majoritairement par code non ? Je sais qu'eclipse possède un éditeur "WYSIWYG" mais est-il performant ?

Je pense que de toute façon en apprenant l'un des deux, l'apprentissage de l'autre sera plus simple (Mais de ce que je vois pas tant que ça, les différences entre les deux langages sont assez importantes...).

Et pour ce qui est de DotNet, je connais parce que j'ai fait du VB.Net auparavant et c'est vrai que c'est très complet.

Mais la choix est dur parce que la communauté Java m'attire énormément, je préfère le langage en lui même mais le C# m'attire parce que l'intégration avec Windows est parfaite (J'apprécie le fait d'avoir un fichier .exe en sortie déjà), DotNet est très complet et très simple...

:-(

_skip
_skip
Niveau 10
28 avril 2010 à 12:09:10

Netbeans a un assez bon éditeur swing pour java mais ça reste au-dessous de ce que fait visual studio avec les winforms. Sinon pour faire des interfaces graphiques de qualité en Java tu as des outils tiers comme windowbuilder ou jformDesigner qui sont payants mais efficaces.

Pour faire des applis desktop, je prendrai .Net sans hésiter car Swing est une techno java franchement à la rue, le modèle d'évènement est moisi au possible, le databinding n'est pas supporté nativement, les contrôles complexes comme les grid triables et tout ça nécessitent une plomberie pas possible.

En gros, java pour le desktop se fait même botter le cul par mono dans le monde linux, ce n'est pas pour rien.

Pseudo supprimé
Pseudo supprimé 28 avril 2010 à 12:22:48

Ouais, je crois que je vais me tourner vers C# parce que c'est vraiment une question de temps minimum que je recherche en premier. Avec C# je peux faire mes applications Desktop facilement et rapidement et C++ pour les jeux et applications plus robustes.

Merci beaucoup pour vos avis très constructifs et qui m'ont vraiment aidé.

Je ferai sans doute plus tard un peu de Java quand j'aurai du temps libre :-)

godrik
godrik
Niveau 30
28 avril 2010 à 15:50:45

_skip, j'ai cru comprendre que pour les applis desktop en java les gens preferait utiliser swt (le truc d'eclipse si j'ai bien compris) qui est bien mieux que swing.

Apres, je dis ca, mais je n'y ai jamais touche.

JvJ, ne neglige pas un langage parcequ'il est interprete. 80% du code d'une application n'est execute qu'une seule fois.

JvJ, les gens (salegauss me semble t'il) te parlait de caml parceque c'est un langage qui est vraiment different des autres. Meme si tu ne l'utilises jamais dans un contexte de developpement, son apprentissage reste pertinent "pour la culture".

Pseudo supprimé
Pseudo supprimé 28 avril 2010 à 16:39:22

godrik :d) Mon but ici est de faire des applications rapidement, sans se prendre la tête avec pleins de librairies et que cette application puisse (on ne sait jamais) être commercialisée (Je n'y pense absolument pas pour le moment mais sait-on jamais).

Le code de langages interprétés étant visible et modifiable très facilement, cela ne m'intéresse pas ici.
D'autant qu'il faille installer l'interpréteur Python sur toutes les machines cibles (Tu vas me dire qu'avec le C# il faut le framework .Net installé mais c'est moins contraignant et plus courant pour les néophytes qui risqueraient d'utiliser mes application).

Ensuite pour Caml, je pense m'y intéresser (Comme à l'assembleur, BrainFuck et autres) dans un but de culture mais pas comme outils pour développer tous les jours.

Pour ce qui est des langages interprétés, je les utilises (Je développe de temps en temps en PHP CLI) j'ai d'ailleurs des notions en python. Mais encore une fois, ça ne convient pas à ce que je veux faire avec C# ou Java.

J'ai déjà touché aussi à l'éditeur d'eclipse et il est vraiment pas mal mais il faut l'avouer, quand même légèrement en dessous de celui de Visual Studio.

Encore merci pour ton avis :-)

saleGauss
saleGauss
Niveau 9
28 avril 2010 à 23:46:14

Je comprend parfaitement ton désir d'apprendre C# ou Java, ce sont tous les deux des langages qui peuvent répondre à tes attentes.

Quand je parlais de Ocaml ou d'Haskell, c'était vraiment "pour voir autre chose". Car à mon sens, si tu connais C++, tu connais aussi Java et C# sans le savoir. En moins d'une semaine, tu seras opérationnel sur l'un de ces deux "nouveaux" langages, qui je pense (et ce n'est que mon avis), ne changeront pas vraiment ta manière de faire des "petite applications".
Bien sur, en une semaine tu ne connaitras pas par coeur leur lib standard, mais tu auras compris les idées véhiculées par ce langage, et quelle démarche adapter pour utiliser ces langages de manière élégante (si tant que les les langages objets soient élégants...)

Je comprend parfaitement que les langages qui sortent un peu du rang soient au départ considérés comme une bizarrerie. J'ai moi même eu ce sentiment pendant quelques semaines lorsque j'ai rencontré pour la première fois Ocaml.
Depuis maintenant bien 4 ans, la majorité de mes applications sont écrites en Ocaml (le reste étant en C ou occasionnellement en Java).
Que ce soit pour faire du prototypage rapide, pour résoudre un problème en se concentrant sur ton problème et pas sur des détails d'implémentations futiles, ou même pour des applications nécessitant de bonnes performances, Ocaml ne m'a jamais décu.
Au passage, comme tu n'aimes pas l'interprété, saches que le code Ocaml peut être soit interprété, soit compilé.

Bref, je suis désolé, j'ai fais une longue digression alors que tu souhaite choisir entre Java et C#.
Mais c'était juste pour sincèrement te conseiller un jour d'aller voir dans un registre completement différent. Ne serait-ce que pour avoir essayé.
Et qui sait, tu accrocheras peut-être.

Concernant ton choix de C#, tu va avoir le plaisir d'utiliser la platerforme .NET qui est très agréable, et tu produiras ton code avec un IDE au poil.

Un dernier mot concernant Java : tu as dis je crois à un moment que "Java et C++ sont assez différents".
Je serais tenté de te dire "non, pas du tout en fait."
Les deux sont identiques, hormis les coté obscures de C++ qui n'existent pas dans Java, ou qui sont justement moins obscures.
Il n'y a pas d'héritage multiple de classes en Java par exemple. (mais d'interfaces, oui).
Java a aussi la particularité d'homogénéiser la manière de représenter les objets et de les passer en paramètre : en Java : tout ce qui n'est pas un type primitif est :
- toujours manipulé par pointeur
- toujours passé par recopie

Les deux ensembles nous donnent bien sur qu'un objet recu en parametre est une copie d'un pointeur.
Cette manipulation "uniforme" des choses rend la programmation plus claire.
Contrairement à C++ ou bien souvent du code "dans un esprit C" cohabite, mélangeant ainsi pointeur et référence, passé par valeur, passé par pointeur, par const pointer, ou par référence.
En un mot, et pourtant, j'ai aimé le C++ à une époque : Java, c'est du C++ dans le fond, mais dans la forme, sa syntaxe n'a pas été écrite par un autiste. (désolé monsieur Stroustrup, mais le C++ est décidément trop moche)

_skip
_skip
Niveau 10
29 avril 2010 à 09:18:02
  1. godrik Voir le profil de godrik
  2. Posté le 28 avril 2010 à 15:50:45 Avertir un administrateur
  3. _skip, j'ai cru comprendre que pour les applis desktop en java les gens preferait utiliser swt (le truc d'eclipse si j'ai bien compris) qui est bien mieux que swing.

:d) Plus performant surtout je dirai parce que ça repose plus sur du code natif. Mais ça a des inconvénients comme le fait que tu dois fournir une librairie platform-dependant et que tu dois faire certaines opérations de destruction d'objet qui sont pas communes en java.
Par ailleurs, si tu veux faire du boulot sérieux avec SWT/Jface, tu dois acheter windowbuilder car sinon c'est au notepad que tu la fais ton interface graphique.
En fait c'est un peu le problème, la communauté java accepte mal SWT, résultat l'évolution et le support par des outils open source est donc au point mort.
Les évolutions Swing prévue par java7 sont maigres et font vraiment gadget donc ça va rester merdique encore longtemps.

Mono avec gtk# a fait quelque chose de 500 fois mieux en juste deux ans. Il faudrait vraiment que SUN recommence tout avec une nouvelle API qui supporte l'accélération matérielle plutôt que de continuer d'empiler sur ses vieilles casseroles.

J'espère qu'Oracle sera moins nul que SUN sur l'aspect framework.

@saleGauss
Moi je trouve que ce qui est moche en C++ c'est surtout les concessions qui ont été faites pour le rendre source-compatible avec le C.
Pour ce qui est des problèmes de pointeurs etc... au passage des fonctions, les smarts pointers aident pas mal tout comme les objets copy-on-write style ceux de Qt.

Au hasard, as-tu jeté un oeil à D?

Pseudo supprimé
Pseudo supprimé 29 avril 2010 à 12:21:47

Merci de ta réponse salegauss. Tu as totalement compris où je voulais en venir :-)

Je suis maintenant sûr de mon choix, ça fait du bien :content:

godrik
godrik
Niveau 30
29 avril 2010 à 15:54:38

_skip, merci de ces details sur SWT.

dnob700
dnob700
Niveau 10
30 avril 2010 à 00:14:25

"Le code de langages interprétés étant visible et modifiable très facilement, cela ne m'intéresse pas ici. D'autant qu'il faille installer l'interpréteur Python sur toutes les machines cibles"

Comme tu le dit il faut le framework .NET pour C#. S'agissant du code, le fait que tu as un fichier .exe en sorte est un leur. Ce n'est pas plus un fichier .exe qu'un fichier .jar, c'est vraiment du bytecode (comme java) qui va être compilé à la volé lors de l'exécution et qui est très facilement visible (même si tu as des outils pour le masquer un peu)

"Ensuite pour Caml, je pense m'y intéresser (Comme à l'assembleur, BrainFuck et autres) dans un but de culture mais pas comme outils pour développer tous les jours."

Là par contre, je suis obligé de m'élever. Vouloir voir du Caml pour la culture OK, mais tu ne peux pas le comparer au BrainFuck (et pas trop à l'assembleur), ce langage (BF) n'en est pas un, c'est juste une blague (ce qui n'empêche pas de regarder dedans, mais on ne peut même pas appeler ça de la culture). Tandis que Caml est un véritable langage (d'ailleurs il y a F# dans visual studio 2010 qui est très très proche de caml) dont les spécificité font qu'il est très bien adapté au développement de "tout les jours". Seulement, il oblige à penser un peu différement, et tout ce qui est différent fait peur, attise la haine, etc. et fait que les gens regarde généralement de haut ce langage "de chercheur", mais ils ont tort : on finira par Conquérir Le Monde™.

Pseudo supprimé
Pseudo supprimé 30 avril 2010 à 00:49:03

Je n'ai JAMAIS fait la comparaison, j'ai juste cité les langages que je voulais apprendre (vite fait ou non) uniquement pour me cultiver et non pas comme langage de développement de tous les jours.

Et le framework est bien plus courant que l'interpréteur python... De toute façon dans la perspective que j'en ai, ces langages me servent à faire des petits script utiles mais pas des applications destinées à être distribuées. Mais ça c'est l'utilisation que j'en ai MOI.

D'ailleurs je redoutais qu'un message comme le tiens arrive. Ce n'est pas parce qu'on cite des éléments que ceux-ci sont liés. Le BF, j'ai survolé vite fait la page wikipédia, mais j'ai réellement envie de réussir à en sortir quelques petits essais.

Pour ce qui est de l'exe DotNet je sais très bien qu'on peut le retrouver mais c'est toujours moins simple et moins éditable que le python. (Puis si on va dans ce sens là, on peut même modifier n'importe quel exe avec un éditeur hexadecimal).

Pseudo supprimé
Pseudo supprimé 30 avril 2010 à 00:50:22
  • Pour ce qui est de l'exe DotNet je sais très bien qu'on peut retrouver le code
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment