MIDlets are developed on regular desktop computers, although the MIDlet itself is designed to run on a small device. To develop MIDlets, you'll need some kind of development kit, either from Sun or another vendor. Remember, MIDP is only a specification; vendors are free to develop their own implementations.
The world is full of MIDlet development tools if you know where to look. Furthermore, many of these tools are freely available.
The bare bones set of tools is Sun's MIDP reference implementation. This includes the preverify tool (more on this later), a MIDP device emulator, source code, and documentation. You can download the MIDP reference implementation by following the links from http://java.sun.com/products/midp/. However, I don't recommend using the reference implementation unless you really enjoy being in the middle of the gritty details of building and packaging MIDlets. (You should also investigate the reference implementation if you are interested in porting the MIDP runtime to a new device or platform.)
A much better tool for beginners is Sun's J2ME Wireless Toolkit, available from http://java.sun.com/products/j2mewtoolkit/. The J2ME Wireless Toolkit (or J2MEWTK, as it's affectionately known) includes a GUI tool that automates some of the tedious details of building and packaging MIDlets, providing a simple path from source code to running MIDlets. At the same time, the J2ME Wireless Toolkit is a relatively lightweight solution, almost a miniature IDE, not something that will choke your machine.
Larger IDEs are available in abundance, from device manufacturers, wireless carriers, and IDE vendors, including the following:
Borland JBuilder MobileSet: http://www.borland.com/jbuilder/mobileset/
IBM WebSphere Studio Device Developer: http://www-3.ibm.com/software/pervasive/products/wsdd/
Metrowerks CodeWarrior Wireless Studio: http://www.metrowerks.com/MW/Develop/Wireless/Wireless_Studio/default.htm
Research In Motion BlackBerry Java Development Environment: http://www.blackberry.net/developers/na/java/start/download.shtml
Sun ONE Studio, Mobile Edition: http://wwws.sun.com/software/sundev/jde/features/me-features.html
Zucotto Wireless WHITEboard SDK: http://www.zucotto.com/products/wb/whiteboard.html
You can use whatever development kit you wish. I suggest you start with the J2ME Wireless Toolkit, which is easy to use and authoritative. I'll be using the J2ME Wireless Toolkit throughout the rest of the book. Other development environments generally use the J2ME Wireless Toolkit as a plugin anyhow, so your experiences are likely to be similar no matter what tool you use. You'll notice details about the development environment most in this chapter, where I'll go into detail about the build tools and the emulators. For much of the remainder of this book, I'll be describing the MIDP APIs, so it won't really matter which development kit you use.