[OT]
Ich rede doch gar nicht von Sprachen :-? Sondern von den beiden Engines Unity3D und jME. C# und Java sind sowieso sehr ähnlich, insofern sehe ich bei den Sprachen keinen wirklichen Unterschied.
Jetzt hole ich ein wenig aus, was Engines generell betrifft:
--------------------------------------------------------
Und warum mein C++ Kommentar ? Grafikengines sind im Prinzip Libraries die ausschließlich auf Libraries zugreifen, welche nativ in C/C++ geschrieben sind.
-------wrapper-------
D.h.: Wenn du eine Grafikengine in einer Sprache schreiben willst, die NICHT C/C++ ist, hättest du nun ein Problem: Wie rufe ich OpenGL, OpenAL, OpenCL und vlt noch andere Sub Engines wie PhysX oder FMOD, Rakent etc zu ?
Hier kommen dann die Leute, die sagen "Wrapper!" Aber Wrapper sind meiner Meinung nach schon von der Grundidee her falsch:
1. Wrapper bedeuten overhead für jeden nativen Call (Das Marshalling der Methodenargumente und Rückgabewerte ist zwar auf einen Call gesehen nicht teuer, aber man ruft diese Methoden ja nicht nur einmal auf

)
2. Wrapper sind recht umfangreiche Gebilde mit teilweise vielen tausend Methoden. Das muss irgendjemand warten. Klar, es gibt hier Generatoren für... Aber Fakt ist, hier kommt extra Arbeit auf einen zu.
3. Firmen bauen nicht auf LWJGL oder JOGL weil dies zu unsichere Projekte sind, um sein eigenes Produkt darauf zu stützen. Ich rede hier nicht von Open Source sondern insbesondere von der Community. Habe damals aber festgestellt, dass die LWJGL-Community viel aktiver ist, als JOGLs.
---------GC----------
Java, C# und die meisten anderen JIT Sprachimpl. haben GC. Das ist ansich eine sehr tolle Sache und Java als auch C# haben hier sehr ausgeklügelte Mechanismen.
ABER: GC bedeutet kurzzeitiges Stoppen der Ausführung. Es gibt auch hier gute Ansätze von Java und C# aber das ist allles nicht so, wie manuelles Speicherhandling. Ich sage nicht, dass manuelles besser ist, nur im Bereich Spiele, Grafik ist das gewichtiger Faktor.
GC schlägt natürlich nur zu, wenn du was allokiierst. Sprich JStackAlloc (oder wie auch immer das heißt) für Stackalloziierung etc und man ist schon fast aus dem Schneider. C# bietet sogar von Haus aus Stackalloc.
-----------------------
Viele dieser Gründe sind unter anderem dafür verantwortlich, dass C++ für die Engine selbst benutzt wird und eine modernere Sprache wie Java, C#, Python etc für das Skripten des Spiels benutzt wird.
---------Fazit---------
Mein kleines Fazit ist: Benutze das richtige Wergzeug für den richtigen Job.
- Du willst ein 3D Spiel erstellen und willst es vermarkten ?
-> Nimm eine fertige lösung und zahl ggf sogar dafür. Wenn dein Spiel gut is, wird es sich lohnen.
- Du hast akademisches Interesse an 3D Programmierung ?
-> Nimm jME oder mach was eigenes ... Lernen kann man am besten von ganz unten aufwärts.
Jede(s) Sprache/Tool hat seine Berechtigung (meistens). Deswegen sind religiöse Ansichten hier Unfug.
Man sollte einfach nicht versuchen, ein eckiges Schwein durch ein rundes Loch zu bringen !
Amen!
[/OT]