WAP per sviluppatori Java

La maggior parte delle tecnologie Internet sono state progettate per desktop e computer di grandi dimensioni in esecuzione su reti affidabili (con larghezza di banda relativamente elevata). I dispositivi wireless portatili, tuttavia, hanno un ambiente di elaborazione più limitato rispetto ai computer desktop. I dispositivi palmari tendono ad avere meno memoria, CPU meno potenti, diversi dispositivi di input e schermi più piccoli. Inoltre, le reti wireless hanno meno larghezza di banda e più latenza rispetto alle reti di computer cablate.

WAP, il Wireless Application Protocol, è stato progettato per sfruttare i diversi approcci alla gestione dei dati già in uso. WAP integra l'Handheld Device Markup Language (HDML) e l'Handheld Device Transport Protocol (HDTP) sviluppato da Unwired Planet (ora noto come Phone.com), nonché lo Smart Messaging Protocol (SMP) di Nokia e l'Intelligent Terminal Transfer Protocol di Ericsson ( ITTP). I servizi WAP possono essere ospitati su server Web utilizzando tecnologie come servlet Java e JavaServer Pages (JSP). In questo articolo, vi mostro che WAP e Java sono tecnologie complementari, non concorrenti. Il WAP è pensato per i telefoni cellulari e Java punta a terminali di rete più sofisticati.

La piattaforma WAP è una specifica aperta che affronta le caratteristiche della rete wireless adattando le tecnologie di rete esistenti (e introducendone di nuove ove appropriato) ai requisiti speciali dei dispositivi wireless portatili. Pertanto, il WAP intende standardizzare il modo in cui i dispositivi wireless (telefoni cellulari, PDA e così via) accedono ai dati e ai servizi Internet. Il riutilizzo da parte di WAP dei protocolli Internet esistenti faciliterà lo sviluppo di servizi WAP per Java e altri sviluppatori Web.

Facilitare la trasmissione dei dati Internet ai dispositivi wireless porterà sicuramente all'introduzione di nuove tecnologie. Ad esempio, i dispositivi wireless hanno schermi piccoli rispetto ai computer desktop, e quindi HTML (che è visivamente ricco) non è appropriato per schermi piccoli. Il piccolo schermo e la potenza di calcolo, in aumento, rappresentano un fattore limitante nell'esecuzione di complicate applicazioni Java con grafica intensiva. Tuttavia, si stanno compiendo sforzi per avere un sottoinsieme compatto del linguaggio Java adatto alle applicazioni mobili. In questo articolo imparerai a sviluppare applicazioni WAP utilizzando servlet Java e Java Server Pages.

Ma prima descrivo la piattaforma WAP e come incorpora diverse tecnologie simili a quelle esistenti ma che sono state progettate specificamente per i dispositivi wireless.

L'architettura WAP

Lo standard WAP definisce due elementi essenziali: un protocollo applicativo end-to-end e un ambiente applicativo basato su un browser. Il protocollo dell'applicazione è uno stack di protocolli di comunicazione incorporato in ogni dispositivo wireless abilitato per WAP (noto anche come agente utente). Il lato server implementa l'altra estremità del protocollo, che è in grado di comunicare con qualsiasi client WAP. Il lato server è noto come gateway WAP e instrada le richieste dal client a un server HTTP (o Web). Il gateway WAP può essere situato in una rete di telecomunicazioni o in una rete di computer (un ISP). La figura 1 illustra una struttura di esempio di una rete WAP.

Nella Figura 1, il client comunica con il gateway WAP nella rete wireless. Il gateway WAP traduce le richieste WAP in richieste WWW, quindi il client WAP è in grado di inviare richieste al server Web. Inoltre, il gateway WAP traduce le risposte Web in risposte WAP o in un formato compreso dal client WAP.

Il modello di programmazione WAP

Il modello di programmazione WAP è simile al modello di programmazione Web con estensioni corrispondenti, ma si adatta alle caratteristiche dell'ambiente wireless. La figura 2 illustra questo modello.

Come puoi vedere, il modello di programmazione WAP è fortemente basato sul modello di programmazione Web. Ma come funziona il gateway WAP con HTML? In alcuni casi, i servizi dati o il contenuto che si trova sul server Web sono basati su HTML. Alcuni gateway WAP potrebbero essere realizzati per convertire le pagine HTML in un formato che può essere visualizzato su dispositivi wireless. Ma poiché HTML non è stato progettato per schermi di piccole dimensioni, il protocollo WAP definisce il proprio linguaggio di markup, il Wireless Markup Language (WML), che aderisce allo standard XML ed è progettato per abilitare potenti applicazioni entro i limiti dei dispositivi palmari. Nella maggior parte dei casi, l'applicazione effettiva o altro contenuto che si trova sul server Web sarà WAP nativo creato con WML o generato dinamicamente utilizzando servlet Java o JSP.

In HTML, non ci sono funzioni per verificare la validità dell'input dell'utente o per generare messaggi e finestre di dialogo localmente. Per superare questa limitazione, è stato sviluppato JavaScript. Allo stesso modo, per superare le stesse limitazioni in WML, è stato sviluppato un nuovo linguaggio di scripting noto come WMLScript. Tratterò di più su WML e WMLScript nelle sezioni successive.

Lo stack del protocollo WAP

Per ridurre al minimo i requisiti di larghezza di banda e garantire che una varietà di reti wireless possa eseguire applicazioni WAP, è stato sviluppato un nuovo stack di protocollo leggero chiamato stack di protocollo WAP . La Figura 3 illustra questo protocollo dello stack e mostra anche un confronto con uno stack di protocollo basato sul Web. (Gli acronimi dei livelli possono essere tradotti rispettivamente in Wireless Application Environment, Wireless Session Protocol, Wireless Transaction Protocol, Wireless Transport Layer Security e Wireless Datagram Protocol).

Lo stack del protocollo WAP ha quattro livelli: livello di sessione, livello di transazione, livello di sicurezza e livello di datagramma. Si noti che il protocollo WAP è progettato per funzionare su una varietà di servizi portanti, inclusi CDMA (Code Division Multiple Access), CDPD (Cellular Digital Packet Data) e così via.

WML

Il Wireless Markup Language (WML) è un linguaggio di markup basato su XML progettato per descrivere il modo in cui il contenuto WAP viene presentato su un terminale wireless. WML differisce dall'HTML per quanto segue:

  • WML è stato progettato specificamente per i terminali wireless con uno schermo di destinazione lungo solo poche righe e largo circa un pollice.
  • WML fa distinzione tra maiuscole e minuscole e tutti i tag e gli attributi devono essere in minuscolo.
  • A differenza dell'HTML, il WML non perdona tag nidificati in modo errato.
  • WML non presume che una tastiera o un mouse "QWERTY" sia disponibile per l'input dell'utente.

Sulla base di queste differenze, WML fornisce un set di tag più piccolo, compatibile con la telefonia, che lo rende più appropriato dell'HTML per i terminali wireless portatili. Analogamente all'HTML, tuttavia, con WML puoi fornire all'utente opzioni di input e specificare come il programma utente dovrebbe rispondere quando, ad esempio, l'utente preme un tasto.

La genesi di WML

L'unità di base di WML è la carta che specifica una singola interazione tra l'utente e il programma utente. Più carte sono raggruppate in mazzi. Un mazzo è l'elemento più in alto di un documento WML. Quando il programma utente riceve un mazzo (scaricando il mazzo completo), attiva solo la prima carta del mazzo. Il listato 1 mostra un documento WML di esempio con una singola scheda:

Listato 1. Example1.wml

Il mio primo esempio WML

Quando viene visualizzato su un telefono abilitato per WAP, il Listato 1 viene visualizzato e visualizzato come mostrato nella Figura 4.

Come ho detto prima, WML è basato su XML. Pertanto, un mazzo deve essere un documento XML valido, il che implica che un documento WML (come quello mostrato nel Listato 1) dovrebbe iniziare con l'intestazione XML standard e il riferimento al DTD WML. Il

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.