Alex Online Today

some experience to be shared

By

Nostalgie-Zitat: Bücher verschwinden 2007

Bin heute beim Blättern im Buch Designing Web Usability Von Jakob Nielsen auf ein schönes Zitat gestossen:

“…dass wir etwa bis zum Jahr 2007 warten müssen, bis Bücher verschwinden und vollständig durch Online-Informationen ersetzt werden. Verleger von gedruckten Büchern seien gewarnt: Das wird geschehen!”

 

Das war zwar eventuell etwas kurz gegriffen, aber die Grundaussage passt durchaus. Vorallem jene, dass die Verleger sich langsam wirklich Gedanken darüber machen möchten, wie sie in Zukunft ihre Bücher vertreiben möchten!

Man muss hierbei hinzufügen, dass dieses Buch im original 1999 erschienen ist. Ich möchte meinen, dass Herrn Nielsen hierbei eine erstaunliche Weitsicht bewiesen hat, zumal dies keinesweg sein Fachgebiet ist. Trotzdem stellt sich natürlich die Frage, weshalb Herr Nielsen damals in einem (im übrigen sehr erfolgreichen und lesenswerten) Buch über Usability  in solch trüben Gewässern fischte. Für mich ist es trotzdem das Zitat des Tages!

By

Native oder Generische Smartphone Applikationen

Kurzer Beitrag entstanden für ein Wahlpflichtfach an der Hochschule:

Die Präsentation dazu findet sich unter: https://prezi.com/secure/f018296ac996c51af6a8fbc03a4066164c23c2de/

Was ist nativ, was ist generisch:

Moderne Telefone s.g. Smartphones verfügen über einen ähnliches Funktionsumfang wie Computer. Dies ermöglicht das Ausführen von Anwendungen, sowie das Aufrufen von WebApplikationen, und ausführen von Widgets oder Flash-Programmen.
Welche Fähigkeiten ein Telefon hat, hängt in erster Linie vom darauf ausgeführten Betriebssystem ab. Der Markt ist momentan sehr volatil, jedoch trifft man hauptsächlich auf folgenden Systemen für Smartphones:
Symbian (Nokia), BlackBerry (RIM), iOS (Apple), Android (Google), Windows Phone 7 (Microsoft), Windows Mobile (Microsoft), WebOS (HP/Palm).
Im 2. Quartal 2010 hat Symbian mit 43% noch immer den größten Marktanteil (wenn auch mit stark abnehmender Tendenz), dahinter folgen Blackberry/RIM mit 18%, Android mit 17% und iOS mit 13%1. Dies Verteilungen ändern sich jedoch noch stark und über die vergangenen Quartale war nur eine Tendenz weg von Symbian hin zu iOS und Android zu erkennen. Zu einem ähnlichen Ergebnis kommt auch die FAZ2:
Dort wird eine Statistik von Gartner herangezogen, die Nokia noch geringere Werte einräumt. Den Grund für die Verlagerung sieht die FAZ in erster Linie in der mangelhaften Software der Nokia Geräte.  
Dies dient nur zur kurzen Darstellung des Marktes, daraus entsteht folgendes Problem: Für alle Geräte stehen native Entwicklungsumgebungen bereit. Für Nokia wird mit Qt entwickelt, BlackBerry und Google setzen auf Java (jedoch unterschiedliche Frameworks), Apple Cocoa-Touch (Objective-C) und Microsoft, zumindest mit Windows Phone 7, auf Silverlight. Dies bedeutet, dass native Applikationen für jedes System einzeln entwickelt werden müssen, wofür spezielles Know-How und Ressourcen einzuplanen sind.
Alternativ können einfache Programme auch auch als Web Applikation über den Browser bzw. als Widgets in der Browserengine ausgeführt werden. Hierbei verringert sich der Entwicklungsaufwand zunächst, da theoretisch alle Browser ähnlich funktionieren. Das selbe gilt für Flash und Silverlight-Programme, wobei nicht alle Smartphones Flash bzw. Silverlight unterstützen und wenn, dann oft nur eine Mobilversion der entsprechenden Laufzeitumgebung installiert ist, was weitere Einschränkungen mit sich bringt. Ich gehe zunächst insbesondere auf die Möglichkeit ein, generische Apps als solche mit Webtechnologien (HTML, CSS, JavaScript) zu sehen. Diese sind von jedem modernen Telefon ,in Form einer mobilen Webseite, aufrufbar und lassen sich für viele Modell als Widget aufwerten (was sie einem nativen Programm schon sehr nahe bringt). Flash und Silverlight sind auf mobilen Plattformen momentan noch so wenig verbreitet, dass hier nur bedingt vom generischen Ansatz profitiert werden kann.

