I have used Java for my time here at varsity and tried the likes of vb, but im a java boy!
Java is soon to be open source as i have heard.
And a great developing envioment for Java is Eclipse, the new version 3.2 was released just 2 weeks ago, got alot of new features! Very cool enviroment to use now!
tbh, not many people care about whether things are open source or not. If you (or whoever's thinking about using it) did, then you wouldn't consider using Java in its present state (yes there are open source implementations, but they are chasing a moving target). It's true that Mr Schwartz has said that Java will be open at *some point*, just as they (SUN) are doing with all almost all of their other hardware and software, but it hasn't become clear when this will happen, how long it will take, or what license it will come up under. It's probably very unfair for me to say this, but some SUN employee's maybe too concerned about retaining control of Java, despite opening it. Then again, open solaris is doing quite well (all things considered).
Just to give you the opposite side of the view, I cannot stand eclipse. On a concept level its good - all driven by plugins, very versatile, etc. However, its also extremely sluggish, because of the good extensible features. I'm not saying don't use it, but it's some additional food for thought.
I couldn't pass up a comment on this, especially with respect to JavaME on mobile phones.
What is 'power'? You can't optimize java like you can C/C++, but it does provide a friendly runtime environment (memory manager, useful libraries etc).
It isn't 100% object-oriented. Native types are not objects. Try passing 'em around a bit and modifying them.
Memory management on a mobile phone is a nightmare, because JavaME 'protects' you from the one thing that you really need direct access to in this case. It's a very poor language for embedded programming, but the only other choice is BREW.
It's not super-portable when it comes to something like a phone. Each phone has enough differences that you'll have to make a custom version for each one. Native APIs, memory, processor, screen capabilities and even the codes for key presses can all vary. Don't expect to be able to make JavaME (phone) software work in a JavaSE environment (PC) without some extra work, either, especially if it uses the network.
The 'standard' library for a JavaME device is way, way smaller than Java SE and comes in two parts (CLDC/MIDP) that have a number of versions. This is somewhat overcome by device vendors providing non-standard extensions, which doesn't help portability much either. :-)
I'm not saying you shouldn't learn Java, it's quite useful and accessable and it's one of the languages I've used, but don't believe all the hype about it (or anything else). All languages have advantages and dissadvantages that make them useful in certain situations and not so great in others.
Mobile phones I'm not too aware of. Let's say not at all Programming for them I assume would be tricky because I doubt the different phone manufacturers talk to each other on programming standards. Besides, if anyone were to make a program for themselves it would be for limited use.
So yeah, it all depends on context. But for the most part, in the context of computers, Java is still nice imo.