in business ...
Reading any further I would like to make a friendly reminder. If I am writing about using things "... in business", this always adresses the same issues. Writing software for business is technicaly not different from writing your own personal app. But you have to keep many more points on your list of priorities to monitor than with homegrown usecases. Software for business has to be rock-solid, simple to maintain, stable, fast, reliable, sustainable and should be alterable in simple ways. There are literaly hundreds of different approaches to achive this. Some from a methodicly point of view (project management, development), other trying to get there using extended quidelines. All approaches are valid. And I am not going to spend more lines on this. Simply one little point: Non of the following technologies has been around in companies for longer. If you go on reading you agree that we are talking about bleeding edge stuff. Trying to use this in business forces you to keep an eye on technolgy and have a sixth sense.
Apps, apps and apps
Let's start with the magical buzzword. "Apps". This is the heart of every iXXX device at Apple. All mobile devices share the same basics because they all use the famous iOS. This is Apple's mobile operating system developed originally for the iPhone, and later deployed on the iPod Touch and iPad as well. It is derived from Mac OS X, with which it shares the Darwin foundation, and is therefore a Unix-like operating system by nature. In iOS, there are four abstraction layers: the Core OS layer, the Core Services layer, the Media layer, and the Cocoa Touch layer (UI). Mac OS X applications cannot be copied to and run on an iOS device. The applications must be written and compiled specifically for iOS and the ARM architecture. Authorized third-party native applications are available for devices running iOS 2.0 and later through Apple's App Store.
Apple provides a complete ecosystem for developers willing to implement apps. You can develop your applications with the Xcode 3 developer tools package which is included with every Mac. Beside this, you also use the Interface Builder which is a prototyping tool for Cocoa. For more details have a look at the Apple Development Tools page.
If you are willing to write native apps you have to either
a) upload them to the App Store and promote them to all iXXX users or
b) buy yourself a company developers license, register all your iPads and directly upload your native app without pushing them to the appstore.
Both ways are not what I call "suitable" for enterprises. One case exposes applications to a broad range of people. In the other case you have to do too many manual steps to be successfull.
If you are not able (cause the # of iPads is too large) or willing to play with all those native stuff you have another option. You can simply stick to webbased applications. They do not need any direct deployment to the device and simply run within your safari browser. "Wow. That's everything but cool?". Wrong! Safari is based on WebKit and this is nearly ready for HTML5. Your webapps should of course be HTML5 ready.
HTML5 = Next Generation Features for Modern Web Development
HTML5 is currently under development as the next major revision of the HTML standard. Like its immediate predecessors, HTML 4.01 and XHTML 1.1, HTML5 is a standard for structuring and presenting content on the World Wide Web. It's development is ongoing since the last XHTML 1.1 release which is a W3C recommendation since 31 May 2001.
If you want a real fancy introduction to the new features and you are using one of the "modern" browsers (compare chapter below), have a look at this slidedeck.
- First part of a 5 part developerworks series: Creating mobile Web applications with HTML 5
- HTML5 Unleashed: Tips, Tricks and Techniques
- Touch The Future: Create An Elegant Website With HTML 5 And CSS3
- HTML 5 Tag Reference
WebKit vs. Gecko vs. IE
Up to now there are only few browsers supporting different subsets of the latest HTML5 W3C Working Draft 24 June 2010. The HTML5 test website generates a score which is only an indication of how well the browsers supports the upcoming HTML5 standard and related specifications. It does not try to test all of the new features offered by HTML5, nor does it try to test the functionality of each feature it does detect.
If you compare the most recent windows versions of relevant browsers you notice, that all WebKit based rendering engines are far ahead. If you are willing to testdrive your iPad webapp you should use foremost the targeted device but it's completely valid to use the desktop browser which is knowing to best support HTML5 at the moment.
Preparing Your Web Content for iPad
Safari on iPad is capable of delivering a "desktop" web experience. iPad has a large screen and fast network connectivity, and Safari on iPad uses the same WebKit layout engine as Safari on Mac OS X and Windows. You can ensure that your website looks and works great on iPad, and even create new touch-enabled web experiences for your customers, by considering a few specific differences between iPad and other platforms. Apple did quite a good job in introducing all the special things to developers with a couple of documents. You should browse http://developer.apple.com/safari/library/ for the latest information and some great showcases. Also take a detailed look at the iPad Human Interface Guidelines. The basic device characteristics to keep in mind are:
- Screen Size is Compact
- Memory is Limited
- People See One Screen at a Time
- People Interact with One Application at a Time
- Onscreen User Help is Minimal
I know: Enterprise developers tend to think about Java Script as of the last scripting language they would ever chose for writing professional applications. Up to some extend this is caused by the many badly written stuff out there with all it's problems like cross browser issues and proprietary function ussage. But you can do it the right way. Look at Google for example:
(Source: Adam de Boor in Google to use HTML5 in Gmail
Frameworks and Libraries
Writing all this stuff by hand, like Google does is probably not the right decision if you are aiming for productivity and you are not Google :-) Thank god, there are a couple of HTML5 frameworks out there already you can use. Basically you have to decide if you want to use a serverside or a clientside version. The frameworks presented here have a positive history with me and this is the reason I am presenting them to you.
The creators of Touch also gave birth to the better know ExtJS framework. Working with Touch is easy and there are a lot of examples. It is published under several licenses. A GNU GPL license v3 version is also available.
Mobile Application Development with Oracle ADF Mobile
ADF Mobile extends Oracle Application Development Framework to mobile users. Using Oracle JDeveloper, application developers can rapidly develop mobile applications that support mobile users accessing critical business data through either on-device mobile client or mobile. There are two parts to ADF Mobile: ADF Mobile Client and ADF Mobile Browser. ADF Mobile Client supports a complete on-device client framework that works and performs consistently regardless of connectivity. ADF Mobile Browser supports UI renderers that are optimized for Mobile Browser display. Both frameworks enables developers to develop one application that can be deployed to multiple mobile device platforms. The mobile client is (not jet) released for apples devices. Therfore you still have to stick to the "old fashioned" way. (compare otn article: Developing for the Apple iPhone with Oracle JDeveloper and ADF).
TouchFaces is a mobile UI kit for PrimeFaces to create mobile web applications for handheld devices with webkit based browsers. You can run it with Mojarra-2.0.2 and make use of 90+ components
Apache MyFaces Trinidat
Apache MyFaces Trinidad is a JSF framework including a large, enterprise quality component library. Trinidad supports wide range of mobile browsers. Some mobile devices are explicitly tested and supported. Others are grouped as basic browsers and Trinidad renders pages so that the page works with or without browser features, such as supports for AJAX, DOM, JavasScript or even CSS. There is a seperate website dedicated to Mobile Application Development with Trinidat.
books webpage at springer.