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 !Envoyé par JeitEmgie
Bon ok. Premier exemple pratique, la programmation Direct3D.Envoyé par JeitEmgie
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:
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
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])
Que peut-on en conclure ?
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); } }
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
Partager