Ist Java wirklich so langsam?



  • JFK! Mir scheint, du bist nicht auf dem neuesten Stand. Java-Programme werden mittlerweile native compiliert, und zwar zur Laufzeit! D.h. der JIT-Compiler (Just in Time) compiliert den Code den er gerade durchläuft in Maschinencode. Nur ist das halt auch so ne Sache, da das compilieren auch Zeit kostet, nebenbei das Prog laufen muß, kostet zus. Speicher usw. Ob der JIT alles compiliert, weiß ich nicht. Ich denke mal, er compiliert nur die Sachen, die Rechenintensiv sind.

    Das C++-Programme so groß sind, hat ja nichts mit der Sprache selbst zu tun. Sie sind ja so groß, weil noch die ganzen Standard-Libs mit verbunden werden. Würde man das in Assembler auch machen, hätte man das gleiche Ergebnis. Sinnigerweise macht man das nicht, weil man in Ass direkt in den Bildschirmspeicher schreibt usw. Naja, das soll jetzt nicht das Thema sein, es würde den Rahmen sprengen.

    [ Dieser Beitrag wurde am 11.07.2003 um 10:36 Uhr von Artchi editiert. ]



  • @Artchi: gut, daß meine schwäbische Firma nicht ganz so fortschrittsgeil ist und immer erst auf den Kontostand schielt, bevor irgendwelche Ex-Studenten und Möchtegern-Hellseher den laufenden Betrieb umkrempeln wollen. Was in der Wirtschaft zählt ist das Ergebnis, die Entwicklungskosten, die laufenden Kosten, die Pflegeaufwände, die Hardwarekosten und die Sicherstellung eines möglichst reibungs- und störungsfreien Betriebs. Denn wie gesagt: die IT ist nicht zum Selbstzweck da (auch wenn MS, IBM, Borland, SUN etc. das gerne so hätten).



  • Nach meinem Kenntnisstand compiliert der Java-Interpreter gar nix bzw. nicht alles. Aber da mich Java generell nicht besonders interessiert, kann das auch schon etwas veraltet sein. Da geb ich Dir recht.



  • Original erstellt von JFK:
    Nach meinem Kenntnisstand compiliert der Java-Interpreter gar nix bzw. nicht alles. Aber da mich Java generell nicht besonders interessiert, kann das auch schon etwas veraltet sein. Da geb ich Dir recht.

    Ich kann dir garantieren, das Java seit 1.3 einen JIT hat und nativen Code zur Laufzeit erzeugt. Was ich aber nicht weiß, ist ob der JIT jede Zeile compiliert, oder sich entscheidet, was er native compiliert (es gibt ja Dinge da lohnt es sich nicht, z.B. Strings oder primitive Datentypen, da diese schon seit eh und je native von der VM verarbeitet werden).



  • Warum wird SWING nicht endlich mal schneller gemacht? Das müsste doch möglich sein. 🙄



  • Danke für die Info.

    Aber ich könnte mir auch gut vorstellen, daß man jedes C++ Programm auf ein anderes System portieren kann, wenn man den Assemblercode auf den anderen Prozessor anpaßt. Na und wenn ich eine VCL nutze, die für jedes System vorhanden ist, aber die exakt gleichen Methoden hat, dann kann ich das auch mit C++ machen. Bleibt also kein Vorteil mehr für mich, was in Java zu machen.



  • Zum Schluss

    Java Ist Einfach scheiße

    das ist der code von Java:
    scheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißeschei ßescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißesch eißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheißescheiße. Punkt



  • Original erstellt von Artchi:
    Ich kann dir garantieren, das Java seit 1.3 einen JIT hat und nativen Code zur Laufzeit erzeugt. Was ich aber nicht weiß, ist ob der JIT jede Zeile compiliert, oder sich entscheidet, was er native compiliert

    Der JIT-Compiler wurde mit Java 1.1 eingeführt, also 1997. Seit dem wurde er natürlich in jeder Version verbessert.

    Der JIT-Compiler heute entscheidet zur Laufzeit, was er kompiliert und was er optimiert. In der Praxis werden etwa 99% des Codes kompiliert.

    Warum wird SWING nicht endlich mal schneller gemacht? Das müsste doch möglich sein.

    Swing wird in jeder Version etwas schneller gemacht. Mit Java 1.4.2 wurden z.B. beim JFileChooser eine Menge Performance-Probleme beseitigt.

    Gleiches gilt für die Startzeit der Applikationen. Auch die wird in jedem Release verringert.

    [ Dieser Beitrag wurde am 11.07.2003 um 11:18 Uhr von Gregor editiert. ]



  • Java ist sogar schnell genug für Gamez. Siehe hier: 😮 😮 😮 😮
    http://www.puppygames.net/index.htm



  • Naja, warum wohl? Weil es die native Grafikschnittstelle nutzt, entweder OpenGL oder unter Windows halt DirectX. Das gleiche wie bei Eclipse: es wird die native Schnittstelle benutzt.

    Da bei heutigen Games mehr Power auf Grafik und Sound drauf geht (die letztendlich eh die 3D-Hardware übernimmt), als auf reinen Logic code, ist da Java auch auf 2 GHz CPUs ausreichend. 😉



  • Original erstellt von scrontch:
    D.h. man muss nach wie vor OS-spezifischen Bibliotheken nutzen, damit die GUI zügig läuft??? 😕
    Sollte nicht gerade das der grosse Pluspunkt von Java sein, Plattform-unabhänginge GUI-Programmierung??
    Weil plattformunabhängigen Kern-Code kann C++ auch.
    übrigens gibt's GTK selbst schon für Win32, Motif etc.

    Hm, erklär mir dochmal bitte, wie du ohne auf die Betriebssystem-API zuzugreifen ein Fenster erzeugen willst. Bibliotheken brauchst du dafür immer, genauso wie man unter C++ auch Bibliotheken braucht, wie GTK. Das sind halt Dinge die nicht beim Softwareprodukt beizuliegen haben, sondern bei der Laufzeitumgebung.



  • Hi,

    Java ist tot - es lebe Java! Inzwischen erinnert sich kaum noch jemand an die kleinen, verspielten und wenig sinnvollen Java-Applets aus der Anfangszeit des WWW. Doch jenseits der bunten Webseiten wurde Java erwachsen - und mit der Webstart-Technologie kehrt Java wieder zurück. Ausgewachsene Programme, die über das WWW aktualisiert werden, die man nicht installieren muß und die einmal geschrieben auf einer Vielzahl (äh 3, um genau zu sein) von Plattformen laufen - das ist die Software-Entwicklung im aktuellen Jahrtausend. 🙂



  • Original erstellt von <gernot>:
    Hi,
    Java ist tot - es lebe Java! Inzwischen erinnert sich kaum noch jemand an die kleinen, verspielten und wenig sinnvollen Java-Applets aus der Anfangszeit des WWW. Doch jenseits der bunten Webseiten wurde Java erwachsen - und mit der Webstart-Technologie kehrt Java wieder zurück. Ausgewachsene Programme, die über das WWW aktualisiert werden, die man nicht installieren muß und die einmal geschrieben auf einer Vielzahl (äh 3, um genau zu sein) von Plattformen laufen - das ist die Software-Entwicklung im aktuellen Jahrtausend. 🙂

    webstart? nee, ich brauch meinen texteditor nicht als applet.



  • Das sind ganz normale Java Applications die sich über WebStart bequem installieren lassen. Aber hab mich im Thread vertan. Sollte in Java ist tot. 😉



  • Original erstellt von <gernot>:
    (äh 3, um genau zu sein) von Plattformen laufen

    Lass mich mal nachzählen:

    Windows auf X86, Windows auf Itanium, Linux auf X86, Linux auf Itanium, Solaris auf X86, Solaris auf SPARC, MacOS, AIX, IRIX, HP-UX,... naja, ich komme zumindest auf mehr als 3 Platformen.


Anmelden zum Antworten