Login

RIM Releases New BlackBerry Java SDK

In this news recap, we take a peek at two news stories affecting Java: the release of the BlackBerry Java SDK v7.0 and Google’s performance testing of C++, Java, Scala, and Go.

Research in Motion (RIM) recently released the beta version of BlackBerry Java SDK v7.0 for public consumption. The release follows the company’s announcement of BlackBerry 7 at last month’s BlackBerry World 2011 Conference in Orlando. As expected, the beta version comes packed with plenty of new features for developers looking to fine tune their applications.

As the news was leaked of upcoming RIM releases in the form of the BlackBerry Bold 9900 and the Bold 9930, the timing of Java SDK v7.0 beta could not be better. Developers eager to create apps for the two new mobile platforms will be able to do so, as the new version of the SDK comes equipped with testing simulators for both phones. In addition to the testing capabilities of the SDK, there’s more good news for app developers with the Bold 9900 and 9930 on their mind, as the BlackBerry App World is accepting new application submissions for both smartphones.

Beyond the features centering on development for the Bold 9900 and 9930, BlackBerry Java SDK v7.0 has much more to offer its users when it comes to new features and upgrades. As far as user interface enhancements are concerned, the Send Menu API can now be used to add a Send menu item to your app’s menu, which allows users to content from the application they are using to another person using a different application on a BlackBerry device. Other user interface upgrades include certain command framework enhancements, the ability to layer UI elements and scan images for barcode data, 32-bit color bitmap creation, and more.

The area of application integration has received plenty of attention with the beta release as well, with magnetometer APIs being just one of the highlights. The Compass application has been added to give users the ability to specify destinations through Magnetometer APIs and BlackBerry Maps. The Unified Search API has been improved, and search results can now be categorized. Media file identification has also been added.

Utilities enhancements include the addition of the Multi Service Platform API, which supports BlackBerry Enterprise Server’s BlackBerry Balance feature. Enterprise Server admins have been given the power to control the access to work data and more, thanks to capabilities that allow them to set IT policy rules that distinguish between work and personal data.

BlackBerry Java SDK v7.0 beta also offers plenty of improvements regarding location-based services. The Dynamic Mappable framework is one dynamic mapping enhancement that allows users to create locations on a map and specify if they need to be updated. Styles for mappable items can be defined, and custom shape creation has been integrated too. Departure time estimation, MapField and MapAction enhancements, and the compass overlay integration are also worth mentioning.

Last, but not least, are the beta version’s Near field communication (NFC) features that help with the creation of mobile payment and e-commerce solutions. Users can read and write data on smart tags, emulate them, access a Secure Element on a BlackBerry device or SIM card, connect with smart accessories such as a smart dock or wireless headset, and more.

Google’s Robert Hundt just released a research paper titled “Loop Recognition in C++/Java/Go/Scala,” where he compared the performance of the four programming languages. The release took place at a recent Silicon Valley conference, and it had some rather interesting results.

Out of the four languages, C++ is the winner when it comes to speed. While speed is impressive, the paper noted some limitations regarding C++. Most notably, it requires extensive tuning that surpasses the expertise of the average programmer.

On the flip side of C++ is Google’s relatively new programming language, Go. Google released the language on an experimental basis over a year ago with the hopes of increasing programmer productivity through clean and concise code. Perhaps Go’s young nature is its downfall, as it came in last on most of the performance tests. Hundt discussed the relative youth of Go, as well as possible reasons for what could be deemed as lackluster performance in his paper. “Go offers interesting language features, which also allow for a concise and standardized notation. [But] the compilers for this language are still immature, which reﬂects in both performance and binary sizes." One area where Go did not come in last was in compile time. In fact, Go was the fastest of the four languages in compiling. The benchmark did not measure concurrency, however, which both Go and Scala offer.

Those interested in Scala’s results would be pleased to know that it finished ahead of Java in terms of runtime. It also offered more concise code and a smaller memory footprint. With that being said, Scala still suffers some of Java’s deficiencies. Hundt discussed the two languages further: “"Scala['s] concise notation and powerful language features allowed for the best optimization of code complexity. The Java version was probably the simplest to implement, but the hardest to analyze for performance. Speciﬁcally the effects around garbage collection were complicated and very hard to tune. Since Scala runs on the JVM, it has the same issues."

Google did its best to run a fair comparison through its benchmarks. It first encoded a benchmark that corresponded to each language’s container classes, looping constructs, and memory/object allocation schemes. Google did this sans the use of any performance maximizing tools. The reasoning behind this format was explained in the paper: “This approach allows an almost fair comparison of language features, code complexity, compilers and compile time, binary sizes, run-times, and memory footprint.”

Once the results were obtained and published, Google engineers then optimized the benchmark for each language and completed another round of testing. Hundt said, “While this effort is an anecdotal comparison only, the benchmark, and the subsequent tuning efforts, are indicative of typical performance pain points in the respective languages.” C++ offered the most impressive runtime in the optimization stage, but optimizing its code was a complex task.

Martin Odersky, Scala’s creator, offered his approval of the Google testing format: “I particularly like this idea to build a single algorithm from a non-expert point of view, compare the data, and … then challenge people to optimize. In a sense, it’s fair."