# Einsatzbereich-Frage von Java 3D



## thomas.g (16. Jun 2005)

Hi, da ich mich bis jetzt noch nicht mit Java 3D auseinandergesetzt habe und dies machen möchte, wollte ich mir einige Informationen dazu hohlen.

Und zwar, was ist mit Java 3D alles realisierbar?
Also mal so theoretisch: Könnte man mit Java 3D GTA San Andreas machen, oder ist es zu langsam dafür?

thx


----------



## AlArenal (16. Jun 2005)

Kommt auf den Rechner an.


----------



## Oxygenic (2. Jul 2005)

http://java3d.virtualworlds.de/projects.php


----------



## yeTh7 (23. Aug 2005)

Also ich bin zwar kein Java-Profi, aber was ich so sehe, wäre es wohl ein ziemlicher Blödsinn ein 3D-Game ala GTA mit Java zu proggen, da es - man mag es biegen und drehen wie man will - doch langsamer als ein mit zB C++ erstelltes Spiel wäre.

Natürlich kann man peinlich sauber coden und so vielleicht auch gegenüber C++ etwas Boden gutmachen, aber:
Genauso sauber programmiertes C++ ist wiederum schneller... (einfach weil die Interpretierzeit wegfällt!)
Ich schätze je aufwändiger so ein Spiel ist, desto größer wird der Unterschied zwischen den beiden Sprachen!

Deshalb wird es sich wohl wirtschaftlich auch nicht gerade rentieren und sich nie durchsetzen auf dem Gebiet.

Ich habe gelernt Java für das zu schätzen was es ist:
Eine sehr schöne Anfänger- und Netzsprache.


----------



## Grizzly (23. Aug 2005)

Soviel ich weiss, gab' es mal ein Projekt, dass Quake 2 mit Java3D umgesetzt hat. Hab' leider die URL nicht zur Hand.


----------



## Roar (23. Aug 2005)

www.bytonic.de/html/jake2.html
www.chromethegame.com
www.oddlabs.com/
https://lg3d.dev.java.net/


----------



## lin (23. Aug 2005)

also wenn man sich den Author von "Killer Game Programming in Java", Andrew Davison anhört, dann ist es durchaus möglich und machbar, dass Games ähnl. GTA in Java programmiert werden...

guck dir dazu mal das an: 
http://fivedots.coe.psu.ac.th/~ad/jg/ch00/ch00.pdf
(geht auch an yeTh7 ;-) )


----------



## doop (26. Aug 2005)

yeTh7 hat gesagt.:
			
		

> Genauso sauber programmiertes C++ ist wiederum schneller... (einfach weil die Interpretierzeit wegfällt!)



Geh wieder lernen! Java wird nicht interpretiert, ist ja schließlich kein Basic.


----------



## Gast (26. Aug 2005)

Als Antitrolllink: http://de.wikipedia.org/wiki/Java_(Programmiersprache)#Bytecode-Compiler


----------



## Grizzly (27. Aug 2005)

Gast hat gesagt.:
			
		

> Als Antitrolllink: http://de.wikipedia.org/wiki/Java_(Programmiersprache)#Bytecode-Compiler


Ich meine, ich könnte mich auch irren. Aber wird der Java Bytecode vor dem Laufen durch einen JIT-Compiler gejagt?

Noch ein Zitat:


			
				Wikipedia.de hat gesagt.:
			
		

> [...] Hochentwickelte *JIT-Compiler* können speziell für dynamische Sprachen schnelleren Code als herkömmliche Compiler generieren, da sie Closed-World Annahmen treffen können und Dynamische Optimierungen durchführen. [...]


----------



## lin (27. Aug 2005)

Also zum Thema der Geschwindigkeit schreibt  Andrew Davison, dass der Unterschied alles über alles zw. C++ und Java 5 rund 1: 1.1 beträgt, also minim ist, während in den ersten Stunden von Java C++ noch 20 - 40 mal schneller war.  In einigen Bereichen ist Java sogar n'bischen schneller.


----------



## doop (29. Aug 2005)

Grizzly hat gesagt.:
			
		

> Ich meine, ich könnte mich auch irren. Aber wird der Java Bytecode vor dem Laufen durch einen JIT-Compiler gejagt?



