Technical Info

Spark is Built on Open Standards

No obscure languages or proprietary technologies


Content Handlers

Spark uses the latest Android 6.0 (Marshmallow) release. It also implements Google's Material Design visual language for a clean and simple look and feel.


Content Handlers

Java is used in Android and Servlets. Developers do not need to be experts in either since Spark abstracts those technologies allowing the developer to just use basic Java or the many 3rd party libraries available to Java.


Content Schemas

XML is the industry standard for encoding information. Spark uses XML for configuration files and to describe business model content.


Network Messages

JSON is the industry standard for encoding data transmitted over the Internet. Spark uses JSON to send data between the mobile device and a Spark server.

Layered Architecture

Loosely Coupled Layers

✓ Run business logic at the server and/or the mobile device
✓ Network protocol can be HTTP and SSL
✓ Using content handlers on server tier allows a "thin" app

Process Flows

Network Interaction

✓ Obtain XML content schemas from a web server and/or the mobile device
✓ Application server can be any servlet container (Tomcat, Websphere, etc.)
✓ Automatic conversion between Java and JSON for network messages
✓ Off-network caching of data and business processes

Why not just use HTML5?

Good for web, not as good as native apps

Some apps are just HTML web apps "wrapped" with a stub native app. Be careful, there are vendors that say their products create native apps when actually they are just wrapped web apps.

  • We’ve tried in the past to just build web apps that we could wrap in thin native wrappers, but it doesn’t work. […] Anytime somebody tries to reimplement a native widget using HTML, CSS and JavaScript it always feels like shit.

    — Tom Occhino... Facebook

• Android is open source and backed by Google and the Open Handset Alliance

• Android is built with Java that many enterprise developers know and use

• Over 80% of mobile devices run Android

• Numerous hardware vendors offer inexpensive Android tablets

• Android allows easier corporate installations and management outside of app stores

• Spark is designed for enterprise applications, not for consumer apps that require cross-platform

• Security risks are reduced using standard company devices assigned to employees

• Device support, training, and purchasing benefit from using a standard platform OS and hardware

• BYOD is not practical for everyone particularly for tablet applications

• Cross-platform UI fidelity with HTML5 is very difficult

• HTML5 apps generally suffer from poor performance

• Facebook and LinkedIn converted their problematic HTML5 apps to native

• Offline functionality is limited with HTML5

• Users expect native platform look-and-feel

• Security is higher with sandboxed native apps

You could… but maybe it doesn’t have all the features you need, or worse have more features than you need that interfere with usability. How flexible is it to customize screen layouts? Is it easy to inject your unique business logic? Can you easily combine content and services from different systems?

Would you rather have a canned app or one customized specifically for YOUR needs… at a lower cost?

Spark's Optional Server Tier

Mobile middleware made easy

Having an application server tier can be critically important for enterprise apps. Spark has a fully integrated server option that allows simple implementation of a mobile middleware architecture for businesses.

Server Features and Benefits

Using proven enterprise technologies

"Thin" mobile client option
Store XML content schemas on server and run business logic and data access via server content handlers.

Benefit: App runtime logic and presentation can dynamically be changed without requiring app re-installs.

Java servlets
Use any servlet container such as Apache Geronimo, Tomcat, JBoss, Jetty, WebSphere, GlassFish, etc.

Benefit: Flexibility to use any commercial or open source application server including Google App Engine.

Java programming language
Server content handlers are written in simple Java code.

Benefit: Java is the most popular server language in enterprises and many backend developers know how to code in it.

Single server endpoint
Spark uses only one server endpoint for requests from mobile clients.

Benefit: Promotes better network security through the use of a single controlled access point going through company firewall.

Secure network messages
Mobile requests can use HTTPS and token based messages.

Benefit: Allows increased security through encryption and access tokens in network messages.

User authentication
Authentication of login credentials can be done via any corporate source such as Active Directory or LDAP.

Benefit: Flexibility in how users are authenticated and promotes central repository of credentials.

Dynamic security roles
Security on business processes and data elements can be dynamically during user login.

Benefit: Allows very fine-grained control of security rules for a mobile app.

Server load balance
Multiple application servers can be used to provide load balance on mobile requests.

Benefit: Provides greater performance, failover, and scalability of a corporate mobile solution.

Compare Spark with others

Be sure to examine app code

Other app frameworks just switch the Android API for another programming language (like Javascript or Ruby). Developers only have access to a least common set of platform APIs and miss out on using many native Android features.

Spark let's you program with both Spark and Android APIs.


Development Comparison

Unlike Spark, other toolkits don't provide a prebuilt app architecture to eliminate the complex effort needed to design an app from the ground up.

Product Comparison

It can be confusing buying a development tool. Why so many extra options? And am I really improving developer productivity? Spark can simplify efforts at a lower cost for a fully loaded development platform.


For even more information on developing Spark apps, check out our developer docs.