Was ist Java?
Java ist eine objektorientierte, betriebssystemunabhängige Programmiersprache, die im Jahre 1995 von der Firma Sun
Microsystems eingeführt wurde. Die Sprache wird ständig weiterentwickelt, seit September 2017 gibt es die Version 9.
Zur Entwicklung einer Java-Anwendung können Sie das Java Development Kit (JDK) nutzen. Zur Ausführung einer Java-Anwendung
wird auf dem Zielrechner eine Java-Laufzeitumgebung (Java Runtime Environment, JRE) benötigt. Beide Softwarepakete stehen
auf der Website der Firma Oracle (www.oracle.com), die Sun Microsystems im Jahre 2010 übernommen hat, zum Download zur
Verfügung.
Mithilfe von Java können unterschiedliche Anwendungen erstellt werden, unter anderem:
- Standard-Desktop-Anwendungen,
- Internet-Anwendungen
- Applets, also Anwendungen, die innerhalb eines Internetbrowsers laufen und
- Apps für Smartphones und Tablets, zum Beispiel Android-Apps.
Wie arbeite ich mit Java?
Sie können Java-Anwendungen bereits mit einfachen Mitteln entwickeln. Das Java-Programm können Sie mithilfe eines einfachen Texteditors
schreiben und in einer Datei mit der Endung java abspeichern. Mithilfe des Compilers aus der JDK erstellen Sie daraus Bytecode in einer
Datei mit der Endung class. Diese kann dank der JRE auf dem Zielrechner ausgeführt werden.
Allerdings ist eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) bei der Erstellung von Java-Anwendungen
sehr hilfreich. Als Beispiele sollen hier NetBeans (netbeans.org) und Eclipse (eclipse.org) genannt werden. Beide Softwarepakete wurden
auf Basis von Java entwickelt. Sie wurden in erster Linie zur Entwicklung von Java-Anwendungen gedacht. Sie können aber auch zur Software-
Entwicklung in anderen Sprachen genutzt werden, zum Beispiel für C, C++ oder PHP.
Was ist JavaFX?
Das JavaFX-Framework bietet die Möglichkeit, Java-Anwendungen mit grafischen Benutzeroberflächen zu entwickeln. Es wurde seit dem Jahre
2008 von Grund auf neu entwickelt und soll die älteren Programmbibliotheken AWT (Abstract Window Toolkit) und Swing ablösen. JavaFX kann
auch zur Erstellung von zweidimensionalen Zeichnungen und Animationen (2D) sowie der 2D-Darstellung von dreidimensionalen Zeichnungen und
Animationen (3D) dienen. Es kann direkt auf die entsprechenden Schnittstellen moderner Grafikkarten zugreifen.
Ein Beispielprogramm
In diesem Abschnitt folgt ein Beispiel für eine einfache 2D-Animation mit JavaFX. Zunächst wird ein Objekt in der linken oberen Ecke des
Bildschirms erzeugt: Ein gelbes Quadrat mit schwarzem Rand. Anschließend läuft ein "Film", in dessen Verlauf das Objekt nacheinander auf
unterschiedliche Arten animiert wird, jeweils über zwei Sekunden hinweg:
- Das Objekt wird nach rechts verschoben (siehe Abbildung 1),
- anschließend nach links und
- wieder nach rechts,
- das Objekt wird nach unten verschoben (siehe Abbildung 2),
- die Füllfarbe des Objekts wird auf Grün geändert (siehe Abbildung 3),
- die Farbe des Rands des Objekts wird auf Rot geändert,
- das Objekt wird nach links oben verschoben und gleichzeitig um 45 Grad gedreht (siehe Abbildung 4) und
- das Objekt wird vollständig transparent, es verschwindet also.
Anschließend läuft der gesamte Ablauf wieder zurück bis zum Startzustand.
Falls Sie bereits Kenntnisse in einer anderen Programmiersprache besitzen, finden Sie im Code und den kurzen Kommentaren
viele bekannte Elemente, aber auch viele Elemente, die für Java spezifisch sind. Natürlich ist dieses Demo-Beispiel noch
nicht zum gründlichen Erlernen von Java geeignet. An dieser Stelle verweise ich auf mein
Buch beim Rheinwerk-Verlag.
Abbildung 1: Objekt wird nach rechts bewegt
Abbildung 2: Objekt wird nach unten bewegt
Abbildung 3: Füllfarbe des Objekts wird geändert
Abbildung 4: Objekt wird nach links oben verschoben und gleichzeitig gedreht
Der Code des Programms
Es folgt der Programmcode in der Datei "Fx2DAnimation.java":
// Zuordnung der Java-Klasse zu einem Package
package fx2danimation;
// Benötigte JavaFX-Bibliotheken
import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.shape.*;
import javafx.scene.paint.*;
import javafx.animation.*;
import javafx.util.*;
// Klasse, erbt von JavaFX-Klasse
public class Fx2DAnimation extends Application
{
// Hauptmethode der Java-Anwendung
public static void main(String[] args)
{
// Start der Anwendung
launch(args);
}
// Methode start() der JavaFX-Klasse Application muss überschrieben werden
// Verweis auf Hauptfenster = Bühne wird geliefert
@Override
public void start(Stage hauptFenster)
{
// Layout-Element, das die Zeichnungselemente beinhaltet
Pane pn = new Pane();
// Rechteck-Objekt erzeugen, Lage X=2 / Y=2, Breite=50 / Höhe=50
Rectangle re = new Rectangle(2, 2, 50, 50);
// Füllfarbe, Liniendicke und -farbe
re.setFill(Color.YELLOW);
re.setStrokeWidth(5);
re.setStroke(Color.BLACK);
// Rechteck dem Layout-Element zuordnen
pn.getChildren().add(re);
// Animations-Objekt erzeugen, vom Typ "Verschiebung"
// dauert zwei Sekunden, bezieht sich auf das Rechteck
TranslateTransition tt1 =
new TranslateTransition(Duration.millis(2000), re);
// Animation verschiebt nach rechts, von X=2 auf X=100
tt1.setToX(100);
// Animation durchläuft drei Zyklen
tt1.setCycleCount(3);
// Animation läuft zurück zu X=2, zählt auch als Zyklus
tt1.setAutoReverse(true);
TranslateTransition tt2 =
new TranslateTransition(Duration.millis(2000), re);
// Animation verschiebt nach unten, von Y=2 auf Y=100
tt2.setToY(100);
// Animations-Objekt erzeugen, vom Typ "Ändern der Füllfarbe"
FillTransition fi3 =
new FillTransition(Duration.millis(2000), re);
// Animation ändert Füllfarbe von Gelb zu Grün
fi3.setToValue(Color.GREEN);
// Animations-Objekt erzeugen, vom Typ "Ändern der Linienfarbe"
StrokeTransition sr4 =
new StrokeTransition(Duration.millis(2000), re);
// Animation ändert Linienfarbe von Schwarz zu Rot
sr4.setToValue(Color.RED);
TranslateTransition tt5 =
new TranslateTransition(Duration.millis(2000), re);
// Animation ändert zwei Eigenschaften gleichzeitig
tt5.setToX(50);
tt5.setToY(50);
// Animations-Objekt erzeugen, vom Typ "Drehung"
RotateTransition rt6 =
new RotateTransition(Duration.millis(2000), re);
// Animation dreht von 0 Grad (=Standard) zu 45 Grad
rt6.setToAngle(45);
// Animations-Objekt erzeugen
// vom Typ "Sammlung für gleichzeitige Animationen"
// hat hier keine eigenen Eigenschaften
ParallelTransition pt7 = new ParallelTransition();
// Fasst mehrere Animationen zusammen
pt7.getChildren().addAll(tt5, rt6);
// Animations-Objekt erzeugen, vom Typ "Ändern der Transparenz"
FadeTransition ft8 =
new FadeTransition(Duration.millis(2000), re);
// Verzögerung des Starts einstellen
ft8.setDelay(Duration.millis(1000));
// Animation ändert Transparenz
// von 1 (=Standard, vollständig sichtbar) zu 0 (=vollständig unsichtbar)
ft8.setToValue(0);
// Animations-Objekt erzeugen
// vom Typ "Sammlung für Animationen nacheinander"
// ergibt eine Abfolge wie in einem Film
SequentialTransition sq9 = new SequentialTransition();
// Fasst mehrere Animationen in dieser Reihenfolge zusammen
sq9.getChildren().addAll(tt1, tt2, fi3, sr4, pt7, ft8);
// Der gesamte Ablauf läuft wieder zurück bis zum Startzustand
sq9.setCycleCount(2);
sq9.setAutoReverse(true);
sq9.play();
// Titel für Hauptfenster
hauptFenster.setTitle("2D-Animationen");
// Szene wird erzeugt, beinhaltet Layout-Element,
// hat Breite und Höhe, wird in Hauptfenster eingebettet
hauptFenster.setScene(new Scene(pn, 400, 200));
// Hauptfenster wird angezeigt
hauptFenster.show();
}
}
Aktuelle IT Jobs
» IT-Administrator (m/w/d)» Wirtschaftsinformatiker*in als Stv. Teamleitung Vertriebs-IT (m/w/d) Schwerpunkt: Mobile Ticketing» Informatiker (m/w/d) als Software Engineer (m/w/d) Shop Floor Automation» IT-Systemadministrator (m/w/d)» Softwareingenieur/Experte Level 2 (m/w/d) im Bereich Digitalisierung (Dekarbonisierung)» alle Jobs anzeigen
Autor

Thomas Theis ist Diplom-Ingenieur für Technische Informatik und Software-Entwickler. Er hat langjährige Erfahrung
als IT-Dozent, unter anderem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual C#, Visual Basic sowie
Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbücher. Einsteiger und Neulinge schätzen seine Fähigkeit,
auch komplizierte Sachverhalte leicht verständlich zu machen und dabei den Spaß am Programmieren nie aus den Augen zu verlieren.