Java is the way to go.
I've never come acrossed a better designed programming language than this!! heh.
ofcourse it's not easy writing GUI apps in Java as compared to just drawing it out in Interface Builder which uses Cocoa. But hey u could use a Cocoa-Java combo!!
objective-c isin't bad at all, it's better than c++ heh,
all languages are good, learn a few and get well-versed with them(i.e understand their pros and corns) thus, ur not limited to a perticular language.
anyhow, Java, Objective-C and the like, are dynamic general purpose programming languages. (i,e they were designed, with the idea of being well designed)
while languages such as C/C++ are static systems/general purpose programming languages. (i.e, they were designed for performance and to give the programmer complete control on the machine, which is as i said usually usefull for systems programming [operating systems], but they have been used in other fields as well)
you want to create applications: so Java/Objective-C/C# is the best choice for you.
Yes C# as well, after all it's supposed to be the remodified C++. (but a lot more dynamic, similar to Java). It's not a bad language at all.
And it won't take off, since we all hate M$.