Friday, February 3, 2012

Reflection: Magazine Article

My previous post was a reflection on an essay chosen by Dr. Bowring for us to read and discuss.  This time he let us choose what we wanted to read and review.  He passed out some magazines and asked us to find an article that interested us for this assignment.  I picked up a copy of IEEE Software and found an interesting article right off the bat about software components in cars.  I read it, and then I saw the title of the article right after it and I knew I was not going to be writing this post about cars.  Instead, I chose an article about mobile applications.  Let me explain why.  I'm also taking CSCI 360: Software Architecture and Design where, like this class, we have to do a group project.  The group that I'm in has decided to make a mobile app, and when I saw that article I just had to read it.

The article is "Development Platforms for Mobile Applications: Status and Trends" by Damianos Gavalas and Daphne Economou from the University of the Aegean.  In it, the authors break down and compare the four most popular runtime environments used for "resource-constrained mobile devices"--Java Mobile Edition, .NET Compact Framework, Flash Lite, and Android--by looking at earlier research, technical specifications, white papers, an informal survey of 32 mobile-application developers with hands-on experience using the four platforms reviewed, and even creating their own app to run implementing each runtime environment to showcase the advantages and disadvantages of each one.  I really like that they created an mobile app to test each one.  It shows that they wanted to be able to contribute their own opinions to the article, not just what the other developers had to say.  So let's take a look at each one as they broke it down....

Java Mobile Edition (ME)
Java ME is a subset of the Java platform that contains a certified collection of Java APIs for developing software for resource-constrained devices like cell phones, PDAs, and set-top boxes.  Its features are:
  • It runs on top of the kernel-based virtual machine (KVM), which allows for reasonable, but not complete, access to underlying device's functionality
  • Supports cross-platforms through configurations and profiles, and was designed to be cross-platform.  This is done by having specification and implementation as two separate processes
Pros
  • By targeting individual operating systems, developers using Java ME have access to a large set of well-defined and mature Java Specification Requests (JSRs)
Cons
  • The Java Language motto "write once, run anywhere" doesn't apply here.  Developers must provide slightly different application versions to address variations in JSR sets and implementations across a wide range of device capabilities and choice of profiles, configurations, and APIs.  This often results in something called device fragmentation, where dozens of executables for a given title have to be written.  This increases the operational costs over the product's life cycle, restricts the devices that Java ME apps can reach, and is overall more suitable in apps that target devices with similar capabilities and Java API support


.NET Compact Framework (CF)
This runtime environment was designed for applications on Windows Mobile.  It is a subset of Microsoft's full .NET platform that preloads the Common Language Runtime (CLR) engine in the device's memory to facilitate mobile-application development.  Its features are:
  • .NET CF runtime is analogous to the Java Virtual Machine (JVM).  Instead of writing native code for the underlying device's operating system, .NET developers write managed code, which targets a managed execution environment
  • .NET CF user interface design is based on a rich subset of .NET Windows Forms
Pros
  • Comparable to Java ME with respect to providing a managed runtime environment, rich libraries and components for reuse.  It has advanced user interface components, network connectivity, data management, XML Web services, in addition to familiar APIs from the full .NET framework, such as Windows Forms control.  These features ease the transition for desktop developers to mobile apps.
  • It is "language-agnostic" and simplifies the Common Intermediate Language (CIL) instructions.
  • Demonstrates API-level consistency and compatibility with the full .NET platform.  This has had unforeseen memory footprint costs, but the .NET CF nevertheless represents a fast-paced implementation driven by a powerful vendor
  • Offers satisfactory integration with device-specific functionality.  It doesn't exhibit Java ME's fragmentation problem.  .NET CF targets a limited set of Windows end devices, and the VS.NET development tools include license costs
Cons
  • It restricts the operating system support to Windows platforms, which represent only a small part of today's mobile device products
  • Core components are a subset of the full .NET framework, and it only has about 30% of .NET's classes and functionality.  Some of the classes exist in both .NET and .NET CF, but the .NET CF version doesn't necessarily support all the full version's class members (like properties, methods or events).  Many classes aren't implemented at all, and others are only partially implemented.  Unique .NET CF classes address device-specific and third-party extensions

Adobe Flash Lite
Flash Lite is a "propriety technology" that is popular as a multimedia and game programming platform.  It was created specifically to help vendors to rapidly deploy rich content and interactive interfaces to mobile devices.  Its features are:
  • Stores its contents and GUI description in the vector-based SWF graphics and animation format
  • Implements its application and presentation logic in ActionScript
  • A Number of original equipment manufacturer (OEM) operator and developer adapters, which is increasing rapidly worldwide
  • Flash Lite 1.1 supports Flash 4 and ActionScript 1.0, Flash Lite 2.0 and 3.1 support ActionScript 2.0.  Both Flash Lite 2.0 and 3.1 are based on Flash Player 7 and 9, respectively.
  • All versions support the World Wide Web Consortium (W3C) Tiny standard
Pros
  • Is  a reasonable choice for graphics-intensive phone and PDA applications
  • Rapid development is a primary benefit.  Developers skilled in Flash for desktop applications can easily switch to Flash Lite for mobile applications.  Its easy to learn and easy to migrate Flash applications, and it includes a rich set of designer/developer tools.  It offers rich media support (images, sound, video, animation), a relatively broad runtime installation base, and small deployment files based on vector graphics
Cons
  • Isn't suitable for developing full-fledged stand-alone applications, mainly because it lacks the powerful mobile-oriented APIs of Java ME
  • Exhibits poor graphics performance, partly because of the complex processing required for vector graphics
  • Ships with an extensive toolset, but the toolset requires a license fee

Android
Android, which currently has the largest developer and deployment bases, was launched in 2007 by Google to advance open standards for mobile devices.  It is an Apache free-software platform with an open source license for mobile devices based on Linux.  It features:
  • Written in Java and compiled in Dalvik executable (DEX) format.  Each application executes its own process, with its own instance of the Dalvik virtual machine (DEX files are more compact and efficient than class files)
  • Full access for developers to all the frameworks and APIs that the core applications use and to Google-developed software libraries
  • Android software development kit (SDK) supports authoring applications with rich functionality
Pros
  • Supports a relatively large subset of the Java Standard Edition (SE) 5.0 library.  This implies reduced migration cost from Java desktop applications
  • Supports several third-party libraries
  • Similarly to Java ME, application development is powered by popular Java integrated development environments (IDEs)
  • Provides inherent support for modular service-oriented applications and interapplication communication
Cons
  • New platform releases, while great for introducing new user and developer features, raise fragmentation concerns.  The platform's openness in the targeted device stacks aggravates the fragmentation problem
So after implementing the app on each platform, the authors found that the .NET CF and Android applications were easier to develop because of their improved compatibility with the full .NET and Java SE frameworks.

No comments:

Post a Comment