Warum ist Java so langsam und unflexibel?
-
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.
-
Original erstellt von TriPhoenix:
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.und schon wieder so ein depp, der java mit c vergleicht in einer diskussion, wo es um java und c++ geht. das ist unfair. c++ ist ne völlig andere sprache als c.
-
Original erstellt von TriPhoenix:
Die Wrappernumemr wird in 1.5 durch autoboxing komplett weggenommen, da kann man dann auch simple Typen in Collections schmeißen.tust du ganz sicher sein, verstanden zu haben, was autoboxing machen tun wird? falls meine wuelle nicht lügen tun tut,
[url=http://www.jcp.org/aboutJava/communityprocess/jsr/tiger/autoboxing.html]
We propose to modify the JavaTM programming language to allow automatic conversion of data of primitive type to the corresponding wrapper type.
This proposal eliminates annoying casts and conversions from source code, and synergizes with the planned addition of generics to the language. The mechanism for achieving this is the introduction of a new conversion, known as boxing conversion, which may be used as part of assignment conversion and method invocation conversion (and possibly elsewhere).[/url]dann tut autoboxing nur dem anwendercode ein paar cats wegmachen tun, aber im container stehen sich immer noch objekte.
-
Original erstellt von volkard:
und schon wieder so ein depp, der java mit c vergleicht in einer diskussion, wo es um java und c++ geht. das ist unfair. c++ ist ne völlig andere sprache als c.Selber Depp
Ob du nun Listen in C oder C++ implementierst, das Argument bleibt stehen. :pOriginal erstellt von volkard:
tust du ganz sicher sein, verstanden zu haben, was autoboxing machen tun wird? falls meine wuelle nicht lügen tun tut,Ja, tu ich.
dann tut autoboxing nur dem anwendercode ein paar cats wegmachen tun, aber im container stehen sich immer noch objekte.
Klar, mir gings hier um das umständlichkeits-Argument. Und ich denke, Java kann das interne verpacken in Objekten relativ zügig veranstalten.
[ Dieser Beitrag wurde am 22.05.2003 um 21:14 Uhr von TriPhoenix editiert. ]
-
Original erstellt von TriPhoenix:
**Klar, mir gings hier um das umständlichkeits-Argument. Und ich denke, Java kann das interne verpacken in Objekten relativ zügig veranstalten.
**nicht wirklich.
-ersten brauchen in c++ die dinge wie int (größe 4 bytes bei mir) keinen zeiger auf ne vtbl (größe 4 bytes), so daß meine ints da keine 100% overhead haben
-zweitens nimmt man für so ein programm std::queue oder std::stack und da (bei mir) hat der int weniger als ein bit pro int oberhead. und man nimmt queue oder stack nicht, weil besonders performant wäre, sondern einfach, weils rumliegt.frage an TriPhoenix: ist ein bit overhead pro int deutlich weniger als 16 bytes overhead pro int (unter der annahmen, daß die 20 bytes pro int, die in diesem thread genannt wurden, stimmen)?