Martin Heller
Contributing Writer

Review: Appcelerator is a mobile cloud platform in progress

reviews
Oct 1, 20148 mins

Appcelerator Platform 2 combines rich mobile client support with the advantages of Node.js, but lacks pre-built integrations and full sync support

Appcelerator cloud in man's hands
Credit: Thinkstock

Appcelerator Titanium has been a player in the mobile development space for several years, with a JavaScript-based development environment that compiles to native code for iOS, Android, and other targets. With the release of Appcelerator Studio 3.3 and Appcelerator Platform 2.0 in July, the company added a mobile back end as a service (MBaaS) accompanied by about 25 APIs, Node.js support, and online analytics. Also, Appcelerator has published interfaces to its MBaaS that developers can add to apps built with native SDKs, though it hasn’t yet supported native SDKs in its own Studio IDE.

“Studio” is short for any edition of Appcelerator Studio, the company’s enterprise-oriented IDE; Titanium Studio, the company’s free IDE; and Aptana Studio, the free Eclipse plug-in on which the other two products are based. Aptana was one of my favorite open source JavaScript and Rails IDEs in its day, before it was bought by Appcelerator, though my affections have since moved on to more modern IDEs and editors.

Services and APIs

The principal focus of this release of Appcelerator is its MBaaS and analytics. There are more than 25 prebuilt APIs, including most of the usual suspects such as push notifications and pair storage, and extending to users, places, photos, and social integrations. These cloud service APIs are in addition to Appcelerator’s interfaces to native device capabilities such as local storage, media services, geolocation, contacts, and accelerometer support. Furthermore, Appcelerator now includes a layer on top of Node.js, called Node.ACS, for building custom cloud services. (ACS refers to Appcelerator Cloud Services.)

Early in Appcelerator’s development, some of its Android APIs were coerced into looking like their iOS equivalents. Not surprisingly, that didn’t always work well. I’m not sure when these APIs changed, but now the Appcelerator wrappers for Android APIs seem to follow the Android model. That’s good because they actually work reliably; it’s bad because you have to include different modules for Android builds than for iOS builds. Appcelerator still supports BlackBerry, but I have lost interest in BlackBerry development over the last couple of years, as its market share has essentially disappeared.

Dashboard and analytics

Developers can see a quick overview of app installs, sessions, API calls, and crashes in the online Appcelerator dashboard overview page. Other parts of the dashboard allow for cloud management, testing, performance metrics, and analytics.

appcelerator platform overview

Appcelerator Platform’s dashboard overview for the demo Field Service application. The crashes were deliberately coded into the app.

The Cloud panel shows usage, exposes data management, displays API request and push notification logs, lists custom services, and allows for cloud configuration. The testing panel uses SOASTA’s TouchTest as an integrated mobile testing solution. The performance panel allows you to monitor your apps; troubleshoot performance, crashes, and exceptions; view crash trends; integrate with bug tracking systems; and configure your monitoring.

Developers can define and view Appcelerator analytics online and optionally publish selected analytics to the Appcelerator Insights app for the iPad, typically for use by a manager. There are five categories of analytics: real time, users, sessions, events, and event funnels.

Appcelerator Insights allows you (or your manager) to view published analytics on an iPad. The most recent improvement in Insights is the ability to view event funnels. If properly constructed, event funnels can tell you how users are progressing through your app, whether they are getting to the key functionality, and if not, where they are bogging down.

Appcelerator Platform allows you to build custom back-end services using Studio and Node.ACS. Node.ACS combines Node.js and Express with interfaces to Appcelerator Cloud Services and a model-view-controller (MVC) framework. Appcelerator also allows you to run plain Node.js applications on its cloud platform.

The Node.ACS support in Studio requires you to have Node.js installed on your development machine, and it tries to install acs with Node. On my iMac, this failed. I eventually had to run this rather scary command in Terminal:

sudo npm --unsafe-perm -g install acs

Some developers at Appcelerator found that for me, and it worked — but using the unsafe permissions flag to Node’s package manager didn’t exactly make me feel warm and fuzzy. Appcelerator claims this is a known but uncommon Node.js bug; Node.js claims it’s a bad install script. Finger-pointing doesn’t make me feel warm and fuzzy, either, especially finger-pointing at a free, open source software project to which you’re adding commercial software.

Frameworks and API types

Appcelerator has multiple frameworks on the client side and multiple API types for the cloud. At the base level on the client, Appcelerator offers the Titanium SDK, which provides an interface between JavaScript and native services. At a higher level, Appcelerator offers the Alloy Framework, which is based on the MVC architecture and contains built-in support for Backbone.js and Underscore.js. When you create a new client app from Studio, you’ll typically generate one that uses Alloy.

