programmation java
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

programmation java



  1. #1
    edouarddd

    programmation java


    ------

    Bonjour, j'aimerais apprendre la programmation avec comme objectif créer un petit jeu (pour donner un but à l'apprentissage) j'ai fait en prépa de l'informatique (élémentaire) en python et du sage ainsi que du scilab à la fac. Mais j'ai cru comprendre que ces langages ne sont pas très adaptés à la programmation de jeux? J'aimerais savoir pourquoi java l'est plus avant de me plonger dans son apprentissage, est mieux? Car un ami ma montré vite fait le fonctionnement qui est incroyablement plus compliqué que les langages dont j'ai l'habitude! Merci de vos réponses

    -----

  2. #2
    CM63

    Re : programmation java

    Bonjour,

    Ben oui mais à un moment il faut bien passer aux choses sérieuses (comme dirait Kirl Douglas dans "règlement de compte à OK Coral") . C'est bien d'avoir travaillé avec Python dans un premier temps, cela permet de faire des prototypes rapides et de comprendre la programmation par classes, mais ensuite, pour passer à la vitesse supérieure, Java me paraît un bon choix, tu peux y aller, beaucoup de moteurs de jeux sont programmés en Java, ou en tout cas admettent ce langage pour la programmation de ton appli. Bon courage.

  3. #3
    edouarddd

    Re : programmation java

    Oui je me disais bien qu'il devait y avoir des raisons, mais j'aurais aimé comprendre ces raisons car apprendre quelque chose de plus compliqué sans savoir pourquoi c'est moins motivant ^^

  4. #4
    pm42

    Re : programmation java

    Citation Envoyé par edouarddd Voir le message
    Oui je me disais bien qu'il devait y avoir des raisons, mais j'aurais aimé comprendre ces raisons car apprendre quelque chose de plus compliqué sans savoir pourquoi c'est moins motivant ^^
    Tout dépend de ce que tu veux faire. Python est un langage généraliste, sur certains points concurrent direct de Java.
    Il est plus facile d'abord, aussi puissant mais moins rapide (pour faire simple).
    Chacun a des domaines où il est le langage préféré.

    Après, quand on veut faire un jeu, cela dépend de savoir si on parle de Minecraft ou de Forza Horizon : les besoins graphiques et de vitesse ne sont pas les mêmes.
    Dans certains cas, Java sera adapté (Minecraft) dans d'autres, il restera lent.

    On peut aussi coder dans plusieurs langages : une partie en C ou C++ pour la perf pure, le reste dans un langage plus récent pour la facilité de programmation et la portabilité par ex.

  5. A voir en vidéo sur Futura
  6. #5
    CM63

    Re : programmation java

    Citation Envoyé par edouarddd Voir le message
    Oui je me disais bien qu'il devait y avoir des raisons, mais j'aurais aimé comprendre ces raisons car apprendre quelque chose de plus compliqué sans savoir pourquoi c'est moins motivant ^^
    Je suppose que tu parles des raisons de passer de Python à Java (ou plus généralement de passer d'un langage de scrypt simple comme Python ou Ruy à un langage compilé comme c++ ou Java).

    Avantage de Python : simple à utiliser, on développe rapidement
    Inconvénient : il y a des erreurs qu'on ne verra que lors de l’exécution, et quelques fois plusieurs mois après le déploiement de l'application, il faudra qu'un utilisateur passe par le cas d'utilisation pour qu'on le voit, bref ce n'est pas très sérieux, pas robuste

    Avantage d'un langage évolué, compilé comme Java : il y a des contrôles de types d'arguments, beaucoup des erreurs vont être détectées dès la compilation
    Inconvénient: plus difficile à utiliser, plus rigoureux

    Je n'ai fait que citer quelques points mais en gros Python c'est "rapide mais pas très sérieux", bien pour le prototypage, Java (ou C++) c'est "plus difficile mais plus sérieux, robuste".

  7. #6
    pm42

    Re : programmation java

    Citation Envoyé par CM63 Voir le message
    Je n'ai fait que citer quelques points mais en gros Python c'est "rapide mais pas très sérieux", bien pour le prototypage, Java (ou C++) c'est "plus difficile mais plus sérieux, robuste".
    Vu que Dropbox, Spotify et plein d'autres utilisent massivement Python en production, cet argument ne tient pas la route. Voir par ex : https://www.quora.com/What-is-the-mo...tten-in-Python

  8. #7
    Logoosse

    Re : programmation java

    Tout dépend de ce que tu veux faire.
    Tout à fait d'accord. Faudra développer un peu plus si tu veux être aiguillé sur les technologies à utiliser.

    On peut aussi coder dans plusieurs langages : une partie en C ou C++ pour la perf pure, le reste dans un langage plus récent pour la facilité de programmation et la portabilité par ex.
    Pas d'accord quand c'est dit de cette façon. Actuellement java et C# peuvent fournir des architectures aussi performantes que C++, l'optimisation étant un peu plus "galère" à un certain point. Mais pour un débutant et un développeur lambda, il sera plus facile de développer un programme performant dans des langages tel que C# et Java ( ce qui était faux 5 ou 10 ans en arrière).

    Maintenant pour ton jeu, il faut que tu définisses les différent module, on parle souvent de C++ pour le jeu vidéo car il y a une masse de librairies ( type opengl) t'évitant de refaire ton propre moteur graphique et physique (ils existent également en java je te rassure, mais souvent pompés sur ceux de C++ ou alors directement un accès au dll de ces dites librairies en C++)

    Je pense que ton ami t'a parlé de java dans le cadre de jeux 2D car il existe quelques bonnes librairies te permettant la création d'un jeu 2D et essentiellement du moteur graphique dans ce langage et souvent utiliser dans les universités pour les raisons que j'ai cité ci-dessus ( du type Slick2D mais je dois me faire un peu vieux maintenant).

    Maintenant, parlons du choix de la technologie dans un projet. Il faut prendre en compte bien des facteurs :
    - L'architecture de ton application ( ex: client/serveur, web, etc).
    -L'intégration.
    - Les modules nécessaires et disponibles (réinventer la roue ça coûte cher )
    -La maintenance.
    -Les connaissances de ton équipe ( car la formation ça prend du temps et de l'argent ).

    Dans le cadre d'un jeu vidéo tu peux te dire que tu as à minima besoin de deux gros module :
    -Moteur graphique.
    -Moteur physique.

    Qui sont très complexes à réécrire soit même car cela demande plusieurs connaissance pousser en Mathématiques, et en complexité algorithmique, en génie logiciel pour avoir une bonne architecture.

    Donc tu peux commencer par java pour un petit jeux dans un premier temps, tu peux aussi utiliser des outils existants comme Unity pour te faciliter la vie.

    Voilà j'espère t'avoir éclairé sur la façon de faire le choix des technologies.
    Dernière modification par Logoosse ; 07/05/2017 à 14h14.

  9. #8
    pm42

    Re : programmation java

    Citation Envoyé par Logoosse Voir le message
    Pas d'accord quand c'est dit de cette façon. Actuellement java et C# peuvent fournir des architectures aussi performantes que C++, l'optimisation étant un peu plus "galère" à un certain point.
    Pour un jeu, donc quelque chose dont la réactivité est importante, le simple fait d'utiliser un garbage-collector susceptible d'arrêter le programme, ce n'est pas le cas.
    De même, la programmation haute performance aujourd'hui fait un usage important des GPU qui ne se code pas vraiment en Java et C#.

    L'affirmation sur la perf équivalente s'applique bien pour de l'informatique plus généraliste ou de gestion par contre.


    Citation Envoyé par Logoosse Voir le message
    il sera plus facile de développer un programme performant dans des langages tel que C# et Java ( ce qui était faux 5 ou 10 ans en arrière).
    Hotspot, le compilateur Just-in-Time de Java date de 1998... On faisait déjà des programmes performants dans ce langage il a presque 20 ans. J'ai même du en faire quelques uns et les vendre...

  10. #9
    Logoosse

    Re : programmation java

    Citation Envoyé par pm42 Voir le message
    Pour un jeu, donc quelque chose dont la réactivité est importante, le simple fait d'utiliser un garbage-collector susceptible d'arrêter le programme, ce n'est pas le cas.
    De même, la programmation haute performance aujourd'hui fait un usage important des GPU qui ne se code pas vraiment en Java et C#.

    L'affirmation sur la perf équivalente s'applique bien pour de l'informatique plus généraliste ou de gestion par contre.
    Je suis d'accord et pas d'accord en même temps. Pour avoir fait des simulateurs multi-agent (avec des contraintes de Temps réel) en java, le garbage collector actuellement avec la nouvelle architecture ne pose plus de problème et la manipulation de GPU non plus. La où je suis plus ou moins d'accord et je m'auto cite du coup c'est que ça demande plus de connaissances que de gérer la mémoire directement comme en cpp.
    l'optimisation étant un peu plus "galère" à un certain point.
    Je parlais de 5 a 10 ans avec l'arrivé d'une nouvelle architecture il y a quelques années dans la compilation et l’exécution java et l'arrivé de C# et son développement qui a poussé JAVA à faire des modifications importantes.

    Et le fait que c'était vrai il y a plusieurs années, a pour conséquence que beaucoup de ressources ( moteur graphique, architecture d’exécution, moteur physique) ont été longtemps développé en C++ et du coup plus de ressources disponibles pour ce type d'application dans ce langage.

    Après je cherche pas à défendre Java à tout prix, c'est juste que j'entend beaucoup trop souvent que C++ est beaucoup plus performant que Java, c'est simplement (de mon point de vue) le C++ permet des manipulation beaucoup plus intuitives de bas niveau. Mais au vue des nouvelles architecture (oui il faut savoir modifier sa JVM et d'autres module en fonction de son application) l'argument de C++ c'est plus performant est devenu obsolète.

  11. #10
    Logoosse

    Re : programmation java

    Je rajoute une précision. Je cherche absolument pas à dire que l'un des langage est meilleur que l'autre. Mais a développé justement dans quel cas il est plus intéressant d'utiliser l'un plutôt que l'autre et les questions à se poser pour choisir correctement les technologies. Je suis ni un détracteur d'un de ces langages ni le fervent défenseur de l'autre.

    En résumé, l'informatique (le génie logiciel dans ce cas) d'un point de vue industriel, c'est concevoir une application le plus rapidement possible répondant à des besoins et des contraintes spécifique, dans un minimum de temps avec le minimum de ressources (parfois spécifiques). Le choix d'un langage ce base là dessus.

    Dans le cas d'un jeu vidéo, si tu comptes utiliser un moteur 3D et un moteur physique dans un espace continue alors oui le C++ sera plus intéressant et te fournira des modules performant beaucoup plus nombreux et optimaux. TU peux très bien le faire en java, j'ai bien fait un simulateur de drones 3D en temps réels avec "Java", mais ça te demanderas des bases et des connaissances en génie logiciel plus costaud.

    Si ton but est de faire un jeu discret en 2D du type snake, pacman (ou même un rpg tour par tour), alors java (je pense du point de vue de quelqu'un qui ne pratique ni l'un ni l'autre de ces langages actuellement) te donnera des outils beaucoup plus simple à manipuler.
    Dernière modification par Logoosse ; 07/05/2017 à 16h07.

  12. #11
    pm42

    Re : programmation java

    Citation Envoyé par Logoosse Voir le message
    Je suis d'accord et pas d'accord en même temps. Pour avoir fait des simulateurs multi-agent (avec des contraintes de Temps réel) en java, le garbage collector actuellement avec la nouvelle architecture
    C'est quoi la nouvelle architecture arrivée il y a 5 à 10 ans ? Si je regarde ici, https://en.wikipedia.org/wiki/Java_p...e_improvements, je vois des améliorations régulières mais pas de gros changement depuis Hotspot.
    Pour le garbage collector, G1 est chouette mais il ne résoud pas tout.


    Citation Envoyé par Logoosse Voir le message
    Après je cherche pas à défendre Java à tout prix, c'est juste que j'entend beaucoup trop souvent que C++ est beaucoup plus performant que Java, c'est simplement (de mon point de vue) le C++ permet des manipulation beaucoup plus intuitives de bas niveau. Mais au vue des nouvelles architecture (oui il faut savoir modifier sa JVM et d'autres module en fonction de son application) l'argument de C++ c'est plus performant est devenu obsolète.
    Perso, j'évite de développer en C++ à tout prix ou presque mais aujourd'hui, C++ reste en tête des benchmarks (sans doute avec Fortran et C naturellement).
    Suivant les cas, la différence est plus ou moins grande. On trouve même des cas où Java est plus rapide mais là aussi, c'était déjà le cas il y a 15 ans et plus.

    http://unriskinsight.blogspot.fr/201...nd-wolves.html
    https://blog.famzah.net/2010/07/01/c.../#comment-4084

  13. #12
    Logoosse

    Re : programmation java

    Citation Envoyé par pm42 Voir le message
    C'est quoi la nouvelle architecture arrivée il y a 5 à 10 ans ? Si je regarde ici, https://en.wikipedia.org/wiki/Java_p...e_improvements, je vois des améliorations régulières mais pas de gros changement depuis Hotspot.
    Pour le garbage collector, G1 est chouette mais il ne résoud pas tout.




    Perso, j'évite de développer en C++ à tout prix ou presque mais aujourd'hui, C++ reste en tête des benchmarks (sans doute avec Fortran et C naturellement).
    J'évite aussi mais pas trop le choix quand on commence à toucher au traitement d'image et au pattern recognition. (merci OpenCv).

    Pour les améliorations majeures (tu peux le voir comme subjectif, je pourrais le développer de façon objective mais j'ai pas trop le temps en ce moment d'expliquer point par point et leur impacte sur la performance à l'execution ) j'essais de rester le plus global possible donc je ne prendrai pas en compte les améliorations qui sont liées à JEE.

    source (https://en.wikipedia.org/wiki/Java_version_history) (pas la meilleur, j'ai la flemme de parcourir toute la doc d'oracle aujourd'hui, mais je ferai des recherches plus complète si des gens veulent plus d'informations)
    JSE6 :
    -arrivée des lamda functions.
    -JVM improvements include: synchronization and compiler performance optimizations, new algorithms and upgrades to existing garbage collection algorithms, and application start-up performance. (ça très important)
    -Improved performance of Java2D graphics primitives on Windows, using Direct3D and hardware acceleration.

    JSE7 :
    -généralisation de ça :Compressed 64-bit pointers
    - surtout ça : Lambda (Java's implementation of lambda functions), Jigsaw (Java's implementation of modules) ça peut être du pain bénie pour beaucoup.

    JSE8 :
    -JSR 335, JEP 126: c'est l'arrivée des lambdas expression ( je trouves ça vraiment important)
    -Et la fin de la génération permanente
    -JSR 308, JEP 104: Annotation on Java Types annotation de compilation sur les type ( sur le reste ça exsite depuis java SE6 donc 2004) ça peut sauver une vie des fois

    Et on peut parler de JSE 9 qui est pas encore en stable release qui finira la mise en place complète de la modularisation de la JVM avec Jigsaw.

  14. #13
    pm42

    Re : programmation java

    Citation Envoyé par Logoosse Voir le message
    JSE6 :
    -arrivée des lamda functions.
    C'est bien d'éviter les erreurs grossières quand tu cites. Les Lambda ne sont arrivées qu'avec la 8 et ce n'est pas dans le lien que tu indiques toi même.
    Et la plupart de ce que tu cites ne se rapporte pas aux performances...

  15. #14
    Logoosse

    Re : programmation java

    Citation Envoyé par pm42 Voir le message
    C'est bien d'éviter les erreurs grossières quand tu cites. Les Lambda ne sont arrivées qu'avec la 8 et ce n'est pas dans le lien que tu indiques toi même.
    Et la plupart de ce que tu cites ne se rapporte pas aux performances...
    Autant pour moi grossière erreur de relecture j'avais commencer avec la 8 puis au final je suis parti dans le sens inverse ce qui me paraissait plus cohérent et pour une deuxième erreur la deuxième ligne de la JSE 7 ce doit d'être dans la 8 ( j'ai quelques soucis de relectures et ça se verra dans pas mal de mes messages).

    Par contre je te demanderai de me citer quelles fonctionnalités n'est pas questions de performances d'après ton avis dans ceux que j'ai cité.

  16. #15
    Logoosse

    Re : programmation java

    A la limite je propose de créer un autre sujet sur les performances des différents langages car en continuant cette discussion ici nous sortons du sujet initial ce qui pourrait polluer la compréhension du sujet par l'auteur.

  17. #16
    pm42

    Re : programmation java

    Citation Envoyé par Logoosse Voir le message
    A la limite je propose de créer un autre sujet sur les performances des différents langages car en continuant cette discussion ici nous sortons du sujet initial ce qui pourrait polluer la compréhension du sujet par l'auteur.
    En même temps, on verra si il revient. Et on a échangé entre 2 "vieux cons" ou "experts" suivant la vision des choses
    Perso, j'arrête là...

    A+

  18. #17
    CM63

    Re : programmation java

    Citation Envoyé par pm42 Voir le message
    Vu que Dropbox, Spotify et plein d'autres utilisent massivement Python en production, cet argument ne tient pas la route. Voir par ex : https://www.quora.com/What-is-the-mo...tten-in-Python
    Je parle de l'usage de Python en tant que débutant.

  19. #18
    pm42

    Re : programmation java

    Citation Envoyé par CM63 Voir le message
    Je parle de l'usage de Python en tant que débutant.
    Je n'avais pas compris :

    Citation Envoyé par CM63 Voir le message
    Je n'ai fait que citer quelques points mais en gros Python c'est "rapide mais pas très sérieux", bien pour le prototypage, Java (ou C++) c'est "plus difficile mais plus sérieux, robuste".
    La robustesse étant rarement un problème de débutant.

  20. #19
    CM63

    Re : programmation java

    C'est ça. Le passage à un langage comme Java lui permettra de faire des logiciels robustes, alors que ce n'est pas en premier plan avec Python.

Discussions similaires

  1. Programmation Java...Help!
    Par Loss44 dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 03/12/2015, 19h11
  2. Programmation Java
    Par flolarajasse dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 03/10/2012, 11h33
  3. Java programmation
    Par invite56460777 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/04/2005, 21h17
  4. Programmation en Java
    Par invited2e9dd9d dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 14/04/2005, 18h37
  5. programmation java
    Par invite49182f81 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 24/04/2003, 21h24