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.
Well, in that case VB is "typesafe" too.
But that gets to the heart of the issue -- Solutions developers learned the hard way with VB that runtime type-checking significantly hurts the "scalability" of a development project, both in size and # of developers. But now that VB has been written off and forgotten, so have the lessons, and a new generation is about to relearn them with new and cool languages.
Whenever I hear the word 'Innovation', I reach for my pistol.
I say good riddance to them. Nothing contributes more to this industry-wide attention deficit disorder than these technology evangeslists that have somehow gained celebrity status, then abuse it to sell more books and fill seats in technology symposiums.
Java works for me. I get paid to do it, and I'm tired of all the noise.
Eh? That's like saying languages that have semicolons on the end of lines are more bug-prone because programmers sometimes forget a semicolon. Incorrect whitespacing and missing semicolons are both syntax errors that are caught at compile-time, not run-time, so in practise this is entirely a non-issue.
Despite having twice as many years experience programming Java than Python, I've found that Python's whitespacing is far less prone to error than other methods of block delimiting. I can count the number of times I've messed up my indentation on the fingers of one hand. The number of times I've missed the occassional semicolon or bracket must number in the hundreds.
Actually, it is. If you haven't read any of his work, you might dismiss Bruce Eckel as just another one of the proliferation of people writing programming books these days. Fifteen years ago, if you walked into a bookstore, you'd find about three books on programming languages, with all the rest being dedicated to Lotus Symphony and DBase III. Today, any schmuck with a publishing connection can write a book on Ruby, Perl, Java, or what have you. When I went looking for a book to make the transition from C to C++, I scanned through dozens of C++ programming books before I found Thinking in C++. It's very well written, does not patronize you, covers real world problems in the language instead of boring you with another introduction to sorting, and demonstrates some pretty nifty tricks that he gleaned from Andrew Koenig, among others.
Bruce is a real software engineer, and writes and speaks to the same.
Not trying to start a flamewar, just don't dismiss the man because he speaks the truth.
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?
Thus they're no different from Gartner pronouncing "Small Form Factor PC's will be hot next year!" or "This will be the year of Tablet Windows!".
Nothing Orwellian, no Central Planning, just the same sort of forecasting that happens in every trade & industry.
I've a number of friends who are subscribers to CAUS's & others reports, they say they're generally pretty on, and are rarely much of a surprise to folks paying attention in their fields. Indeed I was told 2 years ago by a buddy to watch, last year and especially this year look for holiday decorations to have lots of purple and black and raspberry and long skinny legs would be very in; he was right.
Just like in business practices and coding strategies there is a lot of group-think that keeps everyone sorta in sync with each other (beyond everyone knowing that hemlines HAVE to change up or down every few years). Occasionally there are huge shifts caused by outside influences, fluorescent colors in the 60's due to dyes becoming available, now shimmer surfaces because durable ones have become relatively cheap, but even those are fairly well anticipated.
If you're interested enough try writing a dozen or so folks you think are very 'in tune' with an area of interest, then next year see how accurate they were. If you can show a decent track record of getting good predictions then hey, I smell $$ subscriber report...
Oh, and those color predictions: Good to keep in mind when painting the living room, buying furniture or a new car.
I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
and has a compiler/VM to which you have no source code access!
The source is here: https://mustang.dev.java.net/
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.
I think you forgot to mention that "Thinking in Java" is also a free download, no strings attached. The C++ version of this book, "Thinking in C++" (also a free download), helped me "get" OOP.
TO START
PRESS ANY KEY
Where's the 'ANY' key? I see Esk, Kitarl, and Pig-Up...
As a high school computer science teacher, I'm hesitant to say what university CS departments should use.
But I can talk about what makes good teaching languages. The purpose of a teaching language is to serve BOTH those who will be programmers, and those for whom CS1 is just an interesting (hopefully not harrowing) life experience. Python, with its VERY low floor and VERY high ceiling serves both purposes exceptionally well.
I use Python with high school freshman and sophomores as a "pre-AP" language, and find it a real joy to use. In fact it has really turned part of my professional life around, and made me renew my commitment to teaching younger kids programming-as-such. I'm having a blast.
I have used Pascal, AP-ified C++, Scheme, and Java. I've taught structured programming, objects, and functional style.
I find that teaching state machine programming with Python is providing hooks to start many wonderful conversations about variables, values, expressions, control, objects, garbage collection etc. etc... And, mirabile dictu: the way the math works relates to Algebra in a comprehensible way!
Most significantly, students are showing inititative and making up little hacks on their own in a way that they haven't since Turbo Pascal. As a constructionist kinda guy, that's the big win for me.
I don't think Java or Swing is really slow these days. I run the weekly Mustang builds and Java is plenty fast - way faster than Ruby for obvious reasons. But I just tried the weekly build of Mustang SwingSet2 demo and it still doesn't look all that hot on an XP LCD at 1920x1200. The fonts are just too damn small compared to my system fonts. There's needs to be more hooks into the native OS in order for Swing to get hints about approximately it should use. And Swing fonts on an LCD have been a freaking nightmare for ever since there have been LCDs. Mustang finally is attempting the subpixel rendering in Java 6 (Mustang), and they've got it down partly. The actual font rasterizations could use some work though still. Why, oh why, did Sun decide they had to paint everything themselves years and years ago. Why couldn't they have used more native OS hooks...like fonts. SWT wouldn't have had to been invented and Swing would look great. And now finally in Java 6, they're starting to use more gtk hooks and windows hooks. But it's so freaking late. Anyway, that my rant/history of Swing.
And so I would prefer native fidelity I much prefer SWT/JFaces...or the RCP as a whole depending on how big I'm talking. So SWT is a pretty raw API. They put Jfaces on top and to the side the API stack, but JFaces isn't as powerful as something like Swing, so...
To me, the only thing that doesn't make programming in Java a complete monotonous/boilerplate-ridden pain in the ass are the IDEs, which everybody knows are second to none. But hell, give me Ruby and vim and I'm good to go even though the RDT and RadRails plugins for Eclipse are getting better. Ruby and/or Python both could use a rich Smalltalk-like environment like that were around (and I guess still are) 20 years ago. At the very least the move to a real VM in Ruby 2.0 will be nice and bring up performance considerably.