On the cloud side, you can reach the Appcelerator Cloud Services using a REST API, via bindings to the Titanium SDK, via Node.ACS as discussed above, and via native SDK support as discussed below. The REST API will always work, though it’s the least convenient option. You’ll mostly want to use REST calls to reach new services that don’t yet have bindings to the Titanium SDK.

Native SDK support

Appcelerator used to make a big deal about Titanium’s ability to trans-compile JavaScript into native code for iOS and Android, and pooh-poohed any need for Native SDK support. As part of Appcelerator’s transition into having an MBaaS, it now includes Native SDK support for iOS and Android.

On iOS, you’ll have to add the Appcelerator framework code to your Objective-C project, import Appcelerator.h from your code, and call various Objective-C classes starting with APS. On Android, you’ll copy the Appcelerator framework JAR file to your Java project, import the APSServiceManager class, and call various Java classes starting with APS. In both systems, working from the provided examples and instructions to add MBaaS functionality in the native SDK tools is straightforward. However, none of this is included in Appcelerator Studio. Rather, you use Eclipse or Xcode for this editing. In the future, as I understand it, Studio or some other Appcelerator component might support actions to add the appropriate stuff to Java and Objective-C projects.

Data import and offline/online synchronization

Appcelerator can call REST and even SOAP services using HTTPClient and its built-in parsing routines. If you’ve set up a REST wrapper for a database query, you can get the JSON data into your app fairly easily. That wrapper might be implemented on Node.js or on another server, as in the case of a Web service extension to the database server.

According to Appcelerator, from the MBaaS side, the most common scenario is writing REST services on Node.ACS that talk to the customer’s data sources. Depending on the scenario, Appcelerator sometimes discourages customers from accessing their databases directly from a mobile middle tier. (Usually those types of customers immediately agree and recognize their security team would shut down the idea.)

That begs the question of enterprise integrations, however. A more serious MBaaS would already have tested, integrated modules set up to easily map the major databases to a form consumable by its apps, certainly for Oracle, SQL Server, MySQL, and Postgres. I view leaving this as an exercise for the developer as a cop-out, though writing RESTful database wrappers isn’t rocket science, especially on Node.js.

Appcelerator says it has a few enterprise connectors it sells on the MBaaS layer, such as for SAP and Salesforce.com. And one of the advantages of Node is the supply of community-developed modules for many other sources such as MySQL, SQL Server (which works on a Windows server with Node.js), Postgres, and several NoSQL databases.

Similarly, Appcelerator can use a local SQLite database on a device, use pair storage, cache in-memory, and detect when the device is online. However, it has no complete framework in place for handling intermittently connected apps, especially not conflict resolution. According to the company, most of its customers use Alloy models to handle some of these duties.

Synchronization is admittedly a difficult problem, but it’s one area where most mobile developers need help from the vendor, and it’s important in the real world. A more serious MBaaS would at least provide hooks for code that handles data entry conflict resolution, but Appcelerator hasn’t done that yet.

Appcelerator notes that it has a commercial sync server available with a Microsoft Dynamics connector attached, and it will expand this to all supported data sources later this year. At least the company is working on the problem.

Overall, I see Appcelerator as a mobile app development tool company just beginning to pivot into the MBaaS space. Most of the basic pieces are in place, but Appcelerator hasn’t quite finished the hard parts. Keep watching …

Martin Heller

Martin Heller is a contributing writer at InfoWorld. Formerly a web and Windows programming consultant, he developed databases, software, and websites from his office in Andover, Massachusetts, from 1986 to 2010. From 2010 to August of 2012, Martin was vice president of technology and education at Alpha Software. From March 2013 to January 2014, he was chairman of Tubifi, maker of a cloud-based video editor, having previously served as CEO.

Martin is the author or co-author of nearly a dozen PC software packages and half a dozen Web applications. He is also the author of several books on Windows programming. As a consultant, Martin has worked with companies of all sizes to design, develop, improve, and/or debug Windows, web, and database applications, and has performed strategic business consulting for high-tech corporations ranging from tiny to Fortune 100 and from local to multinational.

Martin’s specialties include programming languages C++, Python, C#, JavaScript, and SQL, and databases PostgreSQL, MySQL, Microsoft SQL Server, Oracle Database, Google Cloud Spanner, CockroachDB, MongoDB, Cassandra, and Couchbase. He writes about software development, data management, analytics, AI, and machine learning, contributing technology analyses, explainers, how-to articles, and hands-on reviews of software development tools, data platforms, AI models, machine learning libraries, and much more.

More from this author