kostenloser Webspace werbefrei: lima-city


Java 3D

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    ork

    ork hat kostenlosen Webspace.

    Hallo,

    Wie gut ist Java3D eigentlich? Zur Performance habe ich bisher nur negatives gehört, ich sage nur VM...

    Was denkt ihr? Und warum?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Moin,

    Zur Performance habe ich bisher nur negatives gehört, ich sage nur VM...

    Also von Hörensagen sollte man sich absolut nicht beeindrucken lassen.
    Java3D ist schon lange nicht mehr langsam. Klar, es kommt immer auf den Clienten an,
    aber generell kann ich nur dagegen argumentieren. Dass die VM Ressourcen verbraucht,
    ist zum Einen nichts neues - weil Java nunmal darauf aufbaut - und zum Anderen ebenfalls
    bei neueren Rechnern ein akzeptables Übel.

    Auch wird von Sun versucht, die Perfomance mit jeder Version effektiv zu steigern,
    in welchen Bereichen auch immer. Da ist Java3D natürlich inbegriffen.

    Hier mal ein Beispiel für ein kommerzielles Java3D-Spiel:
    http://oddlabs.com/

    Selbst wenn diese lgjwl benutzen, es basiert immer noch auf Java.

    Gruß,
    Pawnee


    Beitrag geändert: 9.9.2008 11:43:11 von pawnee
  4. Autor dieses Themas

    ork

    ork hat kostenlosen Webspace.

    Danke für die Antwort, werde das Spiel einmal testen..
  5. Hi, ich glaube wenn Du Dich wirklich für 3d in/und Java interessierst, kann ich Dir direkt zu OpenGl raten. Dafür gibt es eine Java-Umsetzung JOGL (Java and OpenGL), die genau wie reines OpenGl funktioniert. Google einfach mal danach. Es gibt massig Tutorials dazu. (schau mal nach "opengl nehe").

    Viel Spass damit.
  6. e********l

    Hier mal ein Beispiel für ein kommerzielles Java3D-Spiel:
    http://oddlabs.com/

    Selbst wenn diese lgjwl benutzen, es basiert immer noch auf Java.

    Naja...LWJGL ist ein OpenGL Binding wie auch JOGL. Java3D nutzt als Unterbau DirectX und OpenGL und letzten Endes kommt es immer darauf an was man mit der jeweiligen API anfangen will. Denn ein Doom 4 schreibt ein Anfänger eh nicht mal eben runter. Da brauch es jahrelanger Erfahrung in Engine Design und der Sprache.
  7. Zur Geschwindigkeit:
    Sicher braucht die VM einige Ressourcen. Aber auf neueren Rechner ist der Verbrauch der VM im Gegensatz zu der zur Verfügung stehenden Leistung vernachlässigbar.
    Die Behauptung, Java sei zu langsam rührt daher:
    Wenn du dir ein kleines Java-Programm schreibst und kompilierst und anschließend 10 mal hintereinander ausführst und dir die zeiten aufschreibst, so ist ein genau gleich gebautes Programm, welches z.B. mit C++ geschriebenund kompiliert wurde, deutlich schneller. Dies liegt daran, das für das Java-Programm erst der Bytecode in Maschinencode überführt wird, und dann ausgeführt wird, nach Beendigung des Programms wieder verworfen wird, und bei der nächsten ausführen des Programms muss der Bytecode erneut in Maschinencode überführt werden. Da das C++ programm schon in Maschinencode vorliegt, fällt diese Zeit dafür weg.

    Wenn du dir jedoch ein recht komplexes Programm in Java schreibst, und selbiges in C++ auch noch einmal schreibst, und des dann als Last-Test eine Weile laufen lässt (z.B. ein programm zur Berechnung von PI auf einige Millionen stellen), so ist das Java-Programm genauso schnell wie das C++ Programm, da der Bytcode nur einmal in Maschinencode überführt wird und dann für die komplette Ausführung des Programms zur Verfügung steht.
    Solche Geschwindigkeitstest hängen also immer sehr davon ab, unter welchen Bedingungen man sie ausführt. Fair ausgeführt hat Java dabei keinen Nachteil und ist gleich schnell.


    Java3D und jlwgl sind zwei völlig unterschiedliche Dinge.
    Es gibt für Java mehrere Bindings, die sich verwenden Lassen. Java3D ist eine Art Engine, die auf ljwgl oder DirektX aufbaut (je nachdem, was auf dem jeweiligen System zur Verfügung steht). Dabei kann man für 3D Programme auch nur jlwgl verwenden, oder, noch grundlegender, die OPenGL Bindings (JOGL) direkt verwenden, auf denen jlwgl aufbaut.

    Eine andere, weitaus umfangreichere, und in meinen Augen bessere, 3D Engine für Java ist die JMonkeyEngine. Diese baut ebenfalls auf jlwgl auf und bietet enorm viel Potential. Einfache 3D Anwendungen lassen sich hiermit schon recht simpel realisieren.

    Als kleiner Exkurs sei noch hinzugefügt. Die Quake2 Eingine wurde ebenfalls für Java nutzbar gemacht, google mal nach "Jake2". Möglicherweise wird es demnächst auch noch andere Bindings für Java geben. Denkbar wäre z.B., die UT3 Engine als Grundlage für ein neues Projekt zu nehmen. Das zählt wohl aber mehr zu meinen persönlichen Hoffnungen (aber vlt. macht sich ja wer die Mühe :D )

  8. Moin,

    Zur Performance habe ich bisher nur negatives gehört, ich sage nur VM...

    Also von Hörensagen sollte man sich absolut nicht beeindrucken lassen.
    Java3D ist schon lange nicht mehr langsam. Klar, es kommt immer auf den Clienten an,
    aber generell kann ich nur dagegen argumentieren. Dass die VM Ressourcen verbraucht,
    ist zum Einen nichts neues - weil Java nunmal darauf aufbaut - und zum Anderen ebenfalls
    bei neueren Rechnern ein akzeptables Übel.

    Auch wird von Sun versucht, die Perfomance mit jeder Version effektiv zu steigern,
    in welchen Bereichen auch immer. Da ist Java3D natürlich inbegriffen.

    Hier mal ein Beispiel für ein kommerzielles Java3D-Spiel:
    http://oddlabs.com/

    Selbst wenn diese lgjwl benutzen, es basiert immer noch auf Java.

    Gruß,
    Pawnee


    Beitrag geändert: 9.9.2008 11:43:11 von pawnee


    Also, ich finde das game sau gut! ;) Ist eigendlich supi gemacht, mit java ;)
  9. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.


    Zur Geschwindigkeit:
    Sicher braucht die VM einige Ressourcen. Aber auf neueren Rechner ist der Verbrauch der VM im Gegensatz zu der zur Verfügung stehenden Leistung vernachlässigbar.
    Die Behauptung, Java sei zu langsam rührt daher:
    Wenn du dir ein kleines Java-Programm schreibst und kompilierst und anschließend 10 mal hintereinander ausführst und dir die zeiten aufschreibst, so ist ein genau gleich gebautes Programm, welches z.B. mit C++ geschriebenund kompiliert wurde, deutlich schneller. Dies liegt daran, das für das Java-Programm erst der Bytecode in Maschinencode überführt wird, und dann ausgeführt wird, nach Beendigung des Programms wieder verworfen wird, und bei der nächsten ausführen des Programms muss der Bytecode erneut in Maschinencode überführt werden. Da das C++ programm schon in Maschinencode vorliegt, fällt diese Zeit dafür weg.

    Wenn du dir jedoch ein recht komplexes Programm in Java schreibst, und selbiges in C++ auch noch einmal schreibst, und des dann als Last-Test eine Weile laufen lässt (z.B. ein programm zur Berechnung von PI auf einige Millionen stellen), so ist das Java-Programm genauso schnell wie das C++ Programm, da der Bytcode nur einmal in Maschinencode überführt wird und dann für die komplette Ausführung des Programms zur Verfügung steht.
    Solche Geschwindigkeitstest hängen also immer sehr davon ab, unter welchen Bedingungen man sie ausführt. Fair ausgeführt hat Java dabei keinen Nachteil und ist gleich schnell.


    Java3D und jlwgl sind zwei völlig unterschiedliche Dinge.
    Es gibt für Java mehrere Bindings, die sich verwenden Lassen. Java3D ist eine Art Engine, die auf ljwgl oder DirektX aufbaut (je nachdem, was auf dem jeweiligen System zur Verfügung steht). Dabei kann man für 3D Programme auch nur jlwgl verwenden, oder, noch grundlegender, die OPenGL Bindings (JOGL) direkt verwenden, auf denen jlwgl aufbaut.

    Eine andere, weitaus umfangreichere, und in meinen Augen bessere, 3D Engine für Java ist die JMonkeyEngine. Diese baut ebenfalls auf jlwgl auf und bietet enorm viel Potential. Einfache 3D Anwendungen lassen sich hiermit schon recht simpel realisieren.

    Als kleiner Exkurs sei noch hinzugefügt. Die Quake2 Eingine wurde ebenfalls für Java nutzbar gemacht, google mal nach "Jake2". Möglicherweise wird es demnächst auch noch andere Bindings für Java geben. Denkbar wäre z.B., die UT3 Engine als Grundlage für ein neues Projekt zu nehmen. Das zählt wohl aber mehr zu meinen persönlichen Hoffnungen (aber vlt. macht sich ja wer die Mühe :D )


    Nicht, dass sich das noch in irgendwelchn Köpfen festsetzt: es heißt LWJGL: http://lwjgl.org

  10. Nicht, dass sich das noch in irgendwelchn Köpfen festsetzt: es heißt LWJGL: http://lwjgl.org


    Jau, danke für die Korrektur, hatte da nen kleinen Dreher drin. Hab in Gedanken das "Java" immer nach vorne gezogen - aber es war ja klar, was gemeint war ;)
  11. e********l

    Java3D und jlwgl sind zwei völlig unterschiedliche Dinge.

    Stimmt, Java3D ist ein SceneGraph und LWJGL ist eine API

    Java3D ist eine Art Engine, die auf ljwgl oder DirektX aufbaut (je nachdem, was auf dem jeweiligen System zur Verfügung steht).

    *tr3kk3r hau*
    J3D nutzt DirectX bzw OpenGL und kein LWJGL. Letzteres ist nur eine API und hat mit J3D nichts am Hut.

    Dabei kann man für 3D Programme auch nur jlwgl verwenden, oder, noch grundlegender, die OPenGL Bindings (JOGL) direkt verwenden, auf denen jlwgl aufbaut.

    Noch mehr Aua!
    LWJGL/JOGL sind beides OpenGL Bindings, verfolgen aber verschiedene Ansätze. JOGL ist primär für den Einsatz von Desktop Applikationen entstanden, wohingegen LWJGL (LightWeight Java Game Library) zur Erstellung von Spielen konzipiert ist. Mittlerweile kann man aber auch in LWJGL sehr leicht einen OGL Kontext in Swing/AWT erstellen und das geilste ist die seamsless transaktion von Desktop -> OGL Display -> Applet ist ohne großen Aufwand möglich. Wer also eine kleine Anwendung hat die er auch als Applet publishen will kann dies tun.


    So, genug Schelte verteilt xD
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!