vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag 7

Die unterstützten Skriptsprachen verstehen

Was tun Sie, wenn Sie noch keinen eigenen Webserver installiert haben und auch sonst keinen Zugriff auf einen Server haben? UltraDev unterstützt drei verschiedene Skriptsprachen (dreieinhalb, um genau zu sein). Wenn Sie kein genaues Verständnis davon haben, was diese Sprachen tun und wo bzw. wie Sie sie einsetzen können, werden Sie eine Bruchlandung erleiden, bevor Sie überhaupt gestartet sind. Um es aber erst gar nicht so weit kommen zu lassen, lernen Sie heute,

7.1 Skriptsprachen in UltraDev

Wenn Sie mit UltraDev das erste Mal eine Live-Data-Verbindung für Ihre Website einrichten, müssen Sie sich entscheiden, in welcher Sprache der erforderliche Sourcecode geschrieben werden soll. Doch das ist Stoff für unsere morgige Lektion. Heute erarbeiten wir uns das Wissen, das uns die morgigen Entscheidungen erleichtert.

Wie in Abb. 7.1 zu sehen, werden verschiedene Servermodelle unterstützt:

Es gibt wie gesagt vier verschiedene Skriptsprachen und drei verschiedene Servermodelle zur Auswahl. Welche eignet sich nun am besten für Ihre Applikation, was ist langfristig die beste Investition? Wofür soll man sich entscheiden, wenn man noch nach allen Seiten offen ist?

Die Projekte in diesem Buch wurden unter Verwendung von Active Server Pages als Serverplattform realisiert. Der den Beispielen beigegebene Code wurde also mit Active Server Pages erzeugt, doch sollte es Ihnen nicht schwer fallen, diese Applikationen so anzupassen, dass sie auch auf anderen Serverplattformen lauffähig sind - vor allem nach der Lektüre dieses Kapitels.

Active Server Pages

Active Server Pages sind eine Microsoft-Entwicklung und eine der ersten Technologien überhaupt, die die Programmierung mit eingebetteten Skriptsprachen ermöglicht. Statt wie üblich eine externe Anwendung zu schreiben und von diesem Programm dann den erforderlichen HTML-Code erzeugen zu lassen, können Sie das Programm direkt in den HTML-Code einbetten.

Das ASP-Modell ist insofern etwas verwirrend, da es sich hierbei um keine Programmiersprache im eigentlichen Sinn handelt, sondern um ein Set von Technologien, die in Verbindung mit verschiedenen Programmiersprachen funktionieren. Unklar? Dann versuchen wir es mal so herum:

Eingebettete Skriptsprachen machen es möglich, Informationen aus Datenbanken auszulesen bzw. dort abzulegen, Cookies zu speichern usw. Das ASP-Modell stellt für all diese Funktionen vordefinierte Routinen zur Verfügung, die von jeder Programmiersprache genützt werden können, die Active Server Pages unterstützen. Sie könnten sich z.B. Perl herunterladen und als ASP-Sprache installieren. Allerdings wird Perl als Skriptsprache für Active Server Pages von UltraDev nicht unterstützt.

Das Haupt-Handicap von Active Server Pages ist, dass es sich hierbei um eine proprietäre Technologie handelt und nur für zwei Plattformen verfügbar ist.

Wenn Sie MS Windows installiert haben, können Sie sich den Personal Web Server (PWS) herunterladen und die ASP-Komponenten installieren. Allerdings ist das nicht die ideale Plattform, denn sie ist mehr als langsam. Während der Arbeit an diesem Buch wollte ich den PWS eigentlich unter Windows ME auf einem 750-MHz-Athlon betreiben. Da ich aber jedes Mal gut 10 Sekunden warten musste, bis die Seite generiert war, gab ich dieses Vorhaben auf und zog auf einen NT 4.0-Server um, der eine wesentlich bessere Performance bietet.

Hier liegt das Problem von Active Server Pages. Um damit zu arbeiten, sind Sie an die verschiedenen Microsoft-Plattformen gebunden. Und für Mac-User bzw. Open-Source- Jünger dürften diese Plattformen wahrscheinlich nicht zur ersten Wahl gehören.

Doch zum Glück gibt es für alle Probleme eine Lösung. Wenn Sie Active Server Pages einsetzen müssen, aber nicht auf Windows NT/2000 arbeiten, können Sie ein Produkt namens ChiliSoft verwenden. Damit werden Active Server Pages auf verschiedenen UNIX- Derivaten lauffähig, unter anderem Solaris und Linux.

Der Haken an der Sache ist, dass die Anschaffungskosten für eine UNIX-basierte ASP- Lösung weit über denen für die NT-Plattform liegen. Sie können sich Testversionen und weitergehende Produktinformationen unter folgender Adresse herunterladen:

http://www.chilisoft.com/

Das ist sicher eine gangbare Möglichkeit, hat aber ihre Haken und Ösen. Für den Einsteiger empfiehlt es sich, Servermodell und Skriptsprachen nach den Vorteilen auszusuchen, die sie ihm bieten.

Das ASP-Modell ist eine sehr flexible Entwicklungsplattform und bietet einiges an Funktionalität. Als Skriptsprache kommt gewöhnlich VBScript zum Einsatz, allerdings wird manchmal auch JavaScript verwendet.

VBScript ist leicht zu lernen, wird aber von vielen als nicht besonders leistungsfähige Programmiersprache angesehen. Gestandene C-Programmierer finden es meist unter ihrer Würde, sich plötzlich wieder mit BASIC abzugeben. Die zweite Möglichkeit, JavaScript, gilt zwar als etwas salonfähiger, hat aber nicht ganz den Chic und die Power »angesagter« Sprachen wie z.B. Java.

Java Server Pages

Java Server Pages oder JSP ist eine relativ junge Technologie der eingebetteten Programmierung. JSP setzen auf einem Java-Servlet-Modul (auch als Servlet Engine bezeichnet) auf, das seinerseits auf Java basiert.

