Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 30.01.2010, 11:29
Hallo!
Ich habe für das Thema hier extra einen neuen Thread aufgemacht, da ich befürchte, wenn ich diese Nachricht in "Komplexität" poste, dies das Thema durch einen FlameWar á la Java vs C++ untergraben würde.
Die Diskussion unter "Komplexität" hat mich doch ganz schön verunsichert, denn auch wenn ich früher absoluter C++ Anhänger war (ich habe schließlich damit angefangen) so muß ich sagen, hat mir Java doch sehr gut gefallen!
Ich habe für ein Projekt auf meiner Arbeit, wo ich ein einfaches Programm mit GUI-Steuerung entwickelen sollte, einfach mal zum Spaß Java ausprobiert, und ich war begeistert.
Auch wenn ich vorher noch nie etwas in Java programmiert hatte, so habe ich doch in atemberaubender Zeit das Programm fertig bekommen. Ich habe ca. 1/5 der Zeit gebraucht, die ich in C++ gebraucht hätte. Das lag vor allem daran, dass Java für mich viel konsistenter und damit einfacher und klarer zu programmieren war. Das traf vor allem auf das GUI-Konzept und die Thread-Steuerung zu. Wenn ich daran denke das Programm wie früher in C++ mit der MFC, oder komplizierten 3th-Party-GUI-Libs programmieren zu müssen, ohne GUI-Editor, oh mein Gott.
Auch der Programmtext war viel übersichtlicher, immerhin habe ich nur in einem Editor programmieren können (keine IDE). Natürlich gab es auch einige Nachteile. Am Ende hat mich die VM ganz schön ins Schwitzen gebracht. Zwar gabs keine Speicherlecks an sich, aber ich mußte sehr große Bilddaten verarbeiten, das bringt den Speichermanager schon schnell an den Rand seiner Möglichkeiten (ich konnte die Freigabe des Speichers nicht steuern), außerdem wäre hier eine Hardware-Beschleunigung gut gewesen, die VM war doch recht langsam.
Zusammengefaßt muß ich sagen, das ich Java in den letzten Jahren sehr unterschätzt habe. Ich finde schon, dass man merkt, dass die Sprache sehr durchdacht und konsistent ist, was das Programmieren sehr vereinfacht. Wenn ich also kleine GUI-Anwendungen schreiben soll, z.B. um meinen Workflow auf der Arbeit zu verbessern, dann geht das mit Java viel schneller. Mit C++ wäre der Aufwand das Programm zu schreiben meistens genauso groß, wie die Arbeitsersparnis, welche mir das Programm bringt. In diesem Fall würde ich Java inzwischen immer vorziehen.
Trotzdem gibs auch hier negative Seiten, ich muß auf jedem Computer die VM installieren (sehr mühsam, da ich nicht immer die Zugriffsrechte habe, die Installation nicht so easy läuft, wie man denkt und die Besitzer gegen zusätzliche Software immer Vorbehalte haben).
Bei Software die große Datenmengen verwaltet und schwierige Rechnungen ausführt (FFT auf 100-250 MB Daten) ist Java leider aufgrund der VM (Geschwindigkeit) und dem Garbage-Controller (nicht kontrollierbar) leider nicht so gut geeignet, da ist C++ viel besser.
Gibt es eigentlich einen Compiler, der aus JAVA-Code einfach ein ganz normales Programm ohne VM erzeugt? Und warum kann man den Garbage-Controller nicht zwingen was freizugeben, das würde viele Probleme, die ich mit Java habe schon lösen.
Viele Grüße
Stephan
Ich habe für das Thema hier extra einen neuen Thread aufgemacht, da ich befürchte, wenn ich diese Nachricht in "Komplexität" poste, dies das Thema durch einen FlameWar á la Java vs C++ untergraben würde.
Die Diskussion unter "Komplexität" hat mich doch ganz schön verunsichert, denn auch wenn ich früher absoluter C++ Anhänger war (ich habe schließlich damit angefangen) so muß ich sagen, hat mir Java doch sehr gut gefallen!
Ich habe für ein Projekt auf meiner Arbeit, wo ich ein einfaches Programm mit GUI-Steuerung entwickelen sollte, einfach mal zum Spaß Java ausprobiert, und ich war begeistert.
Auch wenn ich vorher noch nie etwas in Java programmiert hatte, so habe ich doch in atemberaubender Zeit das Programm fertig bekommen. Ich habe ca. 1/5 der Zeit gebraucht, die ich in C++ gebraucht hätte. Das lag vor allem daran, dass Java für mich viel konsistenter und damit einfacher und klarer zu programmieren war. Das traf vor allem auf das GUI-Konzept und die Thread-Steuerung zu. Wenn ich daran denke das Programm wie früher in C++ mit der MFC, oder komplizierten 3th-Party-GUI-Libs programmieren zu müssen, ohne GUI-Editor, oh mein Gott.
Auch der Programmtext war viel übersichtlicher, immerhin habe ich nur in einem Editor programmieren können (keine IDE). Natürlich gab es auch einige Nachteile. Am Ende hat mich die VM ganz schön ins Schwitzen gebracht. Zwar gabs keine Speicherlecks an sich, aber ich mußte sehr große Bilddaten verarbeiten, das bringt den Speichermanager schon schnell an den Rand seiner Möglichkeiten (ich konnte die Freigabe des Speichers nicht steuern), außerdem wäre hier eine Hardware-Beschleunigung gut gewesen, die VM war doch recht langsam.
Zusammengefaßt muß ich sagen, das ich Java in den letzten Jahren sehr unterschätzt habe. Ich finde schon, dass man merkt, dass die Sprache sehr durchdacht und konsistent ist, was das Programmieren sehr vereinfacht. Wenn ich also kleine GUI-Anwendungen schreiben soll, z.B. um meinen Workflow auf der Arbeit zu verbessern, dann geht das mit Java viel schneller. Mit C++ wäre der Aufwand das Programm zu schreiben meistens genauso groß, wie die Arbeitsersparnis, welche mir das Programm bringt. In diesem Fall würde ich Java inzwischen immer vorziehen.
Trotzdem gibs auch hier negative Seiten, ich muß auf jedem Computer die VM installieren (sehr mühsam, da ich nicht immer die Zugriffsrechte habe, die Installation nicht so easy läuft, wie man denkt und die Besitzer gegen zusätzliche Software immer Vorbehalte haben).
Bei Software die große Datenmengen verwaltet und schwierige Rechnungen ausführt (FFT auf 100-250 MB Daten) ist Java leider aufgrund der VM (Geschwindigkeit) und dem Garbage-Controller (nicht kontrollierbar) leider nicht so gut geeignet, da ist C++ viel besser.
Gibt es eigentlich einen Compiler, der aus JAVA-Code einfach ein ganz normales Programm ohne VM erzeugt? Und warum kann man den Garbage-Controller nicht zwingen was freizugeben, das würde viele Probleme, die ich mit Java habe schon lösen.
Viele Grüße
Stephan