<background>I've been programming now for 8 years, 6 of them professionally. I started off learning C++. On the job, I started out doing web pages using ASP/VBScript and ocassionally writing backend components and programs in C++. Recently, my company changed its server platform and I've been doing a lot of Perl. Although I've never had the opportunity to use it professionally, I'm now completing my second class in Java.</background>
So here are my thoughts about the language. I would especially appreciate anyone who's had more experience with Java(FortKnox?) to add their thoughts here.
1) Java is just about the nicest, cleanest language I've had the opportunity to program in. The structure of this language, the syntax, and the conventions employed all combine to make Java a very nice, easy to write, and easy to read language. I feel it would be very enjoyable to use it in a professional setting.
2) Java is a very complete language - meaning that for 95% of anything I would want to do, there is a library available to help me do it. Of all the other languages I've looked at or used, only Perl has a similar capability. That's good, because I really hate reinventing the wheel every time I want to put a vehicle together.
3) Java has some shortcomings - such that I could see myself hitting a wall in serious(read: not classroom) development. For instance: what would you do if you need to create complex data structures like a hash table or binary tree? Or if you did manage to create those structures(perhaps by using references rather than pointers?) what do you do in a program where you wanted to inherit from both classes? Java allows for single inheritance, and mimics multiple inheritance by allowing interfaces(you can't modify or implement new methods in an interface, you only get what is there) Now I know you can use CORBA to interact with other languages. However, it appears to me that you can't make use of the other languages special features(like, say templates or multiple inheritance in C++) because the interface itself isn't designed to deal with them.
3a) Another shortcoming with Java compared with other languages is the investment a company and its programmers need to make to become productive with it. Think of all the things you need to do just to get a simple servlet working on the web - you need to create an application, create and compile your classes, write your web.xml file to let the server know where everything is, and finally package it all into a war file. With Perl, by contrast, all you need to do is write a Perl script and drop it in your cgi-bin directory. I heard complaints from other students who worked for huge organizations about the complexity in getting a Java environment working. If its difficult for them, it would be next to impossible to realistically deploy Java in small to medium sized companies.
4) OK, I'll admit. For most corporate development you are not going to be concerned at all about things I brought up in item 3. You will be creating user interfaces, simple classes that incorporate your business logic, and database access methods. For this type of development, Java excels, and the bigger your company is the better off you will be for using Java since it is logical, very well organized, and can scale itself to the biggest of companies. But, where is Java going? For the last couple of sessions at my Java class, everyone has been talking about how Sun's stock is basically in the toilet(hovering around $5), how they might get taken over by another player(Oracle, IBM), and the fact that while Java makes no money for them, it requires a huge amount of development resources. If a company did take over Sun, would they want Java the way it is? Or would they exercise their right to make Java a proprietary language and try to start making money off of it? Meanwhile, MS is promoting .NET, and although they have their problems, they appear to be a much stronger company than Sun. How closely tied is Java to Sun's success as a company? What will happen if Sun folds or gets bought out?
Experienced Java programmers, your comments are very welcome.