Warum sind native Anwendungen beliebt – Die Anwenderperspektive

Obwohl native Anwendungen bereits seit vielen Jahren theoretisch möglich sind, hat sich deren Verbreitung erst in den letzten drei Jahren richtig durchgesetzt. Hierbei spielen verschiedene Faktoren eine wichtige Rolle. Vorallem waren in der Vergangenheit viele Benutzer nicht in der Lage, richtige Programme auszuführen. Dies lag entweder an den Geräten, die keine Applikationen unterstützten, an technischen Hürden, es war mitunter einfach zu kompliziert, Programme auf die Telefone zu installieren, oder daran, das kein „richtiges“ mobiles Internet verfügbar war, was viele Anwendungen sowieso uninteressant machte. Allgemein war dadurch das Interesse an mobilen Applikationen so gering, dass sich auch die Erstellung kaum lohnte.
Ein wirklicher Schub an Anwendungen kam erst auf, als Apple und Google eigene Vertriebswege für Applikationen bereitstellten, den iTunes App Store und Android Market. Mittlerweile gibt es viele weitere Plattformen (z.B. Nokia OVI Store, RIM App World, …), die Stores von Apple (beinahe 325.0003 Apps) und Google (ca. 200.000 4 Apps) bieten jedoch nach wie vor die größte Vielfalt und haben die größten Umsätze, auch weitere Stores mit nativen Anwendungen wie der Windows Phone App Store (mit bereits 5000 Apps nach 1 Monat) weisen eine enorme Wachstumsgeschwindigkeit auf.
Zwar bilden sich auch für plattformübergreifende Applikationen langsam solche Märkte, sie sind jedoch noch weitgehend unbekannt oder befinden sich noch in der Konzeptionsphase. (z.B. der InMarket für Flash)
Die Beliebtheit nativer Applikationen hängt dabei vor allem von folgenden Kriterien ab:

  1. Geringe Komplexität für den Anwender
  2. Integration in das System
  3. Funktionen des Telefons verwenden

Zu Punkt 1: Insbesondere durch die Stores ergibt sich für Anwender die Möglichkeit, durch eine Suche über den Gesamtbestand an Anwendungen schnell und einfach jene zu finden, die er benötigt. Die Installation geschieht in der Regel über einen einzigen Klick direkt auf dem Gerät oder am PC, wobei das Programm dann automatisch auf das Telefon übertragen wird. Dort wird das Programm auf dem Startbildschirm platziert und kann immer wieder leicht gefunden und ausgeführt werden. Die Bezahlung erfolgt immer über den gleichen Kanal, den der Benutzer bereits kennt und dem er Vertrauen schenkt.
Zu Punkt 2: Native Applikationen können Bedienelemente des ausführenden Systems verwenden. Diese sind dem Benutzer bereits bekannt, so dass er sich schnell zurecht findet. Besonders bei mobilen Anwendungen, die oft nur wenige Minuten laufen und dem Benutzer schnell ein Ergebnis liefern sollen, ist eine komfortable Benutzung essentiell. Generische Anwendungen können diese Bedienelemente nicht nutzen.
Zu Punkt 3: Bei nativen Programmen ist es i.d.R. problemlos möglich, den Funktionsumfang des Smartphones komplett auszunutzen. Von der Integration der Telefonfunktionen wie z.B. Telefonbuch, Kamera, Positionsbestimmung profitiert der Benutzer enorm. Viele Anwendungsfälle lassen sich ohne diese Funktionalität garnicht umsetzen.

Native Apps Generische Apps
Einfach zu finden / zu installieren
(+)
Suche und Installation komplexer und sehr Systemabhängig
Einfach zu bedienen, da die GUI des jeweiligen Telefons verwendet werden kann. Bedienung stark von der Qualität der Entwicklung abhängig. Applikation sieht auf verschiedenen Geräten unterschiedlich aus.
Applikation kann auf Funktionen des Telefons zugreifen wie z.B. Adressbuch, Kamera und Positionsbestimmung Zugriff auf Telefon eigene Funktionen ist kompliziert, nur bedingt oder gar nicht möglich.

Die Entwicklersicht

Für die Entwicklung von mobile Applikationen sind insbesondere folgende Punkte interessant:

  1. Notwendiges Know-How
  2. Aufwand
  3. Funktionsumfang

Zu Punkt 1: Während Plattformübergreifende Applikationen meistens auf herkömmliche Entwicklungsumgebungen und Programmiersprachen aufsetzen, ist dies bei nativen Apps oft nicht oder nur teilweise der Fall. Ausserdem muss für jede Plattform spezielles Wissen aufgebaut werden, da sich die Entwicklung auf jeder Plattform enorm unterscheidet.
Zu Punkt 2: Während native Applikationen wie zuvor beschrieben die systemeigenen Oberflächenkomponenten verwenden können wie z.B. Menüleisten und Kartendarstellung, bieten Plattformübergreifende Applikationen diesen Komfort nicht. Ausserdem führt die unüberschaubare Zahl verschiedener Geräte zu unvorhergesehenen Problemen bei der Entwicklung plattformübergreifender Anwendungen. Plattformübergreifende Anwendungen in einer hohen Qualität zu entwickeln, ist durch die hier entstehende Komplexität oft wesentlich teurer, als das Entwickeln nativer Anwendungen für separate Systeme.
Allerdings bietet die Entwicklung abseits vorgegebener Pfade mehr Gestaltungsmöglichkeiten, während man bei nativen Applikationen oft an Vorgaben und Einschränkungen gebunden ist.
Zu Punkt 3: Im Gegensatz zu Plattformübergreifenden Lösungen haben native Applikationen wesentlich mehr Zugriffsmöglichkeiten auf die zugrunde liegende Plattform. Prinzipiell kann man sagen, je mehr verschiedene Systeme mit einer Anwendung bedient werden möchten, umso kleiner wird der gemeinsame Nenner an Systemkomponenten (Adressverwaltung, Kalender, Kamera, Positionsbestimmung, 3D-Beschleunigung, Bewegungssensoren, …) auf die man in der Applikation zugreifen kann. Einer nativen Applikation stehen immer alle diese Komponenten zur Verfügung.

Native Apps Generische Apps
– Spezielles Know-How muss aufgebaut werden
– Neue Entwicklungsumgebungen und Programmiersprachen
– Anwendung vorhanden Wissens
– Anteil neu zu erlernender Komponenten überschaubar
– Zeiteinsparung durch Verwendung vorhandener Darstellungskomponente des Systems
– Man ist eventuell an Vorgaben der Plattform gebunden (z.B. bei Apple)

– Oberfläche mit hoher Qualität leichter zu erstellen

– Oberflächen lassen sich mit Webtechnologien leicht selbst entwerfen

– Sehen auf jedem Endgerät unterschiedlich aus und sind unterschiedlich zu bedienen
– Qualität kann nur für Geräte gewährleistet werden, auf denen die Applikation getestet werden konnten

– Der volle Funktionsumfang der zugrunde liegenden Plattform ist verfügbar – Funktionen des Telefons lassen sich nicht oder nur bedingt in der Applikation anwenden.

Native Anwendungen – Marketing und Vertrieb

Da native Anwendungen meist über einen dedizierten Vertriebsweg zur Verfügung gestellt werden, ist der Aufwand des Vertriebes wesentlich geringer als der Vertrieb plattformübergreifender Anwendungen. Es muss weder ein eigener Vertriebskanal bereitgestellt, noch verschiedene Bezahlmodelle erdacht werden. Zwar zweigen die Dienstleister einen gewissen Anteil an den Einnahmen ab (bei Apple und Google sind das z.B. 30%) diese Kosten sind jedoch meist geringer als das Bereitstellen einer eigenen Vertriebs-Infrastruktur.

Im Marketing sind die Vorteile noch viel gravierender. Da sich für plattformübergreifende Anwendungen noch keine allgemein anerkannten Standards entwickelt haben, sind diese Anwendungen für den Benutzer oft wesentlich komplexer zu Beziehen und zu Installieren. Während z.B. bei einer iPhone App sofort klar ist, wo diese bezogen werden kann, wie sie bezahlt wird und auf welchen Geräten sie läuft, ist dies bei plattformübergreifenden Applikationen oft nicht eindeutig. Fragen wie „Und wo bekomme ich dieses Programm?“ oder „Läuft das auf meinem Smartphone?“ müssen für einen Kunden nativer Applikationen nicht geklärt werden. Die gesamte Energie des Marketings kann dann aufgewandt werden, um auf die generelle Verfügbarkeit und Funktionalität der Applikation hinzuweisen. Ausserdem stellte es sich in den letzen Jahren als wertvolle Abgrenzung zur Konkurrenz heraus, sagen zu können „Wir haben eine iPhone/Android/… Applikation“, über die wir unseren Service zur Verfügung stellen. Mittlerweile gehört das Bereitstellen nativer Anwendungen beinahe zum Standard.

Native Apps Generische Apps
Bekannte und etablierte Vertriebskanäle Keine etablierten Vertriebskanäle, gegebenenfalls müssen eigene Vertriebsstrukturen aufgebaut werden
Gewinnschmälerung durch Verkaufsplattform (i.d.R. 30%) Kosten fallen nur bei etablieren eigener Vertriebskanäle an, vorhandene Plattformen sind i.d.R. kostenfrei
>Kaum Benutzerunterstützung notwendig Benutzer müssen noch intensiv über das eigentliche Format informiert werden
Applikationen können selbst als Marketinginstrument verwendet werden Es muss explizit Marketing für die Applikation gemacht werden

Fazit

Empfehlenswert ist momentan, native Applikationen für die beliebtesten Systeme zur Verfügung zu stellen. Diese sind zwar in der Entwicklung zunächst mit einem höheren Aufwand verbunden, was sich jedoch sehr schnell relativiert, wenn man versucht mit plattformübergreifenden Methoden gleiche Qualität anzubieten. Im Marketing und Vertrieb spart man sich hingegen enorm viel Zeit und Kosten ein, denn hier muss dem Anwender durch die bestehenden Provider kaum Hilfestellung beim Einkauf und der Installation der Applikationen gegeben werden. Die gesamte Energie des Marketings kann sich auf die Bekanntmachung und den Inhalt des Programms konzentrieren, was für eine stärkere Wahrnehmung sorgt und die Wahrscheinlichkeit eines Flops verringert.

Quellen:
1 iX Developer 1/2011, Seite 8
2 http://faz-community.faz.net/blogs/netzkonom/archive/2010/11/10/smartphone-markt-nokia-stuerzt-ab-android-waechst-rasant.aspx
3 http://148apps.biz/app-store-metrics/
4 http://www.androlib.com/appstats.aspx

By

Java:deprecated – welche Strategie verfolgt Apple?

Kurz nach Vorstellung des neuen Macbook Air hat Apple auch ein Update für Java veröffentlicht. In den release Notes ist folgendes prominent an erster Stelle zu lesen:

As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.
This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X. The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products.

darauf hat mich vorhin ein Artikel auf heise.de aufmerksam gemacht.

Welche Bedeutung hat die Java Runtime auf der Mac Plattform? Einige Fakten

