Java + OpenGL



  • Hiho,

    ich hab mal ein paar Fragen bezüglich OpenGL unter Java. Da wir im Studium mit Java arbeiten und ich die Vorzüge gegenüber C++ kennengelernt habe (IMHO ist Java C++ in vielen Dingen um einiges voraus), hab ich mir überlegt mein OpenGL Projekt von C++ auf Java umzustellen. Davor hab ich aber, wie gesagt, noch ein paar Fragen:

    1. Ich hab schon was von GL4Java und Java3D gehört, ist von diesen beiden eins zu empfehlen?
    2. Wie sieht es mit dem Speed aus? Bremst Java OpenGL ordentlich aus oder hält sich der Unterschied zu C++ in Grenzen?



  • Ob Java in sovielen Bereichen C++ wirklich voraus ist sei mal dahingestellt (Programmiere selber beides und mag Java sehr gerne)

    Aus persoenlicher (sehr kurzer) erfahrung mein statement:

    nativer code ist der ausgang
    2x langsamer ist GL4Java
    Java3D ist 2.5x langsamer als nativer c++ code

    ich habe aber oft gelesen das mann mit weiterem tuning noch viel herausholen kann so dass man bei beiden systemen auf 1.5-2.0x langsamer als nativ kommt

    das sind fuer kleine applikationen oder research projekte sicher ok leistungen
    ein kommerzielles produkt wuerde ich darauf aber nicht aufsetzen

    gomberl



  • Danke erst mal für die Antwort 🙂

    Hmm, was ist denn an GL4Java der bremsende Faktor? Oder was ist allgemein der bremsende Faktor wenn ich in Java OpenGL einbinde?



  • java ist noch immer eine interpretierte sprache
    das sehe ich als groesstes problem

    auch wenn es schon massiv aufgeholt hat durch JIT execution

    ich kann dir so einige dinge aufzaehlen - aber das hat alles nicht explizit mit OpenGL zu tun

    es sollten eh ein paar tutorials im netz sein
    schau dort mal nach

    gomberl



  • Ich frag auch mal aus Interesse:
    Das Java als interpretierte Sprache eine schlechtere Performance hat, ist klar. Aber das Nutzen von OpenGL Funktionen dürfte doch deshalb nicht langsamer sein oder?
    Ich meine, was sollte an einem Funktionsaufruf langsamer sein?



  • Optimizer schrieb:

    Ich frag auch mal aus Interesse:
    Das Java als interpretierte Sprache eine schlechtere Performance hat, ist klar. Aber das Nutzen von OpenGL Funktionen dürfte doch deshalb nicht langsamer sein oder?
    Ich meine, was sollte an einem Funktionsaufruf langsamer sein?

    Na Java nicht direkt auf Treiber zugreifen kann wird das ganze wohl über das Native Interface gemacht.
    Eine DLL wird geladen, und dann wird wild hin- und hergeschickt über's JNI, da müssen Threads IN und AUSSERHALB der VM synchronisiert werden, Unicode-Parameter in char-Pointer und und und...
    ...denke ich mal. 🙂



  • schaut euch mal JOGL an. Das ist von Sun letzten Jahr wiederbelebt worden.
    GL4Java ist zwar ganz nett aber in ein paar Bereichen doch veraltert. Und wird soweit ich weiß auch nicht mehr weiterentwickelt.


Anmelden zum Antworten