Könnte man moderne Spiele in Java programmieren?

6 Antworten

Könnte man moderne Spiele in Java programmieren?

Ja.

Dabei, doch das nur am Rande, möchte ich einmal noch einwerfen, dass Spiele mehr von dem dahinterstehenden Konzept / der Spielidee leben sollten, als nur von der Grafik. Wobei auch diese - gerade bei 2D-Spielen, ausreichend schön sein kann.

Soweit ich weiß werden die meisten (...) Spiele (...), die aufwendige Grafiken beinhalten, meistens in reinen "Compiler-Sprachen" (...) programmiert.

Der Unterbau für solche Spiele, welcher Funktionalitäten wie die Soundwiedergabe oder das Grafikrendering übernimmt, wurde oft in C/C++ entwickelt. Die reine Beschreibung der Logik formuliert man hingegen eher in Skriptsprachen (Lua, Python, C-/JavaScript-ähnliche Sprachen, u.a.), um an dieser Stelle die Komplexität der Anwendung deutlich zu verringern.

(...) wäre es dann möglich, Titel wie Black Ops 4 (...) von Grund auf und einzige in Java zu schreiben?

Von Grund auf? APIs wie OpenGL oder Vulkan wurden in C entwickelt und nutzen Systembibliotheken / Treiber, um mit der Grafikkarte zu kommunizieren. Eine Implementation in Java würde zumindest verschiedene, kreative oder aufwendige Workarounds voraussetzen.

Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Ja.

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren?

Auch wenn Java eine recht schnelle Ausführungsgeschwindigkeit hat, wird es sicherlich Performanceeinbußen geben. Wie groß diese ausfallen, kann ich nicht so pauschal beantworten.

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte.

Fasse doch zunächst einmal konkret zusammen, was du mit der Sprache später erreichen möchtest. Wenn du sie nur für 1-2 Themengebiete brauchst, muss sie kein absoluter Allrounder sein.

Spiele kannst du auf jeden Fall mit Java entwickeln, Hilfstools gibt es dafür genügend. Man kann sowohl 2D- als auch 3D-Spiele zusammenbauen, LWJGL unterstützt inzwischen sogar die Vulkan API.

Doch die Performance-Frage würde ich zunächst gar nicht stellen, denn erst einmal müsstest du dazu kommen, in so eine Situation zu geraten und selbst dann gibt es gewiss Möglichkeiten, darauf zu reagieren.

Aber wenn du schon so kaum Zeit hast, wirst du bestimmt nicht Black Ops 6 entwickeln. Generell kommst du bei Spielen bereits so mit etlichen anderen Themengebieten in Kontakt (3D-Modellierung, Animation, Audiodesign, Leveldesign, UI-Design, etc.), sodass du im Vorfeld abwägen solltest, wo du am meisten Energie hineinstecken möchtest.

(...) in welcher Größenordnung liegen die Einbußen von Java?

Das ist fallabhängig.

Suche dir für konkrete Vergleiche verschiedene Benchmarks heraus. So spontan gegoogelt, stößt man bspw. auf diesen Testbericht.

Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt.

Das lässt sich zu vielen Sprachen sagen, aber ist auch mit Hürden verbunden. Natürlich kannst du mit C++ auch Webanwendungen entwickeln, du brauchst nur vorher einen passenden Server und musst dir evt. ebenso verschiedene Funktionen erst zusammenbasteln. Natürlich kannst du mit PHP Desktopanwendungen entwickeln, nur sind auch da die bisherigen bereits vorhandenen Lösungen noch etwas dünn gesät. Generell kannst du dir zu Java einen eigenen AOT-Compiler bauen, welcher fortan den Java-Code sofort in Maschinencode umwandelt.

Ein Treiber in Java, wäre das überhaupt möglich?

Ja.

Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht...

Ja, dem ist so.

Ich würde dir, wie schon oben geschrieben, raten, doch noch einmal genauer zu überlegen, was du denn später wirklich programmieren möchtest. Alles ist keine gute Eingrenzung und eines muss man sagen: Java ist bereits ein ziemlicher Allrounder - wäre somit also ganz sicher keine schlechte Wahl.

algorithmisches Programmieren: Geht mit allen Sprachen, insbesondere mit Java als auch mit C++

objektorientiertes Programmieren: Das wird mit Java von der Picke auf gelernt, teilweise völlig überzogen, aber dafür hat man es verstanden. Bei C++ ist Objektorientierung optional und sehr ähnlich, wenn man die zusätzlich möglichen, aber schweren Techniken außen vor lässt.

Strukturelles, lösungsorientiertes, pragmatisches Programmieren: Geht mit allen ernstzunehmenden Sprachen

hardwarenahes Programmieren: Hier ist mit Java mitunter die Grenze erreicht, wenn nicht gerade gute Bibliotheken angeboten werden, was aber nicht selten der Fall ist (aber nicht vollumfänglich, insbesondere kann man nicht beliebig in den Speicher schreiben). Mit C++ wahrt man sich hingegen die Freiheiten. Man muss die Hardware aber nicht unbedingt dadurch lernen, dass man mit C++ direkt in die Ports schreibt etc. Da helfen auch gute Bücher, um ein Verständnis zu entwickeln.

Ich finde an C++ einfach nichts schlechtes.

Doch, das Debuggen.

alleine schon was die Syntax angeht

Die Feinheiten vor allem.

Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Ist Schnuppe. Mit Java machst Du nichts falsch, hat sehr ausgeprägte OOP-Konzepte, eine sehr häufig angewandte Sprache mit hohem Marktanteil weltweit, die "Defizite" sind in der Regel gering. C++ ist nerdiger, man muss wahnsinnig viel ausprobieren, um dahinter zu kommen.

Es ist eher gleichgültig, womit Du zu programmieren anfängst. Was Du können musst ist

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich

Es geht Dir um die Sprache, die Du erlenen solltest. Du wirst als Softwareentwickler, falls Du das werden willst, mehrere Sprachen lernen. Daher solltest Du dich keine großen Gedanken darüber machen, mit welcher Sprache Du beginnst.

C++ ist schon ziemlich alt. Ich würde da eher auf die moderneren Alternativen setzen. Insbesondere die Sprachen Go und Rust sind einen Blick wert. Die Entwicklung von Software ist in C++ komplexer als in Java.

Java ist leicht zu erlernen und eine äußerst mächtige Sprache. Java wird fast überall eingesetzt. Java ist eine hybride Sprache und setzt sowohl Techniken ein, die von Compilersprachen bekannt sind als auch Techniken, die von Intererpretersprachen bekannt sind.

Ich sehe Java aber nicht als geeignete Sprache für die Entwicklung von komplexen Spielen. Hier ist C++ verbreitet. Ich sehe Java als eine Sprache an, die insbesondere im Backend zum Einsatz kommt, also Anwendungen, die auf irgendeinem Application Server laufen, womit der Endanwender nicht unmittelbar in Berührung kommt.

Des Weiteren kommt Java für die App-Entwicklung zum Einsatz.

Geht es dir um Software für Desktop-Computer, solltest Du dich mit C# (Windows) und C/GTK (Linux) vertraut machen.

Du gehst die Sache sehr allgemein an, wobei es einige sehr gute Antworten bereits gibt. Wie auch du feststellen wirst auch etwas wiedersprüchlich.

Während des Studiums lernte ich Java, noch wichtiger Softwareengineering. Denn insgesamt ist es relativ egal welche Programmiersprache man lernt. Als Anfänger und vor allem Allein wirst du niemals HighEnd Spiele Programmieren, die sowohl eine fabelhafte Grafik, Geschichte, Spiellogik/Steuerung, Sound etc. haben.

Persönlich muss ich sagen, dass ich fast schon froh bin als erstes Java gelernt zu haben.

Java Bücher:

Grundkurs Java, Dietmar Ratz

Java als erste Programmiersprache, Cornelia Heinisch

Beide Autoren haben einen lockeren Schreibstil und setzen 0 Programmierkenntnisse voraus. Was das neue lernen einfach macht.

Aktuell lerne ich C++, im Rahmen der Schulung (2 Mo) nutzen wir dafür das Buch

Der C++ Programmier, Ulrich Breymann

Ein sehr gutes Buch, soviel kann ich sagen. Doch verglichen zu den beiden Javabüchern sehr trocken um nicht zu sagen staubtrocken, teilweise schaffe ich nur 10 Seiten zzgl. zum Nachprogrammieren und Üben, parallel zu Schulung.

Eine positive Aussage unseres Dozenten war: Man kann heutzutage mit jeder Programmiersprache objektorientiert Programmieren.

Und das stimmt auch, wobei man natürlich wissen muss wo die Unterschiede sind. Warum gibt es in Java Interfaces, während C++ sie gar nicht kennt.

Das Thema Laufzeit wird tatsächlich erst bei HighEndGaming richtig relevant sein. Wobei ich persönlich das künstliche hochzüchten immer schneller, immer realer . .. als übertrieben finde. Ein sehr gutes Spiel hat für mich eine sehr gute Story und eine verständliche Steuerung für die man nicht erst ein Studium abschließen muss. Ansonsten kann eine Verwaltungssoftware sowohl in Java, C++ oder einer anderen Sprache geschrieben werden ohne einen großen Geschwindigkeitseinfluss überhaupt zu bemerken. Man darf heute nicht mehr mit Rechnern von 1990 vergleichen. Allein da die Rechner heute so schnell sind, dass die Laufzeit nicht mehr so ins Gewicht fallen sollte. Natürlich sollte man es nicht komplett vergessen darauf zu achten.

Sicher ist, wenn du wirklich programmieren willst, wirst du mehr als eine Programmiersprache lernen. Daran führt kein Weg vorbei. Mit welcher Sprache man anfängt ist dabei egal.

Woher ich das weiß:eigene Erfahrung
Soweit ich weiß werden die meisten der brandneuen Spiele, vor Allem die, die aufwendige Grafiken beinhalten, ...

Ich gehe aufgrund dieses Halbsatzes in meinen folgenden Ausführungen mal davon aus, dass es dir hauptsächlich um grafiklastige AAA-Titel geht.

Kurze Antwort: Nein, das ist mit Java nicht möglich. Deshalb gibt es solche Java-Spiele auch nicht. Vom Spielprinzip her interessante Spiele wie Minecraft gehen natürlich, aber Minecraft sieht nicht ohne Grund wie Minecraft aus. :)

Lange Antwort: Java ist und bleibt merklich langsamer als C++, vor allem wenn es um ganze Programme, und nicht nur um kurze Demo-Algorithmen mit ein paar Zeilen geht.

Allein schon die Tatsache, dass Javacode in einer "gemanageten Umgebung" ausgeführt wird und auf einen GC (Garbage Collector) angewiesen ist, der dir zu nicht-vorhersebahren Zeiten in den Fluss deines Programms eingreifen wird, verhindert, dass ein Spiel flüssig und ohne merkliche Ruckler laufen wird.

Du kannst den GC zwar auf einen eigenen CPU-Kern auslagern, aber selbst dann muss er in Echtzeit (!) mit den anderen Threads / Prozessen kommunizieren, und so eine IPC (Interprozesskommunikation) frisst enorm viele Ressourcen.

Dazu zählt auch der erhöhte Speicherverbrauch. Im Schnitt verbrät der GC bei Java ca. anderthalb mal so viel Speicher für das aufzuräumende Objekt, als dieses in Wirklichkeit an Speicher belegt. Und "Speicher reservieren" ist so ziemlich die aufwändigste Operation, die intern in einem Programm ablaufen kann und gerne mal einige tausend CPU-Takte andauert.

Deshalb gibt es bei solchen Java-Programmen oft Peaks, bei denen sich CPU-Auslastung und Speicherverbrauch gegenseitig hochschaukeln, und SO ETWAS will man gerade bei Spielen überhaupt nicht haben.

Frag dich einfach mal selbst, warum es keinen einzigen Triple-A-Titel mit Java gibt. Die werden alle mit C++ oder evtl. noch mit C# geschrieben.

Wobei bei C# ein ähnliches Problem wie bei Java existiert. Wenn ein C#-Spiel aber gerade mal noch so flüssig auf einem High-End-PC läuft, dann kannst du im Umkehrschluss davon ausgehen, dass das selbe Spiel mit C++ nochmal deutlich flüssiger und mit wesentlich mehr Freiraum nach oben laufen würde.

Anders herum wird ein Spiel, welches schon mit C++ hart an der Grenze ist, mit C# - und erst Recht mit Java - schlicht und ergreifend unspielbar sein, es sei denn, du stehst auf Dia-Shows. :)