– Die Java Runtime dient als Grundlage für viele Anwendungen, von denen einige auch nur deshalb für den Mac portiert wurden, da sich durch die Verwendung von Java der Aufwand in Grenzen hält.
– Besonders beliebt war Java auf dem Mac auch deshalb, weil es stets mit dem Betriebsystem mitgeliefert wurde. Bis heute ist die JRE auf jedem Mac vorinstalliert.
– Die gute Integration erlaubt, dass viele Java Anwendungen optisch nicht von Cocoa Anwendungen (der nativen Mac Umgebung) zu unterscheiden sind.

Die Alternative
– z.B. für Windows wurde die Java Runtime immer von Oracle bzw. Sun entwickelt.
– Das Open Source Projekt SoyLatte bietet schon seit langem aktuellere Releases des JDK für die Mac Plattform (insbesondere relevant für Entwickler).

Die möglichen Gründe für Apple von der eigenen Runtime abzuweichen?
– Apple möchte den Mac als Anwendungsplattform geschlossener gestalten und versucht zukünftig ausschließlich auf Cocoa zu setzen.
– Apple sieht in der Entwicklung von Java auf Clientseite keinen so großen Nutzen mehr und hofft auf andere Anbieter (Oracle, Open Source Community).
– Apple ist von der neuen Abmahn-Politik Oracles eingeschüchtert und möchte einen Rechtsstreit verhindern.

Was bedeutet das für die Zukunft von Java auf dem Mac?

Hier sind verschiedene Szenarien möglich, manche machen den Mac für Java Entwickler und High-End User sehr uninteressant. Aber Ich kann mir nicht vorstellen, dass Apple es sich unbedingt mit der (Java-) Entwicklergemeinde verscherzen möchte, schließlich gibt es hier viele Zusammenhänge auch zur Mac Entwicklergemeinde und der Mac als Entwicklungsplattform hat gerade in letzter Zeit enormen Zuwachs erfahren.

1. Szenario: Apple möchte den Mac als Anwendungsplattform geschlossener gestalten und versucht zukünftig ausschließlich auf Cocoa zu setzen.
Folge: Im App Store werden keine Java Applikationen zugelassen. Zu erwarten ist dann allerdings, dass Oracle relativ schnell eine eigene und auch möglichst gute Runtime zur Verfügung stellen wird, um Apple gegenzusteuern. Könnte für Apple nach hinten losgehen, weil man erstens die Entwickler verärgert und zweitens nicht wirklich etwas erreicht.

2. Szenario: Apple hat schon seit einiger Zeit sehr zögerlich neue Java-Versionen übernommen. Offenbar hat man einfach die Lust daran verloren und hofft, Oracle oder OpenSource Projekte wie SoyLatte werden zukünftig die Arbeit übernehmen.
Folge: Genau das passiert auch, eine Verzögerung ist jedoch vorerst nicht auszuschließen. Die Folgen sind besonders schlimm, denn von Oracle oder der Open Source community sind keine derartig guten Integrationen der JRE in Mac OS zu erwarten, wie wir sie momentan kennen. Dies könnte Java auf dem Mac tatsächlich gehörig schaden.

Die Zukunft von Java wird auch für Mac OS eine wichtige Rolle spielen. Ich persönlich als Entwickler würde mich eventuell von Apple trennen, wenn zukünftig keine ordentliche JRE mehr aufzutreiben ist. Denn selbst wenn ich auf einige Javaprogramme verzichten könnte, so basieren doch die alle Eclipse-Derivate ebenso auf Java. Das SKD alleine reicht zum Entwickeln leider nicht aus.

By

JavaScript Schnipsel: eval()

Mit eval() kann man in JavaScript Code nachträglich laden und ausführen. Aus diesem Grund ist es auch besonders wichtig, vorsichtig damit umzugehen! Eval ist besonders praktisch, um z.B. mathematische Funktionen dynamisch zusammen zu setzen.

Folgend ein kleines Beispiel:

function bar(a,b){
	var str = 'a*x+b';
	return (function(x){ 
		return eval(str);
	});
}
 
var foo = bar(4,5);
document.write(foo(1));

Diese Dynamisch erstellten Funktionen sind z.B. sehr hilfreich beim Zeichnen von Graphen.