Gut das ich über quasi das Thema in 3 Tagen Prüfung habe

Also:
Java ist ja Bytecode (Hardwareunabhängig) der auf einer virtuellen Maschine läuft (die auch für jede Hardware neu implementiert werden muss, aber das macht ja Sun für uns

).
Da gibts es zB die Desktop-Plattform mit der STandard Java API. Diese Virtuelle Maschine wäre aber viel zu "groß" für eingebette Systeme, und da hat sich Sun gedacht, dass sie die sog. KVM für Palms rausbringen. Also eine abgespeckte virtuelle Java Maschine für Palm Organizer (ist schon bissl her).
Damals waren sie damit eine der ersten Firmen, haben aber gleich soweit vorausgedacht, dass Möglichkeiten geschaffen wurden, auch verschienede Anforderungen einzubauen.
So kann man mittels Profilen zB Hardware/Softwareeigenschaften des Gerätes zusammenfassen (gibt zB Profile für Multimediahandys, da steht dann drin, dass sie ein Display mit gewisser Auflösung und Farbtiefe haben müssen und nen Joystick oder so).
Außerdem haben sich die Hersteller in Allianzen/Initiativen zusammengeschlossen und zB neue Profile vereinbart und danach ihre Handys und Software so gestaltet, dass sie auch kompatibel sind.
Vorteil für SW-Entwickler: Ich schreibe ein Programm das zum Beispiel auf GPS zugreift und mache das für jedes Handy gleich. Und der Hersteller kümmert sich drum, dass sein Handy und dessen GPS Chip die Methoden aus dem entsprechenden Java Package auch korrekt umsetzen.
Außerdem ist Java halt noch eine recht einfache, komfortable und bleliebte Sprache, sodass viele Entwickler sich hier leicht einarbeiten konnten.
Und jeder kann das Java ME SDK runterladen und damit einfach in einem Emulator selber Handy Programme schreiben. Deswegen wirds zum auch bei mir an der Uni für Übungen benutzt.
Ansonsten kennste sicherlich auch schon:
http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition
http://www.codepedia.com/1/J2ME
http://www.java.com/en/javahistory/index.jsp