Mobile applications with Domino
The question croppes up in a lot of customer discussions lately: " How can I bring my Notes and Domino applications to my mobile devices?" with iPhone, Android and Blackberry cited most, followed by " any phone" and with a large margin Windows mobile (no version # specified) and others. There isn't a straight answer to that. Mobile applications actually represent another increase of complexity over web applications that represent an increase in complexity over client server applications. The complexity stems from the decreasing control over the runtime environment. Let me elaborate:
Keep in mind: Mobile applications are NOT shrunken desktop applications. To make them successful you need to strip them to the bare essentials. Also a finger is a much cruder pointing device compared to a mouse and lends itself rather to drag and drop than click (tap).
As usual YMMV
- in a client server application you control all moving parts: the client code, the protocol on the network, the screen size, the server code. Clients can have their session state build in and you are free to distribute load evenly between client and server. You typically get away with a single language (e.g. Java, LotusScript or C#)
- in a web application you relinquish control over your client runtime to a combination of browser vendors and IT department decisions which to pick and what to enable/allow. You are no longer free in your client language: it is a combination of 3 languages: HTML, CSS, JavaScript and probably a bunch of frameworks like Dojo or jQuery. Picking a single browser platform is an illusion since one of your execs will turn up with an iPad or iMac (and out goes your IE corporate standard)
- In mobile applications you further relinquish the control over screen sizes, user interaction modes (is there a keyboard? Does it multi-task and how? Is there a stylus? What about a camera?) and network access: it might be online and offline. I discussed device diversity before.
- Web applications
These are comparable easy to build, since they are a variation of the web applications you already are familiar with. Using OpenNTF's mobile controls. With a little hindsight when creating your custom controls you can develop large and small screen version with moderate overhead. But even with classic Domino when applied ZEN style mobile applications are easy to build. Obvious drawback is the dependency on an available (and sufficient fast) network connection and the lack of access to device features (like camera, gps or gyroscope). Also it is your responsibility to make the application look like your target platform. The OpenNTF mobile controls address some of these short coming, which technically makes them hybrid applications - Native applications
Interestingly mobile devices, driven by a multitude of factors (subject to a different post) reversed the trend of moving all applications to the browser. The slogan "There's an app for that" went down very well. The obvious advantage of native applications are: you can stuff them into the respective app store, they can run without a network connection, feel like "the real thing" and have access to all possible device feature. The only disadvantage from a user perspective: it needs to be installed once (tapping into buying lust when browsing the app store overcomes that easily). Interestingly for mobile devices updating applications has been reasonably solved while classic computers need heavy hitting tools like M$ SMS or IBM Bigfix. The list of disadvantages for developers read a little longer:- Every device has different properties you need to take into account: speed, screen size, responsiveness and hardware configuration (camera, gyroscope, GPS - just to name a few)
- The APIs and modes of notification, data synchronisation and multi-tasking differ in their philosophy. Latest claims that is has been solved awaiting real live prove. Synchronisation is stubbornly hard (you might want to check CouchDB to learn about differences. A nice approach also is to use MQ and a signalling approach to keep all data in sync. For Blackberry and Android sync can be handled by Teamstudio unplugged (with an iOS version allegedly under development) which has the distinct advantage that you can develop in Domino Designer using XPages.
- Languages. There is no single language that is available for all devices
- ObjectiveC: when you develop for iOS (iPhone/iPad/iPod) that is what you need to use. Not available on non-Apple devices
- Java: Android uses it natively and you can use it for Symbian (in case it is still relevant), Blackberry and older Windows Mobile versions. Not available on Apple or Windows Phone 7
- C/C++: available on Symbian, Android (via NDK), Blackberry and smaller players. Not available for Windows Mobile 7 or Apple.
- C#/VB.NET: Windows Phone 7 only
- AppInventor: Graphical development for Android only
- JavaScript: Native to HP/Palm's webOS, for all others only via Hybrid applications
- Hybrid applications
They are build using web tooling: JavaScript, HTML and CSS, but have a small device dependent core that enables access to the device API and uses HTML5's offline storage capabilities. OpenNTF's mobile controls use the PhoneGap framework to run on iOS, Android, Blackberry, Windows Mobile, Palm, Symbian and soon MeeGo and Bada. Still supported featuresdiffer per platform. Phonegap also offers a Cloud build service. There are more frameworks to evaluate - [Update] Mono and AIR
Andreas Rosen from QKom adds that additional client site platforms are Adobe AIR, MonoTouch (iPhone, iPad, iPod) and Mono for Android. With recent turmoil around Mono I wouldn't bet the house on it. Air runs on Apple, Android and the Blackberry playbook. I didn't find any mention of webOS (Palm), Blackberry phones or Windows Phone 7 (yet). Andreas' company offers SoapGateQ! to make data available for mobile devices which works well with AIR and any platform capable of calling a web service.
Keep in mind: Mobile applications are NOT shrunken desktop applications. To make them successful you need to strip them to the bare essentials. Also a finger is a much cruder pointing device compared to a mouse and lends itself rather to drag and drop than click (tap).
As usual YMMV
Posted by Stephan H Wissel on 10 June 2011 | Comments (8) | categories: Show-N-Tell Thursday