Tuesday, May 31, 2011

Mobile Development Platforms: Windows Phone 7

This blog has a new home:
http://selectioneffect.info/blog/mobile/mobile-development-platforms-windows-phone-7/

Windows Phone 7 is the new mobile operating system developed by Microsoft. It completely succeeds the Windows Mobile platform, which most recently included Windows Mobile 6.5 and before that Windows CE, on which Windows Mobile was based.


The main difference that comes with Windows Phone 7 is one of design philosophy: Windows Phone 7 is aimed squarely at the consumer market, rather than the business or corporate sector.


Social networking, personal messaging which includes emails, multimedia and games are the main focus for Windows Phone 7.


Breaking with the usual Microsoft tradition, Windows Phone 7 does not run applications that were developed for the Windows Mobile platform. In other words: there is no backwards compatibility. This is great! The applications that are now obsolete will soon all have Windows Phone 7 replacements. Is is also of immense value to have a new design and structure that is free from the cruft associated with keeping backwards compatibility.


Good job, Microsoft!


The first phones were available from February 2010 in Barcelona, with the rest of the world following in staggered rollouts shortly thereafter. At the moment Windows Phone 7 supports five languages: English, French, Spanish, Italian and German.


There is a Windows Phone Marketplace that sells to different geographic regions. At the time of this writing there are 17 supported countries, including Australia, UK, USA, France and Germany, among others.


Nokia will be a primary partner for Microsoft, rolling out their smart phones with Windows Phone 7 as the operating system. This is an important partnership, because Nokia is a giant in the mobile world, and this assures us healthy competition between Windows Phone 7, Android and iOS devices.


Programming the Windows 7 Phone environment is simplicity itself. Existing XNA and Silverlight specific skills are all that are required to create third party games or applications that can run on Windows Phone 7 devices. There is a Windows Phone 7 specific edition of Silverlight that the programmer will code against, using any Visual Studio 2010 or later edition, including Visual Studio 2010 Express for Windows Phone. The Windows Phone Developer Tools are available free from Microsoft, and this includes an emulator, XNA game studio and Expression Blend 4 for Windows Phone.


The Windows Phone 7 device requirements are completely on par with current consumer expectations:

  • Capacitive touch screen with WVGA (480x800) resolution
  • Dedicated GPU that can render DirectX9
  • 256MB of RAM and 8GB of Flash memory
  • Accelerometer, proximity sensor, ambient light sensor and GPS
  • and others



The programming language of choice for Windows Phone 7 is C#. There is a package called Windows Phone Developer Tools RTW, which allows programming devices using VB.


There is a genuine interest in Windows Phone 7 from consumers, developers, and businesses.


Because of market forces, and the split market share between the “big three” of Android, iOS and Windows Phone 7, there has never been a more interesting time in mobile development.


Other articles in this series:

Thursday, May 26, 2011

Mobile Development Platforms: BlackBerry

This blog has a new home:
http://selectioneffect.info/blog/mobile/mobile-development-platforms-blackberry/

The year was 2002, and the device was the RIM 850. The first commercially successful smart phone was a massive success. Research In Motion, or RIM, was the businessman’s friend throughout the first decade of the first millennium. They provided both a user-friendly, ergonomically sound and powerful device, as well as a network backend to support email, storage and push data transfers. In today’s terms, an equivalent could be the netbook and the cloud.

The BlackBerry could usefully store contact information and do push and pull emails. Email was the real selling point that underscored the early success by BlackBerry phones. It was simply light years ahead of any handheld device of the time, and for a long time since its inception.

BlackBerry is actually a bit older than 2002. They had a device simply called the 850, which was a two-way pager device. The transition to full email capabilities was a natural step in the march of progress and, even today, BlackBerry is not lagging behind the competition. They also have an entrenched niche in the public mind, and a well-established market share and consumer base.

All BlackBerry devices support Java MIDP 1.0 and WAP 1.2. Recent phones have dropped support for Adobe Flash, but older phones did support it. A subset of MIDP 2.0 is supported as of BlackBerry OS 5.0, which was released in October 2009.

Because of Java support, there is a plethora of games and applications available for the BlackBerry.

Besides standard Java and the J2ME  standard, BlackBerry also supports the proprietary BlackBerry API, which developers can use to access RIM specific features.

Java and J2ME is still the most valuable skill for mobile development. Even Android programming is through Java, and all programming skills from J2SE, J2ME and J2EE are directly transferable to Android and BlackBerry development.

BlackBerry development is completely cross-platform, and developers have access to simulators and excellent programmer’s documentation http://us.BlackBerry.com/developers/resources/

Access to the BlackBerry Developer Zone Member is free.

BlackBerry devices include smart phones and tablets.


The BlackBerry App World is the official store for BlackBerry applications. Apps have to be digitally signed to be listed there.

