ich habe mich neulich dazu entschlossen, Java oder C++ zu lernen. Dass sowohl Java als auch C++ Vor- und Nachteile haben weiß ich, das ließt man ja überall. Java gefällt mir - jetzt zumindest - besser, weshalb ich mich auch dafür entschieden habe.
Nur ein paar allgemeine kleine Fragen (so blöd die auch klingen mögen) zu Java habe ich doch noch.
Erstmal: Wenn man sich mal die "bekannten" 3D PC-Spiele (z.B. World of Warcraft, die Half Life 2-Fammilie oder auch Siedler, Anno usw.) anschaut, sind diese ja oft in C++ geschrieben. Ist Java für 3D-Spieleentwicklung nicht beonders geeignet oder hat das andere Gründe? (Spielentwicklung soll natürlich nicht mein Ansatz sein, interessiert mich nur gerade).
Und: Muss, um fertige Java-Programme (also als .exe) Java auf dem Rechner installiert sein? Angenommen, man schreibt einen billigen Taschenrechner und dieser läuft dann nur auf PCs, auf denen Java läuft. Das is dann irgendwie doch blöd. =)
Zu 1. hab ich keine Idee, zu 2) schon. Im Prinzip sollte audf den Rehcnern Java sein, das ist gerade ien Vorteil von Java, dass es Plattformunabhängig ist.
Eine fertige Java-Datei ist eine .jar Datei, keine exe Datei, deshalb kann man sie auch auf Linux ausfürhen.
Mabn kann allerdings auch noch die Java-Datei zu einer exe Kompillieren, die dann kein Java braucht, allerdings geht dann die Plattformunabhängigkeit verloren
Es gibt auch Projekte, die sich mit 3D beschäftigen, warum es allerdings so wenige sind und man sich in diesem Sektor doch eher für C/C++ entscheidet, kann ich nicht sagen.
Blöd ist, wenn man ein tolles Programm geschrieben hat und es nur auf einer Plattform ausführen kann...
Wenn du dein Programm mit Webstart auslieferst, kann es neben der Installation und Update deines Programms auch gleich die JRE-Installation mit übernehmen, sofern auf dem Zielrechner keine installiert ist.
Also hat man die Möglichkeit, ein Programm (plattformunabhängig) als .jar und für Leute, die kein Java installiert haben, aber plattformabhängig als .exe anzubieten?
Mabn kann allerdings auch noch die Java-Datei zu einer exe Kompillieren, die dann kein Java braucht, allerdings geht dann die Plattformunabhängigkeit verloren
Gut, vielen dank.
Also hat man die Möglichkeit, ein Programm (plattformunabhängig) als .jar und für Leute, die kein Java installiert haben, aber plattformabhängig als .exe anzubieten?
Im Prinzip schon, sollte aber nicht dein Weg sein! :noe:
Im exe-Fall wird dein Programm, auch wenn du nur ein paar Zeilen Code für ein Hello World schreibst, gleich ca. 30MB groß sein...
Ist Java für 3D-Spieleentwicklung nicht beonders geeignet oder hat das andere Gründe? (Spielentwicklung soll natürlich nicht mein Ansatz sein, interessiert mich nur gerade).
- C++ ist doch noch ein Quäntchen schneller als Java, und hier kommt es eben auf jedes Quäntchen an Selbst bei so grausiger Grafik wie bei World of Warcraft - das würde auf einem modernen Computer genausogut laufen, wenn es in Java geschrieben wäre, es soll aber auch auf möglichst alten Rechnern funktionieren.
- Spieleprogrammierung ist sehr hardwarenah, da man versucht möglichst viele Berechnungen in der Grafikkarte ablaufen zu lassen. Diese Programmteile muss man sowieso in C(++) schreiben.
L-ectron-X hat gesagt.:
Es gibt auch Projekte, die sich mit 3D beschäftigen
Ich hab gehört dieses "C++ ist schneller" ist ein veraltetes Statement, das lange nicht mehr zutrifft.
Kommt aus der Zeit als Java rauskam.
Aber Video-Spiele...wer will das heute denn noch machen? Alle Spiele heutzutage
sind verbuggte Mangelware, da geht es nicht drum etwas gutes zu programmieren
sondern es zum Release zu schaffen.
Die meisten Spiele kommen heute in den Laden mit einem Release Patch von 500MB
in der Packung...
Die wirklich witzigen Spiele sind keine 3d-Monster, zB x-moto usw.
Und sowas kannste 1a mit Java programmieren!
Zum ersten punkt sollte man vielleicht auch noch Bytonic Software erwähnen.
Ein Problem war bis von nicht allzu langer Zeit, dass man mit Java nicht auf die wirklich Hardwarenahen Funktionen der Grafikkarte zugreifen konnte. Das Argument ist aber (in gewissen Grenzen) obsolet, weil man mit JOGL inzwischen praktisch alles machen kann (siehe https://jogl-demos.dev.java.net/ ) - man kann sogar GLSL Shader laufen lassen (und die Entwicklung ist ist teilweise vielleicht sogar bequemer, als mit C++). Trotzdem gibt es einen Nachteil: Wenn etwas "neues" kommt, muss man immer warten, bis jemand eine Java-Anbindung dafür schreibt. Konkretes Beispiel: Wenn man was mit CUDA machen will, kommt man um C++ noch nicht drumrum...