• Goals and concepts

    To create a framework that works for mobile developers on multiple platforms, we had to re-think how mobile development is carried out.



    Learn more

  • Features

    MOBBL supports many features out of the box that enterprise developers need from apps. Check out the supported features.



    Learn more

  • iOS

    Start with an iOS app and port it to other platforms later. Check out some iPhone and iPad apps built with MOBBL, look at some code, set up your xcode environment


    Get Started

  • Android

    Check out some Android app, look at some code. MOBBL lets you create Android apps in java or using the NDK.



    Get Started

  • Mobile web

    Broad support for all devices is best delivered through mobile web, optionally enriched with HTML5. MOBBL for mobile web is based on Java and JSF.


    Get Started

  • HTML5 / hybrid

    Packaging a javascript/html/css app? The javascript version of MOBBL supports that. Port your native app to HTML5 to support less popular platforms.


    Get Started



Goals
Don't re-invent the wheel


Some projects start with iOS and are ported to Android, some require simultaneous development on multiple platforms. Mobile operating systems frequently change with impact on existing apps. This led us to set the following goals for MOBBL:

  1. To allow development on a mobile platform to be predictably ported to another platform.
  2. To allow developers complete freedom to use native API's. Without jumping through hoops.
  3. To structure code so it is easily maintainable in the future.
  4. To provide services for common mobile development tasks. Caching, networking, separation of logic and views etc.

MOBBL achieves these goals for data centric apps. Apps that app-developers make for organisations. These types of apps are typically offered to consumers free as part of a greater services portfolio. Or the apps are offered to employees to increase productivity.

goals


goals

Concepts
Platform agnostic MVC architecture


Most developers will be familiar with a Model-View-Controller architecture. However the implementation details on different platforms vary greatly. MOBBL has a true Model-View-Controller architecture that is identical on all supported platforms.


The starting point of MOBBL is the model layer. Data is always technology agnostic. All data can and should be represented using something called a document. A document consists of elements, which have attributes. A document is very much like an XML document, but without the fluff. To ensure the implementations work identically over all platforms MOBBL provides its own implementation of documents. Furthermore MOBBL provides services to define, parse, serialize, create, validate, store and manipulate documents.

The controller layer is about sequencing screens and logic. Outcomes are the imaginary lines you draw from a button to the next screen. Actions are encapsulated bits of logic, for example to validate or process user input before navigation to the next screen. All apps have logic, all apps have screens, all apps have navigation. MOBBL provides background threading for long-running processes and services for handling user-sessions for back-ends that require a login.

The view layer is what the end-user sees. Data is presented, buttons are pressed. This is where developers often want to add platform specific things. Examples on iOS could be animations and transitions. Examples on Android could be integration with the search box. In MOBBL a screen is called a page, which provides immediate access to a document. MOBBL provides basic layout services but we expect you will want to tweak this or replace it with your own. Furthermore MOBBL provices formatting services for fields.

The services layer provides useful services for common developer tasks. It also allows developers to override any default behaviour and replace it with their own implementation.



Cross platform re-use statistics
From real projects

Re-use of code between different platforms is different for each layer.

Typically all work in the model and services layers can be copied without change. Roughly 70% of the controller layer can be re-used without change. Generally less than 30% of the view layer can be re-used directly.


Model

For example if an iPhone app is ported to Android, the datamodel and network services can usually be entirely re-used. If your app displays a product catalog, there is nothing intrinsically iOS or Android about the product catalog. On any platform, the products will be ordered in the same way and have the same attributes. MOBBL enables developers to keep data separate from platform details, enabling complete re-use.

Controller

The Controller layer is about navigation and sequencing of logic and screens. If your iPhone app has 10 screens, your Android app will probably also have 10 screens. The navigation will probably be similar and the logic will probably be identical. The differences between platforms are in hardware buttons, native tabbars and the like.

View

If you are developing an enterprise app with no demands on the look and feel, MOBBL will allow 70-80% reuse of the views. However our experience is that the look and feel is very important for most apps. The view layer is often quite different between platforms. Typically iPhone apps present data in tables with re-usable rows which are fetched dynamically, allowing fluid scrolling of thousands of rows. Whereas Android apps create the entire view before rendering it. The layout and styling should probably be tweaked for each platforms. For example iOS apps tend to have lots of animations and transitions. Whereas Android app tend to have a layout which is suited to scaling on different screen sizes. MOBBL provides tools to abstract the layout away from platform details, but do not expect more than 30% reuse in the view layer.

goals


Share with your friends: