IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

[Débat] Technologie .NET vs JAVA


Sujet :

Débats sur le développement - Le Best Of

  1. #341
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut Feed The Troll
    Citation Envoyé par JeitEmgie
    vous ne lisez pas ce que l'on écrit…
    Non, seul mon opinion a de l'importance. Inutile que je lise ce que pensent les autres. J'ai toujours fait ainsi, et si tout le monde faisait comme moi, il y aurait moins de debats !

    Citation Envoyé par JeitEmgie
    il ne s'agit pas d'aboutir à des jugements absolus et définifs… juste aborder la comparaison par quelques exemples pratiques… et de préférence pas ceux des promoteurs des technologies comparées…
    Bon ok. Premier exemple pratique, la programmation Direct3D.
    Apres tout, comparer ces 2 frameworks n'a d'interet que si l'appli finale tourne sous windows. Sinon, c'est forcement JSE qui gagne .

    Alors, regardons un cube en Direct3D en python sur .Net:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import clr
    from framework import *
    
    class DirectionalMover(object):
        def __init__(self, obj, direction, speed, distance):
            self.Object = obj
            self.Speed = speed
            self.Distance = distance
            self.Direction = Vectorize(direction)
            self.Direction.Normalize()
    
        def OnFrame(self, elapsed):
            toTravel = self.Speed * elapsed
    
            if self.Distance < toTravel:
                self.Object.Translate(self.Direction * single(self.Distance))
                return True
            else:
                self.Distance -= toTravel
                self.Object.Translate(self.Direction * single(toTravel))
    
    
    class DemoSceneCreator(object):
        def OnSceneCreate(self, sm):
            cam = sm.CreateCamera("Player Cam")
            cam.Position = 0, 3, -5
            
            box = sm.LoadBasicObject("box", "box 1", Drawing.Color.Red, 0.25, 0.25, 0.25)
            box.Position = -1, 0, 0
            
            box = sm.LoadBasicObject("box", "box 2", Drawing.Color.Green, 0.25, 0.25, 0.25)
            box.Position = 0, 0, 0
            cam.LookAt(box.Position)
            
            box = sm.LoadBasicObject("box", "box 3", Drawing.Color.Blue, 0.25, 0.25, 0.25)
            box.Position = 1, 0, 0
    
            return True
    
        def OnSceneBegin(self, sm):
            dm = DirectionalMover(sm.Objects["box 1"], (1, 0, 0), 0.3, 3)
            sm.AddListener(dm)
            
            dm = DirectionalMover(sm.Objects["box 2"], (0, 1, 0), 0.2, 2)
            sm.AddListener(dm)
            
            dm = DirectionalMover(sm.Objects["box 3"], (0, 0, 1), 1, 10)
            sm.AddListener(dm)
    
            return True
    
    
    if __name__ == '__main__':
        Root().Main([DemoSceneCreator])
    Et le meme cube en JSE, en utilisant la librairie externe java3d:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.applet.Applet;
    import java.awt.*;
    import javax.media.j3d.*;
    import com.sun.j3d.utils.universe.SimpleUniverse;
    import com.sun.j3d.utils.geometry.ColorCube;
    import com.sun.j3d.utils.applet.MainFrame;
     
    public class Applet3D extends Applet 
    {
      public void init ()
      {    
        Canvas3D canvas = new Canvas3D (SimpleUniverse.getPreferredConfiguration ());
        setLayout (new BorderLayout ());
        add (canvas, BorderLayout.CENTER);
     
        BranchGroup scene = createSceneTree ();
     
        SimpleUniverse universe = new SimpleUniverse (canvas);
        universe.addBranchGraph (scene);
        universe.getViewingPlatform ().setNominalViewingTransform ();
      }
     
      public BranchGroup createSceneTree ()
      {
        BranchGroup root = new BranchGroup();
        ColorCube cube = new ColorCube (0.5);
        root.addChild (cube);
        return root;
      }
     
      public static void main (String [] args) 
      {
        new MainFrame (new Applet3D (), args, 150, 150);
      }  
    }
    Que peut-on en conclure ?

    1. Deja que le code Java est plus court. Donc moins de temps passer a chercher les touches sur le clavier. D'où une meilleure mobilisation du cerveau du developpeur qui a plus de temps pour penser a son code.

    2. Que le code python est tres propre, car il n' y a pas toutes ces accolades moches. Un code plus clair permet d'avoir une vision plus clair de ce que fait le code. C'est donc un langage bien plus adapté que Java pour faire de la 3D.

    3. Que JSE a besoin d'une librairie externe pour faire du Direct3D alors que c'est natif en python.net. Victoire indiscutable de la richesse du framework .Net sur la pauvreté des API java

    Conclusion: .NET= 2 / JAVA=1

    Vainqueur .NET
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #342
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par pseudocode
    3. Que JSE a besoin d'une librairie externe pour faire du Direct3D alors que c'est natif en python.net. Victoire indiscutable de la richesse du framework .Net sur la pauvreté des API java

    Conclusion: .NET= 2 / JAVA=1
    MMoouaaiis c'est toi qui le dit..
    Direct3d avec .NET ainsi que Direct X c'est pas folichon semble-t-il ; on dirait qu'il ya des problèmes.
    http://www.developpez.net/forums/sho...21#post1800921

    J'attends vraiment d'être convaincu.
    Quant à Java + Direct X ... je ne me prononcerais pas la dessus
    je risque le HS

  3. #343
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par pseudocode
    Non, seul mon opinion a de l'importance. Inutile que je lise ce que pensent les autres. J'ai toujours fait ainsi, et si tout le monde faisait comme moi, il y aurait moins de debats !



    Bon ok. Premier exemple pratique, la programmation Direct3D.
    Apres tout, comparer ces 2 frameworks n'a d'interet que si l'appli finale tourne sous windows. Sinon, c'est forcement JSE qui gagne .

    Alors, regardons un cube en Direct3D en python sur .Net:
    exemple sans grand intérêt qui montre bien que vous ne comprenez pas la question…

    je note que le code python comprend des chaînes de caractères, en conséquence je notes 2 choses :

    - encodage des fichiers sources
    - localisation

    je vois aussi que le binding objet / listener se fait ici par code :
    donc 1 postit :
    - choix ou obligation ? à approfondir…

  4. #344
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par JeitEmgie
    prenons un autre exemple :
    tous les environnements offrent une solution pour la gestion des threads…
    mais quels sont les modes de communication OO inter-threads proposés ?
    fonctionnent-ils aussi entre process sur le même hôte ?
    fonctionnent-ils entre process distants ?
    Remarque très ambigue : c'est l'OS qui offre la possibilité de programmation parallèle et le langage+framework va s'appuyer sur les fonctionnalités de l'OS.
    Ainsi un Java et JVM sur windows 3.1 ou tout OS 16bits pourrait très bien se concevoir puisque c'est du pseudocode...

  5. #345
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par JeitEmgie
    exemple sans grand intérêt qui montre bien que vous ne comprenez pas la question…
    Réponse sans grand intérêt qui montre bien que vous ne comprenez pas l'ironie.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #346
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Mat.M
    Remarque très ambigue : c'est l'OS qui offre la possibilité de programmation parallèle et le langage+framework va s'appuyer sur les fonctionnalités de l'OS.
    Ainsi un Java et JVM sur windows 3.1 ou tout OS 16bits pourrait très bien se concevoir puisque c'est du pseudocode...
    Sans compter que les VM ne s'appuient pas forcement sur les Thread de l'OS mais peuvent gerer leurs propres mecanismes de multithreading (aka green thread)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #347
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Mat.M
    Remarque très ambigue : c'est l'OS qui offre la possibilité de programmation parallèle et le langage+framework va s'appuyer sur les fonctionnalités de l'OS.
    Ainsi un Java et JVM sur windows 3.1 ou tout OS 16bits pourrait très bien se concevoir puisque c'est du pseudocode...
    ce sont des questions relatives à l' "interthread messaging" à comparer entre les différents environnements…

    si les OS offrent en général des outils de bas niveau pour l'implémentation des threads, tous n'ont pas des mécanismes de bas niveau pour l'"interthread messaging" et donc les environnements proposent alors leur propre solution…

    -> comparaison …?

  8. #348
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par pseudocode
    Réponse sans grand intérêt qui montre bien que vous ne comprenez pas l'ironie.
    désolé, je n'avais pas compris que vous faisiez de l'auto-dérision…

  9. #349
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    travailler avec php et javascript!!!!

  10. #350
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2005
    Messages : 97
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par pseudocode
    1. Deja que le code Java est plus court. Donc moins de temps passer a chercher les touches sur le clavier. D'où une meilleure mobilisation du cerveau du developpeur qui a plus de temps pour penser a son code.

    2. Que le code python est tres propre, car il n' y a pas toutes ces accolades moches. Un code plus clair permet d'avoir une vision plus clair de ce que fait le code. C'est donc un langage bien plus adapté que Java pour faire de la 3D.

    3. Que JSE a besoin d'une librairie externe pour faire du Direct3D alors que c'est natif en python.net. Victoire indiscutable de la richesse du framework .Net sur la pauvreté des API java

    Conclusion: .NET= 2 / JAVA=1

    Vainqueur .NET
    Ouais c'est pas drôle . En plus le 2 il est pas vrai parce qu'on peut faire du bytecode java avec du python de la meme maniere qu'on peut faire du CIL (avec python toujours) grace a ca http://fr.wikipedia.org/wiki/Jython
    Donc D'après ton test, java = DotNET

  11. #351
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 12
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par pseudocode
    Non, seul mon opinion a de l'importance. Inutile que je lise ce que pensent les autres. J'ai toujours fait ainsi, et si tout le monde faisait comme moi, il y aurait moins de debats !



    Bon ok. Premier exemple pratique, la programmation Direct3D.
    Apres tout, comparer ces 2 frameworks n'a d'interet que si l'appli finale tourne sous windows. Sinon, c'est forcement JSE qui gagne .

    Alors, regardons un cube en Direct3D en python sur .Net:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import clr
    from framework import *
    
    class DirectionalMover(object):
        def __init__(self, obj, direction, speed, distance):
            self.Object = obj
            self.Speed = speed
            self.Distance = distance
            self.Direction = Vectorize(direction)
            self.Direction.Normalize()
    
        def OnFrame(self, elapsed):
            toTravel = self.Speed * elapsed
    
            if self.Distance < toTravel:
                self.Object.Translate(self.Direction * single(self.Distance))
                return True
            else:
                self.Distance -= toTravel
                self.Object.Translate(self.Direction * single(toTravel))
    
    
    class DemoSceneCreator(object):
        def OnSceneCreate(self, sm):
            cam = sm.CreateCamera("Player Cam")
            cam.Position = 0, 3, -5
            
            box = sm.LoadBasicObject("box", "box 1", Drawing.Color.Red, 0.25, 0.25, 0.25)
            box.Position = -1, 0, 0
            
            box = sm.LoadBasicObject("box", "box 2", Drawing.Color.Green, 0.25, 0.25, 0.25)
            box.Position = 0, 0, 0
            cam.LookAt(box.Position)
            
            box = sm.LoadBasicObject("box", "box 3", Drawing.Color.Blue, 0.25, 0.25, 0.25)
            box.Position = 1, 0, 0
    
            return True
    
        def OnSceneBegin(self, sm):
            dm = DirectionalMover(sm.Objects["box 1"], (1, 0, 0), 0.3, 3)
            sm.AddListener(dm)
            
            dm = DirectionalMover(sm.Objects["box 2"], (0, 1, 0), 0.2, 2)
            sm.AddListener(dm)
            
            dm = DirectionalMover(sm.Objects["box 3"], (0, 0, 1), 1, 10)
            sm.AddListener(dm)
    
            return True
    
    
    if __name__ == '__main__':
        Root().Main([DemoSceneCreator])
    Et le meme cube en JSE, en utilisant la librairie externe java3d:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.applet.Applet;
    import java.awt.*;
    import javax.media.j3d.*;
    import com.sun.j3d.utils.universe.SimpleUniverse;
    import com.sun.j3d.utils.geometry.ColorCube;
    import com.sun.j3d.utils.applet.MainFrame;
     
    public class Applet3D extends Applet 
    {
      public void init ()
      {    
        Canvas3D canvas = new Canvas3D (SimpleUniverse.getPreferredConfiguration ());
        setLayout (new BorderLayout ());
        add (canvas, BorderLayout.CENTER);
     
        BranchGroup scene = createSceneTree ();
     
        SimpleUniverse universe = new SimpleUniverse (canvas);
        universe.addBranchGraph (scene);
        universe.getViewingPlatform ().setNominalViewingTransform ();
      }
     
      public BranchGroup createSceneTree ()
      {
        BranchGroup root = new BranchGroup();
        ColorCube cube = new ColorCube (0.5);
        root.addChild (cube);
        return root;
      }
     
      public static void main (String [] args) 
      {
        new MainFrame (new Applet3D (), args, 150, 150);
      }  
    }
    Que peut-on en conclure ?

    1. Deja que le code Java est plus court. Donc moins de temps passer a chercher les touches sur le clavier. D'où une meilleure mobilisation du cerveau du developpeur qui a plus de temps pour penser a son code.

    2. Que le code python est tres propre, car il n' y a pas toutes ces accolades moches. Un code plus clair permet d'avoir une vision plus clair de ce que fait le code. C'est donc un langage bien plus adapté que Java pour faire de la 3D.

    3. Que JSE a besoin d'une librairie externe pour faire du Direct3D alors que c'est natif en python.net. Victoire indiscutable de la richesse du framework .Net sur la pauvreté des API java

    Conclusion: .NET= 2 / JAVA=1

    Vainqueur .NET
    En même temps il y a une sacré différence entre Java3d et direct3S, pour comparer il faudrait utiliser openGl en java. Java3d est plus un moteur 3d codé en java qu'une api du même genre que openGL ou direct3D. Essaye de faire des shaders en Java3d.
    Qui plus est Microsoft a aussi lancé xna qui simplifie le code pour ce genre d'appli.

  12. #352
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    @joho: Sauf que ironpython fait officiellement partie des langages supportés par le framework .NET, alors que Jython est un truc fait par des barbus dans une cave... Lol, non je rigole. C'est le meme type (Jim Hugunin) qui est au depart des deux projets.

    @JeitEmgie:

    Techiquement parlant (vu que l'implementation, c'est ca qui t'interesse), il n'y a pas besoin de mécanismes d'"interthread messaging" car, par définition, les threads partagent le meme espace d'adressage. Tout ce qu'il faut, ce sont des mécanismes de synchronisation pour eviter les classiques race-conditions ou dead-lock. C# et Java proposent tous les deux les memes mécanismes des synchronisation (a la syntaxe pres: C#=pulse(), Java=notify() )

    Conceptuellement parlant (vu que la conception, c'est ca qui m'interesse moi), la mise en place des objets actifs (via le pattern sync/async) necessite un mecanisme d'appel/retour de methodes asynchrone. Ni C#, ni Java ne gerent cela nativement. Il est necessaire de rajouter des classes spécialisées dans la conception.

    Apres, je me fout de savoir comment fonctionne ces classes spécialisées, ni si elles sont pratique a utiliser, ni meme si elles sont fournies par le framework (version 3, 4, ou 5) ou externes. Ca c'est du domaine de l'implementation. La conception s'arrete aux responsabilités techniques des classes.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #353
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par yann2
    Salut

    Je ne veux pas nourrir ce si beau troll, mais je pense effectivement qu'on peut dresser des grilles de comparaisons pour des frameworks
    bien évidemment…

    Citation Envoyé par yann2
    Par contre ce n'est pas du tout ce que j'attend dans les débats de DVP. Je préfère largement la castagne (c'est bien plus constructif...).
    agittons les étoffes rouges, il y aura bien quelque bœuf qui voudra faire croire qu'il est encore taureau…

    Citation Envoyé par yann2
    Pour les grilles il faut effectivement ce limiter à un problème donné (qu'attendons nous d'un framework pour résoudre notre problème)
    c'est justement là qu'il me semble qu'il serait bien de changer le disque habituel :

    si vous partez de problèmes généraux vous allez aboutir à des situations indécidables et vous allez prendre la décision sur bases d'autres critères (dits "supérieurs" ou "externes" dans les message précédents…)

    mais

    durant le développement vous allez toujours rencontrer des choses "pointues" où quelque soit le framework choisi pour d'excellentes raisons "supérieures", et vous allez devoir le pousser dans ces retranchements…

    dans ce cas, la situation n'est plus le problème du choix du framework mais bien l'évaluation du coût de ces choses "pointues"…

    dans cette optique, j'ai cité quelques exemples dans le cadre de GUI, qui sont assez typiques du genre de demande qu'un client peut, par exemple, demander en cours de développement après avoir essayé quelque temps votre alpha, beta, prc… : le genre "est-ce vous ne pourriez pas me faire ce petit plaisir…" … ou dans d'autres cas, cela fera partie du cahier des charges de départ… ou encore le développement se faisant en parallèle sur différentes plate-formes, le feedback de l'une influence les exigences du client sur l'autre…

    dans cette situation, quelques soient les raisons propres au projet qui vous permettent de répondre oui ou non, une fois que vous aurez dit oui, pour une bonne ou une mauvaise raison, que le supplément soit budgétisé ou non,
    comment se comporte votre outil de prédilection fasse à des demandes qui, a priori, n'ont pas de raison d'influer le choix initial de l'environnement ?

    alors pour mes snippets de GUI ici plus haut, à quel type de réponses faut-il s'attendre avec ces technologies :
    - heu, … comprends pas la question
    (cette réponse-là, nous l'avons eue, donc passons, svp…)
    - on préfère dire non au client car trop compliqué ou on ne voit pas comment faire, on va donc (essayer de) convaincre le client que sa demande est idiote
    (nous l'avons aussi déjà lue, donc passons, svp…)
    - oui sans doute faisable mais cela demande une analyse (justifiez alors pourquoi…)
    - oui sans problème, voici comment… et voici le coût : faible, moyen élévé…
    - oui sans problème : l'environnement fait tout cela out-of-the box (démonstration…)
    - oui non seulement mon environnement favori fait tout cela mais il fait aussi le café…
    (celle-là on ne pas encore eue, mais si' l'on pouvait l'éviter…)

    et après on pourra peut-être aborder d'autres domaines que le GUI ou approfondir dans cette voie-là …

  14. #354
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par pseudocode
    @JeitEmgie:

    Techiquement parlant (vu que l'implementation, c'est ca qui t'interesse), il n'y a pas besoin de mécanismes d'"interthread messaging" car, par définition, les threads partagent le meme espace d'adressage. Tout ce qu'il faut, ce sont des mécanismes de synchronisation pour eviter les classiques race-conditions ou dead-lock. C# et Java proposent tous les deux les memes mécanismes des synchronisation (a la syntaxe pres: C#=pulse(), Java=notify() )
    donc les 2 environnements ne vont pas plus loin que ce que l'on trouve en gros au niveau des pthreads… ?

    je note donc pour les 2 :
    interthread communication : le minimum, tout niveau supérieur doit être implémenté avec les outils de base (threads, mutex, condition locks, sockets et sérialisation)

  15. #355
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Bonjour, allez je me lance dans ce débat passionné et passionnant!

    Je me pose des questions quant aux avantages et inconvénients de .NET et J2EE et j'aimerais vous les soumettre. Ces questions peuvent vous paraître inapropriées mais elles ont le mérite d'être posées.

    Pouvez-vous citer les avantages et les inconvénients de .NET et/ou J2EE dans les critères suivants (merci d’argumenter si possible, de préciser ou de chiffrer, cela accréditera plus vos réponses):

    Portabilité (notamment : les API et les librairies liées à la technologie sont-elles portables ?)

    Stabilité et pérennité (notamment : la compatibilité entre les versions est-elle maximale ? Quelle est la répartition de la technologie dans le marché ? Dans quel secteur d’activité la technologie est-elle dominante ?)

    Métier et maintenance (notamment : Le niveau de productivité des développeurs est-il élevé ? Les outils liés à la technologie sont-ils nombreux et de bonne qualité ? La technologie est-elle bien documentée par le constructeur ? Les API et libraires sont-elles facilement disponibles sur Internet ? Est-il possible de personnaliser le Framework ? Quel est le niveau d’intégration de la technologie dans un système existant ?)

    Ouverture (notamment : Quel est le niveau de communication de la technologie avec d’autres langages ? A quelle(s) base(s) de données la technologie est-elle liée ?)

    Sécurité (notamment : Des failles de sécurité sont-elles souvent révélées ? Quel est le niveau de vulnérabilité de ces éventuelles failles? La technologie propose-t-elles des fonctionnalités ou des outils de sécurité satisfaisants ?)

    Coût (notamment : Quels seraient les coûts de migration vers un autre serveur de base de données ? Un autre système d’exploitation ?)

    Performance et scalabilité (notamment : Quelles sont les ressources consommées pour une application classique ? Sont-elles optimales ? Il y a-t-il des points faibles connus au niveau des performances ? L’application réagit-elle correctement avec un traitement de gros volume ?)

    Vous aurez remarqué que je me suis posé des questions précises (je sais bien que J2EE est plus portable que .NET mais au niveau des API qu'en est-il?)

  16. #356
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par olemarrec
    Bonjour, allez je me lance dans ce débat passionné et passionnant!
    Wecome aboard !

    Portabilité (notamment : les API et les librairies liées à la technologie sont-elles portables ?)
    Je ne sais pas ce que signifie une API portable. Une API est une interface, donc juste une definition. Elle peut a la rigueur etre "standardisée", "connue" ou "secrete". Mais portable... ?

    Stabilité et pérennité
    Pour la compatibilité ascendante: pareil. Les applis .Net2.0 tournent sur .Net30 et les applis JEE4 tournent sur JEE5 et 6.

    Pour la stabilité/pérennité: c'est trop tot pour parler de .Net qui est un peu jeune. Java est plus mature et sa stabilité/pérennité n'a jamais été remise en cause (au contraite de ses performances. troll )

    Pour le Marché: 44% pour .Net et 35% pour J2EE (Forrester Research 2006). Avec une forte croissante de .Net et le recul progressif pour J2EE. Peut-etre l'attrait de la nouveauté pour .Net, ou le retour de baton de la complexité des EJB1/2 de J2EE.

    Pour la répartition dans les secteurs d'activités, je ne sais pas. Les derniers chiffres que j'ai datent de 2004, et c'etait en gros du 50/50.

    Métier et maintenance
    Niveau documentation "officielle" je dirai que c'est pareil. Des Specs, APi et guides sont proposés par Sun et Ms. Le reste de la documentation est offert par la communauté, donc avantage a Java qui reste le plus utilisé (40%) devant vb.net(37%) et c#(19%) (toujours selon Forrester).

    Pour les outils, je dirais (avis totalement personnel) avantage a Ms dont c'est le metier de faire des logiciels.

    Les outils JAVA sont surtout des IDE (eclipse, netbeans, ...) mais peu d'outils pour la supervision ou le deploiement. D'un autre coté, ils sont gratuits.

    Est-il possible de personnaliser le Framework ?
    Oui, moi j'ai mis un aileron, des gentes larges et j'ai abaissé la caisse
    Que veux tu dire par "personnaliser" ? Tu peux ajouter des classes, des librairies du langage, ou faire des appels a des librairies externes (dll/so)

    Quel est le niveau d’intégration de la technologie dans un système existant ?
    Par nature .Net s'installe sur les OS windows (98,2000,xp,2003,vista). J2EE s'installe également sur windows, et meme plus.

    .Net va plus tirer partie des fonctions spécifiques a l'OS, du fait de son fort couplage a Windows. Java va au contraire proposer une vue plus réduite de l'OS afin de garantir la portabilité.

    Ouverture (notamment : Quel est le niveau de communication de la technologie avec d’autres langages ? A quelle(s) base(s) de données la technologie est-elle liée ?)
    Par nature, .Net vise l'interoperabilité entre les langages en proposant des compilateurs langage->CIL. Sinon il reste l'interop via COM ou web-service.

    Sun propose seulement le compilateur Java->ByteCode, meme s'il existe d'autres compilateurs sur le marché. Coté java, l'interop se fait plutot par des technologies comme corba et récemment web-service.

    Mais je ne vois pas trop le rapport avec J2EE... ?

    Les 2 technos ne sont pas "liées" aux bases de données, mais utilisent des API generiques d'accès aux données: JDBC pour Java, et OLEDB ou ODBC (via des wrapper) pour .NET

    Sécurité (notamment : Des failles de sécurité sont-elles souvent révélées ? Quel est le niveau de vulnérabilité de ces éventuelles failles? La technologie propose-t-elles des fonctionnalités ou des outils de sécurité satisfaisants ?)
    Aucune idée...

    Coût (notamment : Quels seraient les coûts de migration vers un autre serveur de base de données ? Un autre système d’exploitation ?)
    Les 2 plateformes utilisent une machine virtuelle pour s'isoler du systeme d'exploitation. Tant qu'il existe une VM pour le système d’exploitation, ca devrait fonctionner.

    Performance et scalabilité (notamment : Quelles sont les ressources consommées pour une application classique ? Sont-elles optimales ? Il y a-t-il des points faibles connus au niveau des performances ? L’application réagit-elle correctement avec un traitement de gros volume ?)
    J'ai pas de chiffre la dessus... Mon experience personnelle tant a montrer que les perf de mes appli .Net décroissent linéairement avec la charge, alors que mes appli J2EE (Jboss) font des palliers. Mais je n'ai jamais fait de mesures precises, ce sont juste mes observations
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #357
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par pseudocode
    Wecome aboard !

    Je ne sais pas ce que signifie une API portable. Une API est une interface, donc juste une definition. Elle peut a la rigueur etre "standardisée", "connue" ou "secrete". Mais portable... ?
    le terme portable pour une API peut signifier qu'elle ne comprend pas ou peu de références à des types particuliers qui sont intrinsèquement liés à un OS ou un environnement particulier, au point de rendre l'implémentation sous un autre OS ou un autre environnement particulièrement ardue, inutilement complexe ou "meaningless"…

    (une API peut donc être rendue volontairement peu portable…)

  18. #358
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par JeitEmgie
    le terme portable pour une API peut signifier qu'elle ne comprend pas ou peu de références à des types particuliers qui sont intrinsèquement liés à un OS ou un environnement particulier, au point de rendre l'implémentation sous un autre OS ou un autre environnement particulièrement ardue, inutilement complexe ou "meaningless"…

    (une API peut donc être rendue volontairement peu portable…)
    Ah ok... Bah comme ce sont 2 frameworks "isolés" de l'OS, les API de chaque framework utilisent leurs propres types de données. Donc dans ce sens, elles sont portables, mais pas inter-operables.

    Rares sont les API qui ne manipulent que des types standards (int, long, double, ...) en entrée/sortie. Ca n'offrirait pas un haut niveau d'abstraction, et ca ne serait pas tres "objet".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  19. #359
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par pseudocode
    Sans compter que les VM ne s'appuient pas forcement sur les Thread de l'OS mais peuvent gerer leurs propres mecanismes de multithreading (aka green thread)
    beh oui mais si je ne suis pas idiot et que je comprends bien la langue de Shakespeare Java ( voire .NET ) sur un systeme bi-pro ne peut pas utiliser la quintescessence d'un bi-pro et donc tourner en mono-thread
    Sur .NET le support bi-pro sera meilleur car .NET utilise au plus pres les appels systemes.
    Donc .NET 1 Java 0

    On multi-CPU machines, native threads can run more than one thread simultaneously by assigning different threads to different CPUs. Green threads run on only one CPU.


    Citation Envoyé par JeitEmgie
    -> comparaison …?
    Tsssss je te laisse deviner et faire une recherche sur les forums ou j'interviens souvent.
    Bon je ne veux pas troller et faire du HS

  20. #360
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Mat.M
    beh oui mais si je ne suis pas idiot et que je comprends bien la langue de Shakespeare Java ( voire .NET ) sur un systeme bi-pro ne peut pas utiliser la quintescessence d'un bi-pro et donc tourner en mono-thread
    Je ne comprend pas bien cette remarque... ??? (le mot quintescessence surement ).

    Il n'y a toujours qu'un thread qui tourne par processeur (core).

    Meme sur grosse config, il n'y a pas assez de processeurs pour faire tourner tous les threads simultanéments. L'OS recourt donc a la technique du time-slicing pour donner l'apparence du multitache total.

    Apres, qu'il y ai 1, 2, ou 100 processeurs, ca ne change pas le fonctionnement de l'OS, la VM ou l'appli. C'est juste que les threads momentanéments "interrompus" tourneront plus souvent s'il y a plus de processeurs dispo.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [Débat] .NET vs JAVA/J2EE
    Par tssi555 dans le forum VB.NET
    Réponses: 5
    Dernier message: 10/12/2008, 07h54
  2. Connexion a un service web .NET en JAVA
    Par skunkies dans le forum Services Web
    Réponses: 1
    Dernier message: 01/03/2007, 00h24
  3. [Net]socket java
    Par georges25 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 13/02/2006, 16h22
  4. Réponses: 7
    Dernier message: 06/04/2005, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo