# Lohnt es sich noch ein neues Projekt in C++ anstatt Java zu realisieren?



## CPP_Frage (3. Mrz 2012)

Also ein Projekt das von Anfang an neu geschrieben wird und keine Altlasten mit sich schleppt?

Ein Projekt bei dem man auch die neuste C++ Norm nehmen kann, also ISO/IEC C++ 2011 und man nicht von alten Compilern abhängig ist.

Und ein Projekt mit dem man eine Endanwendersoftware realisieren möchte, genau genommen ein 2d CAD Programm.

Ein Projekt das unter Windows als auch Mac OS X und Linux funktionieren soll.


Würdet ihr bei diesen Bedingungen als Sprache noch C++ anstatt Java wählen oder doch eher Java den Vorzug lassen?

Ach ja, und wie würdet ihr eure Entscheidung für Java oder C++ begründen.


----------



## DanZ (3. Mrz 2012)

Wenn du Hunger hast, würdest du dann ein Döner oder eine Pizza kaufen?
Was ich damit sagen will... auf der Informationsbasis wirst du eine Antwort bekommen, die größtenteils geschmacksbasiert ist (und weil das hier ein Javaforum ist...)
Eine essentielle Frage ist, was für Anforderungen an das 2D CAD Programm gestellt werden. Welche Informationsmengen muss es verarbeiten, wie aufwendig ist die Grafik.
Außerdem ist nicht uninteressant ob du schon ein Team dafür hast und was die besser können. Ich vermute(!) du wirst mit den richtigen Libaries und Schnittstellen unter C++ eine deutlich bessere Grafikperformance erzielen können, aber wenn du ein paar Leute hast, die sich mit 2D Grafik unter Java richtig gut auskennen wird das Ergebnis trotzdem besser sein als das was durchschnittliche C++ Programmierer basteln. Und so weiter, so eine grundlegende Frage ist nicht einfach zu beantworten und sicherlich nicht aus den paar Sätzen ableitbar.


----------



## CPP_Frage (3. Mrz 2012)

Danke für die Antwort, ich habe die Frage ganz bewusst in einem Java und nicht in einem C++ Forum gestellt, weil ich mir dadurch eine objektivere Antwort erhoffe.
In einem C++ Forum wird C++ oft durch die rosarote Brille schön geredet, in einem Java Forum könnte ich mir das gleiche bezüglich Java auch vorstellen, deswegen erschien es mir besser in einem Forum in welchen C++ nicht heimisch ist, diese zugegebenermaßen subjektive Frage zu stellen.


Zu den Anforderungen um diese etwas besser einzugrenzen.

Natürlich zielt die Frage letzten Endes darauf ab, um herauszufinden, ob so ein Projekt später auch gut wartbar ist, wenn C++ als Sprache verwendet wurde.
Die Informationsmenge richtet sich eigentlich am Benutzer der Anwendung, je mehr Linien dieser zeichnet, desto größer sind natürlich die Informationsmengen. 
Da die Frage praxisorientiert sein soll, sollte das 2d CAD Programm somit also natürlich auch unter industriellen Bedingungen noch ordentlich arbeiten und da sind der Idee an der Anzahl an zu verwaltenden Informationsmengen natürlich keine Grenzen gesetzt.
Bezüglich der Grafikanbindung bietet es sich heutzutage natürlich an, alles mithilfe von OpenGL zu realisieren, auch wenn die Daten nur zweidimensional sind, so gewinnt man doch durch die Leistung moderner Grafikkarten deutlich an Leistung wenn man auf OpenGL anstatt Software Rendering aufbaut.
Natürlich würde man dann für C++ oder Java entsprechende Middleware/Libs etc. einsetzen um auf die OpenGL Funktionen zuzugreifen.

Bezüglich der Programmierer sollten wir bei der Frage von Programmierern ausgehen, die ihre jeweilige Sprache gut können, denn sonst wäre so ein Vergleich natürlich Unsinn.
Viel entscheidender ist IMO die Wartbarkeit.
Java hilft hier meiner Meinung nach sehr viel, allerdings muß man sich halt auch Fragen, ob dadurch eventuelle Performanceeinschnitte gerechtfertig sind, wenn es mit C++ performanter lösbar ist.


----------



## schalentier (3. Mrz 2012)

So wirst du garantiert zu keiner sinnvollen Antwort kommen ;-)

So, wie man in Java performante Software entwickeln kann, kann man auch in C++(11) sehr gut wartbaren Code produzieren. Andersrum gesagt, C++(11) Programme koennen genauso lahm sein, wie man write-only Code in Java schreiben kann. Alles ist moeglich.

Natuerlich gibts da Grenzgebiete. Wenn die Software mit sehr grossen Datenmengen arbeiten muss, wird sich der Einsatz von C++ lohnen, da du dort das Speichermanagement selbst machen kannst. In Java kaempfst du dann eigentlich immer gegen den Garbage Collector. Andersrum wuerde wohl niemand eine groessere Webapplication mit C++ starten, einfach weil dort die entsprechenden Libraries/Applicationserver fehlen. 

Die zentrale Frage die du dir stellen solltest, wo bekommst du entsprechend gute Leute her. Das Projekt steht und faellt mit dem Team. Dort sollte mindestens ein wirklich erfahrener Entwickler dabei sein, der die anderen Teammitglieder vernuenftig anleiten kann.


----------



## Gast2 (4. Mrz 2012)

Moin,

eigentlich sind da nur 2 Fragen wichtig


Was (bzw. welche Sprache) kann Dein Team
Welche externe Librarys existieren zur jeweiligen Sprache um die Sache zu vereinfachen

persönlich komme ich mit Qt sehr viel besser klar als mit Swing.

hand, mogel


----------