Java ist zwar eine wunderbare Sprache, aber - schon allein vom Konzept und Sprachdesign her - für Spiele leider völlig ungeeignet. Klar, du wirst so etwas wie Supermario darin bauen, und auch einfache 3D-Szenen erstellen können, aber mach dir nichts vor: Früher oder später MUSST du zu C++ wechseln, falls du grafisch aufwändige Spiele entwickeln willst. (Oder auch C#, allerdings mit Abstrichen!)

Wenn du jetzt, mit dem Hauptziel "Spieleprogrammierung" Java lernst, dann garantiere ich dir, dass du dir später selbst in den Hintern beißen wirst, wegen der verschwendeten Zeit.

Du kannst zwar irgendwelche Engines nehmen, und deren API-Aufrufe mit Java (oder sogar Python) zusammen kleben, aber du wirst damit immer auf relativ niedrigem Niveau rumfrickeln und Programmiertechnisch nie richtig "Erwachsen" werden.

Wenn man die Sinnhaftigkeit aber mal außer Acht lässt und sich rein auf die Realisierbarkeit fokussiert, wäre es dann möglich, Titel wie Black Ops 4 Oder Battlefield 5 von Grund auf und einzige in Java zu schreiben?

Nein, völlig unmöglich. An so etwas wird auch den nächsten zich Jahren kein Weg an C++ vorbei führen.

Wie gesagt, du kannst einfache Spiele mit Java schreiben, aber vergleiche mal die Demos der gängigen Java-3D-Engines mit den von dir genannten Titeln. Da liegen Welten dazwischen!

Wie sähe es mit CAD-Anwendungen aus? Könnte Software, die mit Blender oder Photoshop verglichen werden kann, in Sprachen wie Java geschrieben werden?

Wenn die Software am Ende auch angenehm benutzbar sein soll, dann nicht. Falls du als Anwender ewig lange Wartezeiten und extremen RAM-Verbrauch gewöhnt bist, dann ja, allerdings mit Ausnahme von Blender, wofür Java wieder einfach zu ungeeignet ist.

Könnte man solche Projekte auch ohne größere Performanceeinbußen realisieren?

Nein, wie oben beschrieben, wird der RAM-Verbrauch durch die Decke gehen, und die CPU dein Arbeitszimmer auch im Winter schön warm halten. :)

Kann man das noch einigermaßen in Kauf nehmen?

Nein, bei den von dir genannten "Softwaren" ist die Grenze zum Zumutbaren bei weitem überschritten. So etwas schreibt man einfach nicht mit Java.

Mir geht es bei der Frage im Grunde genommen darum, mich endlich zu entscheiden welche Programmiersprache ich lernen möchte. 

Im Idealfall beide, Java UND C++, denn nur so kannst du dir ein Bild machen. Außerdem steht in allen Java-Büchern und -Tutorials gleich in der Einleitung immer wie toll performant Java doch ist und dass alle anderen Behauptungen nicht wirklich zutreffend sind. Als reiner Java-Entwickler gewöhnt man sich dann tatsächlich daran, und empfindet Java-Programme oft nicht mehr als sooooo langsam, wie sie in Wirklichkeit sind.

Irgendwann wirst du dann tolle "Tricks" lernen, mit denen man die Geschwidigkeit erhöhen kann, evtl. Dinge wie "Excelsior Jet" nutzen, und dir ständig selber einreden, dass es ja "alles nicht so schlimm" und eigentlich immer noch "ganz gut" ist.

Am Ende sitzt du dann da mit einer fetten Laufzeitumgebung, verglichen mit C++-Programmen exorbitant hohem RAM-Verbrauch, schmutzigen Hacks um die Geschwndigkeitsprobleme doch noch irgendwie in den Griff zu bekommen und machst dir selbst vor, dass die tagelangen Suchen nach Workarounds bei Performance-Problemen die Symptome "ausreichend gelindert" (aber eben nicht "behoben") haben.

Relativ schnell wirst du dann nicht mehr weiter kommen, weil nach oben hin eben keine Luft mehr zum atmen ist, und deine Software bei 95% RAM-Verbrauch auf 100% CPU läuft. Und das ist dann der Moment, an dem du dir denken wirst: "Hätte ich bei der Spieleprogrammierung doch lieber gleich auf etwas Richtiges gesetzt". Und dann wirst du höchstwahrscheinlich aufgeben oder - auch wenn die Wahrscheinlichkeit dazu sehr gering ist - dich nochmal zusammen reißen, und C++ von Anfang an richtig lernen.

Wie gesagt, Java ist ne super Sprache und damit kann man verdammt viele Dinge tun. Aber Spiele, Photoshop, CAD, Blender, etc. gehören eindeutig nicht dazu. Und nur weil "es geht" und es den ein oder anderen Proof-of-Concept dazu gibt, heißt es noch lange nicht, dass es so ordentlich oder vernünftig ist.