Ja, der reine JIT war vor HotSpot, also eine Generation zurück. C# nutzt diese eigentlich nicht mehr aktuelle Technik noch immer.

Aber ich bin mir sicher: es wird sich trotzdem immer wieder ein Trottel finden, der das Märchen vom Interpreter wiederkäut.


----------



## yeTh7 (5. Sep 2005)

doop hat gesagt.:
			
		

> yeTh7 hat gesagt.:
> 
> 
> 
> ...


Also wir haben in unserer Vorlesung gelernt, dass Java teils, teils ist.
Zuerst wird der Sourcecode in einen maschinensprache-nahen Bytecode kompiliert, der dann zur Laufzeit interpretiert wird. -> Mag ja falsch sein, ist aber nicht auf meinem Mist gewachsen, musst dich wohl bei den Professoren an meiner Uni aufregen! 

Trotzdem, man mag es biegen und wenden wie man will:
*Wenn es sich rentieren würde, würde es Java-Spiele auch geben!!* Die Wirtschaft ist hier wohl das sicherste Instrument um die Lage zu beurteilen, da sie sich ja kaum selbst eine schlechtere Alternative antun wird (ausser diese ist gut bezahlt).

Wie viele Java-Applikationen habe ich aber auf meiner Platte?
JBuilder und Poseidon  :lol:


----------



## KSG9|sebastian (5. Sep 2005)

doop, bitte nicht ganz so beleidigend, auch wenn du mehr weißt als andere 

deine konstruktiven anmerkungen kannst du auch bissl netter "verpacken"


----------



## yeTh7 (6. Sep 2005)

Krautfalsch dürfte aber mein Wissen auch nicht sein - obwohl es natürlich den JIT-Compiler gibt (und mein Wissen natürlich bei weitem nicht vollständig ist):
Oder der Autor hat einen Schreibstil in dem er zuerst alles behauptet um es anschließend zu widerlegen (als besseren Lerneffekt) - ganz so dürfte es wohl auch nicht sein 



> Damit aber der Programmcode des virtuellen Prozessors ausgeführt werden kann, führt nach der Übersetzungsphase die Laufzeitumgebung (auch *Run-Time-Interpreter* genannt), die Java Virtuelle Maschine, den Bytecode aus1  . Somit ist Java eine *compilierte, aber auch interpretierte Programmiersprache* – von der Hardwaremethode einmal abgesehen.
> 
> *Das Interpretieren bereitet noch Geschwindigkeitsprobleme*, da das Erkennen, Dekodieren und Ausführen der Befehle Zeit kostet. Im Schnitt sind Java-Programme drei bis zehn Mal langsamer als C(++)-Programme. *Die Technik der Just-In-Time(JIT)-Compiler2  mildert das Problem.* Ein JIT-Compiler beschleunigt die Ausführung der Programme, indem die Programmanweisungen der virtuellen Maschine für die physikalische übersetzt werden. Es steht anschließend ein auf die Architektur angepasstes Programm im Speicher, das ohne Interpretation schnell ausgeführt wird. Auch Netscape übernahm im Windows-Communicator3  4.0 einen JIT (ein Produkt von ehemals Symantec), um an Geschwindigkeit zuzulegen – obwohl diese Variante noch nicht den gesamten 1.1 Standard beherrschte. (Erst in der Version 4.06 von Netscape kam die volle Unterstützung für Java 1.1.) *Mit dieser Technik liegt die Geschwindigkeit zwar in vielen Fällen immer noch unter der von C, aber der Abstand ist geringer.*



Quelle: 
JAVA IST AUCH EINE INSEL


----------



## Grizzly (6. Sep 2005)

Hab' auch schon eine Statistik gesehen, in denen mehrere Programmiersprachen bzgl. der Geschwindigkeit verglichen wurden - aufgeteilt in die unterschiedlichen Operationen. Und Java schnitt da nicht schlecht ab - teilweise sogar schneller als C/C++.
Allerdings ging es bei dem Benchmark um reine Berechnungsoperationen und nicht bspw. um das Darstellen von bspw. Grafik & Co. Da die Java Klassen sehr abstrakt aufgebaut sind (ich sage nur Swing  ), geht hier sehr viel Rechenkraft flöten (Dafür kann man mit der Swing natürlich sehr viel mehr machen als bspw. mit der VCL von Borland Delphi).

