Documentation/Maemo Eclipse Tutorial/Introduction

= Introduction =

Instead of using the Maemo development environment command line tools to create C/C++, Python or Qt applications for the Maemo platform, it is possible to use an Eclipse, Ganymede-based IDE to make applications development easier for Maemo devices.

Maemo Eclipse IDE integration supports following Maemo devices and platform releases:


 * Nokia N800, N810 and N810 WiMAX Edition with Diablo 4.1.x.
 * Nokia N900 with Fremantle 5.x, see figure 1.1.

Maemo Eclipse support includes the ESbox product that supports C/C++, Python and Qt programming together with Maemo SDK and Maemo devices. ESBox has full integration to both the Scratchbox-based Maemo SDK environment and Maemo devices.

In addition to the ESbox product, Maemo Eclipse integration provides also the PluThon product that supports Python development with Maemo devices. The PluThon environment does not use Maemo SDK but is an on-device development environment where Python application development happens directly within the Maemo device.

Both ESbox and PluThon can be used on all major platforms (Linux, Windows and Mac OS X). On all supported operating systems Eclipse IDE is run natively on host PC. On Debian-based Linux systems the Maemo SDK can be installed antively to the host PC. On other Linux variants (like Fedora) and non-Linux systems (like Windows and Mac OS X) where the Maemo SDK cannot be installed, it is possible to use a virtual machine or a remote Debian based Linux system to host the Maemo SDK. ESbox will translate all IDE UI commands to SDK commands behind the scenes.

ESbox and PluThon run inside Eclipse with CDT (C/C++ Development Tools) installed. The Eclipse environment requires a Java virtual machine to run properly; JavaTMPlatform, Standard Edition 6 (JavaTMSE 6) or above is recommended. ESbox also needs Scratchbox and Maemo SDK targets for building components and developing applications.

Note that ESbox has native support to develop also Qt applications. This makes the development of Qt applications easier than using Maemo SDK only, since no command line execution is required to build and execute the application in the Maemo SDK target or Maemo device.

Maemo Eclipse integration has support for basic profiling tools for Maemo applications development. Profiling is one of the most important techniques available for programmers for discovering problems in applications. By profiling an application, it becomes immediately apparent where the overwhelming memory and CPU burdens exist, and allows you to quickly correct them. Maemo Eclipse provides support for the Valgrind memory profiler, the OProfile system-wide profiler and the Ltrace library call monitor for both C/C++ and Python Projects.

Ltrace is a tracing tool which runs a specified tracing for an application or a library. While the tool is executing, ltrace intercepts and records the dynamic library calls which are called by the executed process and the signals received by that process. On a Maemo environment, Ltrace is supported on both a Maemo SDK x86 target and a Maemo device.

Eclipse Ltrace support launches your application on the Maemo SDK target or the Maemo device for tracing, and the result is shown in specific Ltrace view. All Library and System calls are shown as a tree: parent nodes and child nodes for each new nested call.

Valgrind is a framework for building dynamic analysis tools. You can use Valgrind to profile your applications. It detects memory management (memory leaks, use of uninitialised memory, and so forth) and thread bugs. For Maemo, Valgrind is only supported on X86/Linux and thus only on the Maemo SDK x86 target. To be able to use Valgrind profiling you have to select a X86 Scratchbox target to run your application.

Eclipse Valgrind support runs your application on the the X86 target and the result is shown on a specific Valgrind view. All problems found by Valgrind are shown as a tree: the problems as parent nodes and the details of the problems as children nodes.

OProfile is a system-wide profiler for Linux systems and can profile all running code. It consists of a kernel driver and a daemon for collecting sample data, and several post-profiling tools for turning data into information. On the Maemo environment OProfile is supported only on Maemo devices to obtain a high quality of profiling information. Eclipse uses ssh to remotely execute the OProfile and collect profiling information on the Maemo device. Thus, it is necessary to properly install the application to be profiled and the OProfile framework on the Maemo device before the profiling can be done.

The Eclipse OProfile support runs your application on the Maemo device, and you can control the OProfile from the Eclipse OProfile view. After the OProfile has stopped the profiling, the result will be shown in the specific OProfile View.