The Traveling Salesman

Im Rahmen eines kleinen Projektes für die Uni beschäftige ich mich im Moment intensiver mit dem Traveling Salesman Problem und Lösungsalgorithmen dafür. Ziel das Projektes, das ich mit zwei Studienkollegen durchführe, ist es, die Funktionsweise dieser Algorithmen in einem Programm zu visualisieren. Von unserem Programm gibt es bisher noch keine öffentliche Version, jedoch gibt es bereits einige sehr schöne JAVA-Applets, die ähnliches leisten:

Ein Applet, das das Traveling Salesman Problem per Simulated Annealing (Simulierte Abkühlung) löst. Das Verfahren orientiert sich dabei am kontrollierten Abkühlen von Metallen zur Beeinflussung der Atom-Struktur. Details dazu gibt es bei Wikipedia 😉

Auch mit genetischen Algorithmen kann man das Traveling Salesman Problem lösen, wie man an diesem Applet sehr schön sehen kann.

Ein weiteres spannendes Verfahren ist die Ant Colony Optimisation, die das natürliche Verhalten von Ameisen bei der Suche nach kürzesten Wegen simuliert.

Natürlich gibt es noch weitere Verfahren, mit denen man das Traveling Salesman Problem lösen kann, jedoch will ich mich hier auf diese 3 bekannten Verfahren beschränken und auf die sehr gute  Seite zum Traveling Salesman Problem des Georgia Institute of Technology verweisen. Dort werden unter anderem die größten Traveling Salesman Probleme vorgestellt, die jemals gelöst wurden.

Nettes Applet zu Bäumen

Wer zufällig etwas über AVL- oder Rot-Schwarz-Bäume lernen will oder muss, dem sei der folgende Link ans Herz gelegt: Link

Dort kann der Aufbau, das Löschen, das Balancieren etc. sehr schön anhand eines Java-Applets nachvollzogen werden. Sogar mit Sound 🙂

Fortsetzung entfällt

Das geplante Tutorial zum Thema JSPs und Servlets entfällt vorerst. Bin erstens zur Zeit wieder mit anderen Themen beschäftigt und zum anderen einfach noch nicht tief genug in der Materie, um mein Wissen in sinnvoller Form weiterzugeben.

Einen Linux-Tipp habe ich aber noch: Um die Anzahl der Dateien in einem Verzeichnis zu ermitteln einfach folgenden Befehl eingeben:
ls | wc -l

Webanwendungen mit JSPs und Servlets

Ja, mit Java kann man auch Webanwendungen entwickeln!
Dazu benötigt man zum einen die Java 2 Enterprise Edition, die im Gegensatz zur Standard Edition Servlets und JSPs implementiert und einen Application Server, der die Servlets und JSPs dann ausführt.

Einrichtung der Entwicklungsumgebung

Da ich schon seit längerem Eclipse für die Javaprogrammierung verwende, habe ich mich für eine Version von Eclipse entschieden, die ein Framework für die J2EE-Anwendungsentwicklung mitbringt. Die Eclipseversion kann hier heruntergeladen werden. Nach dem entpacken des Downloadarchives ist sie auch schon einsatzbereit.

Um die mit Eclipse erstellten Webanwendungen auch testen zu können, benötigt man einen Application Server. Meine Wahl ist auf den Tomcat Server gefallen, der von der Apache Group entwickelt wird. Er kann in der momentan aktuellen Version 5.5.17 hier heruntergeladen werden. Nach dem Download einfach den Installer ausführen. Danach ist der Tomcat-Server voll einsatzfähig.

In Eclipse muss nun noch der Tomcat als Application Server eingetragen werden. „Window/Preferences/Server/Installed Runtimes“ über „Add“ den Tomcat 5.5 auswählen und im nächsten Schritt das korrekte Installationsverzeichnis des Tomcat eintragen und bestätigen.

Damit ist die Einrichtung ersteinmal abgeschlossen und wir können uns ans Erstellen der ersten Anwendung machen…

Grundsätzliches

Vorher aber noch ein paar grundsätzliche Dinge:

Servlets sind normale Javaprogramme, die jedoch alle von einer speziellen Klasse erben, die ihnen die typischen Servlet-Eigenschaften gibt. Sie sind gut dafür geeignet, die Kontroll-Schicht einer Anwendung zu übernehmen und die Anfragen vom Browser an die entsprechenden Logik-Elemente oder JSPs weiterzuleiten.

JSPs sind JavaServerPages. Diese können ganz normale Html- oder Xml-Dokumente sein. Java-Code wird in diesen Dokumenten nur innerhalb von speziellen Tags ausgeführt, ähnlich Java Script. Die JSPs sind für alles zuständig, was der Benutzer im Browser zu sehen bekommt. Sie sind ein Art Template der Anwendung und enthalten im Idealfall keine Programmlogik.

Die eigentliche Programmlogik kann in ganz normalen Java-Klassen implementiert werden, auf die dann über das Kontroll-Servlet zugegriffen wird.

Durch diese Dreiteilung der Anwendung nach dem MVC-Prinzip wird gewährleistet, dass die Anwendung leicht zu pflegen ist und außerdem die einzelnen Aufgaben im Rahmen der Entwicklung an verschiedene Personen delegiert werden können. So kann die Enwicklung der JSPs von einem HTML-Experten übernommen werden, während die Servlet-Entwicklung von einem Java-Entwickler übernommen wird.

Im nächsten Artikel werden wir dann endlich die erste Anwendung mit JSPs und Servlets entwickeln. Ziel ist es, am Ende diese kleinen Artikelreihe ein funktionsfähiges Gästebuch mit Datenbankanbindung entwickelt zu haben…

P.S.: Ich bin auch noch neu in der Entwicklung mit J2EE und daher kann es schon sein, dass das nicht so ganz optimal ist, was ich hier bisher geschrieben habe. Bei mir hat es zumindest so funktioniert…

Integrierte Datenbank für Java mit HSQLDB

Mit HSQLDB gibt es ein komplett in Java entwickelte Datenbank, die keinen externen Datenbankserver benötigt, sondern komplett in ein Java-Projekt eingebunden werden kann. Dadurch, dass der Zugriff auf externe Datenbanken entfällt, ist JSQLDB auch äußerst performant. Verwendet wird HSQLDV zum Beispiel in dem OpenSource Office-Paket OpenOffice und in Mathematica.

Zur Verwendung der HSQLDB einfach die aktuelle Version 1.8 herunterladen und die im Archiv enthaltene hsqldb.jar in das eigene Java-Projekt einbinden, dass Datenbankfunktionalität besitzen soll. Wie das bei Eclipse funktioniert ist hier beschrieben.

Der schnelle Einstieg gelingt besonders gut mit der Dokumentation von der offiziellen Webseite, die auch einige einfache Anwendungsbeispiele präsentiert. Die API ist hier zu finden.