Java-Programmierung: JDBC, Applets, Threads und Servlets

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 7,98 KB

JDBC-Treiber und ihre Funktion

JDBC-Treiber (auch als Handler bezeichnet) sind eine Reihe von Klassen und Interfaces, die für die JDBC-API erforderlich sind. Eine Java-Applikation nutzt diese in Verbindung mit einer Datenbank. Wenn Entwickler eine Datenbank über JDBC zugänglich machen wollen, müssen sie einen Treiber für die entsprechende Datenbank-Implementierung einsetzen. Die Aufgabe des Treibers ist es, Standard-JDBC-API-Befehle in das native Protokoll der Datenbank zu übersetzen.

Grundlagen einer JDBC-Anwendung

Jede Anwendung, die über die JDBC-API auf eine Datenbank zugreift, muss eine Reihe von Schritten durchlaufen:

  1. Stellen Sie eine Verbindung zur Datenbank her.
  2. Führen Sie eine oder mehrere SQL-Anweisungen aus.
  3. Falls Daten zurückgegeben werden (SELECT), müssen diese verarbeitet werden.
  4. Geben Sie die Verbindungsressourcen frei.

Manuelle Ressourcenfreigabe

Es ist eine gute Praxis, Ressourcen manuell freizugeben, sobald sie nicht mehr benötigt werden. Zu den Ressourcen gehören das ResultSet, das Statement und die Connection selbst. Um diese freizugeben, rufen wir die close()-Methode der entsprechenden Objekte auf. Das Aufrufen der close()-Methode eines Statements gibt automatisch auch die Ressourcen des zugehörigen ResultSet frei.

Compiler und Interpreter

Compiler

Der Compiler kümmert sich um die Umwandlung des Quellprogramms in ein Objektprogramm.

Interpreter

Ein Interpreter übersetzt High-Level-Code in Binärcode, jedoch im Gegensatz zum Compiler erst zur Laufzeit. Das bedeutet, es gibt keinen initialen Prozess der Übersetzung des gesamten Quellprogramms in eine Binärdatei, sondern jeder Befehl wird einzeln übersetzt und ausgeführt.

Im Allgemeinen ist der Hauptnachteil eines Interpreters, dass ein interpretiertes Programm in der Regel langsamer läuft als ein kompiliertes. Der Grund dafür ist, dass der Interpreter jede Anweisung im Programm bei jeder Ausführung analysieren muss (Echtzeit-Analyse).

Java Applets

Die Applet-Klasse bietet alles Notwendige, um Applets zu erstellen. Sie ist im Paket java.applet enthalten. Wenn wir ein Applet entwickeln wollen, müssen wir dieses Paket sowie die Pakete java.awt und javax.swing importieren, da diese alle notwendigen Werkzeuge für die Entwicklung grafischer Oberflächen enthalten.

Ein Applet läuft im Webbrowser auf dem Client-Computer. Java-Entwickler haben jedoch einige Einschränkungen implementiert, um Schäden oder Viren auf den Client-Rechnern zu verhindern:

  • a) Sie können das Dateisystem über den Browser weder lesen noch beschreiben.
  • b) Sie haben nur Zugriff auf den Server, von dem das Applet stammt (bei Sockets).
  • c) Sie können keine Programme auf dem Client ausführen.
  • d) Native DLLs können nicht geladen werden.

Um Ereignisse in einem Applet zu verwalten, importieren wir das Paket java.awt.* und nutzen das ActionListener-Interface, um auf Aktionen in der Methode actionPerformed() zu reagieren.

Der Lebenszyklus eines Applets

  • init(): Die erste Methode, die beim Laden des Applets nur einmal ausgeführt wird. Sie dient zur Initialisierung von Variablen.
  • start(): Wird nach init() ausgeführt. Ermöglicht den Neustart eines Applets. Diese Methode wird jedes Mal aufgerufen, wenn das HTML-Dokument mit dem Applet angezeigt wird.
  • paint(): Wird jedes Mal ausgeführt, wenn die Ausgabe des Applets neu gezeichnet werden muss.
  • stop(): Wird ausgeführt, wenn der Browser die Seite mit dem Applet verlässt. Dient zum Stoppen des Applets.
  • destroy(): Wird ausgeführt, wenn die Umgebung das Applet vollständig aus dem Speicher löschen möchte. Die stop()-Methode wird immer vor destroy() aufgerufen.

Was ist ein Thread?

Die Java Virtual Machine (JVM) ist ein massiv Thread-basiertes System. Das bedeutet, sie ist in der Lage, mehrere Sequenzen (Programme) gleichzeitig auszuführen. Die JVM kümmert sich um Details wie Zeitzuordnung und Prioritäten, ähnlich wie ein Betriebssystem, das mehrere Prozesse verwaltet.

Der grundlegende Unterschied zwischen einem Betriebssystem-Prozess und einem Java-Thread ist, dass Threads innerhalb der JVM laufen. Da die JVM selbst ein Prozess des Betriebssystems ist, teilen sich alle Threads die Ressourcen, einschließlich Speicher, Variablen und Objekte. Diese Art von Prozessen wird oft als "leichtgewichtige Prozesse" (Lightweight Processes) bezeichnet.

Threads sind nützlich, da sie den Programmablauf in zwei oder mehr Teile aufteilen können. Zum Beispiel kann ein Thread die Benutzerinteraktion übernehmen, während ein anderer im Hintergrund eine Datei überträgt oder auf Systemressourcen zugreift.

Die Thread-Klasse

Der direkteste Weg, ein Multithreading-Programm zu erstellen, besteht darin, die Thread-Klasse zu erweitern und die Methode run() zu überschreiben. Diese Methode wird aufgerufen, wenn der Thread gestartet wird (durch Aufruf der start()-Methode). Der Thread beginnt mit dem Aufruf der run()-Methode und endet, wenn diese abgeschlossen ist.

  • Die Klasse Thread befindet sich im Paket java.lang und muss daher nicht explizit importiert werden.
  • Der Konstruktor public Thread(String str) erhält einen Parameter zur Identifizierung des Threads.
  • Die run()-Methode enthält den Ausführungsblock. Darin gibt getName() den Namen des Threads zurück.
  • In der main-Methode werden Objekte der Klasse ThreadEjemplo erstellt und mit start() gestartet.
  • Die Implementierung von Threads ist asynchron. Der Aufruf von start() kehrt sofort zurück, während der Thread unabhängig weiterläuft.

Was ist ein Servlet?

Servlets sind Java-Klassen, die die Funktionalität eines Webservers durch die Generierung dynamischer Webseiten erweitern. Eine Laufzeitumgebung, die Servlet-Engine, verwaltet das Laden und Entladen der Servlets. Sie arbeitet mit dem HTTP-Webserver zusammen, um Anfragen von Clients an das Servlet weiterzuleiten und die Antworten zurückzusenden.

Servlets wurden entwickelt, um Einschränkungen von Applets zu überwinden:

  • Zugriff auf andere Server (nicht nur den Hosting-Server).
  • Zugriff auf Server-Dienste.
  • Sicherheitsaspekte (Vermeidung von Reverse Engineering der Business-Logik auf Client-Seite).

Features von Servlets

  • Sie sind zu 100 % reines Java und damit plattformunabhängig.
  • Sie sind objektorientiert.
  • Sie nutzen alle Java-Technologien: Threads, Datenbankzugriff, Streams, RMI, Netzwerkzugriff etc.
  • Sie sind sicher durch den Java Security Manager.
  • Die Kommunikation zwischen Servlets ist einfach.
  • Fehler können durch Exception-Handling effizient verwaltet werden.

Strukturierte Programmierung und Web-Anwendungen

Strukturierte Programmierung

Die strukturierte Programmierung ist ein Konzept zur Erstellung leicht verständlicher Programme. Sie ist besonders nützlich für Korrekturen oder Änderungen nach Abschluss der Entwicklung.

Web-Anwendungen

Eine Web-Anwendung ist eine Sammlung von Servlets, JSPs, Java-Klassen, Konfigurationsdateien und statischen Dokumenten (HTML, XHTML, Bilder etc.). Diese Ressourcen können verpackt und auf verschiedenen Servern unterschiedlicher Hersteller ausgeführt werden. Eine Web-Anwendung definiert somit die Web-Schicht einer beliebigen Applikation.

Verwandte Einträge: