Category: JavaME

I firmly believe that the roadmap for mobile web applications has been laid out for us by the likes of the Apple’s iPhone, Nokia’s N95, Google’s Android, Mozilla’s Fennec, and more others to follow. Currently, designing for the mobile web is quite a chore. If you thought browser fragmentation was bad in the PC world, then the mobile browser space is quadruple that! As mobile devices get better and the data plans get cheaper, and the browsers start to come together with the same feature set and compatible languages, the less headache it will become for web developers to transition toward the mobile web.

The iPhone Safari browser, Nokia, and Android all use the same web browser engine called Webkit. Webkit is a revelation in itself. The full web browsing experience on the desktop now available on the mobile device. Mozilla’s Fennec is based on the same Mozilla Firefox engine and also allows for the full browsing experience. Windows Mobile has Internet Explorer and its also starting to move in this direction. See a trend? Yep. The days of WAP browsing are slowing being numbered. Its not going away anytime soon, but it eventually will.

Of course, as a developer, you will also be faced with a choice of developing a mobile native application vs mobile web application. That decision is not an easy one to make. There are so many platforms to choose from. iPhone, Windows Mobile, Palm, BlackBerry, Java ME, Flash Lite, Symbian, and the list goes on. This tells me that in order to get the most market penetration for your application, targeting the mobile web is the logical choice. However, there are exceptions. Gaming apps, off-line storage, and integration with phone hardware feature set are all compelling reasons to target your application to a platform as opposed to the mobile web. What Apple should have done to make this decision easier was to integrate phone APIs into the Safari Webkit engine. Create a subset of XHTML tags or JavaScript objects that allow the mobile web app to tap into the PIM, camera, or other mobile device native function.

The general consensus when Steve Jobs announced that iPhone would support 3rd party apps coded as web applications was not that positive. However, I am here to say that we should keep an open mind as to what kind of capabilities that would be opened up by doing it this way. According to Bruce Stewart’s post at O’Reilly:

It is after all a very good thing that Apple has decided to provide URL-based access to the iPhone’s telephony, email, and other services, but that point really got lost on the crowd I think, who were expecting an SDK to access these things. We’ve known all along that web apps would be one possibility for third-party iPhone development, and Steve’s “there’s no SDK, just use Safari and standard Web 2.0 technologies like Ajax to develop iPhone apps” message didn’t highlight the power of what they are actually allowing here. (As one colleague commented, “just try getting your web app to make an actual phone call on a J2ME-based phone.”) Personally, I think that there are a lot of interesting possibilities for third-party development with this kind of access to the iPhone’s main features, and I’m not surprised that Apple isn’t letting us get at the OS or place buttons on the home screen, but his message clearly didn’t go over well with the developer audience here in San Francisco. Read More.

Obviously, having access to basic phone functions isn’t entirely new as many current mobile web browsers give this basic functionality (if your web pages are coded correctly). The real meat is if web developers are given access to local persistent storage on the phone, access to iTunes, and access to mail and calendar. Another important thing that we would need is access to the multi-touch user interface events (i.e. in addition to the standard onClick and onFocus events, perhaps we would use onPinchIn or onPinchOut events to trigger actions on the web application. I have yet to see any real specifications on this 3rd party web app API, but it does hold some promise (contrary to what many see as a disappointment).

Oh, and one last thing. I also want to be able to run Java ME on the iPhone. I already have two Java ME apps that I use constantly. Gmail and Opera Mini. It would be sweet if the iPhone could leverage the Java ME space. However, I do recall that Steve Jobs once quoted as saying that Java is too heavy weight and isn’t likely to be in its future plans. Therefore, I’d assume that Java ME on the iPhone will most likely never happen.