Il y a une incohérence dans ta phrase : un verbe au présent. Quand ce sera du concret, j'enlèverai ce manque, mais pas avant.
Java 1.5 est disponible en version beta, tu peux tester. La plupart des concepts derrière l'implémentation actuelle datent de gj, une extension de Java qui a au moins 5 ou 6 ans et qui est une technologie très éprouvée. C'est du concret.
final et non-virtual c'est pas la même chose. Ah, ça y ressemble de loin, dans le détail non.
Et si tu ne vois pas le rapport avec les pré/post conditions vérifiées dans une interface, ton commentaire suivant sur « comprendre la conception objet » est assez comique.
Oui, oui, bien sûr. Donne un exemple et on va voir. Si ton seul argument est que C++ perd le type d'un objet passé par valeur, nous sommes d'accord, il y a bien une différence entre non virtual et final, mais si tu arrives à défendre ça en terme de conception objet, je te tire mon chapeau.
Non des foncteurs de C++. Mais là j'ai dit que je n'étais pas sûr de l'absence d'équivalent. Si tu en vois...
Classes anonymes et interface. Tu connais bien Java, ça fait peur. Tu n'a pas pratiqué depuis la version 1.1 ?
Oui en faisant un destructeur (c'est le terme générique) que l'on est obligé d'appeler manuellement avant de supprimer la dernière référence. Super propre.
T'as tout compris, ça se sent. C'est clair que quand on supprime la dernière référence en Java, on a la super classe et on connaît bien le langage. Aller, je suis de bonne humeur (faut dire que tu es très drole), je t'explique. Si un objet accapare une ressource unique qui doit être relachée à un moment ou à un autre, tu peux utiliser le destructeur de l'objet en C++ pour lui faire relacher cette ressource : c'est un idiome de programmation C++ qui vaut ce qu'il vaut. Il est totalement incompatible avec la notion même de GC dans laquelle on ne sait jamais quand on objet va être détruit (ce qui est bien plus efficace en terme de gestion de la mémoire, d'ailleurs). En Java et en général dans les langages avec GC, tu ne peux pas utiliser cet idiome, donc tu programmes proprement avec un autre idiome. Par exemple, tu fabriques un objet qui prend comme paramètre du code à faire tourner (implémenter par une classe anonyme), qui récupère la ressource, exécute le code, puis relache la ressource.
De toute manière, si tu as vraiment besoin d'utiliser des ressources uniques critiques, en général tu as vraiment intérêt à faire du J2EE car le serveur d'application gère ces ressources à ta place de façon très efficace. Mais j'oubliais que Java ne sert qu'à faire du web, idiot que je suis.
[^] # Re: Des utilisateurs heureux de Java
Posté par boubou . En réponse à la dépêche IBM demande à Sun de "libérer" Java. Évalué à 2.
Java 1.5 est disponible en version beta, tu peux tester. La plupart des concepts derrière l'implémentation actuelle datent de gj, une extension de Java qui a au moins 5 ou 6 ans et qui est une technologie très éprouvée. C'est du concret.
final et non-virtual c'est pas la même chose. Ah, ça y ressemble de loin, dans le détail non.
Et si tu ne vois pas le rapport avec les pré/post conditions vérifiées dans une interface, ton commentaire suivant sur « comprendre la conception objet » est assez comique.
Oui, oui, bien sûr. Donne un exemple et on va voir. Si ton seul argument est que C++ perd le type d'un objet passé par valeur, nous sommes d'accord, il y a bien une différence entre non virtual et final, mais si tu arrives à défendre ça en terme de conception objet, je te tire mon chapeau.
Non des foncteurs de C++. Mais là j'ai dit que je n'étais pas sûr de l'absence d'équivalent. Si tu en vois...
Classes anonymes et interface. Tu connais bien Java, ça fait peur. Tu n'a pas pratiqué depuis la version 1.1 ?
Oui en faisant un destructeur (c'est le terme générique) que l'on est obligé d'appeler manuellement avant de supprimer la dernière référence. Super propre.
T'as tout compris, ça se sent. C'est clair que quand on supprime la dernière référence en Java, on a la super classe et on connaît bien le langage. Aller, je suis de bonne humeur (faut dire que tu es très drole), je t'explique. Si un objet accapare une ressource unique qui doit être relachée à un moment ou à un autre, tu peux utiliser le destructeur de l'objet en C++ pour lui faire relacher cette ressource : c'est un idiome de programmation C++ qui vaut ce qu'il vaut. Il est totalement incompatible avec la notion même de GC dans laquelle on ne sait jamais quand on objet va être détruit (ce qui est bien plus efficace en terme de gestion de la mémoire, d'ailleurs). En Java et en général dans les langages avec GC, tu ne peux pas utiliser cet idiome, donc tu programmes proprement avec un autre idiome. Par exemple, tu fabriques un objet qui prend comme paramètre du code à faire tourner (implémenter par une classe anonyme), qui récupère la ressource, exécute le code, puis relache la ressource.
De toute manière, si tu as vraiment besoin d'utiliser des ressources uniques critiques, en général tu as vraiment intérêt à faire du J2EE car le serveur d'application gère ces ressources à ta place de façon très efficace. Mais j'oubliais que Java ne sert qu'à faire du web, idiot que je suis.