Das Problem, warum Java nicht für Spiele genutzt wird, dürfte u.a. auch am Umfang der Standard Klassen von Java liegen. Java 2 SE ist zwar geeignet für GUIs & Co., aber nicht für Spiele. Hier muss man meisst auf externe Bibliotheken beim Sound, der Grafik & anderen Eingabemethoden (als Tastatur & Maus) zurückgreifen.


----------



## lin (6. Sep 2005)

Java hat auch Fortschritte gemacht, seit 1.4.2 (so weit ich weiss) hats sogar nen FSEM (Full Screen Exclusiv Mode). Sound hats auch einige nützliche Klassen integriert. Ich würde mal sagen Java entwickelt sich auch in diesem Bereich rasch.... vielleicht gibt's in Zukunft auch komerzielle Games in Java.


----------



## yeTh7 (6. Sep 2005)

Ich würds mir einerseits zwar wünschen, dass Java auch in professionellen/kommerziellen Anwendungen stärker vertreten wäre (man braucht nur mal bei Media schauen, wie viele der Software-Produkte wohl in Java gecoded sind) da es eine recht benutzerfreundliche Sprache ist (man denke nur an die Bibliothek  :applaus: ).

Andererseits ist einer der Vorteile auch ein Nachteil -> die Plattformunabhängigkeit.
Viele Leute haben nicht mal die Virtual Machine auf ihrem Rechner!!
Wenn ich eine Stand-Alone Applikation schreibe, läuft diese bei 50 % meiner Bekannten deshalb schon mal gar nicht...
Erklär mal einem Laien, dass er dafür die Virtual Machine braucht! Die häufigste Antwort ist wohl eher: "Wasn Mist, dein Prog geht nicht!"

Oder man will in einem Betrieb ein Programm schreiben und muss dann zu 20 Rechnern hoppen um die VM zu installieren, nur weil sie standardmäßig nicht drauf war. Da ist doch eine simple EXE wesentlich einfacher.

Außerdem fallen auch einige nützliche Dinge wie Tray-Icons weg, außer man verzichtet sowieso von vornherein auf die Plattformunabhängigkeit... aber dann wärs ja eh schon Wurst ob Java oder irgendwas anderes.


----------



## Roar (6. Sep 2005)

yeTh7 hat gesagt.:
			
		

> Ich würds mir einerseits zwar wünschen, dass Java auch in professionellen/kommerziellen Anwendungen stärker vertreten wäre (man braucht nur mal bei Media schauen, wie viele der Software-Produkte wohl in Java gecoded sind) da es eine recht benutzerfreundliche Sprache ist (man denke nur an die Bibliothek  :applaus: ).


hä? sehr viele kommerzielle anwendungen sind in java programmiert, man schaue nur mal bei allen großen unternehmen rein (oracle, ibm, sap, sun...)



> Andererseits ist einer der Vorteile acuh ein Nachteil -> die Plattformunabhängigkeit.
> Viele Leute haben nicht mal die Virtual Machine auf ihrem Rechner!!
> Wenn ich eine Stand-Alone Applikation schreibe, läuft diese bei 50 % meiner Bekannten deshalb schon mal gar nicht...
> Erklär mal einem Laien, dass er dafür die Virtual Machine braucht! Die häufigste Antwort ist wohl eher: "Wasn Mist, dein Prog geht nicht!"


pech für den benutzer halt :bae: kein programm läuft nicht wenn die entsprechende umgebung vorhanden ist. ob diese nun .net, java, windows oder VB6 heißt.



> Oder man will in einem Betrieb ein Programm schreiben und muss dann zu 20 Rechnern hoppen um die VM zu installieren, nur weil sie standardmäßig nicht drauf war. Da ist doch eine simple EXE wesentlich einfacher.


nicht einfacher wenn auf dein rechnern ein nicht-windows os ist  erst gar nicht wenn anwender und programmier andere betrisbssysteme benutzen.



> Außerdem fallen auch einige nützliche Dinge wie Tray-Icons weg, außer man verzichtet sowieso von vornherein auf die Plattformunabhängigkeit... aber dann wärs ja eh schon Wurst ob Java oder irgendwas anderes.



