OK may as well have my 3.4 pence worth (gues thats about 2cents)
Java is good for learning OOP. As you basically have to use it unlike C++ etc where you can revert back to using C to get around problems. It is relatively well structured, in the same way Pascal is well structured. Unlike BASIC which is an unstructured language.
However having programmed in COBAL(evil language), Pascal/Delphi, BASIC, C/C++, Java & Assembler my conclusions on Java are (I'll pick up a few points from Great_Knight here as well ) :
Multiplatform - Only if I install a Virtual Machine first. Why on earth would I wand to basically run a byte code interpreter on my nice fast PC? You can natively compile it, but then whats the point. If I want speed I may as well use a C/C++ compiler for each platform I wish to run on.
Very Secure - If its meant that Java apps can as standard no damage your system, then this is true. On the other hand it then becomes very frustrating when requiring access to local machine resources & the fact it has to cross-platform compatible. I don't really see this as a plus point at all unless you insist in developing internet distributed apps.
Well is it fast? Nope and a little bit of yes, It's faster than standard interpreters but not as fast as natively compiled applications.
Quote: "One thing you also gotta know is that Java is a young lang"
Sun Microsystems developed Java in 1995 (previously known as Oak and was developed for embedded systems between 1991-1994 ). OK its been around 9 years whereas C++ has been around approx 20. I can see C/C++/C# or variations being here in around another 10 years and still being very strong, I don't see Java being much more used than it is today.
Due to the Sun/Microsoft issue many (many) commercial development houses opted to try and stear away from using Java due to its uncertain future. Although the concept of a small deployable multiplatform application is a wonderful idea, my personal feeling is that Java will never fully fulfill this role for due to commercial reasons. I am not a fan of ActiveX based technology either.
However as we have gone full circle and more and more business apllications are now being run centrally again through either web based applications or the use of thin-client technology such as terminal services/citrix, it will be interesting to see what happens as the browser DOM fully develops. (I personally dont even use a local copy of Outlook anymore for work as Exchange 2003 Outlook Web Access, gives me full functionality without anything more than a browser).
I have to say I dont really understand why on earth educational institutions try to start with teaching an Object Orientated Language. I think is is better to learn a conventional structured language first as it teaches greater understanding of how the machine actually works with regards to instructions, data storage and i/ o .It's also easier then for a newcomer to learn more with regards to program optimisation.
I would also add that you should know how the basic building blocks of a CPU works (ie Processor inc registers,stack,pc and memory etc) not sure how on earth you are meant to understand push/pop, pointers, interupts or memory pooling without that.
As the original post was relating to studying which should then lead to some kind of career prospects the most common kind of development work is normally writing bespoke applications or small add-ons for clients:
If you have Java & C/C++ in your skills bag then you have probably just halved your potential employment, as opposed to having VB & C/C++ in your skills bag (not saying VB is a fantastic language its just required by many employers).
Our company often employs programmers for the above type of applications & apart from the ability to not empty the coffee machine & be able to actually talk to clients our ideal core skills list would currently be:
VB/VB.NET
VBScript(ASP, now integrated into .net )
C/C++/C#
HTML/DHTML
For more games specific work you probably be looking at:
C/C++
Possibly Assembler
Good knowledge of DirectX & possibly OpenGL APIs (If PC based)
I used to work desighning & building custom motherboards & programming the BIOS, OS & some of the software this basically required:
Assembler(various processors)/Machine Code
C
So C/C++ is a must whatever field you will be in, the rest is specific to what type of development you expect to do really.
Twynklet