OVH Cloud OVH Cloud

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
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:39, Nicolas George a écrit :
Oui. Pour le cas que j'ai cité en exemple, n est de l'ordre de 800, et
chacune de ces options est nécessaire, pour des raisons diverses (licence,
taille du code, incompatibilité mutuelles, etc.).



On en revient donc au point de départ : si je veux intégrer ta librairie
à mon programme, j'ai un parcours du combattant qui m'attend avant
d'espérer commencer à faire mon vrai boulot (à savoir faire le programme
pour mon client, pas me battre avec une librairie dont ce n'est pas mon
métier).

Idem si en cours de route mon client souhaite ajouter de nouvelles
fonctions. Je dois me retaper le parcours du combattant pour recompiler
la librairie pour y ajouter les fonctionnalités adéquates, ce qui
signifie aussi repasser l'intégralité des tests de la version précédente
à la recherche d'effets de bord potentiels, alors que j'ai touché pour
le moment à aucune ligne de mon code.

En bref, vous faites du code Kleenex, avec des méthodes de dev
laborieuses et coûteuses !

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

iQEcBAEBAgAGBQJN/Q9ZAAoJEK8zQvxDY4P96NEH/0KgSNKyNC2dajHicDFkdkxK
qI1BhO+wAmZL+KdsTKClTOOKslh3E3oGvEheUK+SlhIpu5m3P5ebSsB7f10sEyoM
EcdwWRD+Uix6LMFO5PulrjvBPzs8yLyCm4qR2y4uflGpB9bwD+82VL7jxOgFo66V
yuqxkiO4ZpEtNhfqodxIWzO5KNjBqefljQkbRQYsU2lqEs+RnvKkL1ZYEMbIySiS
8fChImS4KQlte+VYFXOfZ4R1aTYDlq+m2Ou1gx/JzS5hZdZLwp+OVbWdLN6T6Fqg
dpKtrW9xZ25+M2iK0sHwQWkDsSWBdOxueOhQJ5dHPswti3B60TpWxV2i+keFFng ÀHx
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 18/06/2011 22:44, Tonton Th a écrit :

Ça marche sur un lien RNIS, ce truc ?



Ça fonctionne out-of-the-box à partir du moment où tu as un accès à
Internet à la 1ère exécution.
Après par un mécanisme de caches, tout est en local chez toi.

Cela fonctionne aussi sans Internet à la condition de mettre en place
des proxies Maven type Nexus, Archiva ou Artifactory.
Et idem que plus haut, après la 1ère exec, tout est en cache local chez
toi et tu peux travailler hors ligne.

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

iQEcBAEBAgAGBQJN/RBMAAoJEK8zQvxDY4P9gJsIAKnyT06KGRIl0jJbIjajDplf
wey5zSX0eqMH2pk3BGnxa8htNr71K8ONvawQizHplMpff59lBxIDLqT7fYpfvPAN
ePPR2MRZK+xrxY26Sex/dIjlBvs1ZY1sn8qxETWc2jEYwRPfiXwqD41RXj34tm1T
f28LFyKlBzZqXnQGNHbILo8wtKskVB9WIgxVFSNeGoar1cyX4VY975IuJ/7vM5Dx
8YEZqoZHOowmy8tflwT73TbfXAMiigCaSnCgG+MpnGtkYDasIKzhNOiGAHV8v0O8
R68MxhVVX4EY2U7ahktfTWI0mpD2xymBizOqNjQFcX+mlr3dtMjvjUCC1aL2fm0 =XUOx
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfd0f5f$0$23732$, a
écrit :
On en revient donc au point de départ : si je veux intégrer ta librairie
à mon programme, j'ai un parcours du combattant qui m'attend avant
d'espérer commencer à faire mon vrai boulot (à savoir faire le programme
pour mon client, pas me battre avec une librairie dont ce n'est pas mon
métier).



Non : dans la plupart des cas, il te suffit d'installer le paquet de
développement qui vient avec ta distribution.

