well davis, J2ME like jdk 1.3 is a set of tools and APIs for developing applications for various devices, other than PCs. These devices can be divided into two categories: those that can communicate without any physical connection (like PDAs, cell phones, pagers) and those with a physical connection (like ovens, refregirators) J2ME specifically addresses the need for application development for both categories, through its Profiles and Categories. where j2me differs from jdk is that the set of APIs are limited and different and the JVM (here, the KVM) implementation is also different. This is due to the fact that such devices have limited memory and bandwidth. if u r interested, u can check out sun's site at: http://java.sun.com/products/j2me or if u already have the reference implementation, u can startoff with some tutorials at: http://developer.java.sun.com/developer/technicalArticles/wireless/palm/
J2ME is Sun's implicit admission that J2SE is too fat for many handheld and embedded devices and so it's a version of the Java runtime environment that strips out certain features in order to meet constraints on memory size and/or processor speed. With J2ME you still program in Java, but a few features may not be there, and certainly many APIs won't be available to you. There are also some other procedures that you may have to follow in order to package your application, procedures that are different than what you do in J2SE. However, to program in J2ME you still need a good foundation in J2SE programming, but with an eye to optimizing your code for smaller devices.