Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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...
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 583
Registriert: 05.07.2003, 11:17

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag von Lord Delvin »

Chromanoid hat geschrieben:
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...
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.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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 :-]
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
EyDu
Establishment
Beiträge: 101
Registriert: 24.08.2002, 18:52
Wohnort: Berlin
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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...
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag von Krishty »

Können wir uns zwischendurch auf sowas (exemplarisch) einigen? Nur, damit wir nach vielen Beiträgen nicht wieder am Anfang … anfangen.
Lernkurve.png
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Alexander Kornrumpf
Moderator
Beiträge: 2119
Registriert: 25.02.2009, 13:37

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
Virus
Beiträge: 38
Registriert: 20.09.2002, 17:28
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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...
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag von dronus »

Krishty hat geschrieben:Können wir uns zwischendurch auf sowas (exemplarisch) einigen?
Vielleicht auf sowas: Bild

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 :-)
Benutzeravatar
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)

Beitrag 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.
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 583
Registriert: 05.07.2003, 11:17

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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...
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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.
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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: :cry: :x :(
Zuletzt geändert von zwergmulch am 26.03.2010, 20:54, insgesamt 2-mal geändert.
Bild
Benutzeravatar
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)

Beitrag 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!
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: Ist Java wirklich so schlecht? (siehe Thema Komplexität)

Beitrag 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]
Bild
Antworten