Java-Servlets entsprangen dem Bedürfnis, für Java-Umgebungen ein Java-basiertes Äquivalent zu den traditionellen CGI-Scripts zu schaffen. Ein Servlet ist ein kompiliertes Java-Programm, mit dem sich verschiedene Aufgaben erledigen lassen wie die Erzeugung von HTML-Dokumenten oder die Verarbeitung von Anwendereingaben usw. Servlets halten sich vollständig an den Java-Standard, arbeiten jedoch mit speziellen Klassen zur Erzeugung von dynamischen Webapplikationen.

Sie können zwar HTML-Code in ein Servlet einbetten, jedoch kein Servlet in ein HTML- Dokument. Um diese Einschränkung zu umgehen, wurden Servlets zu Java Server Pages weiterentwickelt. JSP sind ein Mittel, Java-Code in HTML-Dokumente einzubinden. Was das Ganze noch interessanter macht, ist die Tatsache, dass die JSP-Technologie Java Server Pages vor ihrer Ausführung als Servlet kompiliert. Aber keine Angst, das sind Dinge, die Sie gar nicht wissen müssen, wenn Sie mit JSP arbeiten - die erforderlichen Schritte laufen automatisch auf dem Server ab.

Vielleicht erhebt sich nun von der einen oder anderen Seite der Einwand, dass dieser Umwandlungsprozess von JSP zu Servlet zu Performance-Einbußen führt, darum will ich näher darauf eingehen. Wenn eine JSP in ein Servlet übersetzt wird, bleibt das Servlet im Server-Cache gespeichert. Erst wenn die JSP modifiziert wird, wird entsprechend ein neues Servlet erzeugt. Beim ersten Aufruf einer Seite kann es vielleicht zu gewissen Verzögerungen kommen, aber es gibt keinen Grund, sich hinsichtlich der Geschwindigkeit Sorgen zu machen.

Einer der Vorzüge von JSP ist, dass es sich um Java pur handelt. Alles, was mit Java realisierbar ist (mit der Ausnahme von grafischen Benutzerschnittstellen), ist auch mit JSP machbar. Das heißt, dass Sie als Java-Programmierer sofort in die Erstellung von JSP einsteigen können. Java ist eine moderne Programmiersprache, die in den letzten Jahren zunehmend an Bedeutung gewonnen und andere Programmiersprachen verdrängt hat. Es gibt auch keine Anzeichen, dass sich daran in nächster Zukunft etwas ändern wird.

Java hat auch den Vorzug, vollständig plattformübergreifend und an kein spezielles Betriebssystem gebunden zu sein. Java Server Pages sind ohne Anpassung oder Änderung am Code auf jedem Webserver lauffähig, der JSP unterstützt. Das gilt für sämtliche Bereiche der Seitenerstellung einschließlich Datenbankzugriff. JDBC-Datenbanktreiber können mit nur einer einzigen Treiberdatei auf diverse Datenbanken zuzugreifen. Kopieren Sie den JDBC-Treiber auf einen anderen JSP-Server und eine völlig andere Plattform: Er wird dort genauso funktionieren.

Der Einsatz von JSP-Anwendungen gestaltet sich etwas flexibler als die Verwendung von ASP- oder ColdFusion-Applikationen. Die JSP-Technologie steht zudem völlig unentgeltlich zur Verfügung. Die Apache Group hat z.B. einen Open-Source-JSP-Server implementiert, der unentgeltlich heruntergeladen werden kann.

Dieser Server trägt den Namen Tomcat und wurde vom Apache-Jakarta-Projekt entwickelt. Die JSP-1.1-Spezifikationen wurden vollständig implementiert. Tomcat erfreut sich großer Beliebtheit und entwickelt sich zum meistverwendeten JSP-Server.

Wenn Sie in die Entwicklung von JSP-Seiten einsteigen möchten, können Sie sich Tomcat von der Website des Jakarta-Projekts bei Apache herunterladen:

http:://jakarta.apache.org/

Da an Tomcat noch fleißig entwickelt wird, müssen Sie ein paar Nachteile in Kauf nehmen - die gewichtigsten sind die mehr als unvollständige Dokumentierung und der wenig anwenderfreundliche Installationsprozess. Wenn Sie mit diesem Manko leben können, werden Sie feststellen, dass Tomcat eine universell einsetzbare Produktionsplattform ist, die auf jedem Betriebssystem lauffähig ist, das JSP unterstützt - von Windows 2000/NT bis zu Mac OS X.

Wenn Sie lieber auf kommerzielle Software zurückgreifen, können Sie Ihren Anforderungen entsprechend zwischen mehreren Produkten auswählen. Für Windows und UNIX sind mehrere JSP-Server verfügbar, nachfolgend eine subjektive Auswahl:

Beim Einsatz von JSP-Servern sind hohe Zuwachsraten zu verzeichnen. Informationen über den neuesten Entwicklungsstand bei JSP-Servern finden Sie auf der Website von Sun unter

http://java.sun.com/products/jsp/industry.html

Alle ColdFusion-Jünger seien auf den ersten Hersteller in obiger Liste hingewiesen. Dieselbe Firma, die die ColdFusion-Linie entwickelt und vertreibt, hat ihren eigenen (sehr guten) JSP-Server im Programm. Wenn das kein Indiz für die Leistungsfähigkeit der JSP als Produktionsplattform ist, dann weiß ich es auch nicht.

Obwohl es sich also bei JSP um eine auf verbindlichen Standards basierende Serverplattform handelt, die vermehrt Anwendung findet, bleibt da noch die Sache mit Java selbst. Java ist eine moderne, objektorientierte Programmiersprache, die auf Grund ihrer Komplexität an den Lerner einige Ansprüche stellt. Wenn Sie C oder C++ kennen, werden Sie sich mit JSP-Code schnell zurechtfinden. Sind Sie jedoch bisher nur an Visual Basic oder RealBasic gewöhnt, dann kann die Beschäftigung mit JSP zunächst mal zur kalten Dusche werden. Wir werden uns mit JSP-Code später noch näher beschäftigen.

ColdFusion

Die am leichtesten handhabbare Skriptsprache ist die ColdFusion Markup Language (CFML). Sie erinnert weniger an eine Programmiersprache, sonder eher an erweitertes HTML, mit dem sich nun plötzlich auch auf Datenbanken zugreifen lässt.

