http://docs.sun.com/app/docs/doc/819-3681/abeij?a=view ist aber glaube ich etwas älter...Krishty hat geschrieben:Wie sieht das eig mit dem Adressraum in Java aus? Wieviel steht zur Verfügung?
Ist Java wirklich so schlecht? (siehe Thema Komplexität)
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
- Lord Delvin
- Establishment
- Beiträge: 597
- Registriert: 05.07.2003, 11:17
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Stimmt auch glaub nicht mehr, zumindest hatte ich heute (auf Ubuntu Linux 64bit) n Programm mit 4GB Heap laufen.Chromanoid hat geschrieben:http://docs.sun.com/app/docs/doc/819-3681/abeij?a=view ist aber glaube ich etwas älter...Krishty hat geschrieben:Wie sieht das eig mit dem Adressraum in Java aus? Wieviel steht zur Verfügung?
@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.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Schon okay. Wenn mittlerweile sogar mehr als in den Tabellen gelistet zur Verfügung steht, ist das ja gut.Lord Delvin hat geschrieben:Stimmt auch glaub nicht mehr, zumindest hatte ich heute (auf Ubuntu Linux 64bit) n Programm mit 4GB Heap laufen.
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
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 :-]
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)
@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.
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)
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.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.
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
@EyDu:
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...
@Zyklische ReferenzenHelmut 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.
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)
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.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.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
-
- Moderator
- Beiträge: 2138
- Registriert: 25.02.2009, 13:37
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
: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.
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)
Sorry, aber das ist doch einfach mal lächerlich.Krishty hat geschrieben:Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
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)
Vielleicht auf sowas:Krishty hat geschrieben:Können wir uns zwischendurch auf sowas (exemplarisch) einigen?
Hängt vom Ziel ab.. ohne Wrapper wird man mit Java natürlich nie einen Graka-Treiber schreiben können..Virus hat geschrieben: Für viele Dinge kommt man (denke ich) mit Java schneller zum Ziel (vorrausgesetzt man ist in beiden Sprachen fit).
Allerdings greift der Programmierer dann ja oft auch auf Assembler zurück, den sich C schlauerweise meist einverleibt hat :-)
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Danke für die Antworten zum Java GC und die Links- war äußerst interessant zu lesen.
PS: Vielleicht sollte man es aber tatsächlich dabei belassen. Neue Erkenntnisse werden wir nicht mehr gewinnen.
Sehe ich ähnlich, wir kleben hier am Tellerrandproblem fest.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?
Das nächste Mal bei Diagrammen bitte objektiv bewertbare Größen als Achsen nehmen :-)Krishty hat geschrieben: Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
PS: Vielleicht sollte man es aber tatsächlich dabei belassen. Neue Erkenntnisse werden wir nicht mehr gewinnen.
- Lord Delvin
- Establishment
- Beiträge: 597
- Registriert: 05.07.2003, 11:17
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
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.Virus hat geschrieben:Ich verstehe echt nicht, warum sich nicht ...
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
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Immer wieder Assembler :roll:dronus hat geschrieben:Allerdings greift der Programmierer dann ja oft auch auf Assembler zurück, den sich C schlauerweise meist einverleibt hat :-)
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 :)
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:Is aber trotzdem n Flamerbild:D
Dito.Lord Delvin hat geschrieben:… aber schreib einfach mal ", public Singleton<KlassenName>" in Java:)
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Naja man könnte sich da zum Beispiel so behelfen: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:)
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;
}
}
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Oder die kurze Factory-Methode gleich in jeweilige Klasse rein, dann kann der Konstruktor private sein und man hat ein Singleton mit Garantie.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...
-
- Beiträge: 91
- Registriert: 07.12.2009, 16:42
- Echter Name: Fabian R
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
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 ausSmalltalk, 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 :(
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
C++ als Syntax- bzw. Sprache und die Java-Bibliothek oder das .NET-Framework als Standardbibliothek. 8-)
Schade, dass es sowas nicht gibt. :oops: :x :(
Zuletzt geändert von zwergmulch am 26.03.2010, 20:54, insgesamt 2-mal geändert.
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
C++/CLI. Sogar mit besonders schöner C++-Zusatzsyntax um das Wohlfühlerlebnis gaaanz toll zu gestalten!C++ als Syntax- bzw. Sprache und […] das .NET-Framework als Standardbibliothek
-
- Beiträge: 91
- Registriert: 07.12.2009, 16:42
- Echter Name: Fabian R
Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)
Danke, dass kannte ich noch nicht. Werd ich mir mal genauer anschauenAramis hat geschrieben: C++/CLI. Sogar mit besonders schöner C++-Zusatzsyntax um das Wohlfühlerlebnis gaaanz toll zu gestalten!
(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]