La différence, c'est quand tu sors des sentiers battus, et que ce paquet de
développement générique ne convient pas. Avec le modèle libre modulaire au
niveau source, il suffit de recompiler comme tu l'entends, ce qui peut
d'ailleurs parfaitement être optimisé.

Avec ton modèle, tu ne peux rien faire, c'est coincé.
Avatar
ST
On 6/19/11 12:53 AM, Aéris wrote:

Certes je ne ferais pas un OS ou du temps réel en Java.
Mais je ne serais pas assez fou pour aller faire de la bdd ou du web en
C/C⁺⁺ !



Ca me viendrait pas vraiment à l'idée de le faire en Java non plus.

--
http://www.unices.org
Avatar
JKB
Le Sat, 18 Jun 2011 22:05:57 +0200,
Aéris écrivait :

Le 18/06/2011 21:52, Nicolas George a écrit :
Une fausse bonne idée (la déclaration des exceptions)



Une idée qui parfois te complique la tache mais qui beaucoup plus
souvent te la simplifie à l'extrème



Non, ça ne simplifie rien, parce que si tu veux réellement être
efficace, tu es contraint à une gestion des erreurs à la C ou à la
Fortran. Les exceptions (obligatoire), c'est vraiment une fausse
bonne idée.

Ce n'est pas parce que la voiture tue 3.000 personnes par an que tu
t'interdis d'en avoir une, non ?

des conséquences néfastes (un catch-all)



C'est surtout une histoire de mauvais développeur, pas de mauvais langage



Au bout d'un certain temps, quand tu en as marre, le naturel revient
au galop.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
JKB
Le Sat, 18 Jun 2011 22:01:06 +0200,
Aéris écrivait :

Le 18/06/2011 21:51, Nicolas George a écrit :
Cette ligne ne compile pas si la bibliothèque optionnelle n'est pas
disponible. Essaie encore.



Hu ?
La bibliothèque est optionnelle à l'exécution, non à la compilation.



Foutaise. Elle est obligatoire lors de l'édition des liens et de
l'exécution. Si tu ne peux pas résoudre les symboles lors de
l'édition des liens, tu risques fort de ne pas obtenir
d'exécutable.

Maven gère parfaitement ce cas.
Ta dépendance est obligatoire à la compilation, mais tu n'en as pas
besoin à l'exécution tant que tu n'appelles pas une classe qui en a besoin.

Et même si on veut simuler le bordel des ifdef, tu peux toujours mettre
tes sources avec filter dans un sous-répertoire et déclarer un profil
Maven qui incluera ce répertoire et la dépendance qui va bien uniquement
si tu lui précises le profil sur sa ligne de commande (« mvn install
- -Pfilter »)
Mais ceci est à mon avis totalement inutile.



Surtout, pourquoi faire simple quand on peut faire compliqué ?

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
JKB
Le Sat, 18 Jun 2011 22:34:36 +0200,
Aéris écrivait :

Le 18/06/2011 22:26, Tonton Th a écrit :

struct un_contexte
{
int verbosity;
u_short prefered_port;
char dump_on_error;
}
struc un_contexte contexte;



class Context {
Level verbosity;
short preferedPort;
boolean dumpOnError;
}

class Foo {
@Resource
Context context

doFoo() {
if ( context.verbosity > LEVEL.INFO )
doBar();

}
}

En quoi est-ce différent de mon code ?
Sinon que je n'ai aucune variable globale =) ?



Et tu crois qu'une classe (par définition dans ton code globale),
c'est autre chose qu'un ensemble de variables collés à un ensemble
de fonctions ? Virer une variable globale pour la remplacer par une
classe (avec les limites que ça implique, parce qu'en programmation
multithreadée, ça peut devenir assez rapidement jouissif), c'est une
tartufferie.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 09:45, JKB a écrit :
Et tu crois qu'une classe (par définition dans ton code globale),
c'est autre chose qu'un ensemble de variables collés à un ensemble
de fonctions ? Virer une variable globale pour la remplacer par une
classe (avec les limites que ça implique, parce qu'en programmation
multithreadée, ça peut devenir assez rapidement jouissif), c'est une
tartufferie.



N'aurais-tu pas remarquer le @Resource dans la 2nde classe ?

