Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bien utiliser Java

Quelques conseils pour ne pas se prendre la tête

28 juin 2013 à 20:26:21

Arceus02 a écrit:

C'était effectivement mon opinion avant (celle que tu as cité) mais maintenant j'ai pris conscience que Java est un langage qui permet tout, même des gros jeux grâce aux nombreux arguments apportés au débat.


C'est très bien, au mois tu a appris quelque chose, en fait, nous avons tous appris quelque chose :)

Mais je vais de dire un secret, moi aussi j'ai déjà pensé à quitter java, et j'y pense encore, j'ai pensé à m'introduire dans le monde du python, qui est facile et efficace! :D
Beaucoup de bon logiciels on été faits en python, je cite par exemple, Cinema4D, un logiciel de création 3D qui est lui-même une VRAIE machine à gaz ! mais bon... je me dis que je ne devrais pas vraiment pas vraiment abandonner un travail déjà commencé... je suis trop avancé en java pour abandonner.

Pour l'instant, je pense à un gros projet en java qui pourrait être assez énorme: un Éditeur de texte.
Cet éditeur de texte sera muni de multiples fonctions, qui ne sont peux même pas accessibles dans d'autres, comme le décryptage/cryptage et plein d'autres fonctionnalités je l'appellerais <b>"String Utilities"</b>, le seul problème c'est que je me retrouve encore une fois solitaire et seule pour un travail énorme :( je ne suis pas là pour recruter... mais bon, si tu est intéressé à me suivre dans ce projet, n'hésite pas à me contacter :)

-
Edité par Yasouna 28 juin 2013 à 21:13:57

  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2013 à 21:45:08

Cinema4D ca m'étonnerai que ce soit fait en python , je pense plutot que c'est du C/C++ avec utilisation de python en langage de scripting
  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2013 à 22:14:26

+1 gng02, comme beaucoup de logiciels finalement j'ai l'impression.

  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2013 à 5:38:52

gng02 a écrit:

Cinema4D ca m'étonnerai que ce soit fait en python , je pense plutot que c'est du C/C++ avec utilisation de python en langage de scripting

Tous les soft qui ont un rapport de près ou de loin à du multimédia c'est sur le GPU, que ça soit du jeu vidéo, comme l'a dit Gwen, du traitement d'image ou de vidéo, c'est tout sur le GPU donc java ou c++ pour le back-end, ca revient au même.

  • Partager sur Facebook
  • Partager sur Twitter
3 août 2013 à 16:29:13

angelsafrania a écrit:

Ce qu'il faudrait c'est faire un Swing qui puisse s'adapter au web et au mobile. Un framework qui soit utilisable sur toutes les plateformes (vu que c'est un des principes de bases de Java). Ce qui sera le plus complexe dans ce genre d'aventure c'est de consilier l'aspect client/serveur et lourd (pour les requête les évènements ou autre) même si avec du javascript c'est faisable (il suffi de regarder GWT). Donc quelque chose qui serait semblable à GWT et à Android et à Swing (GWT s'inspirant fortement de Swing à ce que j'ai compris).
Si ce défit et réalisé alors on pourra codé pour toutes les plateforme en une fois (un vieux rêve), au détail de la compilation (GWT est compilé pour donné au Byte code et du Javascript). 

Cela s'appelait JavaFX et c'est mort avant l'arrivé. Donc je ne vois pas Oracle se risquer encore la dedans. De toute façon, il est trop tard maintenant, les cartes ont été distribuées et c'est google qui a raflé la mise.

  • Partager sur Facebook
  • Partager sur Twitter
29 août 2013 à 21:45:35 - Message modéré pour le motif suivant : Et moi j'en ai une plus grosse, et je le fais en 36'...


29 août 2013 à 21:55:59 - Message modéré pour le motif suivant : $$ ££ €€... \o/


31 août 2013 à 23:29:45

Vous avez fait beaucoup de JNI ici ? Je ne crois pas que JNI soit fait pour avoir de meilleures performances (combien coute l'appel d'une méthode native ?), mais plutôt pour avoir des accès à des librairies qui n'existe pas en Java et surtout ceux touchent au matériel.


@shakkal

"pas de RAII" : Comment avoir du RAII en Java ? Les objets sont des pointeurs implicites et le langage est Garbage Collector... Sinon oui pour les fermetures de flux il y a le try-with-ressources.

"ni de surcharge d'opérateur" : La classe String en bénéficie déjà, et si les classes BigDecimal et BigInteger en bénéficiaient ça aurait été bien (mais ce n'est pas le cas). Sinon je n'en vois pas trop l'utilité. C'est un truc qui peut facilement être employé à mauvais escient.

J'ai lu plus haut qu'il n'y avait "pas de compilation" en Java (après création du bytecode), c'est peut-être moi qui ait mal compris, mais en faite Java compile en natif si besoin certaines méthodes.

Le gros problème en Java c'est la liaison avec le matériel, tu veux une connexion RS232 ? Tu vas utiliser la librairie RXTX (pas super d'après ce que j'ai lu), toujours mieux que Javacomm. Tu veux jouer du son ? Tu vas utiliser les librairies du packages sun (que j'ai testé et pas aimé) ou un truc externe, problème de compatibilité avec le format, et certains fichiers. Aussi on perd en portabilité avec les versions par plateforme.

artragis a écrit:

Tu trouves? En quoi ajouter vingt mots clefs redondant et assez longs augmente-t-il la lisibilité face aux getteurs/setteurs de C#par exemple? Au contraire, c'est bien plus immédiat à voir en C# qu'en Java.

Pourquoi C# revient toujours avec ses get/set ? Tu as quasiment la même verbosité en Java qu'en C#. Le get/set c'est du pipi de chat.

Il y a des trucs plus intéressants dont on pourrait parler, par exemple :

  • yield qui permet de faire des économies de mémoire lorsqu'on veut afficher une liste une seule fois (récemment introduit en PHP).
  • C# 5 qui offre une nouvelle syntaxe await/sync pour les méthodes asynchrones.
  • dynamic qui permet de ne pas préciser le type (un peu comme Python ?), truc que je n'adhère pas car peut être utilisé à mauvais escient.

Des choses utiles ou au contraire. Quelle est la richesse des enum en C# par rapport à Java ? Enfin bon on n'est pas trop dans le forum de débat non plus.



  • Partager sur Facebook
  • Partager sur Twitter
Site : https://gokan-ekinci.appspot.com | Miagiste en recherche d'emploi | Profil [Dév. Java SE & EE | Dév. QlikView]
Anonyme
1 septembre 2013 à 7:35:45

Vous avez fait beaucoup de JNI ici ? Je ne crois pas que JNI soit fait pour avoir de meilleures performances (combien coute l'appel d'une méthode native ?), mais plutôt pour avoir des accès à des librairies qui n'existe pas en Java et surtout ceux touchent au matériel.

Les appels JNI ne sont pas (trop) lourds tant qu'on se contente de passer un pointeur et les param vers le natif, et les types prévus en retour vers le java, ça devient lourds dès qu'on manipules des objets entre les 2 parties.

Rien n'empêche de faire un call JNI pour lancer un thread en natif.

"pas de RAII" : Comment avoir du RAII en Java ? Les objets sont des pointeurs implicites et le langage est Garbage Collector... Sinon oui pour les fermetures de flux il y a le try-with-ressources.

En gérant le cycle de vie avec un contexte réduit (de méthode dans ce cas), tout comme le fait le try avec auto closable.