java.awt.TrayIcon?  :bahnhof:

edit: aber ladde


----------



## AlArenal (6. Sep 2005)

Roar hat gesagt.:
			
		

> > Oder man will in einem Betrieb ein Programm schreiben und muss dann zu 20 Rechnern hoppen um die VM zu installieren, nur weil sie standardmäßig nicht drauf war. Da ist doch eine simple EXE wesentlich einfacher.
> 
> 
> nicht einfacher wenn auf dein rechnern ein nicht-windows os ist  erst gar nicht wenn anwender und programmier andere betrisbssysteme benutzen.



Zum Glück war ich letztens ine inem Unternehmen mit weltweit einigen tausend Mitarbeitern. Da wird jeder Rechner mit einer Standard-Installation und einem Standard-Profil versorgt. Eine Änderung bei der IT und schwupps wars überall installiert...

Vielleicht sollte sich der Mittelstand vermehrt nach fähigen Admins umschauen, die ihre Arbeitszeiten nicht mit ineffektiven Methoden selbst in die Höhe treiben.


----------



## stev.glasow (6. Sep 2005)

> (man braucht nur mal bei Media schauen, wie viele der Software-Produkte wohl in Java gecoded sind)


Media? Mediamarkt oder wie?  :autsch:  Schon mal dran gedacht dass es außerhalb von Mediamarkt auch noch Unmengen an Software gibt? Mediamarkt verkauft doch nur Software für den Ottonormal Horst. (was zu 75% wohl Spiele sind.)


----------



## yeTh7 (6. Sep 2005)

stevg hat gesagt.:
			
		

> > (man braucht nur mal bei Media schauen, wie viele der Software-Produkte wohl in Java gecoded sind)
> 
> 
> Media? Mediamarkt oder wie?  :autsch:  Schon mal dran gedacht dass es außerhalb von Mediamarkt auch noch Unmengen an Software gibt? Mediamarkt verkauft doch nur Software für den Ottonormal Horst. (was zu 75% wohl Spiele sind.)


Ja ich meinte Media Markt!

Ich gebs ja zu! Ich bin ein Mainstream-Software-Fan (ala Nero, Spiele...)!   :applaus: 
Ist doch das was Spaß macht, und das Leben ist zu kurz um keinen Spaß zu haben...


----------



## stev.glasow (6. Sep 2005)

achso, alles klar.


----------



## doop (9. Sep 2005)

yeTh7 hat gesagt.:
			
		

> Also wir haben in unserer Vorlesung gelernt, dass Java teils, teils ist.
> Zuerst wird der Sourcecode in einen maschinensprache-nahen Bytecode kompiliert, der dann zur Laufzeit interpretiert wird.



Was studierst du - Landwirtschaft? Und was hindert dich, dir bei Sun die entsprechenden Spezifikationen zu holen und dich exakt zu informieren? Die sind dort alle vorhanden und öffentlich und die kannst du deinem Prof dann ja mal vorlegen.



			
				yeTh7 hat gesagt.:
			
		

> Trotzdem, man mag es biegen und wenden wie man will:
> *Wenn es sich rentieren würde, würde es Java-Spiele auch geben!!* Die Wirtschaft ist hier wohl das sicherste Instrument um die Lage zu beurteilen, da sie sich ja kaum selbst eine schlechtere Alternative antun wird (ausser diese ist gut bezahlt).



Na deine fachliche und Berufserfahrung scheint ja grandios zu sein! Allein die Applikationen im Enterprise-Bereich aufzuzählen würde diesen Rahmen hier sprengen. Und wenn du dir mal die Mühe machen würdest, deine diversen Applikationen genauer anzusehen, dann wärst du wohl überrascht, wie viele eine eigene JVM/die RTs mitbringen, da sie Java intensiv verwenden (nein, bei Tetris ist das natürlich nicht der Fall).


----------



## doop (9. Sep 2005)

yeTh7 hat gesagt.:
			
		

> Erklär mal einem Laien, dass er dafür die Virtual Machine braucht! Die häufigste Antwort ist wohl eher: "Wasn Mist, dein Prog geht nicht!"



Ein Bombenargument! Warum packst du die JVM nicht einfach mit in das Setup hinein, in dem du die SW an deine Laien auslieferst?


----------

