Programmdesign des Horoskoprechners

Der Horoskoprechner und der Horoskopvergleicher sind als Java Server Pages verfasst. Wenn die Antwort vom Server jedoch einmal gesendet wurde, bleibt man bei weiteren Interaktionen – wie andere Datumseingaben, vor- und zurückzoomen etc. – auf der Seite, ohne dass diese jedesmal neu geladen wird. Da die Seite also nicht jedesmal neu aufgebaut werden muss, gibt es kein störendes Flackern.

Dennoch werden als Reaktion auf die meisten Eingaben auch HTTP-Requests abgesendet - sie richten sich an das Servlet http://www.astrotexte.ch/servlet/Ephemeris, das zu den Requestfeldern jd, lon und lat die Planeten- und Häuserstellungen errechnet und textförmig zurücksendet.

Das in die Seite eingebaute unsichtbare Applet HttpRequestor.class wird mittels Javascript dazu angetrieben, aus den Benutzereingaben einen Request an das Ephemeris-Servlet zu senden. Es nimmt dann die HTTP-Antwort des Servlets entgegen und leitet sie an das Horoskop-Applet weiter.

Auf Clientseite werden keine Planeten- und Häuserstände gerechnet. "Billige" Berechnungen, wie etwa die Umrechnung eines Kalenderdatums ins Julianische Datum, werden jedoch aus Performancegründen clientseitig durchgeführt.

Für die nötigen Planeten- und Hausberechnungen wird der Java-Port der Swiss Ephemeris von Thomas Mack (siehe die Download-Seite von Thomas Mack) verwendet. Die Swiss Ephemeris ist eine von Alois Treindl und Dieter Koch in C programmierte Sammlung von Algorithmen für astrologische Berechnungen. Dem Programm liegen die weltweit genauesten überhaupt verfügbaren Ephemeriden zugrunde, die DE406 des Jet Propulsion Laboratory, eines Forschungsinstituts der NASA. Mittels eines ausgeklügelten Verfahrens gelang Treindl und Koch die Kompression der Daten auf 1/40 ihres ursprünglichen Umfangs. Um Planetendaten in einer Zeitspanne von 600 Jahren zu berechnen, benötigt man ein Datenfile von ca. 450 KB, auf das mittels Random Access zugegriffen wird. Eine solche Datei ist natürlich für die Übertragung auf den Client viel zu gross. Schon aus diesem Grund ist es von Vorteil, die Planetenberechnung wie hier auf dem Server durchzuführen. Dankenswerterweise hat Thomas Mack es unternommen, den C-Quelltext der Swiss Ephemeris nach Java zu portieren, so dass die Ephemeris ohne Native Calls als reines Java-Programm in Java Server Pages und/oder Servlets (hier: beides) eingebunden werden kann.

Vorteile dieser Lösung


Zum Horoskoprechner Einstiegsseite für Dokumentation Zurück zur Homepage