2009-08-22

Am Androiden schrauben

TKWeek-Programm-Icon Neulich sagte ein Kollege zu mir: Es wäre schön, wenn der Termin in der 37. Kalenderwoche stattfinden könnte. Wissen Sie aus dem Stand heraus, wann KW 37 beginnt und wann sie endet? Eben. Den guten alten papiernen Planer, in dem so etwas selbstverständlich drin steht, habe ich, wie langjährige Leser meines Blogs wissen – schon sehr früh gegen elektronische Organizer ausgetauscht. Bedauerlicherweise enthält der Kalender meines G1 diese Info nicht. Aus diesem Grund habe ich mich an meinen Computer gesetzt und ein kleines Programm für meinen Lieblingsandroiden gezimmert.
Screenshot von TKWeek
Seit heute Abend können Sie das Programm TKWeek (ich gebe es ja zu, in punkto Namensgebung bin ich ein Einfallspinsel :-)) aus dem Android Market laden.
Die Anwendung kennt zwei “Betriebsarten”:
  1. Woche zu einem Datum herausfinden
  2. Woche auswählen und ersten/letzten Tag ablesen
Das Datum wird mit der großen, dreiteiligen Komponente im oberen Bereich des Bildschirms ausgewählt. Die Werte weiter unten werden laufend aktualisiert. Die Woche lässt sich mit der gelben SeekBar sowie den beiden Plus-/Minus-Schaltfläche eingeben. …mehr kann die anwendung nicht, aber mehr ist ja auch nicht nötig. :-)

2009-08-18

Adobe AIR und Java Web Start

Im zweiten Teil meiner kleinen Serie über Adobe AIR hatte ich versprochen, noch ein paar Zeilen über AIR unter Linux zu schreiben. Die Installation verlief ebenso glatt wie unter Mac OS X und Windows.
Erfolgreiche Installation unter Ubuntu
Auch das Aussehen der Installationsdialoge entspricht (abgesehen natürlich vom Fensterrahmen) den anderen beiden Plattformen. Das Einrichten und der Start der eigentlichen Anwendungen funktioniert – wie erwartet - ebenfalls wie unter Windows und Mac OS X:
Rückfrage, was mit der herunter geladenen Datei geschehen soll
Rückfrage vor der Installation
Installationsort festlegen
Fassen wir die bisherigen Erkenntnisse zusammen. AIR-Anwendungen werden offenbar in Installationsdateien gepackt und so verteilt. Diese enden auf .air. Da dieser Dateityp (sowie ein äquivalenter MIME-Typ) mit der AIR-Laufzeitumgebung verknüpft ist, führt ein Doppelklick auf eine solche Datei bzw. der Download aus dem Internet zum Start der AIR-Runtime. Diese bietet an, die Anwendung zu installieren oder ggf. wieder vom System zu entfernen. .air-Dateien können also auf normalem Weg kopiert bzw. weitergegeben werden. Ein direkter Download wird aber (wie bereits geschrieben) ebenfalls unterstützt.
Ohne Frage macht das AIR-Laufzeitsystem das Herunterladen, Installieren und ggf. Entfernen von AIR-Anwendungen sehr einfach. Der Anwender wird mit grafisch schön aufbereiteten, leicht verständlichen Dialogen durch die jeweils nötigen Schritte geführt. Einmal auf dem Client angekommen, verhalten sich AIR-Anwendungen bzgl. Start und Deinstallation wie ihre nativen Kollegen. Das Look and Feel weicht von nativen Anwendungen ab, ist über Plattformgrenzen hinweg aber identisch.
Java macht vieles ähnlich, verfolgt im Detail aber doch andere Strategien. Diese möchte ich im Folgenden ins Gedächtnis rufen. Das Java Network Launching Protocol (JNLP) legt, vereinfacht ausgedrückt, fest, wie Java-Anwendungen von einem Web Server heruntergeladen und auf einem Client installiert werden. Die Grundidee ist, ein Programm durch einfaches Anklicken eines Links im Webbrowser starten zu können. JNLP ist eine Spezifikation; eine Implementierung mit Namen Java Web Start ist Bestandteil jeder halbwegs aktuellen Java-Laufzeitumgebung. Ihr Verhalten möchte ich am Beispiel meines kleinen Progrämmchens TKPlayIt anhand von einigen Screenshots zeigen.
Startseite meines Programms TKPlayIt
Die orangefarbene Schaltfläche Launch (eine ganz normale Grafik) ist ein Link auf die Datei TKPlayIt.jnlp. Wird sie angeklickt, lädt der Webbrowser die Datei herunter. Da Dateien des Typs .jnlp (bzw. ein äquivalenter MIME-Typ) in der Regel mit der Java-Laufzeitumgebung verknüpft sind, wird diese gestartet.
Java-Splashscreen
Die Laufzeitumgebung zeigt beim ersten Aufruf der zu startenden Anwendung den oben abgebildeten Splashscreen. Bei erneuten Starts wird stattdessen eine anwendungsspezifische Grafik angezeigt, sofern diese in die .jnlp-Datei eingetragen wurde.
Herunterladen der Anwendung
Anschließend wird die Anwendung heruntergeladen. Dies geschieht aber nur beim ersten Aufruf, oder wenn auf dem Web-Server eine neuere Version als die bereits auf dem Client vorhandene abgelegt wurde.
ein Sicherheitshinweis
Nach dem Laden erfolgt unter Umständen ein Sicherheitshinweis. Gestattet der Anwender die Ausführung, wird die Anwendung gestartet.
.jnlp-Dateien sind keine Installationsarchive. Sie definieren vielmehr die Bestandteile eines Programms. Eine .jnlp-Datei legt also (unter anderem) fest, welche Dateien von einem Web-Server heruntergeladen werden müssen. Um eine Web Start-Anwendung weiterzugeben, reicht es demzufolge nicht aus, die zugehörige .jnlp-Datei zu kopieren. Auch die “Installation” des Programms verläuft anders. Seine Bestandteile landen nämlich nicht in plattformüblichen Programme-Verzeichnissen, sondern in einem Web Start-eigenen Cache. Dennoch sind Web Start-Anwendungen recht gut in das System integriert. Sie lassen sich beispielsweise durch Verknüpfungen auf dem Desktop starten.
Unter Windows können Web Start-Anwendungen wie gewohnt aus der Systemsteuerung heraus entfernt werden. Auf anderen Plattformen muss hierzu der Java Cache Viewer geöffnet werden.
Java Cache Viewer
Damit möchte ich meine Mini-Serie über Adobe AIR aus Anwendersicht beenden. Haben Sie Fragen oder Anregungen? Dann schreiben Sie mir doch einfach…

