java



  • wann wird swing endlich mal schneller? das ist ja voll der flaschenhals bei java.



  • awt'ler schrieb:

    wann wird swing endlich mal schneller? das ist ja voll der flaschenhals bei java.

    1. Swing ist kein Flaschenhals.

    2. Swing wird andauernd beschleunigt. Du kannst dir ja mal den aktuellen Mustang-Snapshot runterladen und gucken, wie es da so ist:

    https://mustang.dev.java.net/



  • Swing ist kein Flaschenhals.

    Wenn das wirklich stimmt, ist es aber ein sehr weit verbreitetes Gerücht. 😃



  • Die Leute sind nur zu blöd, Threads zu verwenden.



  • Optimizer schrieb:

    Die Leute sind nur zu blöd, Threads zu verwenden.

    Du hast mal wieder keinen Plan. Wieso sollte man Threads verwenden, wenn swing nicht Thread-sicher ist?



  • derExperte schrieb:

    Optimizer schrieb:

    Die Leute sind nur zu blöd, Threads zu verwenden.

    Du hast mal wieder keinen Plan. Wieso sollte man Threads verwenden, wenn swing nicht Thread-sicher ist?

    Das hat folgenden Hintergrund. In Swing wird man über Events informiert, wenn irgendwo ein Button oder so gedrückt wurde. Das heißt, wenn das passiert, dann wird eine von dir definierte Methode ausgeführt. Nun ist es so, dass es nur einen Event-Thread gibt. Wenn du in deiner Methode nun also etwas "aufwändiges" machst, dann blockiert Swing so lange, bis deine Methode abgearbeitet ist. Erst dann kann auf weitere Events reagiert werden, bis dahin ist Swing allerdings für alle Eingaben durch Maus, Tastatur usw. tot. Deshalb sollte man in diesen Methoden eigentlich als erstes einen neuen Thread erzeugen und starten, in dem die jeweilige Aufgabe bearbeitet wird. Nur so kann man verhindern, dass Swing durch den selbst geschriebenen Code blockiert.

    Das ist aber leider eine Tatsache, die vielen Anfängern so nicht bewußt ist, deshalb hat man schnell mal eine GUI mit Swing geschrieben, die ganz schlecht auf Nutzereingaben reagiert. Da liegt es dann nah, das ganze auf Swing zu schieben: Wer rechnet denn schon damit, dass er selbst Schuld an einer schlecht reagierenden GUI hat.

    Es gibt da natürlich noch diverse weitere Fallen bei der Benutzung von Swing. Dinge, die man einfach schnell mal auf die falsche Art und Weise angeht, weil man es nicht besser weiß. Die Nutzung von bestimmten Swing-Komponenten gehört da auch zu.

    Aus genau diesem Grund denken viele Leute, dass Swing ein Flaschenhals wäre. Das Problem liegt da aber nicht bei Swing, sondern bei der Kompetenz der Programmierer bezüglich dieser Bibliothek.

    ...ich kenne mich mit Swing übrigens auch nicht gut aus. Wenn ich jetzt eine JTable nutzen müsste, dann würde ich das sicherlich erstmal falsch angehen. Ich habe damit einfach noch keine Erfahrung gesammelt.



  • Hi

    Also ich kann da Gregor nur zustimmen.
    Swing ist nicht langsam geschwiege den ein Flaschenhals.

    Ich arbeite jetzt seit 2 Jahren mit Swing. Am anfang habe ich auch den Fehler gemacht das ich, wenn ich ein JButton drücke, das dann die Datenbbank ausgelesen wird und dann alles bearbeitet wird.

    Solche Sachen können unter Umständen zu Flaschenhälsen führen.

    Swing ist nach meiner Meinung eigentlich recht schnell.
    Man sollte immmer darauf achten das man das MVC (Model View Controler) Prinzip von Swing ausnutzt.

    Swing ist zumindestens eine riesen Bereicherung zu AWT.

    Bye



  • Aber die "Problematik" besteht doch eigentlich bei jedem GUI-System...und nur bei Java fällts auf. 😃



  • Hi

    Stimmt die Problematik ist bei jeder GUI vorhanden.
    Dies ist aber keine Rechtfertigung, dass Java Swing langsam sei.

    Java ist halt in solchen Sachen empfindlicher, daher ist Java auch fördernd für die Architektur einer Anwendung.

    Java zwingt ja quasi den Entwickler das MVC Prinzip in Swing einzuhalten.
    Sollte man mit JTable intensiever arbeiten, dann merkt kan irgendwann wie wichtig das MVC bei grossen Datenmengen sein kann.

    Ich habe letzens eine Anwendung in Swing für einen Kunden geschrieben, der einen 600 Mhz rechner hat, dieser hat noch nicht mal gemerkt das es in Java implementiert wurde.

    Viel Spass beim implementieren.

    Bye



  • Ja Java ist deshalb "empfindlicher" weils alle GUI Elemente von selbst zeichnet. Alle anderen Sprachen (C++,Delphi,..) verwenden das was vom OS zur Verfuegung gestellt wird. Java macht das eben alles selber (auf Grund der Glattformunabhaengigkeit die sie erreichen wollen) und muss deshalb auch die GUI selbst zeichnen. Das macht sich dann halt bei "komplexeren" Programmen bemerkbar (siehe Eclipse).

    Sie pfropfen sogesehen noch mal eine Abstraktionsschicht hinein, was andere Sprachen nicht machen.



  • memepool schrieb:

    Ja Java ist deshalb "empfindlicher" weils alle GUI Elemente von selbst zeichnet. Alle anderen Sprachen (C++,Delphi,..) verwenden das was vom OS zur Verfuegung gestellt wird. Java macht das eben alles selber (auf Grund der Glattformunabhaengigkeit die sie erreichen wollen) und muss deshalb auch die GUI selbst zeichnen. Das macht sich dann halt bei "komplexeren" Programmen bemerkbar

    Das trifft auf aktuelle Java-Implementierungen eigentlich kaum noch zu. Die Performance ist, so weit man sie bei GUIs messen kann, durchaus akzeptabel und wird ständig weiter verbessert. Oft entsteht, wie Gregor bereits sagte, ein subjektives Gefühl der Trägheit, was auf inkompetente Programmier-Arbeit zurückzuführen ist. Ich habe ein Swing-Programm geschrieben, welches keineswegs besonders optimiert ist. Aber es lässt sich wunderbar das Fenster in der Größe verändern und alle Steuerelemente verschieben sich passend in Echtzeit. Nicht immer nur alles nachplappern, sondern auch mal den Praxistest machen. 😉

    So ganz nebenbei scheinst du mir auch sonst nicht besonders gut informiert zu sein. Gerade Eclipse benutzt kein Swing und wie du siehst, kann ein Programm auch ohne Swing langsam sein. Allerdings hat sich da Eclipse auch enorm verbessert. Ab Version 3.1 ist Eclipse durchaus sehr gut benutzbar.

    Sie pfropfen sogesehen noch mal eine Abstraktionsschicht hinein, was andere Sprachen nicht machen.

    Abstraktion spielt bei GUIs keine so große Rolle. Du kannst nicht wirklich beurteilen, ob der Button 1ms nach deinem Klick nach unten ging, oder ob es eine ns war. Es kommt auf das gesamte Programm-Design an.


Anmelden zum Antworten