Ich denke, das Größte Problem für schöne Java-Codes ist, dass man viele der Klassen aus der JRE nicht kennt. Deshalb baut man sich Konstrukte, die eigendlich in der Funktion schon vorhanden und im großen und ganzen oft nicht so gut wie die von Sun/Oracle sind. Beispielweiße habe ich von der LinkedBlockingQueue nur durch reinen Zufall hier im Forum erfahren. Darum wollte ich einige Klassen daraus auflisten. Es sind derzeit nur die, die mir jetzt eingefallen sind, aber wäre natürlich nett, wenn ihr selbst welche nennt, ich kenne auch nur einen Bruchteil des JRE.
Code:
Allgemein:
Toolkit: Einige Servicefunktionen, wie z. B. das Erkennen der Bildschirmauflösung.
StringBuffer: Um mehrere Strings zusammenzuführen. (Leistungsstärker als concat und "+" bei mehr als 2 Verkettungen.)
StringBuilder: Ähnlich zu StringBuffer, aber nicht syncronisiert. (Schneller aber Probleme bei multiblen Zugriff.)
Math: Sammlung von mathematischen Funktionen (Sinus, Cosinus, min, max..) und Konstanten. (PI, eulerische Zahl.)
Thread: Native Threadklass für paralelle Abläufe.
Executors: Factory für ExecutorService.
ExecutorService: Zum starten von Threads oder Callables. (Threads mit Rückgabewert.)
Socket: Um eine TCP-IP-Verbindung zu einem Server herzustellen.
ServerSocket: Um eine Socket-Verbindung serverseitig anzunehmen.
DatagramSocket: Um über UDP mit einem Rechner zu kommunizieren. (Schneller als TCP, Reihenfolge und Ankommen der Datenpackete nicht sichergestellt.)
MulticastSocket: Um ein Datenpacket an mehrere Rechner gleichzeitig zu addressieren.
Bilder:
Toolkit: Zum einfachen laden von Bildern.
ImageIO: Um BufferedImage zu laden oder Bildobjekte abzuspeichern.
ImageIcon: Wrappler für Images, direktes laden über Konstruktor. Für Swing-Komponenten wie JLabel Pflicht.
Image: Abstrakte Klasse für Bilddateien.
BufferedImage: Erweiterte Klasse von Image mit mehr Funktionen. (z. B. Bildausschnitte zurückliefern.)
Graphics: Um Bilder zu bearbeiten, z. B. darauf zeichnen oder transformieren.
Collections:
(Syncronisiert)
Queue: Collection für Abwärtskompatiblität mit älteren JRE, FIFO.
Stack: Collection für Abwärtskompatiblität mit älteren JRE, LIFO.
LinkedBlockingQueue: Wie LinkedList mit Wartefunktion, falls sie leer ist.
(Unsyncronisiert)
ArrayList: Wrappler für Array, das automatisch mit Größeren ersetzt wird.
LinkedList: Doppelt verkettete Liste, schnellere Add/Remove-Operationen als ArrayList, aber langsamerer Feldzugriff. FIFO- und LIFO-Queues möglich.
HashMap: Zum verknüpfen eines Key-Objektes mit einen Wert.
HashSet: Set, also Sammlung von Objekten die nur einmal vorkommen dürfen, unsortiert.
TreeSet: Set, langsamer als HashSet, sortiert.