2009-08-02

…ein bischen frische Luft…

Alle Screenshots sind gemacht. Die Texte sind fertig getippt. Das Manuskript ist beim Verlag. Der eigentliche Schreibvorgang für die dritte Auflage des Eclipse-Buches ist also abgeschlossen. Für mich heißt dies, wieder Zeit fürs Bloggen zu haben.
In diesem Beitrag möchte ich einen Blick über den Zaun werfen. Konkret geht es heute um Adobe AIR, genauer gesagt um die Frage, wie sich diese Plattform dem Endanwender präsentiert. Wie Java basiert AIR auf einer Laufzeitumgebung, die einmalig herunter geladen und installiert werden muss. Diese virtuelle Maschine ist plattformabhängig, die eigentlichen Anwendungen hingegen funktionieren überall, wo es eine entsprechende Ablaufumgebung gibt.
Zunächst also der Installationsvorgang unter Windows (das Archiv ist übrigens etwa 15 MB groß):
Installation Schritt 1
Installation Schritt 2
Installation Schritt 3
Das Ganze ist in wenigen Minuten erledigt. Nach der Installation wollte ich mir ansehen, was da so alles auf der Platte gelandet ist. Das erwartete Unterverzeichnis AIR unter C:\Programme\Adobe gab es nicht. Einträge im Startmenü waren auch nicht auszumachen. Die erweiterte Suche förderte dann aber C:\Programe\Common Files\Adobe AIR als Basisverzeichnis der Installation zutage. Für den Endanwender tritt die Laufzeitumgebung nach der Installation also zunächst nicht in Erscheinung.
Die AIR-Downloadseite hatte auf einen Adobe AIR Marketplace hingewiesen, der aktuelle Anwendungen zum Herunter laden anbietet. Das sieht dann so aus:
Adobe AIR Marketplace
Da ich keine Lust auf das 30. Wetter-Widget hatte, habe ich mich für das Spiel Desktop Blaster entschieden. Die Hersteller-Site hält das Programm zum Download bereit. Nach einem Fortschrittsbalken während des Herunterladens  (den ich Ihnen nicht zeige) wird folgende Meldung ausgegeben:
image
Mit Speichern kann man die herunter geladene Datei für eine spätere Verwendung “parken”. Unter Windows wird .air als Dokumenttyp der AIR Laufzeitumgebung registriert. Ein Doppelklick auf solche Dateien führt aber nicht zum Start der Anwendung, sondern startet einen Installationsvorgang:
Informationen zur Anwendung
Zweite Seite des Installationsassistenten
.air-Dateien sind also Installationsarchive. Ein erneutes Öffnen einer solchen Datei zeigt folgenden Dialog:
Auswahl, was mit bereits installierten Anwendungen geschehen soll
AIR-Anwendungen haben unter Windows jeweils eigene Einträge in der Liste installierte Software, können also auf dem üblichen Weg gelöscht werden. Auch der Start geschieht analog zu nativen Programmen. Wie das auf anderen Plattformen gelöst ist, werde ich noch überprüfen.