1) A runtime environment for programming applications to run on resource-limited devices, such as PDAs or cell phones. Officially, the initials stand for Java 2, Micro Edition, but Just Too Many Exceptions might be more accurate.
2) A cruel joke of a runtime environment that provides poor performance, a far-too-limited API, no access to the framebuffer and is generally useless for serious programming (not that that stops anyone) and, most of the time, is incorrectly implemented by cell phone manufacturers.
3) The antithesis of "Write Once, Run Anywhere".
If you have a GSM cell phone and download games on it, chances are, they'll be coded in J2ME.