C'est ce truc qui permet de me passer d'une variable globale et qui ne
fait aucune hypothèse sur l'endroit où je vais trouver ma conf.
La construction de l'instance de la conf est déléguée à l'IoC, ce qui
rend le code totalement modulable (la conf peut provenir de la bdd, d'un
fichier de conf, être hardcodée, fournie sur la ligne de commande…) et
réutilisable (pas de supposition de la présence d'une varglo initialisée
au lancement, ce qui le rendrait inutilisable en tant que librairie…)

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

iQEcBAEBAgAGBQJN/b3iAAoJEK8zQvxDY4P9A2oH/jvJxdCWYkBto2l9jCnDWeaM
okwUP3zItGs04qRIrvImQGqW63DfXu2GyiQ0hJNYl87P8l29oBNrTalymmeIxYQI
kaXWVxvxrGe1mAPUkm+ywrqCQlEa7yHUTFCtLklGH+gE0itC4J+nDCgpabCskQWT
V59erh5SSAqOf53LpvVYxA2hSuj949ziel4y01/JqQKr+8pQYBR5H45DdsAc/Yk6
IoMPCNsg7E7hdGDsxUaYmY0SnyIhd6IA3d0sZvFLwLOTmIjUhhytHuz1mzhMwDBx
Covq0afCo7kXjYKMqe+SXPJmz5s6ijYz2Etcq/oBBadXOSwvY4xbcmdx9/+N/ro =Asfl
-----END PGP SIGNATURE-----
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 19/06/2011 09:42, JKB a écrit :
Foutaise. Elle est obligatoire lors de l'édition des liens et de
l'exécution. Si tu ne peux pas résoudre les symboles lors de
l'édition des liens, tu risques fort de ne pas obtenir
d'exécutable.



Ben je ne sais pas comment vous avez gaulé votre bordel en C/C⁺⁺ mais
Java s'en sort très bien dans ce cas là =)

Je peux avoir un .jar executable compilé avec une certaine librairie et
je n'ai absolument pas besoin du .jar de ma lib à l'exécution tant que
je n'ai pas besoin d'une seule de ses classes.

À la limite je peux même lancer mon jar sans la lib, mettre la lib
après-coup, et sans redémarrer l'exe, me mettre à utiliser ses classes.

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

iQEcBAEBAgAGBQJN/b73AAoJEK8zQvxDY4P9szIH/jWY2bIE0LrGxhpOVKbkZOxZ
xNPca7HSX2ETBYa38BUjmYkmBLQ6e1NYSYYjAnrP/pdM65EG+4ETK1FIFUUi31or
G6n2CpDDO8rzZAdbA5Yqnmj6tx399gxnXUWNeO5aZf62l4/rrO45EhRNavoEwVaE
81hVUkpLb2TEY+kOesAAI713yOcn8lp0/OUqSCRTVqawGhgLJ1Y7JgWhUgLttAu8
fVcVom7fPaHtT304UUsqLOngENR1lZe+5ZOMccEAMT5o2y5NM/TnVO2BOFTtYGHW
I28+Dj1hzp6/DqVYeqUiFM6OOH/WYxhlrGkSL6GSCKjznu47T4MtYojwzSPEwqg =VuK0
-----END PGP SIGNATURE-----
Avatar
Nicolas George
Aéris , dans le message <4dfdbef7$0$29530$, a
écrit :
Je peux avoir un .jar executable compilé avec une certaine librairie et
je n'ai absolument pas besoin du .jar de ma lib à l'exécution tant que
je n'ai pas besoin d'une seule de ses classes.



Et je suppose que le code dans le programme principal que sert à faire usage
des fonctionnalités de cette bibliothèque disparaît magiquement du .jar si
la bibliothèque n'est pas disponible ?

À la limite je peux même lancer mon jar sans la lib, mettre la lib
après-coup, et sans redémarrer l'exe, me mettre à utiliser ses classes.



Et si, « sans redémarrer l'exe », tu te mets à utiliser ses classes sans
avoir installé la bibliothèque, il se passe quoi exactement ?