Other articles in this series:

    Monday, May 23, 2011

    Mobile Development Platforms: iOS

    This blog has a new home:
    http://selectioneffect.info/blog/mobile/mobile-development-platforms-ios/

    Apple as a company was arguably saved by the release of the iPod. This device became the de facto standard by which all other music players were measured. All previous music players and CD players became instantly obsolete. Even companies like Sony and Microsoft, try as they may, could not shake loose the entrenchment of the iPod device.

    Following on the success of this, Apple then released the iPhone. It became a natural next step to buy an iPhone if you already had an iPod, and if you didn't, then the mindshare of the world was already tuned into iAnything, and Apple was seen as the producer of new, fresh and exciting consumer technology.

    iPhone sales took off like a rocket, and rightly so. The iPhone is a very powerful, network-capable, compact computer with great graphics. And it came with access to an application store that the user could purchase games or business apps with incredible ease.

    Some software developers grew rich as individuals because they could get in on the action early. Suddenly Apple development was a highly demanded and highly valuable skill. Today there are companies based on the business model that iPhone applications will sell and make money, so that’s all they do.

    Mobile applications are sold on a low price, high volume basis.

    Then came the iPad, which is the first truly consumer-friendly, actually usable, and actually available tablet format computer. And you can run the same applications on the iPad as the iPhone. Of course, even the iPod has been upgraded with new versions, and some editions of the iPod can also run iOS applications.

    Apple tightly controls Apple’s application marketplace, unlike that of the Android platform. This is a natural consequence of the basic philosophical difference between the two platforms. iOS is a sort of monolithic platform in that the implementation details of both the hardware and the software is closed. The public information that application developers can use is the only available information on the topic of iOS as a platform. Other than the API and SDK documentation, only application guidelines are available. An Apple is quite strict when it comes to evaluating applications that are submitted for approval to the Apple AppStore. No application is listed there that do not pass certain stringent checks performed by Apple themselves. This ostensibly improves the level of security and reliability of these applications, and the user is assured of a safe, happy experience when using any certified application. Whether this goal is actually achieved by Apple or not is highly debatable. Market forces will naturally cause good, safe applications to percolate to the top.

    There are two major cons to iPhone development though: iTunes and MacOS.

    You have to do iPhone development using the iOS SDK, and that can only be installed on MacOS. MacOS only runs on Apple hardware. So developing iOS applications involve purchasing an Apple computer. The SDK is free to download, but can only be used if the developer enrols in the iPhone Developer Program, which is USD$ 99 per year at the time of this writing. Enrolling in this program gives access to digital keys that are required to sign applications, before they can be submitted to the Apple App Store.

    iTunes is an extremely misnamed application, that is used to purchase music from the iTunes store. It is also used to backup information and settings stored on the phone, so sync phone contents across machines, and to download and install apps on the iPhone. Unfortunately, cross-platform issues abound in iTunes, and it is only usable across multiple machines when all of the machines are Macs.

    Aside from this, if you like living your entire life in the Apple ecosystem, then iPhones are great.

    Android and Blackberry have a greater combined market share than iPhones, and Android devices will probably outnumber iOS based devices in the next six months.
    The iOS SDK is very thorough, but there are undocumented problems that the developer has to be aware of and counter with workarounds.

    A final titbit:  it is estimated that the iPad 2 will have a Linpack benchmark of between 1.5 and 1.65 gigaflops. That's more than a Cray 2 in 1985. In 1993, 2.1 gigaflops would have been enough for a spot on the top 100 supercomputers in the world.


    Other articles in this series:

      Tuesday, May 17, 2011

      Mobile Development Platforms: J2ME and Android

      This blog has a new home:
      http://selectioneffect.info/blog/mobile/mobile-development-platforms-j2me-and-android/

      The core of mobile application development has been J2ME for many years. Nokia was probably the most stable platform, especially with their Symbian platform, in a certain sense, was the forerunner of today’s Android ecosystem.

      Blackberry was the next revolution, with RIM providing a very capable back-end system for their corporate customers. Blackberry phones were the first true smart phones, and were the first to offer good value for money to the businessperson. Today they also cater for any consumer, and they are actually much more popular and capable than is the perception.

      Mobile application development is the umbrella turn that covers phones, smart phones and tablets.

      J2ME/WAP
      This is where it all started. I’ve written many MIDP 2.0 profile applications, and WAP applications for the early days of mobile programming. Most phones still ship with a Java VM, and all of the games that the network operator installs by default on most devices are Java apps.

      I could not imagine not having Bejeweled on my old LG phone, which is a smartphone, but aging a bit now.

      J2ME is not really on it’s way out any time soon, but of course these days there are better platforms available to the discerning mobile developer.

      Android
      Android has the biggest market share of all the mobile ecosystems, and they are also the most accessible. Google has created a specification for the hardware and software required to run every version of the Android operating system, which ensures that an application written for Android 2.1 will run on any device that supports that version of the OS. Conversely, if the hardware can support a specific Android version, then the user can select an application that can make use of this by using the OS version as the selection criteria. Most devices can also support a higher version of Android than they were shipped with.

      The user can currently choose between Android Marketplace and Amazon App Store to get one of hundreds of thousands of business or entertainment apps.

      The development platform is very rich: all skills from J2ME or even J2SE are directly transferable to Android. The main development language for the platform is Java, with some native capabilities in C/C++ also possible.

      The documentation and examples for the Android platform is far more detailed and useful than any API I’ve ever seen.

      The whole OS is open source, and you can research anything down to any level, both in the hardware and software, to solve any niggling issue.

      Support for the platform is provides as community websites, or on Google’s Android Developer web site: http://developer.android.com/index.html

      The Android SDK is available to download free of charge, and can run as an emulator without needing a hardware device. Eclipse + Android SDK = Really Easy Development

      While the Android tablet and phone devices used to have differing Android OS editions, the “Android Ice Cream Sandwich” release, which is the codename for Android OS 4, will unify both smartphone and tablet devices.

      Other articles in this series: