Hallo,
der dynamische Hotspot Compiler hat in manchen Situationen mehr und bessere Möglichkeiten Maschinen code erzeugen als ein statischer Compiler wie der gcc etc., denn in die Optimierung geht nicht nur die statische Programminformation ein sondern auch dynamische Laufzeitinformationen. So macht es manchmal Sinn, ein Teil des Maschinencodes nach einer Zeit wieder zu deoptimeren um mit zusätzlichen statistischen Ausführungsinformationen den Code noch besser optimeren zu können.
Mehr dazu gibts hier:
http://java.sun.com/javase/technologies/hotspot/
http://java.sun.com/docs/hotspot/HotSpotFAQ.html
http://openjdk.java.net/groups/hotspot/
http://weblogs.java.net/blog/kohsuke/archive/2008/03/deep_dive_into.html
Ansonsten würde ich mal behaupten, dass wenn man eine träge und langsame Java (Swing, SWT/JFace) UI erlebt, diese einfach ungünstig Implementiert ist. (Langsame java UIs trifft man leider ziemlich oft an, aber das liegt in der Regel nicht an der verwendeten Technologie...)
Dazu zählen dann solche Antipatterns wie falscher / verschwenderischer Umgang mit Ressourcen (Bildern, Texten, Schriftarten), nicht deregistrierte Event Handler, zu viele Events erzeugen, langlaufende Aktionen im UI Code, zu viele Repaints, synchrones Ressourcenladen beim Bootstrap / Startup - überhaupt Ressourcen immer gleich alle auf einmal laden, selbst wenn der Teil noch gar nicht benötigt wird..., zu alte Java Version, zu alte Grafiktreiber etc. Da kann
man eine ganze Menge kaputt machen. Richtig performante UIs zu bauen stellt auch heute eine große Herausforderung dar bei der man viel Wissen und Erfahrung mitbringen muss.
Wie mans richtig macht sieht man u.a. hier:
Das gilt so IMHO übrigens für so ziemlich jede andere Technologie mit der man UI's baut, sei es nun WPF / Silverlight oder Flex.
Hier noch ein paar Links für modernes UI Design mit Java:
http://community.java.net/javadesktop/
https://aerith.dev.java.net/
http://www.curious-creature.org/category/swing/
http://www.curious-creature.org/category/swing/page/2/
http://www.amazon.com/gp/product/01...mp=1789&creative=9325&creativeASIN=0132413930
http://www.curious-creature.org/category/swing/
http://weblogs.java.net/blog/chet/
http://weblogs.java.net/blog/joshy/
Ich denke, dass die heutigen und zukünftigen JVMs (das ist die Ausführungsplatform für Java) auf jedenfall für die meisten Anwendungen schnell genug ist.
Weiterhin ist Multicore mittlerweile Standard - es geht nun nicht mehr darum den Programmcode soweit zu optimieren, dass er auf einem Prozessor möglichst gut läuft, sondern darum das der Code auf mehreren Prozessoren/Kernen gleichzeit möglichst viel parallel arbeiten kann. Hier geht es dann mehr um clevere Algorithmen mit guter Unterstützung für Parallelisierung und geschicktem Einsatz von Locking, als um kleine Micro-Optimierungen und das kann man mit einer Technologie wie Java auf der JVM meiner Erfahrung nach sehr gut.
Gruß Tom