"ni de surcharge d'opérateur" : La classe String en bénéficie déjà, et si les classes BigDecimal et BigInteger en bénéficiaient ça aurait été bien (mais ce n'est pas le cas). Sinon je n'en vois pas trop l'utilité. C'est un truc qui peut facilement être employé à mauvais escient.

Manipule des vecteurs, des matrices, des points à longueur de journée et tu verras l'intérêt.

Sinon pour les get/set y a une lib qui règle ça en les remplaçant par des annotations mais je l'ai pas encore testée.

-
Edité par Anonyme 1 septembre 2013 à 7:37:15

  • Partager sur Facebook
  • Partager sur Twitter
1 septembre 2013 à 8:53:54

>Pourquoi C# revient toujours avec ses get/set ? Tu as quasiment la même verbosité en Java qu'en C#. Le get/set c'est du pipi de chat.

Je l'ai dit, ce n'était qu'un exemple. Mais sauf à avoir Java1.8 tu n'as par exemple pas les closures, ce qui signifie que tu es obligé de passer par une classe anonyme assez verbeuse à écrire si tu veux juste faire un filtre à la volée. Les delegate de C# évitent cela. Il y a pas mal d'autres exemple mais le get/set c'est juste accessible aussi bien au gars qui est un vétéran du code qu'au débutant donc c'est l'exemple qui est le plus facilement pris.

  • Partager sur Facebook
  • Partager sur Twitter
1 septembre 2013 à 10:23:10

shakhal a écrit:

"pas de RAII" : Comment avoir du RAII en Java ? Les objets sont des pointeurs implicites et le langage est Garbage Collector... Sinon oui pour les fermetures de flux il y a le try-with-ressources.

En gérant le cycle de vie avec un contexte réduit (de méthode dans ce cas), tout comme le fait le try avec auto closable.

Je ne crois pas que RAII soit compatible avec Java. Déjà comment l'introduire sachant que tout objet se comporte comme un pointeur ? Ce serait un retour en arrière que d'introduire le mot-clé delete (ou une méthode System.gc(Object o)), cette instruction serait alors utilisée manuellement pour supprimer les ressources qui ne sont pas référencées par un autre objet (donc tester au préalable si un autre objet ne pointe pas dessus à partir de la liste du heap)...

Donc faire appel à un System.gc(Object o) pour une seule ressource. Et rien ne dit qu'après avoir effectué une recherche dans la liste du heap, ton objet sera supprimé.

Donc gain de mémoire mais perte de vitesse apporté par le Garbage Collector sur certains passages.

En C++ c'est plus brutal, tu utilises delete ton objet, et bien on s'en fou si tu as d'autres pointeurs qui utilisent la même ressource. Si c'était comme en C++, on se retrouverait à débugger des tonnes de NullPointerException sur les gros projets en Java.

  • Partager sur Facebook
  • Partager sur Twitter
Site : https://gokan-ekinci.appspot.com | Miagiste en recherche d'emploi | Profil [Dév. Java SE & EE | Dév. QlikView]
19 octobre 2013 à 23:10:54 - Message modéré pour le motif suivant : Aucun lien fils unique...


Anonyme
19 octobre 2013 à 23:32:05

Gugelhupf a écrit:

shakhal a écrit:

"pas de RAII" : Comment avoir du RAII en Java ? Les objets sont des pointeurs implicites et le langage est Garbage Collector... Sinon oui pour les fermetures de flux il y a le try-with-ressources.

En gérant le cycle de vie avec un contexte réduit (de méthode dans ce cas), tout comme le fait le try avec auto closable.

Je ne crois pas que RAII soit compatible avec Java. Déjà comment l'introduire sachant que tout objet se comporte comme un pointeur ? Ce serait un retour en arrière que d'introduire le mot-clé delete (ou une méthode System.gc(Object o)), cette instruction serait alors utilisée manuellement pour supprimer les ressources qui ne sont pas référencées par un autre objet (donc tester au préalable si un autre objet ne pointe pas dessus à partir de la liste du heap)...

Donc faire appel à un System.gc(Object o) pour une seule ressource. Et rien ne dit qu'après avoir effectué une recherche dans la liste du heap, ton objet sera supprimé.

Donc gain de mémoire mais perte de vitesse apporté par le Garbage Collector sur certains passages.

En C++ c'est plus brutal, tu utilises delete ton objet, et bien on s'en fou si tu as d'autres pointeurs qui utilisent la même ressource. Si c'était comme en C++, on se retrouverait à débugger des tonnes de NullPointerException sur les gros projets en Java.


Tiens, j'avais zappé ce post...

ben tout simplement en partant sur le même principe que try with resource, mais sans sa lourdeur, et non delete n'est pas un retour en arrière, de nombreux objets doivent être nettoyés ou fermé manuellement: flux, fichiers, connexions...

le gc tu le sentiras pas vu qu'on est en contexte méthode et donc cycle de vie court, donc pas de risque que ça dépasse l'eden space.

et enfin, pas de NPE vu que les objets ne sortent pas de la méthode, si tu le return, alors son scope est étendu et close n'est pas appelé.

et pour Omarsamuz, c'est la réponse D.

  • Partager sur Facebook
  • Partager sur Twitter
20 octobre 2013 à 15:56:18 - Message modéré pour le motif suivant : On ne répond pas à ce genre de demande, et ce n'est pas le sujet


24 octobre 2013 à 13:10:00 - Message modéré pour le motif suivant : Ca tombe bien on a un cours de 600 pages sur le sujet.


24 octobre 2013 à 21:15:23 - Message modéré pour le motif suivant : Le flood est strictement interdit


24 octobre 2013 à 21:18:49 - Message modéré pour le motif suivant : Le flood est strictement interdit


24 octobre 2013 à 21:21:03

je sui passionne et jaime bien le java mais c pa si facile que sa ,je compte bien sur votre aide genereuse pr maider qd bien mm jen aurais besoin? Merci davance a vs tous sur le forum java

  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2013 à 22:25:41

>Ca tombe bien on a un cours de 600 pages sur le sujet.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
25 octobre 2013 à 21:24:00

y a un concours de rassemblement de boulets entre ce topic et celui mooc html et personne m'a rien dit... je suis déçu!
  • Partager sur Facebook
  • Partager sur Twitter
7 novembre 2013 à 23:09:51

Salut,

je sui passionne et jaime bien le java mais c pa si facile que sa ,je compte bien sur votre aide genereuse pr maider qd bien mm jen aurais besoin? Merci davance a vs tous sur le forum java

Oui, on peut t'aider, mais en échange on demande un minimum d'efforts de ta part. Notamment bien lire les règles du site et essayer de les appliquer : poster une nouvelle discussion pour chaque question, avec un minimum d'efforts sur l'écriture, un titre explicite des formules de politesse, utiliser le bouton « </> » pour colorer son code.

Ça nous permet alors de t'aider bien plus facilement et rapidement, ce qui est agréable pour nous.

Bref, c'est donnant-donnant. :)

GuilOooo

  • Partager sur Facebook
  • Partager sur Twitter
J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
19 novembre 2013 à 13:31:03 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


www.basicsolutions.ma
25 novembre 2013 à 11:33:10 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


20 décembre 2013 à 18:14:31 - Message modéré pour le motif suivant : Merci de créer un sujet à part.


24 janvier 2014 à 20:20:41

salut excusé moi pour le dérangement, j'ai un petit doute. j'aimerais savoir si une application faite en java pourrais tourner sans problème sur toutes plateformes (OS pour mobile).
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
24 janvier 2014 à 21:41:42

 tukx9522 a écrit:

salut excusé moi pour le dérangement, j'ai un petit doute. j'aimerais savoir si une application faite en java pourrais tourner sans problème sur toutes plateformes (OS pour mobile).

Ha.

Ha.

 Apprenez à programmer en Java

On peut faire de nombreuses sortes de programmes avec Java :

  • des applications, sous forme de fenêtre ou de console ;
  • des applets, qui sont des programmes Java incorporés à des pages web ;
  • des applications pour appareils mobiles, avec J2ME ;
  • et bien d'autres ! J2EE, JMF, J3D pour la 3D...

Mais pitié, qu'est devenu le Site du Zéro ?

-
Edité par Anonyme 24 janvier 2014 à 21:43:06

  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2014 à 21:46:49

ok merci, je ne suis qu'un débutant en java
  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2014 à 21:52:54

SVP, pourais-je avoir des liens pour les cours  des applications pour appareils mobiles, avec J2ME ;

  • Partager sur Facebook
  • Partager sur Twitter
24 janvier 2014 à 22:11:13

ok merci, je ne suis qu'un débutant en java

Ce que te reproche le monsieur c'est de ne pas avoir lu.

>SVP, pourais-je avoir des liens pour les cours des applications pour appareils mobiles, avec J2ME ;

Il n'y en a pas sur OCR. Si tu veux vraiment en chercher google's your friend. Sinon android se base sur quelque chose très proche du java donc tu peux te diriger vers ça aussi.

  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2014 à 11:04:30

ok merci sinon que je me disait qu'une application dévéloppé pour android ne tournerais pas sur un telephone avec un OS basic
  • Partager sur Facebook
  • Partager sur Twitter