Shay Going Mobile - Home
History Lesson for Mobile Developers
Shay Shmeltzer
AUG 30, 2013 14:05 PM
A+ A A-

History Lesson for Mobile Developers

“Only the foolish learn from experience — the wise learn from the experience of others”

This old proverb holds true for the world of software development too. When you observe our industry, you can certainly recognize patterns that repeat themselves every several years as new technologies and architectures emerge.

With mobile development exploding in the enterprise space, we wonder if developers who rush into new mobile development projects actually are taking time to learn from past experience or if they are just repeating past mistakes.

Here are three questions facing mobile developers and the history lesson they might want to learn about solving them.

How to tackle multi-platform development?

The mobile operating system market is fragmented with two current clear leaders – iOS and Android. Some IT shops go ahead and use the native SDK/language/environment and effectively double their development efforts trying to build a platform specific application while not missing half of the market. However, experience has shown us that there is a better approach – of finding a solution that will allow you to develop once and run on many.

In the world of enterprise development this was a common issue back in the early 90s. There wasn’t a clear winner in the server OS world (there still isn’t one). The solution came in the shape of the Java language and architecture, allowing enterprises to build their application or product once and run on windows, Linux, Unix, Macs and other platforms. Java’s unique portable solution lead to its current dominance as the platform for enterprise applications.

In today’s mobile world this cross platform solution is available through the Hybrid approach to mobile development. Hybrid mobile applications rely on a container in which the applications run, the container itself runs as a native application on the various operating systems and enables integration with OS features such as GPS, camera and other phone features. This approach is very similar to the concept and approach that the JVM provides in the world of server based applications.

A common fear that developers have about using a hybrid approach has to do with performance impact and the fear of having a slow application. Again a common worry we ’ve seen in the early days of Java. While it is true that there is a slight overhead with the hybrid/container approach, in most cases this is negligible difference when comparing application performance. Just as JVM performance improved over time to match native code, so do hybrid containers. Today, unless you are building a real-time or gaming application, it is likely that hybrid approach will meet your performance needs – especially so for enterprise mobile application.

How does one structure the application?

Many of the mobile hybrid solutions in the market today rely on developers writing HTML5 code for UI logic and mixing it with JavaScript code that responds to UI events and also takes care of fetching server data. And all this code is in a single source file!

For anyone familiar with the history of Web application development, this is a throwback to the days of CGI/Servlets coding where UI and logic were mixed resulting in the dreadful “spaghetti code” problem. The code became very hard to maintain, fix and modify. A common problem when there is no clear separation of layers. The solution in the world of web development was the move the Model-View-Controller (MVC) design pattern. MVC was adopted as the best practice to solve the problems with maintaining and changing spaghetti code. Having a clear separation between the UI layer code, the code that handles UI events and the code that implements data access and business services resulted in applications that were much easier to maintain, and in the ability to change layers independent of one another. MVC today is the leading architecture in any modern Web framework.

Some of the smarter approaches to mobile hybrid development today, such as Oracle ADF Mobile, bring the MVC approach to the world of mobile development as well. For example, Oracle ADF mobile allows developers to define their UI with components in one file, define their business logic and data access in separate Java classes, and then tie the two together with a rich controller layer. All of the layers run on the device – and the application provides higher maintainability and reusability capabilities.

How does one create portable dynamic mobile UI?

Many mobile developers rely on coding HTML5 to achieve their cross device UI development. However they soon learn that achieving richer behavior for their UI also involve writing JavaScript and CSS, and that making sure their code runs the same on the HTML5 rendering engines of multiple mobile platforms is not trivial.

This is a situation that many developers faced in the world of Web development years ago. When developers started building richer web UI and incorporating JavaScript into their code they soon realized that the code didn’t work the same on Internet Explorer and Firefox. For many, this introduced hours of debugging and writing workarounds for specific browser issues.

The solution in the world of Web development was to adopt a component library for UI creation. Third party component libraries provided an abstraction from the low level HTML coding by providing components that guaranteed correct rendering across browsers. In the world of enterprise Java development that was one of the key reasons for the rise of the JSF standard. With JSF developers were free to create UIs using canned components without worrying about cross browser portability. The component manufacturers took care of the hard parts of portable UI coding.

In the world of mobile you can also find such component libraries that will simplify UI development to a great extent. For example Oracle ADF Mobile comes with over 50 components that range from the simple button, text item and link to more advanced charts, maps and gauges. Using those components to layout their pages allow developers to create richer user interfaces faster, and the UI is guaranteed to work across platforms.


The new mobile world seems to be facing many challenges that other sectors of the software development already faced and resolved in the past. It’s probably best if we skip the “learning through experience” stage and jump directly to what has proven to be a solid working solution to common problems.

[%= name %]
[%= createDate %]
[%= comment %]
Share this:
Please login to enter a comment:

Computing Now Blogs
Business Intelligence
by Keith Peterson
Cloud Computing
A Cloud Blog: by Irena Bojanova
The Clear Cloud: by STC Cloud Computing
Computing Careers: by Lori Cameron
Display Technologies
Enterprise Solutions
Enterprise Thinking: by Josh Greenbaum
Healthcare Technologies
The Doctor Is In: Dr. Keith W. Vrbicky
Heterogeneous Systems
Hot Topics
NealNotes: by Neal Leavitt
Industry Trends
The Robotics Report: by Jeff Debrosse
Internet Of Things
Sensing IoT: by Irena Bojanova