Warum ist Java so langsam und unflexibel?
-
Original erstellt von HumeSikkins:
**
Warum kommt auf die Frage "Warum ist Java so langsam und unflexibel?" sofort C++ ins Spiel obwohl die Frage doch eigentlich gar keinen Vergleich suggeriert?
**Eine Beschreibung, wie "ist langsam" ist IMHO immer realtiv. ...und um soetwas zu verifizieren, muss man sich natürlich an einer anderen Sprache orientieren. Natürlich nimmt man sich da eine, die als schnell gilt, aber trotzdem halbwegs ähnlich ist. Da kommt also nur C++ in Frage. C# gilt nicht als schnell (IMHO).
-
Natürlich nimmt man sich da eine, die als schnell gilt, aber trotzdem halbwegs ähnlich ist.
In welcher Hinsicht ist Java zu C++ ähnlich. Vielleicht weil beide geschweifte Klammern für Blöcken verwenden?
Mal ehrlich.
Java fehlt so ziemlich jedes Feature was C++ zu etwas besonderem macht (diese Aussage ist *nicht* wertend gemeint). Das C und C++ Ähnlichkeiten aufweisen sehe ich ja noch ein. Die Ähnlichkeiten zwischen Java und C++ sind IMO aber mehr syntaktisch als alles andere.Wenn schon Vergleich, dann wäre ein Vergleich mit Modula-3 oder C# deutlich
angebrachter.Oder willst du auf den berühmten Spruch:
"Java has the blazing speed of Smalltalk and the elegant simplicity of C++."
hinaus
[ Dieser Beitrag wurde am 20.05.2003 um 19:11 Uhr von HumeSikkins editiert. ]
-
Original erstellt von HumeSikkins:
**
In welcher Hinsicht ist Java zu C++ ähnlich.**In vielerlei Hinsicht. Zum Beispiel überschneiden sich die Anwendungsgebiete in großen Bereichen. Das reicht ansich schon aus, um einen Vergleich zu rechtfertigen.
...abgesehen davon, möchte ich dich bitten, zum eigentlichen Thema zurückzukommen. Es geht hier um Java. C++ wurde nur genutzt, um einen Mißstand bei Java zu demonstrieren.
[ Dieser Beitrag wurde am 20.05.2003 um 20:04 Uhr von Gregor editiert. ]
-
Zum Beispiel überschneiden sich die Anwendungsgebiete in großen Bereichen.
IMO aber mehr weil einige denken sie müssten alle Probleme mit Java lösen (bzw. andersherum mit C++).
Das sich die Anwendungsgebiete überschneiden ist für mich also kein Zeichen dafür, dass die Sprachen ähnlich sind. Eher ein Zeichen dafür, dass die Sprachen ähnlich beliebt sind....abgesehen davon, möchte ich dich bitten, zum eigentlichen Thema zurückzukommen. Es geht hier um Java. C++ wurde nur genutzt, um einen Mißstand bei Java zu demonstrieren.
Achso. Jetzt bin ich schuld. Das ist interessant. Naja, dann entschuldige ich mich dafür, dass ich mich hier mit einer völlig ernstgemeinten Frage beteiligit habe.
-
Original erstellt von HumeSikkins:
**
Achso. Jetzt bin ich schuld. Das ist interessant. Naja, dann entschuldige ich mich dafür, dass ich mich hier mit einer völlig ernstgemeinten Frage beteiligit habe.
**Sorry, das ist ja keine Schuldfrage oder so, aber in diesem Thread ging es ursprünglich um etwas anderes. Du hast mein Beispiel genutzt, um das Thema zu wechseln und ich habe dir auf deine Frage eine IMHO verständliche Antwort gegeben, die auch nicht in diesen Thread gehört. Wenn du das Thema weiter erörtern möchtest, dann mach bitte einen separaten Thread im "Rund um..."-Forum auf.
-
Die Frage lautet: "Warum ist Java so langsam und unflexibel?".
Du antwortest u.A. mit einem völlig schwachsinnigen C++ Programm (das Java-Programm möchte ich nicht beurteilen. Das soll jemand tun der sich mit Java besser auskennt). Ich frage nach, warum aus der Frage ein Java vs. C++ Ding wird und dann wird mir vorgeworfen, dass ich das Thema gewechselt habe. Das kann ich nicht nachvollziehen. Wenn du dich hier schon großvatermäßig aufspielst, dann solltest du auch berücksichtigen, dass du der erste warst, der das Thema auf eine andere Ebene befördert hat.Allerdings verstehe ich so oder so nicht, wo hier eigentlich das Problem ist.
-
Original erstellt von HumeSikkins:
**
Allerdings verstehe ich so oder so nicht, wo hier eigentlich das Problem ist.**Wenn du nicht verstanden hast, worauf es bei den beiden Programmen ankommt, dann halte dich raus.
Es geht mir um die teilweise umständlich zu nutzenden Container in der Standardbibliothek von Java, die zudem von der Leistung her auf dem Nullpunkt liegen. ...um zu zeigen, dass sie langsam sind, muss man zeigen, dass es auch deutlich schneller geht.
Wenn du dich hier schon großvatermäßig aufspielst,...
...und sicherlich steht es dir nicht zu, zu beurteilen, inwiefern ich mich wie ein Großvater aufführe. Ich habe dich um etwas gebeten, was dich scheinbar nicht interessiert. OK, dann eben nicht! ...aber diese Vergleichsfrage interessiert mich hier nicht, ich werde mich dazu also auch nicht mehr äußern.
...aber was rege ich mich eigentlich auf?! Für Java gibt es ja inzwischen ein deutlich besseres Forum. Ich denke, ich werde mich in Zukunft deutlich von diesem Forum weg, hin zum anderen Forum bewegen!
-
Original erstellt von Gregor:
...aber was rege ich mich eigentlich auf?! Für Java gibt es ja inzwischen ein deutlich besseres Forum. Ich denke, ich werde mich in Zukunft deutlich von diesem Forum weg, hin zum anderen Forum bewegen!äh.
lern einfach c++ oder ne andere ordentliche sprache, dann darfste auch hier bleiben.
-
Original erstellt von volkard:
**
lern einfach c++ oder ne andere ordentliche sprache, dann darfste auch hier bleiben.**OK! ...aber für Java werde ich trotzdem wechseln!
-
ich mag pascal
*duck*
ps: abhauen gildet nicht, sonst wirds hier ja langweilig.
-
Wenn du nicht verstanden hast, worauf es bei den beiden Programmen ankommt, dann halte dich raus.
Ich denke schon das ich verstanden habe worauf es ankommt. Das ist ja gerade das Problem
Wenn man schon versucht zwei Sprachen zu vergleichen, dann sollte man dies schon ordentlich machen.aber diese Vergleichsfrage interessiert mich hier nicht
Warst du nichr derjenige der aus der Frage eine Vergleichsfrage gemacht hat?
...aber was rege ich mich eigentlich auf?!
Das ist genau das was ich auch nicht verstehe. Ich habe deine heilige Kuh nicht geschlachtet. Nicht mal angefasst oder angesehen.
Ich denke, ich werde mich in Zukunft deutlich von diesem Forum weg, hin zum anderen Forum bewegen
Aha.
Aber doch hoffentlich nicht, weil ich hier mal eine Frage gestellt habe, oder?
Naja, wie auch immer: Das du mit dem Gedanken spielst dich von diesem Forum weg zu bewegen ist definitv schade für das Forum und alle die von deinen Antworten profitieren, mir ist allerdings nicht klar, was diese Aussage mit diesem Thread zu tun hat, oder worüber du dich hier aufregst....und sicherlich steht es dir nicht zu, zu beurteilen, inwiefern ich mich wie ein Großvater aufführe
Irgendwie verdrehst du hier schon wieder was. Meine Aussage war eine *Reaktion*. Bevor du also darüber sinierst was mir zusteht oder nicht, solltest du vielleicht erstmal prüfen auf was ich reagiert habe.
-
Original erstellt von elise:
ich mag pascalund lisp lässt du links liegen? du hast kein hertz! *g*
-
Gregor bleib hier!!!
-
Original erstellt von HumeSikkins:
**
Aber doch hoffentlich nicht, weil ich hier mal eine Frage gestellt habe, oder?**Nein, das hat eigentlich nichts mit diesem Thread zu tun! ...ich habe ja auch schon seit ein paar Tagen keine sinnvolle Frage zu Java mehr in diesem Javaforum beantwortet.
-
@Gregor:
Du kannst Java und C++ nicht vergleichen nur weil die Sprachen syntaktisch
ähnlich sind. Der Vergleich Java C# wäre hier deutlich passender.Java ist natürlich langsamer als C++, da Java durch das Sandbox-Konzept
Sicherheitsabfragen mitbringt die C in dieser Form nicht kennt, auch ist Java
langsamer weil der Code nicht Kompiliert sondern Interpretiert wird und damit
(und das ist der Knackpunkt) Plattformunabhängig ist.Wo Java unflexibel ist wüsste ich allerdings auch gerne; Java mag zwar auf
den ersten Blick so erscheinen, das liegt meistens jedoch wieder daran, dass
die 'Sandbox' greift und einige Details aus Sicherheitsgründen umständlicher
integriert werden müssen.Dafür hat Java aber die 'ästhetischere' Syntax
-
Original erstellt von HumeSikkins:
Wenn man schon versucht zwei Sprachen zu vergleichen, dann sollte man dies schon ordentlich machen.Jedesmal ein Buch zu schreiben wenn man 2 Sprachen in einer Eigenheit vergleichen will ist dann doch a bissel anstrengend.
Ist halt ein Forum wo man sich auch mal ab und zu mit Code-Schnipsel beschmeißt.
Vergleich mit C++ ist ok, man kann sich am ehesten was drunter vorstellen weil C++ und Java recht verbreitet sind, mit Modula-3 können net so viele was anfangen.Gab ja schon ein paar Millionen Threads zu den Thema, wenn ich mich recht entsinnen hast du dich doch sonst auch net so geziert...
bis dänn, O'Dog (ganz schön laut hier:))
-
Original erstellt von <Khadgar>:
**
Java ist natürlich langsamer als C++, da Java durch das Sandbox-Konzept
Sicherheitsabfragen mitbringt die C in dieser Form nicht kennt, auch ist Java
langsamer weil der Code nicht Kompiliert sondern Interpretiert wird und damit
(und das ist der Knackpunkt) Plattformunabhängig ist.**Das ist hier alles nicht das Problem.
Das Problem ist:
Es gibt keine Container für primitive Typen.
-> Wrapper müssen genutzt werden.
-> Zeitbedarf für Erzeugung der Wrapper + nachherige Extraktion des Wertes.
-> Wrapper sind Objekte -> Speicheroverhead.
-> Ein Integer-Objekt benötigt AFAIK über 20 Byte.
-> Weiterer Speicheroverhead durch die Listenelemente.
-> Programm wird speicherlastig -> Speicher ist langsam -> Programm auch.[ Dieser Beitrag wurde am 21.05.2003 um 23:05 Uhr von Gregor editiert. ]
-
ja und das ist doch wohl ein nachteil -- allerdings nur bis 1.5
mit templates
da wird schaetz ich mal dann auch noch quasi die STL nachgebaut und schon kann man die vergleiche eher anstellen als jetztfrag mich ja ob die templates auch fuer einfache datentypen funktionieren werden oder ob ich wieder alles Wrappen muss
hab mich ehrlich gesagt noch nicht zuviel damit auseinandergesetzt@Khadgar: kleiner nachtrag -- java ist NICHT plattformunabhaengig, sondern die VM ist eine eigene plattform
so zumindest definiere ich das gerne weil es halt anders als die uebliche plattformunabhaengigkeit von ANSI-C / ANSI C++ istgreets from the brits
gomberl
-
Hidiho,
ohne den Flamewar von neuem anzustoßen.... ich finde gerade den Vergleich mit C++ an dieser Stelle und vor allem über dieses Thema sehr sinnvoll.
Container sind eben das, was man in entsprechenden Softwaresystemen ausgiebig nutzt und wenn's da Performanceeinbußen gibt, ist das schon sinnvoll mal herauszustellen.
Zu dem Thema Plattformunabhängigkeit, Ähnlichkeit und Deckungsgleichheit der Anwendungsgebiete, gibt es IMO einige Punkte, die ich jetzt nur in den Raum werfen mag, da es sich vielleicht nicht um wirkliche Begründungen, aber Selbstverständlichkeiten aus der Praxis handelt.
* große Softwaresysteme werden heutzutage in C++ oder Java erstellt
* viele der C++ Programme werden mit Qt oder wxWindows,... geschrieben und dann portiert, um eben >>plattformunabhängig<< zur verfügung zu stehen
* beide Sprachen sind moderne Hochsprachen und benutzen den objektorientierten Ansatz
* ähnliche Softwaresysteme werden von der einen Firma in Java, von der anderen in C++ implementiertAus theoretischer Betrachtung heraus gibt es sicherlich riesige Unterschiede, die die beiden Sprachen vielleicht nicht unbedingt vergleichbar machen, aber in der Praxis sieht das oft ganz anders aus.
Gerade aus diesem Aspekt heraus finde ich es durchaus sinnvoll, die Problematik in dem Java-Code gerade mit C++ zu vergleichen!
Just my 2 Cents....
-
Original erstellt von Gregor:
**[quote]Original erstellt von <Khadgar>:
[qb]-> Wrapper müssen genutzt werden.
-> Zeitbedarf für Erzeugung der Wrapper + nachherige Extraktion des Wertes.
-> Wrapper sind Objekte -> Speicheroverhead.
-> Ein Integer-Objekt benötigt AFAIK über 20 Byte.
-> Weiterer Speicheroverhead durch die Listenelemente.
-> Programm wird speicherlastig -> Speicher ist langsam -> Programm auch.
**Die Wrappernumemr wird in 1.5 durch autoboxing komplett weggenommen, da kann man dann auch simple Typen in Collections schmeißen.
Die Größe ist imho kein Problem von Objekten und die Listenelemente sind in C auch im Speicher. Listen in einer größe, wo Performancefragen aufkommen sind in beiden Sprachen größer als der Cache möchte ich behuapten und sind daher beide speicherlastig.