MIDP includes both a low-level UI API and a high-level UI API. The low-level API allows you complete access to a device's screen, as well as access to raw key and pointer events. However, with the low-level API, there are no user interface controls available. The application must explicitly draw buttons and all other controls.
Conversely, the high-level API provides simple user interface controls but no direct access to raw input events or to the screen. The controls are abstract due to the differences in screen sizes and input methods of MIDP devices. The MIDP implementation determines the way to draw the control, and it determines how to manage user input.
Let's take a closer look at the MIDP packages and classes.