Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Microsoft et Java

295 réponses
Avatar
Wykaaa
Microsoft semble reconnaître que Java permet de développer plus
rapidement que C# et qu'il y a moins de failles de sécurité dans Java
que dans .net :
http://dsi.silicon.fr/nouveautes/microsoft-java-forever%E2%80%A6-1366

10 réponses

Avatar
Nicolas George
Aéris , dans le message <4dfe5202$0$29533$, a
écrit :
Les 2 libs t'offrent strictement la même chose.



Non. Comme plein de fois dans ce thread, tu affirmes sans savoir.
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 22:09, Nicolas George a écrit :
Non. Comme plein de fois dans ce thread, tu affirmes sans savoir.



Si, ou alors la lib est mal gaulée.

Pour moi, foo.so doit fournir exactement la même interface et les mêmes
fonctions que foo.dll. Elles les implémentent peut-être (sûrement)
différemment, mais le service rendu est strictement le même.

J'imagine assez mal comment openssl pourrait s'invoquer différement sous
Linux ou sous Windows? D'autant plus que l'upstream est le même source?
Mais c'est vrai qu'avec vos compilations conditionnelles, vous n'êtes
plus à une saloperie vraiment dégeu près.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/ll0AAoJEK8zQvxDY4P9AFEH/1z6Zd3FPa5yDelyVGt9KNFW
xbzhupHVFJUpt6yv8rlRFIcMJNfeFyvaKEYIX5tdMTrqnScQqmUmXeeRnbvj/pUt
MxgyrAWElB1X1FME2FQba1J5WQJWcbmW6w0XEmgyKjXNk/Cyd+1F2RfbClKyCa5V
HJFuJUKKSA6JY7M1S2tP4kGKarW9mHs0gU2TZX02JXNYrLXaWc6jT0+Ftjs9Zbz3
deoegWajbviu87gdkMRTH7IkDskgQZ5RqRdkHAE6HS3807VRarmunuOUdOuyJJx4
12poQx2SAnp6uC88p9pIpudcMwyknuCa22ZykMMXrhc7M4aqEC3ASlhDKYDvDo8 =bQ/J
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 21:59, Tonton Th a écrit :
Je parlais du cas où la machine cible est distante.



Ça change quoi ?
Java étant (et devant) être portable, tu peux très bien compiler sur ta
machine et transférer le jar obtenu uniquement.
Et même si l'appli embarque du natif (cas de SWT par exemple) et donc
est plate-forme dépendante, un coup de profil Maven et tu
«cross-compile» en local (en réalité tu inclus juste des jar win32 au
lieu de x86 par exemple)

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/l2JAAoJEK8zQvxDY4P9k+IIALcMIdL0E0vFOg/IdlZPBKMR
JrCT+9QU6AxSNzOcqYnwkc7EnFuP11df/e/NwT+2SNM9rDFL8W5V7OctsDnRUAs7
LZUnNeYuV0CtM4R/cmDiIB80VqVNzKDPBkzW7KMAOMgMOS5YZ1u5/lA4W2odmPDJ
fzd1x6Fgsr11xvlQ+PAb08vu/5K3GSDMdLMRSZV3e5oruz9su14e4s0Zik/J1NiS
/RVd4HnozC/iPlerH7F+jx1ra8dlk9CB2VV9wEBBYB0mtuNDKZFK43YWF+Mh8H8d
HARgeLRvzmr40p1K/saMf/oTC0FZo2qpelWlPJw3GDx2HplO77sjNW7E3yRU+7Y =2se3
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfe5979$0$27974$, a
écrit :
Si, ou alors la lib est mal gaulée.



Ce n'est pas la même, gros malin.
Avatar
Yliur
>> Non. Va jusqu'au bout de ton raisonnement. Cela implique de
>> récupérer le code d'erreur localement, puis de traiter ce
>> qu'il faut localement,
>
> En général on ne sait pas quoi faire localement.

Si, libérer les ressources utilisées dans la fonction dans
laquelle la fonction fautive a été appelée. Et il faut le faire
récursivement jusqu'à la fonction dans laquelle on peut traiter
l'erreur. Si tu ne fais pas ça, tu risques fort d'avoir des fuites de
mémoire un peu partout (voire pire).



Et donc en général en Java ça se résume à rien, parce qu'on ne libère
pas la mémoire explicitement. La plupart des fonctions n'ont pas
d'autres ressources à libérer (connexions, fichiers, ...), et donc on ne
fait quelque chose que dans ces fonctions.


>> puis de remonter l'erreur (soit avec un code
>> d'erreur, soit avec une exception et un magnifique throw)
>
> S'il n'y a pas de catch mais seulement un finally, il n'y a même pas
> besoin de propager l'exception : le code de nettoyage dans le bloc
> finally est exécuté puis l'exception est automatiquement propagée.

Impossible à faire dans le cas général.



Pourquoi ? Si l'exception doit être traitée explicitement (IOException
par exemple), c'est vrai, mais on l'emballe dans une exception propre à
l'appli qui n'est pas vérifiée par exemple, qui remontera facilement la
pile d'appels.


>> à la
>> fonction appelante, et ainsi récursivement jusqu'à un point où tu
>> peux prendre ta décision sur le traitement à apporter. Je n'ai
>> _jamais_ vu un code Java (ou C++ d'ailleurs) fonctionner comme ça.
>> Je ne dis pas que ça n'existe pas, simplement que je n'en ai
>> jamais vu. La plupart du temps, tu as un try/catch avec un gros
>> machin pas net dedans qui récupère toutes les exceptions qui
>> passent, se contrefichant éperdument de tout ce qu'il faudrait
>> récupérer correctement.
>
> En Java, la plupart du temps il n'y a rien à récupérer
> "correctement".

Ah ? Enfin, tout est dans le 'la plupart du temps'...



Et donc ? C'est juste beaucoup plus simple et ça explique pourquoi il
n'y a pas besoin de coller des traitements partout, donc de traiter
l'erreur dans toute la pile d'appels. On met juste un try/finally là où
il y a des ressources qui ont vraiment besoin d'être libérées.


> Seulement de la mémoire, mais tout ce qui a été alloué dans la
> fonction et stocké dans des variables locales n'a pas besoin d'être
> récupéré (comme dans le cas d'une fin normale de la fonction, c'est
> le collecteur de mémoire qui s'en occupe).
>
> Dans le cas où il a des choses à récupérer (fichiers, ...), en
> général il y a une exception à gérer explicitement
> (IOException, ...). Donc l'obligation de réfléchir à ce qu'il faut
> en faire (moins facile à oublier qu'un code d'erreur).

Sauf que c'est très con. Parce que ton exception peut être
récupérée tout à fait ailleurs



Comment ça ? La méthode qui fait l'appel concerné est obligée de
traiter l'exception localement ou de la laisser passer explicitement.
L'exception n'apparaît pas miraculeusement ailleurs.

et de façon totalement dégueulasse.



Tu peux définir techniquement "totalement dégueulasse" ?
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 23:07, Nicolas George a écrit :
Ce n'est pas la même, gros malin.



Alors ce n'est pas le même problème.
Et on a 2 projets à mener, un pour intégrer la lib win, l'autre la lib
linux.
Et on centralise les parties communes dans un 3ème projet générique

Avec Maven, c'est l'histoire de 30s !
C'est sûr qu'avec Make, ça va prendre un poil plus de temps?

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/myCAAoJEK8zQvxDY4P9eSgIAIFUTxm1EXu770/CJrps7E+K
3+zzW5gRIFCng8U68pZWIAxXyCDzQb3lwjK33thSHdNp0lvvKvo21Xn1hUqgrVRp
diRGX1XFKJC97eKdTqPdFaZx7PM5ZwuGYw4W26wNqEeE8MPOGeNVZfegxzBnM/GS
ruvqStKNiqkYKm2amo28/sYc++N9je8nt1PnkHuMs9sUsF3zqL0jwBZ5PotD4s9o
IC/tzaomHNK2Ye1P08g+tfH5KDbzyXH37XiimLnDoiQGZe7/pJKcoZaUUlHYhRU7
ZYqAu/VEfO5Hs0haYnrxEJtSCHvEUYwZuAc5M9peM13hzUAWY+wWV1KwctFe8tg =6oR5
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfe6c88$0$31779$, a
écrit :
Et on centralise les parties communes dans un 3ème projet générique



Trois projets, avec chacun ses déclaration, sa maintenance, etc., juste pour
simuler ce que le C fait en quatre lignes de #ifdef. C'est beau le java...
Avatar
Tonton Th
On 06/18/2011 03:22 PM, Aéris wrote:

En Java, cela ne peut pas arrivé puisque c'est une convention d'avoir un
package de la forme « dns inverse » . « projet »
Chaque namespace est donc garanti unique à travers le monde.



On fait comment quand on a pas de "dns inverse" ?

--
Je cherche un nouveau travail...
http://tboudet.free.fr/cv-thierry-boudet.pdf
http://sigfood.dinorama.fr/
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 23:53, Nicolas George a écrit :
Trois projets, avec chacun ses déclaration, sa maintenance, etc., juste pour
simuler ce que le C fait en quatre lignes de #ifdef. C'est beau le java...



Non, la maintenance est très simple et totalement gérée par Maven.
Maven permet l'héritage et l'aggrégation de projets, un peu à la mode POO.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/nRGAAoJEK8zQvxDY4P94rUH+weblI2MFEABO6PS6OmfSm5p
YgWM4LTO2/+7mh6GEDsSIruJNhRkK8dzdOE1O8SZVIEAR8tLlZfyKs+01nYgrjhe
KXxS9IULRsU70uX5aCXYsiX0wQ3joBqijN2mPqXQIhjTaCpSMl8Ga8Cr+GLaC6vm
ptDyAlJ/WeFT+/IjlmNQ8VZmQFmelFZ9T7FnrunpxdTStT2AVFOZJli8wEPYZzNb
yG04skJrRIiUUx6Voy4jQaYRUFuCR6HjSFILB0MMs3zKAoN1gpe0e0ZuPG1sx+j0
iJLAaeHo07wgV6diahIlmnVcBSwDUOHvKgzRs/bRgPfA5Lts/pOfkMuN41t32Gw =HCCd
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 20/06/2011 00:10, Tonton Th a écrit :
On fait comment quand on a pas de "dns inverse" ?



On en invente un. fr.clown.bozo par exemple.
Mais généralement c'est l'url du site web de ta boite à l'envers.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN/nSCAAoJEK8zQvxDY4P9PqwH/1/ZKADrDCB2tfqZohjyjV88
rLfL7ets9chTn6CYusY5kMQgGHiNBerm+kmcUDzPHMIpjcCICU/T9YH864rdtwxb
ju2ioEmWSmzuVJ4AVziB0cVVOGfat2H2Cr4W8rQrM6itB5edayv6BwKVssIojlhc
G+GLvWeJHLZZ/PMOQsgrW4o3BAyGvWqCO27O3NVvVdwxFdtkd8Z19mFb2LmEsgzO
2HTIjHE0fW4JyZTMmbe+OHGDdPrON4ChC02uXiw6BvnBSZ/kGSoWda1cWz+RBjwx
NNWTwz0NqshBrnuAGT0FXpcSIUBinyQauBh03nn5rjkdGjwF3qnoXXOWYyKh0Yw =R/92
-----END PGP SIGNATURE-----