Inhaltsübersicht
- Java Allgemein
- Hallo Welt "Hallo Welt": das ist typischerweise das erste Programm, das man in einer neuen Programmiersprache schreibt. Wie sieht es in Java aus?
- Environment Variablen
Einige der Standard JAVA Environment Variablen sind konstant und werden sehr häufig benutzt.
Da die Abfrage anhand der Property-Namen anfällig für Tippfehler ist, wird hier ein Interface vorgesetllt, welches einige der SystemProperty Werte in Konstanten ablegt.
Auf diese Konstanten kann ohne Gefahr von Laufzeitfehlern zugegriffen werden, da Tippfehler bereits vom Compiler erkannt werden.
So können die System-Properties sicher verwendet werden. - String mit Leerzeichen oder Nullen auffüllen
In Java kann man sehr einfach mit Strings arbeiten, zum Beispiel Strings mit führenden Nullen oder mit Leerzeichen auffüllen.
Immer dann, wenn die Performance zur Laufzeit keine Rolle spielt, bietet sich die vereinfachte Syntax mit dem Plus-Operator an. Sie ist besonders schnell zu codieren. - Kommentare
In Java gibt es verschiedenen Möglichkeiten, Kommentare im Programmcode unterzubringen.
Hier einige Beispiele. - Shutdown Hook
Oft müssen beim Beenden der JVM (java virtual machine) Aufräumarbeiten durchgeführt werden.
Dies erreicht man mit einem shutdown hook: dieser definiert Code, der beim Beenden der JVM ausgeführt wird.
Ein Java Programm kann zur Laufzeit jederzeit einen neuen shutdown hook hinzufügen. - Assert, Assertion
Mit assert stellt man sicher, daß das Programm nur weiter läuft, wenn notwendige Bedingungen erfüllt sind.
So kann verhindert werden, daß bei einem unerwarteten Fehler weitere Folgefehler verursacht werden. - final (keyword)
Java kennt das Schlüsselwort
final
. Trotz der Ähnlichkeit zum Schlüsselwortconst
in C++ gibt es feine Unterschiede. Wir schauen uns hier die Bedeutung von final in Java an. - List und ArrayList (Beispiel)
Die Klasse
ArrayList
aus der Java Standard API ist mächtig und praktisch, wenn es um die Verwaltung von Listen mit dynamischer Länge und sich ändernden Inhalten geht. Sie bietet Operationen, die mit klassischen Arrays aufwändig und immer wiederkehrend gleich implementiert werden müssten. Hier einige einfache Beispiele, die zeigen, wie man mit einerArrayList
arbeiten kann. - Array sortieren
In einem Java Array hat jedes Objekt einen festen Platz mit einer laufenden Nummer.
Hier wird gezeigt, wie man die Objekte im Array sortieren kann (also sozusagen "Arrays sortieren"). - System hängt: Thread Dumps
Was tun, wenn ein Java-Programm hängen bleibt, also nichts mehr tut?
Dieses Problem kann durch ungeschickte Thread-Programmierung, insbesondere bei Servern, auftreten.
Ursache sind zumeist falsch gewählte synchronized-Blöcke. - StringTokenizer Beispiel
Strings lassen sich in Java mit der Klasse StringTokenizer sehr leicht anhand von Trennzeichen zerlegen.
Dieses Beipsiel zeigt, wie es geht. - Reguläre Ausdrücke (regular expressions)
In Java können reguläre Ausdrücke (regular expressions) seit Version 1.4 direkt geparst werden, ohne daß man zusätzliche Bibliotheken / Hilfsklassen einbinden muss. Hierfür dient das Paket
java.util.regex
. Damit kann man sehr einfach mit regulären Ausdrücken arbeiten. - Arbeiten mit Files
Java bietet umfassende Möglichkeiten, mit Dateien (Files) zu arbeiten.
Dieses kurze Tutorial soll zeigen, wie einfach die grundlegenden Operationen sind. - InputStream zweimal lesen
Einen
InputStream
kann man in Java nur einmal lesen - und eben nicht öfters nutzen. Wer einen InputStream zweimal lesen will (oder häufiger), muss etwas tricksen. Das kann beispielsweise notwendig werden, wenn man einen eingehenden Request zunächst protokollieren und dann an einen XML Parser übergeben will. - CSV Datei verarbeiten
CSV ist ein gängiges Dateiformat zum Austausch von Listen. Dateien im CSV-Format sind leicht zu erstellen und können von vielen Programmen, wie zum Beispiel Tabellenkalkulationen, gelesen werden.
Auch in Java lassen sich CSV-Dateien sehr einfach parsen. Dieses Beispiel zeigt, wie man in Java eine CSV-Datei einfach und schnell verarbeiten kann. - Datei in String einlesen Java bietet keinen einzeiligen Mechanismus, um eine ganze Datei in einen String einzulesen. Wir müssen hierzu ein paar Zeilen mehr programmieren, um den Inhalt einer ganzen Datei in einen einzigen String einzulesen.
- XPath Beispiel
XPath ist eine einfache Notation zur Beschreibung eines Knotens (also zur Identifikation eines Elements) in einem XML-Dokument.
Auch Java unterstützt XPath mithilfe einer mächtigen und zugleich einfachen Klassenbibliothek.
Damit kann man auch in Java sehr einfach auf einzelne Knoten in einem XML-Dokument zugreifen. - Modulo, Divisionsrest, Teilen ohne Rest
Mit dem Modulo-Operator kann der ganzzahlige Divisionsrest berechnet werden. In Java wird
dafür das Prozentzeichen verwendet. - Runden auf n Kommastellen
Runden auf Kommastellen geht mit der Funktion
Math.round
nicht direkt.
Man muss entweder die zu rundende Zahl vorher mit der gewünschten Zehnerpotenz multiplizieren und nach dem Runden wieder dividieren, oder auf die Hilfsklasse NumberFormat der Java Standardbibliothek ausweichen. Wann welche Variante naheliegender ist, schauen wir uns hier an. - Datum formatieren Java kennt für Zeit- und Datumsangaben eine eigene Klasse java.util.Date, mit der man beinahe so arbeiten kann, als wäre es ein eigener Datentyp. Wer ein Datum und/oder eine Uhrzeit ausgeben oder anzeigen möchte, muss dieses Datum formatieren.
- Netzwerkprogrammierung
- HTTP GET mit Proxy und Authentication
JAVA bietet eine elegante Möglichkeit, HTTP-Aufrufe über einen Proxy zu leiten:
Der Proxy wird von den Standard-HTTP Klassen automatisch aus vorgegebenen System properties ausgelesen.
Diese können entweder per VM-Parameter (konstant) oder zur Laufzeit im Programmcode gesetzt werden.
Zu beiden Varianten gibt es hier ein Beispiel - wahlweise auch mit Authentication durch Username und Passwort. - HTTP GET Authentication mit Username und Passwort
Java bietet sehr komfortable Möglichkeiten, HTTP GET Anfragen durchzuführen.
Doch wenn der Server eine Authentication erwartet, erhält der User nur den HTTP return code 401 (HttpURLConnection.HTTP_UNAUTHORIZED
).
Was ist zu tun, um einen GET Request in Java mit Username und Paßwort zu authentisieren?
- HTTP GET mit Proxy und Authentication
JAVA bietet eine elegante Möglichkeit, HTTP-Aufrufe über einen Proxy zu leiten:
- Swing
- JFrame zentriert in der Mitte positionieren
Ohne Positionierungsanweisungen steht ein JFrame zunächst immer in der linken oberen Bildschirm-Ecke.
Häufig will man den Frame aber zentrieren, z. B. in die Bildschirmmitte oder in die Mitte einer anderen Komponente, zum Beispiel in der Mitte eines übergeordneten Fensters.
Die Methode setLocation() des Swing-APIs ist dabei nicht immer die einfachste. Schneller geht es häufig mit setLocationRelativeTo(). - JFrame dekorieren (Rahmen)
Der Rahmen eines jeden JFrame ist zunächst immer gleich: Menü, TitleBar, Buttons zum Verkleinern und Schließen etc.
Manchmal soll ein JFrame aber anders aussehen:
• JFrame ohne Rahmen
• JFrame ohne Titel / JFrame ohne Kopfzeile - JFrame als Vollbild (fullscreen)
Mit pack() kann man einen JFrame auf die optimale Größe bringen.
Oftmals möchte man aber, daß ein Frame als Vollbild (fullscreen) öffnet, daß also der Frame genauso groß wie der Bildschrim ist. - Seitenverhältnis einer Komponente festlegen Es gibt Komponenten, die man nur in einem bestimmten, festen Seitenverhältnis anzeigen möchte, z. B. nur quaratisch (Seitenverhältnis 1:1).
- JToolBar fixieren
javax.swing.JToolBar
ist durch den Benutzer mit der Maus per Drag & Drop verschiebbar.
Das ist nicht immer erwünscht: manchmal soll die ToolBar fixiert sein, zum Beispiel in einem Applet, wo sich die Größenverältnisse im Applet-Tag nicht online ändern lassen. - Einfache FONT-Operationen
Bei der Klasse
java.awt.Font
fehlen einige Utility-Funktionen, um einen bestehenden Font geringfügig zu verändern, zum Beispiel in Größe oder Style.
Diese einfache Utility-Klasse bietet die Möglichkeiten, die Größe oder den Style eines bestehenden Fonts zu verändern. - JMenu Beispiel
Swing bietet leistungsfähige Klassen, um Menü-Leisten zu erzeugen.
Ein einfaches Beispiel kann als Kopier-Vorlage dienen. - Thumbs erzeugen
Gerade Webautoren benötigen häufig Thumbs - kleine Versionen von höher aufgelösten Bildern.
Diese Bilder per HTML zu verkleinern wäre keine gute Idee, da der Browser vor dem Verkleinern dieser Bilder alle Bilddateien in ihrer vollen Größe vom Server laden müsste - genau das, was man als Webmaster nicht will.
Viel sinnvoller ist es, vorab eine verkleinerte Version der Bilder zu erzeugen und diese sogenannten Thumbs auf dem Webserver zu hinterlegen, so dass der Browser direkt auf diese verkleinderten Bilder zugreifen kann.
- JFrame zentriert in der Mitte positionieren
Ohne Positionierungsanweisungen steht ein JFrame zunächst immer in der linken oberen Bildschirm-Ecke.
- Algorithmen
- Primzahl prüfen
Die Prüfung, ob eine Zahl prim (also eine Primzahl) ist, muss nur bis zur Quadratwurzel durchgeführt werden (=optimierter Primzahltest).
Eine kurze Erklärung hierzu wird durch eine einfache Implementierung ergänzt. So kann man schnell prüfen, ob eine Zahl eine Primzahl ist. - Sieb des Eratosthenes Mit dem Sieb des Eratosthenes können alle Primzahlen von zwei bis zu einer vorgegebenen Obergrenze herausgefiltert werden. In Java lässt sich dieser Algorithmus leicht implementieren.
- Fibonacci Zahlen Fibonacci-Zahlen lassen sich in Java (wie in fast jeder Programmiersprache) sehr leicht berechnen. Da der Algorithmus für die Fibonacci-Folge an sich schon recht einfach ist, sind Fibonacci-Zahlen generell ein schönes Beispiel zur Programmierung von Algorithmen. Dieser Artikel zeigt, wie es in Java geht.
- Bubble Sort
Der am einfachsten zu implementierende Algorithmus zum Sortieren von Daten ist vermutlich der BubbleSort-Algorithmus.
Zu beachten ist, dass er insbesondere im Vergleich zum wesentlich komplexer zu implementierenden Quick-Sort-Algorithmus ein wesentlich schlechteres Laufzeitverhalten zeigt.
Dies wird insbesondere bei großen Datenmengen relevant. - Effiziente String Algorithmen
Die vielen Möglichkeiten, in Java mit Strings zu operieren, bieten leider auch viele Chancen, dies sehr ineffizient zu tun.
Hier sind ein paar Beispiele zusammengefasst, wie man häufig benötigte String-Operationen effizient implementieren kann.
- Primzahl prüfen
Die Prüfung, ob eine Zahl prim (also eine Primzahl) ist, muss nur bis zur Quadratwurzel durchgeführt werden (=optimierter Primzahltest).
- Datenbanken
- Kalender-Arithmetik in SQL
Syntax für alltägliche SQL Abfragen wie zum Beispiel:
- Selektiere alle Datensätze der letzten 30 Tage.
- Oder: selektiere alle Datensätze des letzten Monats, also innerhalb eines festen Intervalls.
- Kalender-Arithmetik in SQL
Syntax für alltägliche SQL Abfragen wie zum Beispiel: