WAP für Java-Entwickler

Die meisten Internet-Technologien wurden für Desktop- und Großcomputer entwickelt, die in zuverlässigen Netzwerken (mit relativ hoher Bandbreite) ausgeführt werden. Handheld-Funkgeräte haben jedoch im Vergleich zu Desktop-Computern eine eingeschränktere Computerumgebung. Handheld-Geräte verfügen in der Regel über weniger Speicher, weniger leistungsstarke CPUs, unterschiedliche Eingabegeräte und kleinere Displays. Darüber hinaus weisen drahtlose Netzwerke im Vergleich zu drahtgebundenen Computernetzwerken eine geringere Bandbreite und eine höhere Latenz auf.

WAP, das Wireless Application Protocol, wurde entwickelt, um die verschiedenen bereits verwendeten Datenverarbeitungsansätze zu nutzen. WAP integriert die Handheld Device Markup Language (HDML) und das von Unwired Planet (jetzt Phone.com) entwickelte Handheld Device Transport Protocol (HDTP) sowie das Smart Messaging Protocol (SMP) von Nokia und das Intelligent Terminal Transfer Protocol ( ITTP). WAP-Dienste können mithilfe von Technologien wie Java-Servlets und JavaServer Pages (JSP) auf Webservern gehostet werden. In diesem Artikel zeige ich Ihnen, dass WAP und Java komplementäre, nicht konkurrierende Technologien sind. WAP ist für Mobiltelefone gedacht, und Java zielt auf anspruchsvollere Netzwerkterminals ab.

Die WAP-Plattform ist eine offene Spezifikation, die sich mit den Merkmalen drahtloser Netzwerke befasst, indem vorhandene Netzwerktechnologien (und gegebenenfalls Einführung neuer) an die besonderen Anforderungen von drahtlosen Handheld-Geräten angepasst werden. Daher beabsichtigt WAP, die Art und Weise zu standardisieren, wie drahtlose Geräte (Mobiltelefone, PDAs usw.) auf Internetdaten und -dienste zugreifen. Die Wiederverwendung vorhandener Internetprotokolle durch WAP erleichtert die Entwicklung von WAP-Diensten für Java und andere Webentwickler.

Die Erleichterung der Übermittlung von Internetdaten an drahtlose Geräte wird sicherlich zur Einführung neuer Technologien führen. Beispielsweise haben drahtlose Geräte im Vergleich zu Desktop-Computern kleine Bildschirme, und daher ist HTML (das visuell reichhaltig ist) für kleine Bildschirme nicht geeignet. Der kleine Bildschirm und die zunehmende Rechenleistung stellen einen begrenzenden Faktor für die Ausführung komplizierter Java-Anwendungen mit intensiver Grafik dar. Es werden jedoch Anstrengungen unternommen, um eine kompakte Teilmenge der Java-Sprache zu haben, die für mobile Anwendungen geeignet ist. In diesem Artikel erfahren Sie, wie Sie WAP-Anwendungen mithilfe von Java-Servlets und Java Server Pages entwickeln.

Aber zuerst beschreibe ich die WAP-Plattform und wie sie verschiedene Technologien enthält, die den vorhandenen ähnlich sind, aber speziell für drahtlose Geräte entwickelt wurden.

Die WAP-Architektur

Der WAP-Standard definiert zwei wesentliche Elemente: ein End-to-End-Anwendungsprotokoll und eine Anwendungsumgebung, die auf einem Browser basiert. Das Anwendungsprotokoll ist ein Kommunikationsprotokollstapel, der in jedes WAP-fähige drahtlose Gerät (auch als Benutzeragent bezeichnet) eingebettet ist. Die Serverseite implementiert das andere Ende des Protokolls, das mit jedem WAP-Client kommunizieren kann. Die Serverseite wird als WAP-Gateway bezeichnet und leitet Anforderungen vom Client an einen HTTP- (oder Web-) Server weiter. Das WAP-Gateway kann sich entweder in einem Telekommunikationsnetzwerk oder in einem Computernetzwerk (einem ISP) befinden. Abbildung 1 zeigt eine beispielhafte Struktur eines WAP-Netzwerks.

In Abbildung 1 kommuniziert der Client mit dem WAP-Gateway im drahtlosen Netzwerk. Das WAP-Gateway übersetzt WAP-Anforderungen in WWW-Anforderungen, sodass der WAP-Client Anforderungen an den Webserver senden kann. Außerdem übersetzt das WAP-Gateway Webantworten in WAP-Antworten oder ein Format, das vom WAP-Client verstanden wird.

Das WAP-Programmiermodell

Das WAP-Programmiermodell ähnelt dem Web-Programmiermodell mit passenden Erweiterungen, berücksichtigt jedoch die Merkmale der drahtlosen Umgebung. Abbildung 2 zeigt dieses Modell.

Wie Sie sehen können, basiert das WAP-Programmiermodell stark auf dem Web-Programmiermodell. Aber wie funktioniert das WAP-Gateway mit HTML? In einigen Fällen sind die auf dem Webserver befindlichen Datendienste oder Inhalte HTML-basiert. Einige WAP-Gateways könnten dazu dienen, HTML-Seiten in ein Format zu konvertieren, das auf drahtlosen Geräten angezeigt werden kann. Da HTML jedoch nicht wirklich für kleine Bildschirme entwickelt wurde, definiert das WAP-Protokoll seine eigene Auszeichnungssprache, die Wireless Markup Language (WML), die dem XML-Standard entspricht und leistungsstarke Anwendungen innerhalb der Einschränkungen von Handheld-Geräten ermöglicht. In den meisten Fällen handelt es sich bei der eigentlichen Anwendung oder anderen Inhalten auf dem Webserver um natives WAP, das mit WML erstellt oder dynamisch mit Java-Servlets oder JSP generiert wurde.

In HTML gibt es keine Funktionen zum Überprüfen der Gültigkeit von Benutzereingaben oder zum lokalen Generieren von Nachrichten und Dialogfeldern. Um diese Einschränkung zu überwinden, wurde JavaScript entwickelt. Um die gleichen Einschränkungen in WML zu überwinden, wurde eine neue Skriptsprache namens WMLScript entwickelt. Ich werde in späteren Abschnitten mehr über WML und WMLScript berichten.

Der WAP-Protokollstapel

Um die Bandbreitenanforderungen zu minimieren und sicherzustellen, dass eine Vielzahl von drahtlosen Netzwerken WAP-Anwendungen ausführen kann, wurde ein neuer kompakter Protokollstapel namens WAP-Protokollstapel entwickelt. Abbildung 3 zeigt dieses Stapelprotokoll und zeigt auch einen Vergleich mit einem webbasierten Protokollstapel. (Die Akronyme der Schicht können in die drahtlose Anwendungsumgebung, das drahtlose Sitzungsprotokoll, das drahtlose Transaktionsprotokoll, die Sicherheit der drahtlosen Transportschicht und das drahtlose Datagrammprotokoll übersetzt werden.)

Der WAP-Protokollstapel besteht aus vier Schichten: Sitzungsschicht, Transaktionsschicht, Sicherheitsschicht und Datagrammschicht. Beachten Sie, dass das WAP-Protokoll für den Betrieb über eine Vielzahl von Trägerdiensten ausgelegt ist, einschließlich CDMA (Code Division Multiple Access), CDPD (Cellular Digital Packet Data) usw.

WML

Die Wireless Markup Language (WML) ist eine XML-basierte Markup-Sprache, mit der beschrieben wird, wie WAP-Inhalte auf einem Wireless-Terminal dargestellt werden. WML unterscheidet sich von HTML in folgenden Punkten:

  • WML wurde speziell für drahtlose Terminals mit einem Zielbildschirm entwickelt, der nur wenige Zeilen lang und etwa einen Zoll breit ist.
  • Bei WML wird zwischen Groß- und Kleinschreibung unterschieden, und alle Tags und Attribute sollten in Kleinbuchstaben geschrieben werden.
  • Im Gegensatz zu HTML verzeiht WML falsch verschachtelte Tags nicht.
  • WML geht nicht davon aus, dass eine "QWERTZ" -Tastatur oder eine Maus für Benutzereingaben verfügbar ist.

Basierend auf diesen Unterschieden bietet WML einen kleineren, telefoniebewussten Satz von Tags, die es für drahtlose Handheld-Terminals geeigneter machen als HTML. Ähnlich wie bei HTML können Sie mit WML die Benutzereingabeoptionen angeben und festlegen, wie der Benutzeragent reagieren soll, wenn der Benutzer beispielsweise eine Taste drückt.

