The link above contains a great article that compares the 3 schemes used today by Symbian, iPhone & Android.
Quick summary (and some extra info):
Sybian S60 3rd: C++ (tweaked). Require a certificate from symbian company for apps to run on the phone - costs money and testing time - biggest hassle. Also different API levels require different signature levels and costs (2nd ed. and lower were open).
IPhone: Objective C (Apple only development: "Cocoa" IDE). Allow you to do your own signing - but will work only on up to 100 phones. need to join special program for better signature and for appearing on app store.
Adroid: Java (runs separate JVM on the phone for each app). Allow you to self sign and it will work fine on all phone and can be distributed.
I believe that the path Android chose (developer can sign his own apps and they will work on the actual phone) will be the winning choice ! We will wait and see ...