Java hat VIEL mehr Overhead als C++, und zwar in einem Maße, dass sich nicht kleinreden lässt. Dummerweise kommt es aber genau DARAUF an, bei Spielen oder grafisch aufwändiger Software.

Fazit: Du willst ganz eindeutig C++ lernen und Java NICHT nutzen, für das, was du vor hast! ;)

Und lass dich nicht von Pseudo-Benchmarks beeindrucken, welche die tausendste Fibonacci-Folge in Java und in C++ vergleichen, wobei Java "fast so gut" wie C++ sein wird. Solche Tests sind völlig unrealistisch und verzerren die Realität. Am Ende wird Java - realistisch betrachtet bei "echten" Herausforderungen - immer um den Faktor 10 bis 100 langsamer sein als C++. Da beißt die Maus keinen Faden ab. :)

Oh, dein Fragetext war ja noch gar nicht zu Ende ... dann mal weiter im Text ...

Aus zeitlichen Gründen und auch deshalb, weil es mich hinsichtlich meines Berufes überhaupt nicht tangiert möchte ich mich auf eine einzige Sprache beschränken und das dafür richtig machen.

Dann verschwende deine Zeit nicht mit Java, und fang mit C++ an, auch wenn C++ verglichen mit Java für Einsteiger merklich "fordernder" sein wird, aber es lohnt sich.

Dabei wollte ich wenn möglich eine Sprach die Alles erlaubt. Da kam mir als erstes Java in den Sinn.

Genau genommen ist C++ die Sprache, die alles erlaubt. Die Einsatzbereiche für Java liegen sehr sehr weit darunter!

Da kam mir als erstes Java in den Sinn. Läuft überall, ist der Hit, wenn es um Android geht, ...

Rein theoretisch läuft Java überall, praktisch betrachtet kannst du die gut unterstützen Plattformen an einer einzigen Hand ablesen. Denn Java läuft nur dort, wo es auch ein JRE gibt, und das sind - anders als in der Theorie - nur sehr wenige Plattformen.

Von gescheiterten Experimenten wie "Java auf Mikrocontrollern" reden wir jetzt mal nicht, denn dort gilt das bekannte "Compile once, run anywhere" überhaupt nicht mehr, weil solche Plattformen einfach zu speziell sind.

Und da du gerade von Android redest ... Spiele-Engines werden für Android in C++ geschrieben, wenn sie grafisch aufwändiger sind, weil es mit Java einfach gar nicht möglich wäre. Diese C++-Teile werden dann kompiliert, und in relativ dünnschichtige Java-Wrapper eingebettet, sodass du dein Spiel am Smartphone nutzen kannst. Für eines der gefühlt vielen millionen Memory-Spiele oder einen Poker-Klon brauchst du natürlich keine C++ Engine auf deinem Android gerät, aber bei allem was darüber hinaus geht schon ... vorausgesetzt, dich kümmert die Akkulaufzeit der Geräte deiner Nutzer und deren Temperatur. (Also die Temperatur der Geräte, nicht der Nutzer!) :)

Ein Treiber in Java, wäre das überhaupt möglich?

Ohne da jetzt auf technische Details einzugehen: Realistisch betrachtet, Nein. :)

Hier haben Sprachen wie C++ tatsächlich die Nase vorne, aber auch da hat man, in den Bereichen wo Assembler eingesetzt wird, Grenzen.

In den 90ern habe ich meinen C++ Code noch hin und wieder mit Inline-Assembler "aufgehübscht", aber das ist heutzutage (fast) nicht mehr nötig.

Im Grund genommen ist das, wonach ich suche wahrscheinlich genau C++, ...

Das hast du richtig erkannt. In deinem Fall führt kein Weg an C++ vorbei.

... man kann sich ja, soweit ich weiß, auch selbst Laufzeitumgebungen basteln oder mit virtuellen Maschinen arbeiten, so dass der Großteil vom Code auch systemübergreifend funktioniert.

C++ Compiler gibt es für VIEL mehr Plattformen, als es JREs für Java gibt. Da mach dir um die Portabilität mal keine Gedanken.

