1.First of all there is J2ME (Java 2 Mobile Edition) it has many sub versions (actually platform specifications) MIDP1 is the first one having less APIs (Nokia N-Gage is horribly using this JRE) and MIDP2 is has more advanced features.
2.There is always the option of using native code. For Symbian OS (many phone use this) there are SDKs for UIQ, Series 60 and Series 90 devices. You can use Code Warrior IDE to facilitate some mobile development hassles.
--- Less standart ---
3.There is also Mophun which comes bundled w/ some phones (check their site) primarily aimed for gaming; recently got 3D APIs too.
4.And last but not the least there is AppForge which is something like J2ME but with the ease of VB coding. AppForge require a runtime env. like J2ME which isn't included by default on the phones but AppForge creates an installer which installs its own engine called AppForge Booster. Loren Soth