 |
Java, Coolness, Human Scale and Creative Environments
Posted by ericfreeman on December 10, 2004 at 02:07 PM | Comments (12)
What a facinating topic we've had pop up in the discussion between Brett and Kathy. I must admit, like Brett, I've felt a continuing drain on Java's "coolness" over the last few years and Kathy does a wonderful job of saying WHY cool is important. I'd add that keeping Java "cool" is vitally important because often this tends to dictate where creative efforts go. Taking an example outside of programming languages, look at the Mac vs PC in the mid/late 90s: the PC began to be the choice for Internet-related application development and the Mac practically died. However over the last few years the Mac has regained it's coolness and the trend has reversed itself (iTunes, podcasting, the best RSS readers, etc.). So, to keep Java vibrant it really DOES need to stay "cool."
I found John Reynolds' comment on Kathy's post particularly interesting and it starts to get at why I think Java has lost some of its coolness factor:
"For some reason your post made me flash on HGTV's myriad "home fixer-upper" shows. Fresh landscaping and a new coat of paint can go a long way towards transforming a boring tract home into a cool cottage. Java can be cool and sexy again, but it will take some dedicated remodellers."
This is almost right, but I'd differ with the analogy just a bit; it's not so much that Java is a tract home that needs sprucing up, rather Java used to be a cottage and has grown into a one hundred story, all glass, office building built without an obvious entrance and without reguard to human scale (like so much of today's new architecture). As with real architecture, when things aren't built to human scale, people find them oppressive, uninspiring, difficult to use and in the end these environments do not create vibrance (or perhaps Christopher Alexander would say such environments do not have the "Quality without a Name").
The good news is that this analogy is directed more at the Java API than the core language. With the APIs one doesn't have to look far to see "uncoolness," at least from a design sense (J2EE, Swing, Calendar to name a few), but these are APIs (or higher level platforms) and so we don't have to be stuck with them.
One of my favorite books this year is Better, Faster, Lighter Java, by Bruce Tate & Justin Gehtland, which does a brilliant job of questioning where we are going (and why) as well as suggesting that lightweight approaches may be more sensical. I'd argue further, these lightweight choices, which in my opinion are built to human scale, may help Java recapture vibrance, which leads to coolness.
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Indeed. In software terms, it seems pretty clear we need to seriously consider Refactoring Java.
Posted by: johnm on December 10, 2004 at 02:38 PM
-
And in that parallel universe where the popularity/use of Jini vs. J2EE are reversed, I bet they aren't questioning whether Java is cool...
Posted by: kathysierra on December 10, 2004 at 04:25 PM
-
Nailhead meet hammer!
I couldn't agree more Eric.
When I think back to my days starting out with Java, the SE JDK was all there was. It was so easy to be so wonderfully productive.
If I might borrow your metaphor:
Being an idyllic cottage, and in a verdant meadow; soon many people raced there, and built very big houses. Quickly the meadow was consumed. Today, new Java developers can't even see the cottage through all this!
The meadow may be gone, however the cottage is still there; and it's just as charming as ever!
Someone just needs to show them the way.
John
Posted by: cajo on December 10, 2004 at 07:11 PM
-
it's not so much that Java is a tract home that needs sprucing up, rather Java used to be a cottage and has grown into a one hundred story, all glass, office building built without an obvious entrance and without reguard to human scale (like so much of today's new architecture).
Great metaphor... and it highlights just how hard it will be to accomplish meaningful "urban renewal". There are a lot of folks who have invested a ton of money building that office building, and they don't take too kindly to the idea of tearing it down and building a nice residential neighborhood.
Posted by: johnreynolds on December 13, 2004 at 06:42 AM
-
Eric,
You're absolutely right. If the JDK were stripped back to its base and the additional APIs were provided as plugins it would make Java more of a "build your own modular home" kit rather than "the single glass monolith" we see now(to use your metaphor). and more than likely more pallettable.
Way to hit it!
Colin
Posted by: jchenry on December 13, 2004 at 07:56 AM
-
Some of the reasons Java is totally uncool to me:
1. Because of the missing SocketService and broken jar_index/parts mechanism in Java Web Start I can't build modular programs, and I can't access the network properly in the virus-free unsigned environment.
2. Sun is _incredibly_ slow to accept feedback from the Java community so APIs get lost in the weeds and years are wasted building stuff no one wants. This is improving with the JDNC, Java Sound, and new beta JVM availability approaches to community, but much more needs to be done.
3. Compiling is taking too long. This is getting way out of hand fast. The J2EE compilation process/deploy process is a disaster and tools like Maven treat you like you are a nincompoop by forcing you to build and run the tests even though you just changed something simple.
Java is becoming totally uncool to me because the popular environments and tools are either preventing me from using Java effectively or forcing me to spend more time with the tool than with the language.
Posted by: markswanson on December 13, 2004 at 10:26 AM
-
Java isn't cool. It used to be cool. New things tend to lose coolness over time. This is obvious if you look at the language people are using in the discussion "when Java was new, it was cool, now it isn't, what happened?".
Paul Graham argues that Java isn't cool because too many people use it. He argues that Lisp is cool because noone is using it. He is wrong. Lisp isn't cool anymore, because it is old.
In fact its quite easy to disprove Lisps 'coolness'. As a counter-example, I offer the iPod. Everyone has one, or wants one. Even if you don't have any mp3s you want one. Why? Because they are new and cool. Not everyone wants to be a Lisp programmer!!!
Maybe in Graham's strange fantasy land he thinks that we all secretly want to be Lisp programmers, and envy his 'coolness'. Ummm... no, no we don't.
Coolness and popularity go together, sometimes people think that exclusiveness also equates to coolness. I've seen old crays up for sale - and sometimes I think it would be cool to have my own 'supercomputer' in the basement. A certain small subset of my friends would also think it was 'so cool'. I suspect the novelty would wear off extremely quickly. (especially after the first power bill!!!) In this one respect, like Graham's, my definition of coolness is vastly different from most other peoples. But its more like a vestigial memory of coolness. Those things used to be cool, a long time ago.
Another example is Macs - have they become cool again? No. Did OSX make them cool? ... *maybe*... but if so, that coolness factor has now long expired. When I bought a Mac earlier this year, it wasn't an act of 'coolness'. Kathy (I think it was) made the excellent point that while *decisions* might be intellectual, actions are based on emotions. I might decide to buy a car, but until there is the emotional prompt, I won't act on that decision.
For me, buying a Mac is an act of rebellion. Now often the 'cool kids' in school were rebels, but not all rebels are cool. Compare and contrast 'jocks' with 'goths'. Jocks 'hack the system', so they can get away with anything. Whereas goths are rebelling against the system (and against 'coolness' - but what they are really trying to do is to redefine coolness).
So the point of this ramble, is that Java will never be cool again. We can try to make it cool by adding lots of new features (stolen from other languages, of course - why would you steal something that hadn't been proven already, after all), but that is a limited strategy, and doomed to failure. We can try to add lots of 'cool new frameworks', which replace the need to write Java with something else (eg encoding the logic in XML), but Java is at or near a local maxima - moving away from that point increases the pain, not decreases it. (Or, in other words, encoding the logic in the XML sucks big time)
So waht can we do then? My suggestion: get over it already.
Instead of trying (and failing) to make Java cool, we need to be doing something else. I would suggest ease of use and deployment. Moving towards a more mature platform. Rounding off the edges. Planing (planeing?) away the splinters.
Sand it down, and add a coat of varnish.
The thing is, that when something is new and exciting, we are willing to jump through lots of hurdles to make it work. As it becomes less new, and less cool, having to jump through (sic) these same hurdles starts to becoem tedious. We start looking for solutions that we can do quick and easy things with, without the pain and splinters.
Not coincidentally, this is where people like MS (and BEA)position their products when they do demos. They try to show how easy it is to do things quickly... eg I click here, drag this thing here, and then I will get a fully (insert buzzwords) system out the other end, (I happen to have one I prepared earlier...).
Posted by: rickcarson on December 13, 2004 at 04:56 PM
-
I don't want an iPod :)
I checked them out as an alternative to a portable CD player and decided I could buy one of those and still have money left over for 10 CDs worth of music from the purchase price of an iPod.
And no having to buy a new one every year or so to stay "cool" (or just because the battery dies and Apple still hasn't understood about making their device so people can change batteries).
I too like the building metaphor. Yet sadly when you see the discussions about what should be in the next release a lot of people cry out for making the language ever larger.
More keywords, more operators, operator overloading, entire new APIs in the standard library, etc. etc. etc.
Reading all that I admit I'm brushing up on my C++ skills as I fear Java may be sliding into an abyss not dissimilar to Perl 6 with massive scope creep turning it into a beast that's impossible to handle and making the entire language useless for practical purposes.
What I don't agree with is the coolness factor. Cool is nice for hobbyists, but for professionals established technology is better.
Especially large customers don't want the latest and greatest, they want solid proven systems.
Posted by: jwenting on December 14, 2004 at 01:06 AM
-
I think we have to question what exactly 'coolness' is. It would seem the only consistent metric (one that the majority will agree on) is related to games and entertainment (which I will hereafter just refer to as 'games'). If Java is good at writing cool games then Java itself is considered 'cool'. Although I am sure there are many routes to 'coolness', this seems to be universally accepted as the most direct (?)
Writing great spreadsheets doesn't give the same street cred. Nor even would writing a superior file swapping application. But everyone finds games cool (even your grandmother) and any technology good at writing games benefits from the reflected glory. Perhaps this is why Flash's 'coolness' increased as Java's fell when they exchanged places as the primary medium for writing embedded web page games? Perhaps also this is why J2ME is considered 'cool', but J2SE is not!?!
I read with interest the idea of scaling back Java - I've seen this debate before, and has always thusfar sided with the camp that does not want to fragment Java is a miriade of tiny downloads. The advantage of a monolyth is that everyone knows where they stand, and there is no room for FUD or confusion - you either have J2SE or you don't - there is no in between - only the version number to worry about.
Putting these two things together - perhaps its time for a new Java: Java2 Cool Edition (J2CE). J2CE will be targeted at the young amateur 'back bedroom' coder who wants to write powerful cool applications, like games. While not actually incompatable with J2SE, it ditches most of the business-orientated packages (XML, JDBC, etc) and adds a load of packages specifically aimed at graphics intensive, media rich, applications. For example. we need a layer which sits atop of AWT and provides a load of easy-to-use games-orientated code ('sprites', scrolling tile-based 2D maps, collision detection, joystick reading, character movement and AI. etc etc).
Just an idea.
Posted by: javakiddy on December 14, 2004 at 10:24 AM
-
Hi Eric!
Is Java still cool? I think the answer depends on who you ask. Certainly it has gone through significant growing pains over the last few years with the focus shift toward business applications. I'm thinking specifically of EJB here, which is quite possibly the least cool thing ever to come out of Java, and as a result, the most appealing to the business world.
But popularity isn't everything. Java is still being used for some really cool things, and I only see that segment increasing. For example, if I may give a blatant plug for my totally non-commercial and all open source employer, the LOCKSS daemon is entirely written in Java.
So yes, I think that Java is still cool. It's getting stiff competition from Python in "gee whiz" factor, but don't see that as a problem, I like both languages.
-Seth
Posted by: sethm on December 17, 2004 at 05:12 PM
-
Go back to mathematics. Remember when you were learning Calculus, Complex Variables and other fun stuff in university. There was a coolness in discovering a new way to solve a problem. This kind of coolness is soon lost but what remains cool after the Wow! factor has faded is that which is elegant.
As a manager, I appreciate Java for what it brings me in terms of business value. It's proven technology, relatively secure, platform independent, vendor neutral, and has great industry and community (open source and other) support.
But in terms of the language itself my question to you, from the point of view of you developers is, "Is Java elegant?"
Posted by: aquraishi on January 11, 2005 at 06:11 AM
|