Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine allgemeine Frage zu Java. Warum werden heutzutage für moderne, grafikaufwendige Spiele nicht mit Java geschrieben sondern meist mit anderen Programmiersprachen? Ist Java nicht geeignet für Spiele oder gibt es irgendeine Einschränkung bei Java?
Würde mich mal interessieren, warum das so ist.
Java ist z.B. nicht so schnell, wie c++. Und ich glaube, die meisten Engines sind auch in c++ geschrieben, weshalb es in der Branche eher anzutreffen ist.
Mhmm, Java selber ist erst mal gar nicht lastig. Aber die Anwendungen die du damit schreibst sind dann entweder Datenbank- oder Festplattenlastig oder auch Netzwerklastig wenn viel Kommunikation mit anderen System stattfindet oder aber auch CPU-lastig wenn viel "gerechnet" wird. Und Spiele sind wohl hauptsächlich grafiklastig und da ist es sicher performanter sehr hardwarenah mit C oder C++ zu programmieren.
Da die meiste Arbeit eh auf der GPU (=Graphikkarte) läuft, ist es ansich erst mal egal mit welcher Sprache der Code geschrieben ist, der die GPU mit Befehlen füttert. Die GPU will ja bloß einen Block aus Daten und Anweisungen was sie damit machen soll.
Unter C/C++ hat man es aber einfacher, die Daten für die GPU passend zusammen zu bauen. Da kann man einfach eine struct erstellen wie z.B.
Code:
struct Vertex {
struct Position {
float x, y, z;
}
struct Texture {
float u, v;
}
struct Color {
uint8_t r, g, b, a;
}
}
Unter Java kann man so eine Datenstruktur nicht so ohne weiteres abbilden. Dadurch wird ein relativ wichtiger Teil in einer Engine schonmal ein Stückchen aufwendiger. Geht natürlich auch, ist halt aufwendiger als einfach Daten per Zeiger und memcpy rumzuschieben.
Soweit zur Engine. Ein paar Java-basierte Engines gibts ja trotzdem. Und wenn man sich nicht mehr drum kümmern muss, selbst Vertexbuffer und Texturen hin und her zu schieben, kann man den Rest von einem Spiel durchaus auch in Java schreiben. Die Performance von Java hängt ja im Wesentlichen daran wie gut die JVM optimiert. Kenne zwar grade keine aktuellen Statistiken, aber ansich sind die VMs ja schon ziemlich gut, so daß der Unterschied zu nativ eigentlich nicht mehr sehr groß sein dürfte.
Unter C++ gibts aber auch noch ein paar andere Tricks, die man unter Java nicht hat, aber das bezieht sich ja nicht nur auf Spiele.
Man kann in jeder Sprache spiele programmieren. Die A+++ Spiele werden heutzutage mit den Sprachen entwickelt in den die meiste Erfahrung vorhanden ist und da sich vor Jahre C++ etabliert hat ist das noch der Platzhirsch.
Man kann aber auch mit Java sehr gute Spiele entwickelt, vor Allem auch mobile Anwendungen.
Falls du dich für die Spieleprogramierung in Java interessierst kann ich dir nur libgdx ans Herz legen: https://libgdx.badlogicgames.com/