Und das mit den "virtuellen Maschinen" hast du evtl. etwas falsch verstanden. Damit sind in erster Linie keine Dinge wie VMware oder VirtualBox gemeint, sondern ein Entwurfsmuster. Eine VM in C++ zu schreiben geht auf unter 100 Zeilen Code, vorausgesetzt es ist eine recht einfache.

Je nach Anforderung sind VMs in C++ höchst performant und werden gerade bei Spielen gern eingesetzt, um Dinge zu automatisieren, die in einer "geschlossenen Umgebung" lauffähig sein sollen.

Nebenbei bemerkt kannst du genauso gut in Java eine VM bauen, was ich auch schon oft getan habe. Wie gesagt, da ist nichts magisches dran. Es ist einfach nur eine Herangehensweise, ein Problem zu lösen. :)

Ich finde an C++ einfach nichts schlechtes. Allerdings hat mich schon der erste Blick in ein C++ Buch vollständig demotiviert.

Wenn du als Anfänger ein Fachbuch in der Mitte oder weiter hinten aufschlägst, wirst du grundsätzlich nichts verstehen, völlig unabhängig vom Thema (auch über die Programmierung hinaus).

Aber dafür sind Lehrbücher ja da: Dass sie dir Dinge von Anfang an, Schritt für Schritt, erklären.

Deshalb lass dich nicht von den hinteren Kapiteln schockieren, sondern fang beim Vorwort an, und arbeite dich dann Seite für Seite voran. Irgendwann bist du mit dem Buch durch, und wunderst dich, warum du vorher so große Angst davor hattest. :)

Es scheint mir so, als sei es um einiges schwieriger als Java, alleine schon was die Syntax angeht...

Die Syntax bei C++ bietet viel mehr Optimierungspotential als bei Java, und legt dir damit ein sehr mächtiges Werkzeug in die Hand.

Aber das tolle ist: Du musst dieses Werkzeug nicht nutzen, wenn es dich - zumindest am Anfang noch - überfordert.

Und was noch toller ist: Viele syntaktische Konstrukte sind einfacher und kürzer als bei Java! Allein die Mögilchkeit, Operatoren zu überladen, erlaubt dir, wesentlich lesbareren Code zu schreiben. :)

Außerdem ist weder Java, noch C++, für Anfänger entwickelt worden, sondern für Leute, die diese Sprachen größtenteils im Blut haben und damit gut umgehen können.

Und jemand der gut C++ kann, wird C++ Code auch lesen können. Genauso wie jemand, der gut Java kann, auch Java-Code lesen kann.

Du lernst die Sprachen ja nicht, um dein Leben lang Anfänger zu bleiben, sondern um damit "professionell arbeiten" zu können. Und so jemand hat auch keine Probleme mit der Syntax, auch wenn es für ihn als Anfänger früher mal alles furchtbar kompliziert erschien. :)

Lohnt es sich, wenn man sich den Weg zu aufwendigen Anwendungen offen halten möchte, C++ zu lernen, oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Für das, was du unter "aufwendigen Anwendungen" verstehst, hast du gar keine andere Wahl als C++, von daher stellt sich die Frage gar nicht.

Falls du wirklich versuchen solltest, so etwas mit Java zu realisieren, wirst du am Ende mit einer aufgeblasenen, von Abhängigkeiten strotzenden, langsamen, Speicher fressenden, im besten Falle "mittelmäßigen" Anwendung stehen.

Wenn du natürlich nur ein einfaches ERP-System mit Datenbankanbindung für ein mittelständisches Unternehmen bauen willst, kannste gerne Java nehmen. Dabei machen sich die Nachteile dieser Sprache / Laufzeitumgebung kaum bemerkbar, aber AAA-Titel? Das wird nix werden! ;)

... oder sind die Defizite von Java so gering, dass man es sich beim Lernen leichter machen sollte.

Wie gesagt, Java lernen lohnt sich in jedem Falle! Aber da du ja angibst wenig Zeit zu haben und nur eine Sprache wählen kannst, fällt Java leider weg, auch wenn es leichter als C++ sein wird, aber für dein Vorhaben eben alles andere als geeignet ist. :)

So, das war mein Roman zu dem Thema! ;)

Du musst jetzt selbst entscheiden, wofür du dich entscheidest.

Viel Spaß damit, was auch immer du tun wirst! ;)

Woher ich das weiß:Berufserfahrung

FaTech  06.01.2021, 12:41
es sei denn, du stehst auf Dia-Shows. :)

HEY! Nichts gegen Diashows 🤣

0