BlackBerry Enterprise Application Middleware (BEAM)
So far, everything RIM announced at the conference was consumer focused. Granted you can use WebWorks to create enterprise applications, but most development done today on the BlackBerry platform is for consumer applications. Even the sample WebWorks applications they showed were consumer applications. So, what about the enterprise?
To make it easier for enterprises to create applications for BlackBerry devices, RIM announced the BlackBerry Enterprise Application Middleware (BEAM) platform. It really wasn't clear from the announcement what RIM was announcing here, but I figured out how it works and thought I'd share it with you.
If you think about how you would build a mobile application that communicates with back-end data sources, your application would be responsible for connecting to the server to request the data then processing the results. Because the application is running on a mobile device that could have intermittent network connectivity, your application would need to build in the necessary logic to detect network availability (usually through a listener interface) and queue requests if needed. As a special bonus, it would be good if the back-end server could queue up responses as well, detecting that the requesting device is not available and delivering results to the device once the device reappears. Rather than forcing your application to periodically query the server for updates, you could also build your back-end system to leverage the BlackBerry platform's push capabilities to push new data when it becomes available rather than making the device application come get it. How does BEAM fit in here? Well, BEAM essentially does a lot of that stuff for you automatically. The purpose of the platform is to isolate the developer from dealing with many of the issues I just described.
BEAM is a middleware gateway that sits inside of an organization's firewall and processes requests made by a back-end application then delivers data to a device application (as shown in Figure 3). An application uses a published interface (in the form of RESTful web services) to deliver data to the BEAM server which in turn delivers it over the air to the mobile application in the form of an XML document. When the device application returns data to the server, an XML document containing the data is sent to the BEAM server which then calls a callback function to return the data to the calling program. In this model, application data is pushed to devices (whether they're connected to a BES or using the BlackBerry Internet Service (BIS)) through the same mechanism. All of the work a developer would need to do to setup and manage the push process is all provided by the platform.
Client-side capabilities are provided by a suite of libraries a developer can use in one of two ways. At the simplest level, the client-side libraries can be used as a simple runtime container that renders the enterprise data in what's essentially a CRUD (create, read, update delete) application. By leveraging this approach, the developer has little control over the functionality provided by the application, but at the same time gets a very simple and quick to market solution to use for the client application. If the application needs more than the simple runtime container can provide, the developer can hand craft an application that uses the libraries to provide connectivity to the BEAM server and beyond then use the standard BlackBerry Java APIs to provide whatever UI and additional functionality is needed in the application.
Since most mobile developers develop for multiple mobile device platforms and an Apple Macintosh computer is required to develop for an iPhone or iPad, mobile developers pretty much need to have a Macintosh. A limiting factor for BlackBerry developers has been that the BlackBerry development tools will only run in Windows (32-bit windows even for some of the tools or simulators) and therefore you would either need two computers (one running Windows and another running Mac OS) or run some sort of Windows virtualization running on a Macintosh.
At last year's conference, RIM announced that it would be working to enable some of its tools to run on a Macintosh and this year they delivered. During his presentation this year, Chris Smith (a senior director in RIM's development organization) casually pointed out that the demo was being performed on a Mac Book. RIM is delivering on the promise to allow the BlackBerry development tools to run on a Macintosh. The tools are currently available as a tech preview, so you can download them here and play around with them as RIM puts on the finishing touches. It's implemented as an Eclipse plug-in, just like the same tools on Windows, although the tech preview does not integrate with any BlackBerry device simulators at this time. To test/debug Java applications on a Macintosh, you'll need to cable a physical device to the IDE and use it that way. Even though the BlackBerry is a Java device, the BlackBerry simulators are currently delivered as Windows executables. It's not clear whether RIM will make the device simulators available on the Macintosh in a future release of the tools or whether you'll be stuck using physical hardware for your testing. I imagine they will port the simulators over, but likely only future devices will be converted to run as Java applications since porting all of them may not be worth the effort.
RIM really didn't say when they expected the final product to be released. One of the things I noticed when I worked at RIM was that just getting a product passed through legal sometimes took a year or more to complete. While other vendors release new tools with every new version of a product, RIM developers have to wait at least an additional 6 months or more before production ready versions of RIM's tools become available. Once the production version is finished, it will likely be a while before you'll actually see them in the wild.
BlackBerry UI Designer
At last year's conference, RIM demonstrated a preview version of the BlackBerry UI Designer. Implemented as an Eclipse plug-in, the UI Designer allows BlackBerry developers to paint their application user interfaces just like they can on Android and the iPhone. The UI Designer was released as a tech preview and developers around the world have been waiting for the production release. I fully expected the product to be released at this year's conference, but apparently there's a problem with the product. It's done, the folks at RIM tell me, but Google acquired the company they worked with to create the tools and now everyone is waiting for legal issues to be resolved before they release the product. Maybe RIM will have them all worked out by next year's conference.