J2ME Profilers


Once upon a time, smartphones were a rarity. The majority of mobile phones were little more than a keypad, a tiny screen, and a J2ME virtual machine. However, these virtual machines, screens and keypads varied greatly. Everything from screen size to the methods called when putting the device to sleep to the way the soft/menu keys worked couldn't be relied on to be consistent.

This yielded some serious problems when developing apps or games for more than one specific device. I was tasked with writing some profilers for these devices.

The first was a Lifecycle Profiler. This program recoreded what happened when the user performed any number of lifecycle events (start, stop, pause, recieve call/text, close clamshell, etc.)

The second was a Network Profiler which tested how well and quickly each device downloaded/uploaded data.

The third was a Heap Profiler which tested the accuracy of the JVM's memory information.

Each of thses apps then sent their results to a server app which added them to a database of device features, which were then in turn used to help port games to hundreds of different devices.