Goals

The goal of Vaandroid is to port the Android API to a web application. We use a modified version of Vaadin (A java based server-client web platform), with the core running on an OSGi framework.

Any Android component class (activity, service, content provider, broadcast receiver) should be reusable in both Android and Vaandroid, without modifying any code.

  • I have been writing web apps for years, and always struggling to make my applications dynamic. The bottom line - Mobile device native applications have the best user interface. So why not recreate that experience when a mobile device is on a web page? And why not use the same exact code to do so?

Since HTML5 and CSS3, we believe that a web application can be more dynamic and expressive than a native application.

  • Android applications are much more than just ‘how the user interface looks’. They are defined by how each individual component is designed, fits together, and communicates with other components.

We use Karaf to manage our OSGi runtime.

  • Availability
  • Adaptability
  • Development Speed
  • Community Efforts
  • Tooling
  • Run classes on the server that are not available on Android.
  • Protect code and data by only storing/running on the server.
  • Ensure all clients are using the current version.
  • Strategy
    • The android.jar file supplied with the SDK only contains stub implementations, so we need to inject actual implementations for backend functionality.
    • We can reimplement the classes, mock the classes, or shadow the classes. We use a hybrid of reimplementing and shadowing using the Robolectric projected. Although intended for unit tests, it suits our needs well. Actually, the Robolectric project will not launch an activity from an activity, so that is out for now.
    • We will implement Android classes on an as-needed basis. If classes cannot be used as-is, they will be modified or replaced.
    • Because the Android application will be hosted on a web site, it must support multiple users from multiple locales.
    • The browser must support the FlexLayout (display:flex).
    • Vaadin TouchKit is lame. The Android API blows it away.
    • Android is made to ‘serialize and persist state’ . Perfect for web apps.
    • All platforms are missing client-server leveraging opportunities.