Departure Of The Java Hyper-Enthusiasts?
TomH writes "Bruce Eckel has an article at Aritma, where he posits that 'The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism.' Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?"
I have to say, I haven't heard near the hype about Ruby and Python that I heard about Java. Although I must admit, the Java hype has died down quite a bit.
That's all a matter of opinion. I'm using python right now in a project, 35,000 lines of python at the moment. I've done Java apps of similar (or larger) size. I find python to have some nice features, but to be pretty badly unsuited for large projects. The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers), small typos in function/variable names aren't caught nearly as quickly, performance is far behind java (which in turn is behind C/C++ of course), etc.
Back to the topic: based on what I'd heard about how great python was, I'd say python *IS* overhyped. It has its place where it does very well; it's a nice little scripting language. Better than sh or perl in a lot of cases. But it is not even in the same league as java for medium-to-large projects. I'd heard a lot of people call python a better replacement for java, and it just isn't.
Bruce Eckel is hardly an "unknown pundit". Have you ever read Thinking in Java?
I am really just rediscovering Java now and the API's are very nice.
Java is stable, mature, and scalable, right out of the package. Python is nice for small projects and scripts but Java's strength is not the language. Its the api's and framework as well as the ton of third party software for it. For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling. Results vary drastically depending on who wrote what. There are tons of third party java objects and programs that co-exist and integrate with your java based servlets.
Java seems to have found its niche since multiplatform desktop applets never took off. Not to mention java is pleasant to debug and the tools are nice.
http://saveie6.com/
That's funny, reddit.com just switched to Python (http://www.aaronsw.com/weblog/rewritingreddit). And Google uses Python extensively inside the company, and just hired Guido van Russom, Python's creator. There are many more examples out there if you bothered to look.
If you're writing a web app, Swing is an irrelevance. You won't be needing it and it won't get in your way. Java remains an excellent choice for serious web apps which you're going to want to maintain later. I agree with you that Swing is a horrible mess, but as someone who only writes web apps it doesn't wory me at all.
I'm old enough to remember when discussions on Slashdot were well informed.
Java is different in that it has static type checking, but it also has dynamic typing constructs like dynamic_cast which can raise runtime type erorrs, just like Ruby. Static type checking is handy to decrease the number of dynamic type errors, but I don't see how it's any more *secure* than dynamic typing.
All of Ruby, Python, and Java are in a different class than C/C++ which don't guarantee anything about object types.
Having used Java exclusively since 1995, I've decided to try a webapp in python (turbogears).
The turbogears python webapp framework is a nice bit of tool integration for rapid development.
Python itself is a mixed blessing compared to Java.
On the one hand, it has very nice compact, in-built syntax handling of multiplicity (lists, dictionaries, tuples) as all powerful languages should have and java still lacks.
It has other simplicities and flexibilities that are nice.
However, the "pythonic" philosophy of "anything is allowed if you try hard enough
could be re-termed "moronic". It's just bad design to have multiple ways of
doing the same low-level thing in a language. Complexity multiplies, as we all
know.
Also, Python is not as platform agnostic as Java in issues such as byte-ordering
in data structures etc, nor is it as secure as java in this respect, because
java does not specify the representation in memory of its data objects, making them
more difficult to sniff.
Java also has other code security features that python to my knowledge lacks, such as class bytecode verification,
class loader security, etc.
Finally and importantly, while Java's (and its standard libraries') documentation is only moderately detailed, at least it is consistent and pretty complete.
The same cannot be said for python documentation, which is sloppy and incomplete, and
inconsistent in places.
So is python "progress" from Java? In some O-O and functional programming language respects
yes, but in platform quality, simplicity, platform-agnosticism, learnability, and security,
no.
We still need a new language that combines the best of these breeds.
Where are we going and why are we in a handbasket?
A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so.
For programming courses in universities, maybe Ruby is a better choice than Java. Maybe Perl even is. But Python is not, because of this one simple feature that completely rules the language out, in my book, regardless of how good the language is otherwise.