Allaire hat mit ColdFusion eine Programmierumgebung entwickelt, die auch den Ansprüchen professioneller Entwickler genügt, anderseits aber so leicht erlernbar ist, dass sie auch den gelegentlichen HTML-Autor nicht abschreckt. Die Entwicklung dynamischer Webanwendungen ist damit für einen großen Anwenderkreis in den Bereich des Möglichen gerückt. Nächste Woche werden wir anhand von Codebeispielen die verschiedenen Skriptsprachen, die UltraDev schreiben kann, direkt miteinander vergleichen. Sie werden feststellen, dass CFML-Code bei weitem am klarsten ist.

Während ASP und JSP ihren proprietären Programmcode zwischen speziellen Begrenzer- Tags in den HTML-Code einbetten, müssen Sie sich bei ColdFusion lediglich an den Anblick ein paar neuer Tags gewöhnen, die in das bekannte HTML-Inventar eingefügt werden. Als ich zum ersten Mal mit dieser erweiterten Entwicklungsumgebung gearbeitet habe, war das ein richtiges Aha-Erlebnis für mich. ColdFusion bricht aus dem Schema herkömmlicher Programmiersprachen aus und betritt echtes Neuland, indem es Datenbankanbindung so einfach macht wie die Erzeugung von normalem HTML-Code.

Wenn Sie ColdFusion noch nicht kennen, sollten Sie das unbedingt nachholen. Ich habe meine Programme immer in Java, Perl oder C geschrieben, aber nachdem ich einige Zeit mit ColdFusion gearbeitet hatte, war ich wirklich beeindruckt. Die Entwickler der CFML hatten wirklich an alle Funktionen gedacht, die man sich als Entwickler von Webanwendungen wünscht, und gleich noch einige Dutzend mehr drauf gelegt.

Man sollte sich von dem scheinbar simplen ColdFusion-Ansatz der eingebetteten Programmierung nicht täuschen lassen. Man kann mit diesem Programm sehr schnelle und sehr leistungsfähige Webanwendungen realisieren, die sich zudem noch kinderleicht debuggen lassen.

Doch wo Licht ist, ist auch Schatten, und das gilt auch für ColdFusion. Das erste Problem ist ein mentales, nämlich gewisse fixe Ideen seitens der Programmierer. Programmierer haben immer bestimmte Erwartungen bzw. Vorstellungen, wie eine Programmiersprache aufgebaut zu sein hat. Und diese Konzepte stehen ihnen bei der Beschäftigung mit einer neuen Sprache gerne im Weg. Da wird nach for...next-Schleifen und if...then- Bedingungen Ausschau gehalten und keiner kann sich vorstellen, dass sich komplette Funktionen hinter ein paar Tags verbergen. Sie können nicht glauben, dass die komplexe Syntax einer Schleifenanweisung in einem schlichten <loop>-Tag steckt. Dieser Umlernprozess macht erfahrenen Programmierern den Einstieg in ColdFusion unter Umständen schwerer als jemandem, der noch gar keine Programmiererfahrung hat.

Und wie Active Server Pages leidet auch ColdFusion an der Beschränkung auf bestimmte Plattformen. Sie müssen den ColdFusion-Server unter Linux, Solaris, HP-UX oder Windows zusätzlich zum Webserver installieren und vor dem praktischen Einsatz wird erst einmal Bares fällig. Dass ColdFusion nicht auf allen Plattformen verfügbar ist, ist der einzige Nachteil dieser wirklich tollen Software.

Ich weiß, ich sollte das hier eigentlich gar nicht sagen, aber wenn Sie mit ColdFusion Studio arbeiten, werden Sie früher oder später feststellen, dass im Vergleich mit UltraDev ColdFusion Studio die bessere CFML Entwicklungsumgebung ist.

Die verschiedenen Serververhalten wurden für die unterstützten Plattformen möglichst homogen in UltraDev implementiert. Aus diesem Grund hat man auch kaum versucht, die besonderen Vorteile der einzelnen Sprachen auszureizen.

ColdFusion Studio hingegen wurde für die ausschließliche Verwendung mit CFML konzipiert und optimiert und bietet daher natürlich ein Höchstmaß an Flexibilität und Kontrolle über die damit erstellten Anwendungen.

Als Mac-User haben Sie allerdings keine andere Alternative als UltraDev. Es ist momentan die einzige CFML-Entwicklungsumgebung für den Mac.

7.2 Die Auswahl des Servers

Eigentlich sollten die folgenden Zeilen in eine kleine Marginalie bzw. Fußnote wandern, aber nach reiflicher Überlegung fand ich, dass dieses Thema einen eigenen Abschnitt innerhalb dieses Kapitels verdient.

Wenn Sie sich für eine bestimmte Servertechnologie entschieden haben, müssen Sie sich darüber klar werden, welches Betriebssystem auf dem Server verwendet werden soll. Für alle gängigen Entwicklungsumgebungen können Sie in der Hauptsache zwischen zwei Optionen wählen: UNIX oder Windows. Aber wofür sich entscheiden?

Diese Frage wird oft und gerne ausführlich diskutiert, ohne jedoch jemals zu wirklichen Ergebnissen zu führen. Erst kürzlich habe ich wieder in einem IT-Magazin einen Artikel über das Pro und Contra von UNIX und NT gelesen, und obwohl auf dem Cover »die endgültige Antwort« versprochen wurde, blieb der Autor die Antwort auf die Frage, welches System welchem nun vorzuziehen sei und warum, geflissentlich schuldig. Wenn der gewiefte Fachmann sich also weigert, verbindliche Auskunft zu geben, worauf soll der Laie seine Entscheidung in Sachen Serverbetriebssystem dann stützen?

Die Wahl der Serverplattform wächst sich mittlerweile fast schon zum selben »Glaubenskrieg« aus wie die Entscheidung für Mac oder Windows-PC. Der jüngste Linux- Boom hat auch hat auch den Markt für UNIX- und UNIX-Derivate wiederbelebt, während man schon allgemein mit einer Abdankung von UNIX als Serverplattform zugunsten von NT rechnete.

