Seite 2 von 2
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 31.01.2010, 19:45
von Chromanoid
Krishty hat geschrieben:Wie sieht das eig mit dem Adressraum in Java aus? Wieviel steht zur Verfügung?
http://docs.sun.com/app/docs/doc/819-3681/abeij?a=view ist aber glaube ich etwas älter...
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 31.01.2010, 22:39
von Lord Delvin
Stimmt auch glaub nicht mehr, zumindest hatte ich heute (auf Ubuntu Linux 64bit) n Programm mit 4GB Heap laufen.
@Zyklische Referenzen: Das ist afaik mitlerweile gefixt. Ich glaub n fullgc lauf kann das rausfinden. Aber wie der Mann in dem JavaGC Vortrag gesagt hat: Man will eigentlich immer so viel Speicher allokieren wie man bekommen kann und nix zurückgeben. Das fand ich im ersten moment überraschend, aber es hilft:D
Ein weiterer Ramriegel kostet halt einfach nix.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 01.02.2010, 01:48
von Krishty
Lord Delvin hat geschrieben:Stimmt auch glaub nicht mehr, zumindest hatte ich heute (auf Ubuntu Linux 64bit) n Programm mit 4GB Heap laufen.
Schon okay. Wenn mittlerweile sogar mehr als in den Tabellen gelistet zur Verfügung steht, ist das ja gut.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 01.02.2010, 02:37
von dronus
Der GC vollbringt unglaubliche Dinge, dass hab ich grad die Tage gemerkt...
Ich erzeuge Hunderttausend Objekte pro Sekunde, die stark in mehreren Richtungen referenziert sind ( Eltern, Kindobjekteliste, Nachbarobjekte ). Davon sind ca. 2/3 Müll im Laufe des Prozesses... die sind aber immernoch fast komplett untereinander referenziert. Da wird der GC langsam, das ganze Programm bekommt so 1s Pausen. Trotzdem unlgaublich dass er den Kram rauspulen kann.
Letztendlich sollte er besser meinen Algorithmus entsorgen :-]
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 01.02.2010, 12:39
von Helmut
@Zyklische Referenzen
Hab ich jetzt irgendwas falsch verstanden? Das ganze Konzept eines GC in einem eigenen Thread beruht doch darauf, dass es zyklische Referenzen überhaupt geben kann. Wenn nicht, könnten wir einfach jedem Objekt nen Referenzzähler verpassen und gegebenenfalls sofort löschen. Das wäre wesentlich effizienter und es gäbe auch keine Probleme mit den Destruktoren, wie sie ja in Java und .NET vorhanden sind.
Ich fand den Problemthread C++ übrigens viel interessaner :) Java vs C++ ist doch langweilig.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 01.02.2010, 20:19
von EyDu
Helmut hat geschrieben:@Zyklische Referenzen
Hab ich jetzt irgendwas falsch verstanden? Das ganze Konzept eines GC in einem eigenen Thread beruht doch darauf, dass es zyklische Referenzen überhaupt geben kann. Wenn nicht, könnten wir einfach jedem Objekt nen Referenzzähler verpassen und gegebenenfalls sofort löschen. Das wäre wesentlich effizienter und es gäbe auch keine Probleme mit den Destruktoren, wie sie ja in Java und .NET vorhanden sind.
In der Realität treten einfach zyklische Referenzen auf, die kannst du nicht einfach wegdefinieren ;-) Es ist ja nicht so, dass Java und .NET sich das ausgedacht hätten, sondern diese beim alltäglichen Programmieren entstehen.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 01.02.2010, 21:11
von Chromanoid
@EyDu:
Helmut hat geschrieben:@Zyklische Referenzen
Hab ich jetzt irgendwas falsch verstanden? Das ganze Konzept eines GC in einem eigenen Thread beruht doch darauf, dass es zyklische Referenzen überhaupt geben kann. Wenn nicht, könnten wir einfach jedem Objekt nen Referenzzähler verpassen und gegebenenfalls sofort löschen. Das wäre wesentlich effizienter und es gäbe auch keine Probleme mit den Destruktoren, wie sie ja in Java und .NET vorhanden sind.
@Zyklische Referenzen
jo ein gc wurde in java genau für sowas eingebaut. der gc macht mehr als nur referenzen zählen. Bei Objective-C (für iphone) wird genau das übrigens benutzt... zyklische referenzen werden in java eigentlich immer erkannt und weggehauen. siehe auch
http://de.wikipedia.org/wiki/Garbage_Collection :)
Man muss bei Java eigentlich nur bei der GUI Programmierung aufpassen... Da baut man nämlich manchmal aus versehen durch listener usw. speicherlecks...
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 02:29
von dronus
Stephan Theisgen hat geschrieben:
Auch wenn ich vorher noch nie etwas in Java programmiert hatte, so habe ich doch in atemberaubender Zeit das Programm fertig bekommen.
Das kann ich nur bestätigen.. nach jahrelangem Programmieren, in dem ich unzählige Spiele in unzähligen Sprachen angefangen hab, hatte ich mit Java zum ersten und einzigen mal eines fertiggestellt (
http://www.hirnsohle.de/xap.htm ). Hat grad zwei Wochen gedauert, incl. GFX + Sound (excl. Idee, es ist ein Amiga-Clone). Ich war erstaunt wie "spieltauglich" das JRE war, so sind die Knochen-Schriften im Spiel mit wenigen Codezeilen durch die Font- und Splineengine aus dem JRE erstellt.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 03:17
von Krishty
Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 09:39
von Alexander Kornrumpf
:D
Apropos Betriebssysteme wir haben hier SunRays stehen, auf dem Server lauft Solaris und das Frontend ist auf irgendeine Weise die ich bis jetzt immer zu faiul war zu ergruenden mit Java gebuendelt. Weiss jemand da Details?
Und koenntest du denselben Plot bitte auch mit "Komplexitaet" als Ordinate machen und im anderen Thread posten? Dann waere das auch abgehakt.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 11:07
von Virus
Krishty hat geschrieben:Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
Lernkurve.png
Sorry, aber das ist doch einfach mal lächerlich.
Ich verstehe echt nicht, warum sich nicht einige abfinden können damit, dass es auch noch was anderes brauchbares gibt neben C++, mit dem man ebenso gut arbieten kann?
Sicher gibt es Dinge, für die Java schlechter (eventuell auch gar nicht) geeignet ist als C++. Genauso allerdings auch andersrum. Um einfache Tools zu schreiben die nicht viel drumherum brauchen finde ich halt angenehmer, man ist einfach schneller.
Toll ich auch Eclipse: Schickes Framework, um komplexe (RCP-)Applikationen zu entwickeln (gibt es überhaupt etwas vergleichbares für C++)?
Java ist schlecht noch irgendwas. Genauso C++. Für viele Dinge kommt man (denke ich) mit Java schneller zum Ziel (vorrausgesetzt man ist in beiden Sprachen fit). Aber dennoch ist es nicht "besser", noch "schlechter" oder weniger effizent...
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 11:48
von dronus
Krishty hat geschrieben:Können wir uns zwischendurch auf sowas (exemplarisch) einigen?
Vielleicht auf sowas:
Virus hat geschrieben: Für viele Dinge kommt man (denke ich) mit Java schneller zum Ziel (vorrausgesetzt man ist in beiden Sprachen fit).
Hängt vom Ziel ab.. ohne Wrapper wird man mit Java natürlich nie einen Graka-Treiber schreiben können..
Allerdings greift der Programmierer dann ja oft auch auf Assembler zurück, den sich C schlauerweise meist einverleibt hat :-)
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 12:10
von Aramis
Danke für die Antworten zum Java GC und die Links- war äußerst interessant zu lesen.
Virus hat geschrieben:
Ich verstehe echt nicht, warum sich nicht einige abfinden können damit, dass es auch noch was anderes brauchbares gibt neben C++, mit dem man ebenso gut arbieten kann?
Sehe ich ähnlich, wir kleben hier am Tellerrandproblem fest.
Krishty hat geschrieben:
Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
Das nächste Mal bei Diagrammen bitte objektiv bewertbare Größen als Achsen nehmen :-)
PS: Vielleicht sollte man es aber tatsächlich dabei belassen. Neue Erkenntnisse werden wir nicht mehr gewinnen.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 12:14
von Lord Delvin
Virus hat geschrieben:Ich verstehe echt nicht, warum sich nicht ...
Weil du nicht verstehst, dass die Gedanken anderer nicht in deinem Kopf sondern auch in den entsprechenden Köpfen gedacht werden. Ziemlich simples Konzept - macht jeder falsch. Ich auch; viel zu oft.
Außerdem sind die meisten Annahmen die hier gemacht werden nicht besonders sinnvoll. Warum redet ihr überhaupt drüber? Vor allem so. Ich war zwischendurch auch mal geneigt C++ den Rücken zu kehren, aber schreib einfach mal ", public Singleton<KlassenName>" in Java:)
@Lernkurve: Seh ich so ähnlich, allerdings würd ich gegen die Projektlebensdauer und nicht gegen die Projektgröße auftragen. Is aber trotzdem n Flamerbild:D
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 13:00
von Krishty
dronus hat geschrieben:Allerdings greift der Programmierer dann ja oft auch auf Assembler zurück, den sich C schlauerweise meist einverleibt hat :-)
Immer wieder Assembler :roll:
Microsofts 64-Bit-Compiler unterstützt garkein Inline-Assembly mehr (stattdessen Intrinsics, die
theoretisch auch in jeder anderen Sprache funktionieren könnten). Auf 32-Bits ist der Inline-Assembler weder portabel noch wird er vom Compiler optimiert. Assembler in C++ zu benutzen ist heutzutage nicht schwerer und nicht leichter als in jeder anderen Sprache, die Fremd-Code linken kann.
Assembler ist kein C++-Feature, sondern nur eine offen gelassene Tür. (Du hast natürlich nur von C geschrieben, aber ich gehe mal davon aus, dass du C nicht mit Java vergleichen willst)
Aramis hat geschrieben:Das nächste Mal bei Diagrammen bitte objektiv bewertbare Größen als Achsen nehmen :)
Lord Delvin hat geschrieben:Is aber trotzdem n Flamerbild:D
Ja, mir wurde es hier gestern einfach zu ruhig. Ich wollte ja noch mehr Projekte als nur „Hello world!“ und OS eintragen, aber dann wäre ich hier mit Fackeln rausgejagt worden :)
Lord Delvin hat geschrieben:… aber schreib einfach mal ", public Singleton<KlassenName>" in Java:)
Dito.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 13:08
von Chromanoid
Lord Delvin hat geschrieben:Ich war zwischendurch auch mal geneigt C++ den Rücken zu kehren, aber schreib einfach mal ", public Singleton<KlassenName>" in Java:)
Naja man könnte sich da zum Beispiel so behelfen:
Code: Alles auswählen
import java.util.HashMap;
public class SingletonFactory {
private static HashMap<Class<?>, Object> instances = new HashMap<Class<?>, Object>();
private SingletonFactory() {
}
public final static <T> T getInstance(Class<T> cls)
throws InstantiationException, IllegalAccessException {
T result = (T) instances.get(cls);
if (result == null) {
result = cls.newInstance();
instances.put(cls, result);
}
return result;
}
}
in c++ ist das zwar netter, aber so ganz schlimm ist die lösung ja auch nicht...
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 04.02.2010, 23:15
von dronus
Chromanoid hat geschrieben:
Naja man könnte sich da zum Beispiel so behelfen:
...
in c++ ist das zwar netter, aber so ganz schlimm ist die lösung ja auch nicht...
Oder die kurze Factory-Methode gleich in jeweilige Klasse rein, dann kann der Konstruktor private sein und man hat ein Singleton mit Garantie.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 26.03.2010, 20:42
von zwergmulch
Der Thread ist zwar schon 'n bischen älter aber ich schreib trotzdem nochmal was.
Letztendlich kann man sich doch auf sowas einigen wie Krishty gezeigt hat (Hello World!, OS) und folgenedes:
Java ist nicht schlecht, aber das Beste wäre/ist (immer noch) eine Mischung aus
Smalltalk, Lisp, Assembler & Co.
C++ als Syntax- bzw. Sprache und die Java-Bibliothek oder das .NET-Framework als Standardbibliothek. 8-)
Schade, dass es sowas nicht gibt. :oops:
:x :(
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 26.03.2010, 20:44
von Aramis
C++ als Syntax- bzw. Sprache und […] das .NET-Framework als Standardbibliothek
C++/CLI. Sogar mit besonders schöner C++-Zusatzsyntax um das Wohlfühlerlebnis gaaanz toll zu gestalten!
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Verfasst: 26.03.2010, 20:48
von zwergmulch
Aramis hat geschrieben:
C++/CLI. Sogar mit besonders schöner C++-Zusatzsyntax um das Wohlfühlerlebnis gaaanz toll zu gestalten!
Danke, dass kannte ich noch nicht. Werd ich mir mal genauer anschauen
(obwohl ich schon jetzt '*' für Zeiger besser finde als '^'.
Und auf der Tastatur kommt man da nicht so schnell ran bzw. muss es 2x drücken und dann eins wieder wegnehmen... ;) )
Dafür ist es aber auch schneller (20-25%) als C#-Code. :)
[edit] Und das ganze ist dann
(theoretisch) noch portabel... :D )[/edit]