Die Entstehung von WML

Die Grundeinheit von WML ist die Karte, die eine einzelne Interaktion zwischen dem Benutzer und dem Benutzeragenten angibt. Mehrere Karten sind in Decks zusammengefasst. Ein Deck ist das oberste Element eines WML-Dokuments. Wenn der Benutzeragent ein Deck erhält (indem er das gesamte Deck herunterlädt), aktiviert er nur die erste Karte im Deck. Listing 1 zeigt ein Beispiel für ein WML-Dokument mit einer einzelnen Karte:

Listing 1. Example1.wml

Mein erstes WML-Beispiel

Bei Anzeige auf einem WAP-fähigen Telefon wird Listing 1 wie in Abbildung 4 dargestellt gerendert und angezeigt.

Wie bereits erwähnt, basiert WML auf XML. Daher muss ein Deck ein gültiges XML-Dokument sein. Dies bedeutet, dass ein WML-Dokument (wie in Listing 1 gezeigt) mit dem Standard-XML-Header und dem Verweis auf die WML-DTD beginnen sollte. Das

Now, take a look at an example that has two cards and uses other WML features. Listing 2 shows the Ottawa City Guide example.

Listing 2. Example2.wml

Business

Education

Entertainment

Restaurants

Shopping

Travel

Weather

Canadian

Chinese

Continental

French

German

Greek

Italian

This example was developed using the Ericsson WapIDE (WAP integrated development environment). WapIDE is shown in Figure 5 along with the output of Listing 2.

The example in Listing 2 has two cards: city and food. When a device receives this deck, it loads the first card automatically as shown in Figure 6.

Once the city card is loaded, you can navigate through it using the soft key on your device. Figure 7 shows what happens when the Restaurants option is selected.

Navigation in this example is implemented using anchors (), which are the WML counterpart of tags in HTML. An anchor can be defined as:

 Go to food   

This is identical to:

Go to food 

In the preceding example, I have used instead of because it allows more efficient tokenization. The same thing can be accomplished using the element. For example, the preceding anchor is identical to:


  

Therefore, , , and can all contain a task. The only difference is that anchors do not appear as an option in the soft-key menu, but are rendered as links (similar to HTML links) in WML.

Graphics in WML

Like HTML, WML has an tag to support images. However, I should note a couple things about the tag in WML. First, the alt attribute of the tag is mandatory. Second, it is one of the few tags in WML that doesn't have a closing tag. Therefore, it needs to have its own closing mark (/) in the tag, as shown in Listing 2.

In the preceding food card, I am using the image food.wbmp. The new .wbmp format stands for wireless bitmaps, which is specifically designed for wireless devices with a small monochrome screen. You can use a package like Paint Shop Pro to create your graphics, but to be able to save or edit the .wbmp format, you need a converter or a plugin. See Resources for URLs.

There are other tags defined in WML, such as , and tags for user input. More important, WML integrates variables in a different way from that used in HTML and JavaScript.

WMLScript

WMLScript, which is based on ECMAScript (the standard for JavaScript), is a language that you can use to provide programmed functionality to WAP applications. It is part of the WAP specification, and it can be used to add script support to the client. The main difference between WMLScript and ECMAScript is that WMLScript is compiled into byte code before it is sent to the client. The main reason for this is of course to cope with the narrowband communication channels and to keep client memory requirements to a minimum.

You can use WMLScript to check the validity of user input, but most important, you can use it to generate messages and dialogs locally, so error messages and confirmations can be viewed faster, and to access facilities of the user agent -- for example, it allows the programmer to make phone calls, access the SIM card, or configure the user agent after it has been deployed.

WAP and Java

WAP applications, which will be hosted on normal Web servers, can be written in WML and WMLScript. But you can also write them using existing Web technologies. Dynamic WML documents can be generated by CGI scripts, servlets, JavaServer Pages, Active Server Pages, Perl, Tcl, and so forth. In other words, you can implement your own first WAP service in Java, with the help of the WAP technologies described earlier. In this section, I am going to show you how WAP applications can be easily developed in Java using servlets and JSP.

WAP and servlets

Dynamic WML documents for wireless devices can be easily developed using Java servlets. Once you know the WML syntax, building WAP applications using Java servlets can be an easy task.