Libraries - Platform Libraries

For all target platforms, Bedrock supplies an equivalent of the common JSRs a J2ME developer would expect to be able to use. This way, code can be written with standard mobile Java expectations in mind, and even if cross-compiled and run in a non-Java language (e.g. C++) the referenced classes will still be present, thus enabling the cross-compiled code to link, compile and run as expected.

These JSRs include:

  • CLDC 1.1 (JSR 139) including
    • Synchronization
    • Weak References
    • Threads (via the native threading model for each platform eg. pthreads, SDL_Threads)
    • Exceptions (for compatible platforms)
    • Optimised Class forName / newInstance implementations
  • MIDP 2.0 (JSR 118) including
    • Timers and TimerTasks
    • Pause / Resume callbacks
    • Key & Touch/Pointer event callbacks
    • Anti-aliased image support
    • LCDUI Form support
    • Screen orientation changes
    • RecordStore
    • HTTP connectivity
    • MMAPI Audio playback
  • Nokia UI
  • OpenGL ES (JSR 239) including
    • PowerVR Texture extensions (for iPhone and Win32)
    • DXTn (S3TC) + DDS Texture extensions (for PSP)
  • Sensors (JSR 256) including
    • Accelerometer input (for iPhone and Android)
    • Analog stick input (for PSP)
  • Location (JSR 179)
  • FileConnection / PIM (JSR 75)
  • Wireless Messaging (JSR 205)

Our C++ libraries have high compatibilty with all major areas. Implemented API coverage at our last check was over 95% for the libraries listed above.

In addition to the above, pre-built zlib, libpng and libjpeg libraries are included where needed for platforms that do not natively support these image formats, in order to provide expected image support (the Resource Handler can also be used to optimize graphics into custom device formats, to avoid on device conversion).

Features

  • Integrates with manufacturer's SDKs to automatically produce final binaries from Bedrock's Multi Build dialog
  • Optimised libraries and code conversion techniques to produce fast, small binaries for platforms with tight memory/binary size restraints
  • Automatically generates the appropriate project files e.g. XCode / Visual Studio / Eclipse / NetBeans
  • Natively hook out from the generated C++ code, e.g. interface with native iPhone UI elements
  • Automated source code patching system

Optimisations

For any platform where it is beneficial, the option is available to the developer to render 2D using 3D functionality (e.g. using OpenGL ES).

The developer may enable or disable standard ArrayIndexOutOfBounds and NullPointer exception functionality in the cross-compiled C++. When on, this provides full Java behaviour, but when disabled gives the developer the ability to take advantage of more optimised code paths and better framerates.