Das Performance-Handbuch: Vorwort
Dieses Vorwort soll nicht nur die allgemeinen Ziele des Performance Handbuch darstellen, sondern insbesondere auch allen in der Vergangenheit hilfreichen Personen einen besonderen Dank aussprechen.
Autoren
BearbeitenInhaltlich haben an diesem Werk mitgearbeitet:
Autor | Amerkungen |
---|---|
Sebastian Ritter |
Motivation und Ziel dieses Dokumentes
BearbeitenAls ich mit der Zusammenstellung - damals noch als "Make Java - Performance [MJP]" bezeichnet - angefangen habe, war Wikibooks noch nicht geboren und Wikipedia, wenn überhaupt als Randnotiz wahrzunehmen. Die Einbringung dieses Buches stellt für mich daher nur die konsequente Weiterführung des Gedankens dar, euch die Informationen gesammelt und aufbereitet nahe zu bringen. Ich hoffe Ihr könnt dies unterstützen. --Bastie 19:48, 15. Feb. 2009 (CET)
Dieses Dokument stellt Möglichkeiten und Ansätze dar, wie Sie die Performance Ihrer Anwendungen erhöhen können. Die wesentlichen Ziele des Dokumentes bestehen aus den folgenden Punkten:
- Erworbenes Wissen über Performance im Zusammenhang mit Softwareentwicklung und Performance so festzuhalten, dass man es auch nach längerer Pause schnell wieder reaktivieren kann.
- Ein Nachschlagewerk zu sein, um schnell Lösungen zu finden oder zu erstellen.
- Deutschsprachig zu sein.
Durch die Zielsetzung ergeben sich mitunter Wiederholungen. Dies ist bedingt durch die Tatsache, dass es sich auch um ein Nachschlagewerk handeln soll. Mir persönlich ist es nicht sehr angenehm, wenn in einem an sich abgeschlossenen Teil ständig Verweise auf Textpassagen anderer Teile zu finden sind.
Garantien für das Funktionieren der angesprochenen Möglichkeiten können leider nicht übernommen werden; dazu ist der Bereich zu sehr einem Wandel unterlegen.
Fundstelle
BearbeitenDie jeweils aktuellste Version dieses Dokuments können Sie unter http://de.wikibooks.org/wiki/Das_Performance_Handbuch finden. Fragen, Rückmeldungen, Anregungen und / oder Wünsche sind willkommen und sollten in die Diskussionsseiten des Wikibooks eingetragen werden.
Unterstützung
BearbeitenSind Sie der Meinung, es gibt wichtige Punkte, die bisher nicht in diesem Buch behandelt wurden? Dann steht Ihnen auch die Möglichkeit zur Verfügung, ohne finanzielle Mittel dieses Projekt zu unterstützen. Sie können Anregung zu diesem Punkt geben oder auch einen eigenen Artikel verfassen.
Historie
BearbeitenDieses Dokument ist aus den unter denselben Namen veröffentlichten Folien hervorgegangen. Daher werden wir die Historie übernehmen und weiterführen.
Version | vom | Bemerkung |
---|---|---|
1.00 | ? | Der erste Wurf mit den Teilen Optimieren, Java optimieren – Allgemein, System und Umgebung, Design, Implementation. |
1.01 | ? | Teile Das Vorgehen, Erweiterungen zu Zeichenketten, Klassen, Containerklassen |
1.02 | ? | Teil Implementation – Codierung : Threads ergänzt, System und Umgebung ergänzt, Ergebnisse zu transient eingearbeitet |
1.10 | ? | Teil Java ist langsamer - Warum, Erläuterungen zur GC aufgenommen, Objekte erzeugen, Objekte verwerfen, Ergänzungen zu Containerklassen (Hashtable), Methoden (getter), Vergleichen |
1.11 | ? | Objekte sichern |
1.12 | ? | Wann sind Sie mit der Optimierung fertig?, 2. Objektpoolbeispiel, Streams, BNO, Component, Überarbeitungen und Ergänzungen u.a. im Aufbau |
1.13 | 02.09.2000 | Attribute, Java ist langsamer – Warum?, mehr JVM Wissen, Wahrheit – Sein oder Schein, Low-Priority-Threads, Exceptions, Außerdem wurde mehr Wert auf den Speicherverbrauch zur Laufzeit gelegt, List, HashMap, System und Umgebung – Netzwerk, Design – Netzwerk(CallBack), dynamisches Laden, System und Umgebung - Tools |
2.00 beta | 17.10.2000 | wesentliche Erweiterung zu Datenbanken und Netzwerk |
2.00 | 12.12.2000 | Totale Umgestaltung: keine Folien mehr, sondern Fließtext. Wesentliche Erweiterungen zu Streams, Objekte sichern und Datenbank, Anfang eines kleinen FAQ. Und etwas Swing ist auch schon mit drin. |
2.10 | 01.05.2001 | Neuer Teil „Performance managen“, Allgemeines zu Performanceoptimierungen als eigenen Teil aufgenommen, Process Entity Muster, Ergänzungen zu System und Umgebung, Tools – serialver, Klarere Trennung zwischen Allgemeiner und Java Implementierung, Implementierung: ObjectOutputStream, Swing-Models, Icon und Tilesets |
2.20 | 22.11.2001 | Löschen von JTextComponent, Null Pattern, Singleton Muster, Synchronisieren synchronisierter Methoden, Zählrichtung in Schleifen, Speicherbedarf Innerer Klassen, Schlüsselwort strictfp, Teil 8 Implementierung mit Perl begonnen |
2.30 | nicht veröffentlicht | Umstrukturierung zu klareren Trennung zwischen allgemeinen und sprachenabhängigen Informationen, Perlmodule (use, do, require), Hardware: Dateisystem, neuer Anhang zum erstellen Ausführbarer Anwendungen incl. Linken, Java: Statische Variablen richtig initialisieren, Speicherverbrauch von Objekte ermitteln, System und Umgebung: Netzwerk erweitert |
3.00 | 2009 | Übertragung nach Wikibooks |
Glauben ist etwas Grundsätzliches! – Falsches?!?
BearbeitenDieses Dokument enthält (fast) ausschließlich Hinweise und Tipps, welche getestet wurden. Allerdings bedeutet testen hier auf einer bestimmten Betriebssystem-Plattform.
- [dclj]: „Uebrigens treffen Performancebehauptungen nicht für alle Plattformen gleichermassen zu. So sollte man z.B. unter FreeBSD oder Linux (Blackdown jdk1.2) einen Vector mittels der Methode toArray umwandeln. Unter Windows war die Methode um den Faktor 2 langsamer, dafuer das Umkopieren in einer Schleife etwas besser.“
Es bietet sich somit immer an, die hier gemachten Aussagen zumindest kritisch zu hinterfragen. Das Dokument ist nicht der Weisheit letzter Schluss und gerade neuere Hardware, Betriebssysteme, Laufzeitumgebungen können zu neuen Ergebnissen führen. Irgendwo, schon wieder lässt mich mein Gedächnis im Stich, hab ich mal einen schönen Satz gelesen, welcher auch für dieses Dokument gilt: „Rechtschreib- und Grammatikfehler sind gewollt und dienen der Erhöhung der Aufmerksamkeit beim Leser.“ Na ja, oder so ähnlich...
Verwendete Abkürzungen
BearbeitenAbkürzung | Bedeutung | Erläuterungen |
---|---|---|
BNO | Benutzeroberfläche | häufig auch als GUI bezeichnet |
EJB | Enterprise Java Beans | Objekte gem. J2EE Spezifikation |
GUI | Graphic User Interface | Benutzeroberfläche |
JDK | Java Development Kit | Java Klassen zur Entwicklung |
JIT | Just In Time Compiler | Optimierung für die JVM |
JRE | Java Runtime Environment | Ausführungsumgebung für Javaanwendungen |
JVM | Java Virtuelle Maschine | Der Übersetzer des Bytecode in Maschinensprache |
LAN | Local Area Network | Lokales Netzwerk. Ein LAN ist im allgemeinen ein besonders schnelles Netzwerk, auf welches von außen nur beschränkt zugegriffen werden kann. |
MVC | Model View Controller | Ein Konzept zur Trennung von Anwendung und BNO |
OO | Objektorientierung | Ein Konzept der Anwendungsentwicklung |
OOA | Objektorientierte Analyse | Fachanalyse, welche bereits den OO-Gedanken umsetzt |
OOD | Objektorientiertes Design | Modell, welches die Fachanalyse mit Rücksicht auf die verwendete Programmiersprache für die Implementierung vorbereitet |
OOI | Objektorientierte Implementation | |
UML | Unified Modelling Language | Beschreibungssprache für objektorientierte Systeme. |