Anwenderfreundlichkeit

Das Hauptargument für den Einsatz von NT lässt sich auf einen Begriff bringen - Anwenderfreundlichkeit. Auch ohne große Erfahrung im Umgang mit Computern kann man in kurzer Zeit einen Windows NT/2000-Server aufsetzen und ein Netzwerk einrichten. Microsoft hat die Einrichtung der verschiedenen Dienste, die für den Betrieb eines Internetservers erforderlich sind, stark vereinfacht. Die Integration der einzelnen Systemkomponenten und das Zusammenspiel der verschiedenen Anwendungen ist gut gelöst, sodass komplexe Netzwerke leicht aufzubauen und über ein einfaches Interface gut zu administrieren sind.

UNIX und Linux sehen diesem Treiben allerdings nicht tatenlos zu. In den letzten beiden Jahren hat sich Linux vom Betriebssystem ohne konsistente Benutzerschnittstelle zum Betriebssystem mit einer der komfortabelsten grafischen Oberflächen überhaupt gemausert. Dank den freien Entwicklern des GNOME- (http://www.gnome.org/) und des KDE-Projekts (http://www.kde.org/) kommen Linux-Anwender heute in den Genuss ähnlich bequem per Mausklick zu bedienender Installationsroutinen wie Windows-User. Leider sind noch nicht alle dieser Konfigurations-Tools auf dem Niveau kommerzieller Anwendungen. Zieht man aber in Betracht, dass die Entwicklung von Linux weit schneller vorangetrieben wird als die von Windows oder anderen Betriebssystemen, dürfte diese Einschränkung bald nicht mehr gelten.

Obwohl manchmal behauptet wird, dass es sich bei UNIX und Linux um zwei Paar Stiefel handle, stehen sie sich in Wirklichkeit ziemlich nahe. Linux ist eine Open-Source-Implementierung eines UNIX-Derivates. Das Ganze ist letztlich nur eine Frage der Wortwahl, und wo ich die beiden Begriffe verwende, können Sie sie nach Belieben als UNIX oder Linux lesen.

Welche Dienste werden angeboten?

Ein weiteres Entscheidungskriterium für oder gegen ein bestimmtes Betriebssystem ist die Frage, welche Dienste sie bieten. Standardmäßig kommt NT mit einigen grundlegenden Webserver- und Netzwerkdiensten (File Sharing, Print Sharing, Active Directories).

Red Hat Linux oder ähnliche Distributionen bieten das Open-Source-Gegenstück dieser Dienste und noch einiges mehr. Der PostgreSQL-Datenbankserver ist ein extrem leistungsfähiger relationaler Datenbankserver, der bei industriellen Standard- Benchmarktests (http://www.greatbridge.com/) Kopf an Kopf mit kommerziellen Produkten von Oracle und Microsoft liegt.

Tatsächlich hat der zusammen mit Linux vertriebene Apache-Webserver höhere Zuwachsraten zu verzeichnen als der rein auf NT beschränkte IIS-Server. Die neuesten Statistiken über die Verbreitung der verschiedenen Serverplattformen finden Sie im Internet unter

http://www.netcraft.com/survey/

Die verschiedenen Linuxdistributionen unterstützen zwar standardmäßig weit mehr solcher Serverdienste als NT, aber die Konfiguration dieser Dienste gestaltet sich leider unter Linux immer noch schwieriger als unter Windows. Der Internet-Dienstmanager von Windows ermöglicht die Konfiguration von Web-, FTP- und anderen Internetdiensten mittels eines einzigen Interfaces. Unter UNIX müssen Sie pro Dienst jeweils eine eigene Datei öffnen und die Einstellungen von Hand vornehmen.

Stabilität

Windows ist im Laufe der letzten Jahre immer stabiler geworden, vor allem mit dem Erscheinen von Windows 2000. Nichtsdestotrotz liegt hier UNIX vorne. Kommerzielle UNIX-Betriebssysteme wie Solaris oder AIX bieten ein Höchstmaß an Stabilität bei kritischen Anwendungen. Es ist ziemlich schwierig, Betriebssysteme in puncto Stabilität miteinander zu vergleichen, und leider sind die meisten Aussagen diesbezüglich sehr subjektiv. Nachfolgend sei als Beispiel die Uptime-Statistik einer stark frequentierten E- Commerce-Site angeführt, die auf AIX läuft:

www3:/> uptime
10:38AM up 285 days,17:59,1 user,load average: 0.26,0.48,0.45

Es handelt sich hier um einen Produktionsserver mit extrem hoher Auslastung. Der Entwicklungsserver dieser Site ist ein NT 4.0-Rechner, der nur wenig belastet wird. Trotzdem bleibt er öfters stehen und muss ein bis zwei Mal pro Woche neu gebootet werden.

Ich würde Ihnen empfehlen, sich umzuhören und für die ins Auge gefasste Serverplattform und Hardware Erfahrungsdaten zu sammeln. Die richtige Kombination von Hard- und Software ist die beste Garantie, dass Ihre Site rund um die Uhr online ist und Sie nicht um 3 Uhr früh durch die Gegend telefonieren müssen, weil Ihr Server wieder mal hängt.

Performance/Kosten-Relation

Über viele Jahre hat NT bei der Performance/Kosten-Relation gepunktet, da Sie hier relativ preisgünstige, Intel-basierte Hardware einsetzen konnten. Wollten Sie ein UNIX-System verwenden, mussten Sie zum Betriebssystem auch gleich die passende Hardware kaufen. Mit Linux hat sich in dieser Beziehung Einiges geändert.

Linux läuft auf derselben Hardware wie NT (und, nebenbei bemerkt, auch auf einigen Plattformen, auf denen NT nicht läuft), stellt aber bei weitem nicht die Anforderungen an die Hardware wie NT und läuft auch kleineren Pentium-Systemen ohne Murren. Die Anschaffungskosten für ein Linux-System (kostenlos, wenn man keine Distribution verwendet) sprechen ebenfalls zugunsten des Open-Source-Betriebssystems.

Support

Für viele ist das der eigentliche Knackpunkt. »Was soll ich mit einem Produkt, für das ich keinen Support bekommen kann?« Das ist eine berechtigte Frage, die gerade im Firmenumfeld immer wieder gestellt wird.

Hinter NT steht natürlich ein Großkonzern mit den entsprechenden Möglichkeiten. Wird ein Fehler entdeckt, wird er sofort dokumentiert und ein Bugfix bereitgestellt. Man kommt kaum einmal in die Lage, dass man Hilfe suchend das Internet durchstreift in der Hoffnung, jemanden zu finden, der weiß, wovon man da eigentlich spricht.

Kommerzielle UNIX-Systeme bieten zwar vergleichbaren Support, für Linux gilt das leider nicht. Linux »gehört« niemandem und es gibt keinen Händler, der im »Garantiefall« tätig werden muss. In vielen Fällen bekommen Sie auf ein Posting in einer Newsgroup Hunderte von nützlichen Antworten, aber es gibt auch Situationen, in denen man völlig auf sich allein gestellt ist, und das kann ganz schön frustrierend sein.

Ein Freund von mir hatte z.B. eine neue Ethernet-Karte in seinem Rechner installiert. Nachdem er auf seinem Rechner Linux aufgespielt hatte, musste er feststellen, dass sich die Netzwerkverbindung alle paar Stunden verabschiedete. Er suchte im Internet nach einer Lösung für sein Problem und fand heraus, dass derjenige, der den fehlerhaften Treiber entwickelt hatte, mittlerweile einen neuen Treiber geschrieben hatte. Freudig wollte er auf die Website des Entwicklers gehen, musste aber dann feststellen, dass die Site umgezogen und nicht länger existent war.

Diesen Programmierer wieder ausfindig zu machen, ihn per E-Mail um Zusendung eines neuen Treibers zu bitten und anschließend auf eine Reaktion zu warten, zog sich über mehrere Wochen hin. Das Ganze komplizierte sich noch durch eine umständliche und komplizierte Installationsprozedur, die einen Linux-Neuling an den Rand der Verzweiflung treiben kann.

Das ist sicher ein Extrembeispiel, doch sollte man Fälle wie den geschilderten mit einplanen.

Die endgültige Entscheidung

Wägt man also die Vor- und Nachteile der jeweiligen Plattformen ab, welche ist dann für die eigenen Zwecke die richtige?

Statt einer spreche ich zwei Empfehlungen aus und nenne Ihnen jeweils die Gründe, warum Sie sich für die eine oder andere Seite entscheiden sollten.

Option eins: Windows. Mit der Entscheidung für Windows als Serverplattform sind Sie auf der sicheren Seite. Sie bekommen ein hinreichend stabiles System, das leicht zu konfigurieren und pflegen ist. Sie müssen eine größere Anfangsinvestition für die benötigten Softwarekomponenten einplanen, die Sie zur Realisierung Ihrer Website brauchen. Windows ist die beste Wahl für jemanden, der sich nicht noch nebenbei mit Systemadministration und komplexen Betriebsystemfragen auseinander setzen will.

Option zwei: UNIX/Linux. Mit der Entscheidung für UNIX bekommen Sie eine sehr flexible und schnelle Plattform. Ihren Server ans Netz zu bringen kostet Sie im Falle von Linux nicht mehr als die eingesetzte Hardware plus Ihre Online-Kosten. Für Technikfreaks oder Leute mit schmalem Geldbeutel ist das ein gewichtiges Argument. Der Support ist allerdings eine zweischneidige Sache, doch wenn Sie Hardware von bekannten Markenherstellern verwenden, ist nicht mit größeren Schwierigkeiten zu rechnen. Wenn es Ihnen schlichtweg wurst ist, wie ein Server funktioniert, sollten Sie lieber die Finger von UNIX lassen.

Welchen Server verwendet der Autor? Finden Sie es heraus auf seiner Website unter http://www.poisontooth.com/.

7.3 Ein Blick auf die unterstützten Skriptsprachen

Bisher haben wir uns mit der Frage beschäftigt, welche Skriptsprachen UltraDev verwendet, welche Anwendungsserver diese Sprachen unterstützen und unter welchen Gesichtspunkten man das Betriebssystem des Webservers auswählen sollte. Nun wollen wir uns die Struktur und die Funktionsweise dieser Sprachen näher ansehen. Das Folgende ist natürlich keine Einführung ins Programmieren. Ich möchte Ihnen jedoch das nötige Wissen an die Hand geben, damit Sie die von UltraDev erzeugten Serververhalten analysieren und an Ihre Bedürfnisse anpassen können.

Sehen Sie das Folgende als Heranführung an grundlegende Programmierkonzepte für diejenigen, die noch nie eine Zeile Code geschrieben haben. Falls Sie nicht zu dieser Gruppe gehören, bitte ich um Nachsicht.

Grundlegende Konzepte der Programmierung

Gewisse grundlegende Konzepte sind allen Programmiersprachen gemeinsam. Das gilt bei allen sonstigen Unterschieden auch für die von UltraDev unterstützten Skriptsprachen. Am besten versteht man eine Programmiersprache, mit der man sich noch nie befasst hat, wenn man sich ein Verständnis für diese Konzepte erwirbt und sich ansieht, wie diese Sprache sie umsetzt.

JavaScript wird zwar von UltraDev unterstützt, doch gehe ich in diesem Zusammenhang nicht darauf ein. Auf einer grundlegenden Ebene unterscheiden sich JavaScript und Java nicht, sodass sich eine nähere Besprechung erübrigt.

Grundsätzliches

Bevor wir auf die einzelnen Sprachen eingehen, sollten Sie sich ein paar grundsätzliche Dinge für den Umgang mit dem Programmcode einprägen:

Variablen

Variablen speichern bestimmte Informationen, solange eine bestimmte Anwendung ausgeführt wird. In Variablen können Text, Zahlen oder abstraktere Informationen wie z.B. die Uhrzeit abgelegt werden. Jede Programmiersprache behandelt Variablen anderes und bietet unterschiedliche Möglichkeiten, mit den definierten Variablen zu arbeiten.

ASP/VBScript

VBScript oder Visual Basic Script ist eine leicht zu erlernende Programmiersprache von Microsoft, die sich von deren verbreiteter Visual Basic-Entwicklungsumgebung herleitet. In VBScript-Programmen definieren Sie Variablen einfach durch ihre erstmalige Benutzung. Sie können in Variablen Text oder numerische Daten ablegen, ohne zwischen dem Variablentyp zu unterscheiden.

Ein Beispiel:

myVar=3

und

myVar="Vier"

sind beides gültige Wertzuweisungen. Manchmal finden man in VBScript-Code auch die Anweisung Dim(Dimension):

Dim myVar

Mit dieser Anweisung wird die Variable myVar deklariert, ihr aber kein bestimmter Wert zugewiesen. Da Variablen mit ihrer erstmaligen Verwendung automatisch deklariert werden, wird dieser Befehl selten verwendet.

Es gibt auch die Möglichkeit, ganze Wertelisten unter einer Variablen zu speichern, die so genannten Arrays. Sie werden gekennzeichnet durch einen Variablennamen, gefolgt von []. Über einen Index lässt sich einem Eintrag des Arrays ein Wert zuweisen oder dieser auslesen: myVar [50]=12345.

Java

Verglichen mit VBScript ist Java wesentlich restriktiver. So können Sie nicht mittendrin im Programmcode neue Variablen einführen, wenn es gerade nötig ist. Sie müssen Variable und Variablentyp ausdrücklich deklariert haben, bevor Sie sie im Sourcecode verwenden.

Das sieht dann etwa folgendermaßen aus:

int myInt;
float myFloat;
String myString="Hier steht ein String";
myInt=3;
myFloat=4.5;

Wie Sie am Beispiel von myString sehen können, ist es möglich, Variablen bei der Deklaration gleich einen Wert zuzuweisen. Beachten Sie auch, dass jede Code-Zeile mit Semikolon abgeschlossen wird, wie es den Konventionen von Java und JavaScript entspricht. Eine Anweisung darf dabei ruhig über mehrere Zeilen laufen, wichtig ist nur, dass sie immer korrekt abgeschlossen wird.

Java-Arrays unterscheiden sich nicht von ihren VBScript-Pendants, sie müssen nur entsprechend den Java-Konventionen erst deklariert werden (int myInt[50];), bevor Sie damit arbeiten können.

CFML/CFScript

ColdFusion lässt sich nicht in das übliche Schema von Programmiersprachen einordnen. CFML erlaubt die schnelle Erledigung von Programmieraufgaben, erfordert aber von Programmierern, die an die Logik von herkömmlichen Programmiersprachen gewöhnt sind, ein gewisses Umdenken. Aus diesem Grund hat man ColdFusion eine zweite Programmiersprache mitgegeben, die ebenfalls in den HTML-Code eingebettet werden kann. UltraDev verwendet bei der Generierung seiner Serververhalten beide Varianten.

Variablen werden in CFML nach dem folgenden Schema deklariert:

<CFSET myVar="Test Wert">

Innerhalb von CFScript werden Variablen jedoch in ähnlicher Weise deklariert und verwendet wie in VBSCript:

myVar="Test"
myInt [50]=75

Von CFML aus können Sie auf eine CFScript-Variable über die Anweisung #variablenname# zugreifen. Vielleicht etwas verwirrend, aber es funktioniert.

Bedingungen und Schleifen

Jedes Programm und jede Anwendung muss die zu verarbeitenden Daten irgendwie bewerten und zuordnen können und danach den weiteren Programmablauf steuern. Sie möchten z.B. alle Datensätze in Ihrer Datenbank anzeigen lassen, wissen aber nicht, wie viele Datensätze tatsächlich gespeichert sind. Daher müssen Sie den Datenbestand so lange durchsuchen lassen, bis der letzte Datensatz erreicht ist. Sind keine Datensätze vorhanden, soll ein entsprechender Warnhinweis auf dem Bildschirm ausgegeben werden.

In beiden Fällen muss der logische Programmablauf je nach den zu erfüllenden Bedingungen entsprechend modifiziert werden. Lassen Sie uns im Folgenden die Programmierlogik bzw. die Sprachkonstrukte, mit denen sich eine solche Ablaufsteuerung erreichen lässt, sowie ihre Umsetzung in den drei Skriptsprachen näher betrachten.

VBScript

Bei der Arbeit mit den Serververhalten von UltraDev werden Ihnen zwei Typen von Schleifen begegnen: die for...next-Schleife und die while-Schleife. Die for...next- Schleife wird so oft durchlaufen und die darin enthaltene Anweisung so oft ausgeführt, bis ein bestimmter Wert erreicht ist. Die while-Schleife hingegen führt eine Anweisung so lange aus, wie die damit verknüpfte Bedingung erfüllt ist.

Beispiel für eine for...next-Schleife:

For x=1 To 5
' Führe diese Schleife fünf Mal aus
Next

Beispiel für eine while-Schleife:

Do While (x<5)
' Führe diese Anweisung aus, solange x kleiner 5 ist
Loop

Anwendungen müssen nicht nur in der Lage sein, bestimmte Anweisungen per Schleife wiederholt auszuführen, sondern auch entscheiden können, wie sie im Programmablauf weiterfahren sollen, wenn bestimmte Bedingungen erfüllt sind. Möglich wird dieses Verhalten durch das if...then...else-Konstrukt, das überprüft, ob eine Bedingung erfüllt ist, bevor es eine Anweisung ausführt:

If x=5 Then
' Tu was Vernünftiges!!
Else
' Such Dir einen neuen Job!!
End If

Durch das Definieren von Bedingungen können Sie den logischen Programmfluss steuern und erzwingen, dass in Abhängigkeit von dieser Bedingung eine andere Operation ausgeführt wird.

Java

Schleifen werden in Java entsprechend der C-Syntax definiert. Im Gegensatz zum vergleichsweise »geschwätzigen« VBScript-Code gibt sich Java eher wortkarg:

for (x=0;x<5;x=x+1){
//Mach das jetzt 5 Mal
}

Die einleitende Zeile der for-Schleife bewirkt dreierlei: Sie initialisiert die Variable x mit dem Wert 0, formuliert die Bedingung, wie oft die Schleife ausgeführt werden soll (x<5), und teilt dem Programm mit, was es bei jedem Bearbeitungsschritt tun soll (erhöhe x um den Wert 1).

Im Gegensatz zu VBScript, das verschiedene Konstrukte verwendet, ist Java-Code immer nach demselben Muster aufgebaut, wobei Anweisungen in geschweifte Klammern {} eingeschlossen werden.

So unterscheidet sich die while-Schleife von der for-Schleife nur in der ersten Zeile:

while (x<5){
//Tu was!
}

Auch die if-Bedingung ist nach demselben Prinzip konstruiert:

if (x==5){
// Tu was Vernünftiges!!
} else {
// Such Dir einen neuen Job!!
}

Wie Sie sehen, führt das zu einem weit konsistenteren Programmierstil. Bei mehreren verschachtelten Bedingungen kann sich die Fehlersuche jedoch schwierig gestalten.

CFML/CFScript

Wie es der Zufall so will, ist die Syntax von CFScript und Java identisch, sodass wir nicht weiter darauf eingehen müssen. Dafür müssen wir uns mit den CFML-Tags beschäftigen, die Schleifen und Bedingungen steuern.

Mit den <CFLOOP>...</CFLOOP>-Tags lässt sich sowohl eine for...next-Schleife als auch eine while-Schleife definieren:

<CFLOOP INDEX="x"
FROM="1"
TO="5"
STEP="1">
<!--Mach mal was!-->
</CFLOOP>

Diese Schleife wird von 1 bis 5 durchgezählt, genau wie die entsprechenden ASP- und JSP- Pendants.

Das <CFLOOP>-Tag normal wurde der besseren Übersichtlichkeit halber auf mehrere Zeilen umbrochen, um seinen Aufbau zu verdeutlichen. Man könnte es aber ohne Weiteres in eine einzige Zeile setzen.

Um eine bedingte Schleife zu definieren, muss das Tag nur leicht verändert werden:

<CFLOOP CONDITION="x LESS THAN 5 ">
<!--Mach auch hier was!-->
</CFLOOP>

Wie Sie sehen, ist mit ColdFusion die Erstellung dynamischer Websites so einfach wie die Kodierung in normalem HTML-Code.

Die Definition einer if-Bedingung ist ebenso einfach - mit ein paar weiteren Tags, <CFIF>...<CFELSE>...</CFIF>, steuern Sie den Programmablauf:

<CFIF x EQ 5>
<!--Tu was Vernünftiges!!-->
<CFELSE>
<!--Such dir einen neuen Job!!-->
</CFIF>

Es ist nicht schwer, mit CFML zu arbeiten, nur gewöhnungsbedürftig!

Dynamische Elemente

Dynamische Elemente sind in diesem Zusammenhang Elemente, die von Inhalten erstellt werden, die der Browser des Clients übermittelt hat. Dazu zählen Session-IDs, Cookies und Formulardaten.

Die hier behandelten Programmiersprachen handhaben diese Elemente ganz unterschiedlich, da es sich hier nicht um ein gemeinsames Feature herkömmlicher Programmiersprachen handelt, sondern diese Funktionalitäten erst nachträglich in die Kernsyntax implementiert wurden.

ASP/VBScript

Active Server Pages erleichtern den Umgang mit dynamisch erzeugten benutzerspezifischen Daten wie Session-IDs, Cookies oder Formulardaten erheblich. Wenn Sie je mit Perl oder einer anderen traditionellen Programmiersprache serverbasierte CGI-Skripten geschrieben haben, werden Sie angenehm überrascht sein, wie leicht sich diese Dinge mit ASP realisieren lassen.

Die Definition einer Session-Variable ist so leicht wie das Setzen jeder beliebigen anderen Variable:

Session("myVar)="Mein Wert"

Auch Cookies lassen sich mühelos einrichten:

Response.Cookies("myVar")="Mein zweiter Wert"

Durch Anfügen einer kleinen Anweisung können Sie sogar das Verfallsdatum festsetzen:

Response.Cookies("myVar").Expires=#12/31/2030#

Cookies lassen sich zwar problemlos einrichten, doch müssen Sie das tun, bevor irgendwelche Informationen an den Client-Rechner geschickt werden. Andernfalls erhalten Sie eine Fehlermeldung.

Mit UltraDev können Sie die Werte all dieser Elemente auslesen, wenn Sie eine Datenbindung einrichten. Wie das geht, ist Thema von Tag 9, »Einführung in die dynamischen Werkzeuge von UltraDev«. Wollen Sie allerdings einen Wert setzen, müssen Sie das von Hand tun.

Java

Session-Variable werden in Java ähnlich definiert wie in ASP, die Syntax variiert allerdings ein wenig:

session.putValue("myVar","Mein Wert")

In diesem wie im vorigen Beispiel setzt sich der Code aus einem Befehl und einem daran angefügten »Nachsatz« zusammen, der eine Methode innerhalb eines Objekts beschreibt. Sie können sich ein Objekt als höhere Funktionsbibliothek vorstellen. Es enthält Methoden (Funktionen), die einen speziellen Typ von Daten verarbeiten. Das Objekt session z.B. enthält eine Funktion putValue, die das Setzen einer Sitzungsvariablen ermöglicht.

Wollen Sie mehr über objektorientierte Programmierung wissen, möchte ich Ihnen den Markt&Technik-Titel »Java in 21 Tage« empfehlen.

Um in JSP ein Cookie zu setzen, müssen Sie das Cookie in den Response-Header schreiben, der an den Client-Rechner zurückgeschickt wird. Das deckt sich vom Ansatz her mit der von ASP verwendeten Methode und erklärt, warum der ASP-Befehl das Wort »response« enthält.

myCookie = new Cookie("myVar","Mein Wert!"));
myCookie.setMaxAge(50000);
response.addCookie(myCookie);

Der Unterschied ist der, dass hier zur Erzeugung des Cookies ein weiterer Schritt erforderlich ist.

Als Erstes müssen Sie das Objekt »Cookie« erzeugen (in diesem Beispiel myCookie). Als Nächstes definieren Sie - wenn Sie möchten - die maximale Gültigkeitsdauer des Cookies in Sekunden. Schließlich wird das korrekt konfigurierte Cookie in den Response-Header geschrieben.

CFML

Bevor Sie unter ColdFusion Sitzungsvariablen verwenden können, müssen Sie das <CFAPPLICATION>-Tag setzen, um das Session-Management zu aktivieren. Dieses Tag wird in die Datei application.cfm, die Sie für jedes Projekt erstellen, geschrieben und sollte nur dort verwendet werden.

<CFAPPLICATION NAME="Meine Applikation" SESSIONMANAGEMENT="Ja">

Sobald Sie das Session-Management für ein Projekt aktiviert haben, können Sie mit dem <CFSET>-Tag Sitzungsvariablen wie irgendeine andere beliebige Variable definieren.

<CFSET session.myVar="Mein Wert!">

Cookies werden über ein spezielles <CFCOOKIE>-Tag definiert, in dem sich vom Client übermittelte Werte ablegen lassen:

<CFCOOKIE NAME="mein Cookie" VALUE="Mein Wert!" EXPIRES=="12/30/2010 ">

Und das war's auch schon!

Mit diesen Informationen und den Werkzeugen von UltraDev sollte es Ihnen möglich sein, die vom Programm erzeugten Serververhalten zu analysieren und Ihren Erfordernissen entsprechend abzuwandeln. Und was noch wichtiger ist: Sie können die Beispiele im Buch durch ein paar Änderungen am Programmcode (keine Angst, Sie müssen lediglich hie und da ein paar Zeilen Code ergänzen) an Ihre Serverplattform anpassen.

7.4 Zusammenfassung

Die heutige Lektion hat alle Informationen nachgeliefert, die uns noch gefehlt haben, bevor wir uns an die Erstellung von dynamischen Websites machen können. Mit UltraDev steht Ihnen eine große Auswahl an Entwicklungs- und Serverplattformen zur Verfügung, aber für einen Einsteiger kann es schwer sein, die richtige Entscheidung zu treffen.

Wir haben uns mit den verschiedenen eingebetteten Skriptsprachen, ihren Vor- und Nachteilen beschäftigt sowie mit den Betriebssystemen, auf denen sie lauffähig sind. Nach diesen Ausführungen haben Sie hoffentlich die nötigen Informationen, um unter den Gesichtspunkten der Anwenderfreundlichkeit sowie der Performance/Kosten-Relation die für Sie sinnvollste Konstellation auszuwählen.

Schließlich haben wir noch einen Blick ins Innenleben dieser Skriptsprachen gewagt. Das war zwar keine erschöpfende Einführung ins Programmieren, doch sollten Sie so viel an Information bekommen haben, dass Sie mit von UltraDev erzeugtem Code auch ohne vorausgehende Programmiererfahrung umgehen können.

Von nun an werden einen Zahn zulegen und im Laufe der nächsten Woche werden Sie schon mit der Erstellung dynamischer Websites zugange sein.

7.5 Fragen und Antworten

Frage:
Warum sollte ich Tomcat nicht verwenden, wenn es doch nichts kostet?

Antwort:
Die Frage ist nicht, ob das Programm etwas kostet oder nicht. Einige kommerzielle Anwendungen sind jedoch schneller und bieten besseren Support. Bevor Sie eine Entscheidung treffen, sollten Sie Ihre speziellen Anforderungen überprüfen.

Frage:
Warum werden eigentlich so viele verschiedene eingebettete Skriptsprachen verwendet?

Antwort:
Jeder favorisiert eine bestimmte Programmiersprache. Da liegt es nahe, dass man bei der Erstellung dynamischer Webanwendungen auf diese Sprachen zurückgreift und sie in den HTML-Code einbettet. JSP richtet sich an Java- Entwickler, ASP an Visual Basic-Programmierer. ColdFusion ist eine der wenigen Sprachen, die von vornherein für die Entwicklung dynamischer Websites konzipiert wurden.

Frage:
Ich lasse auf meinem Rechner NT laufen und er stürzt nie ab. Also was soll das Gerede?

Antwort:
Ein Teil der Probleme mit NT haben ihren Ursprung in der verwendeten Hardware. Der x86-Standard ist alles andere als ein Standard und NT verhält sich je nach Hardware-Umgebung ganz unterschiedlich. Ich habe auf einem kommerziellen Server NT in einer Minimalversion installiert und einmal pro Woche hängt sich das System auf. Aber vielleicht ist das nur bei mir so.

Frage:
Ich habe einen Mac und möchte meinen eigenen Server betreiben. Geht das?

Antwort:
Ja. Sehen Sie sich Tomcat vom Jakarta-Projekt an. Es läuft unter Mac-OS X und sogar unter Mac-OS 8/9, wenn man an ein paar Schräubchen dreht.

7.6 Workshop

Der Workshop dient dazu, den gelesenen Stoff mithilfe von gezielten Fragen und Übungen zu vertiefen. Die Antworten finden Sie in Anhang A, »Quiz-Antworten«.

Quiz

  1. Was bedeutet ASP und von wem stammt es?
  2. Welche Skriptsprachen verwenden die Zeichenfolge <%...%>, um Anfang und Ende des eingebettetem Codes zu markieren?
  3. Können Sie in JSP und ASP einem Cookie jederzeit einen Wert zuweisen?
  4. Können Sie jederzeit eine Session-Variable setzen?
  5. Welche Entwicklungsumgebung eignet sich am besten für ColdFusion?

Übung

Unsere heutige Übung ist nicht schwer. Entscheiden Sie sich für einen bestimmten Server und installieren Sie ihn. Zwar sind Sie bis zur heutigen Lektion ohne Webserver bzw. Applikationsserver ausgekommen, doch für alles Weitere sind sie unabdingbar. Für alle weiteren Kapitel benötigen Sie eine Serveranbindung.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH