It's the End of the World as We Know It

by Robert Cooper

So, it is easy these days to find people predicting the death of Java, or discussing the continuing utility of a framework and in the very next breath pontificating about the demise of the same. It is also imposible to miss the deification of the next great thing among the technorati.

I admit, recently I find myself more and more disillusioned with Java. And whether it its my own gripes about constant framework proliferation and NIH syndrome among the people who disclaim it at every turn, the Java world is getting seriously muddled.

At the server level, it is obvious that some things are more than a little over hyped and introduce complexity that shouldn't be there, but the stanards people have just dropped the ball on driving us forward to a future with levels of complexity from the basic to the "I need everything." The sad truth that "Enterprise" Java has missed for so long, is that even in the "Enterprise" only 1 in 500 applications need "Enterprise" functionality. While there are finally steps in the right direction, most of the world is still way more complicated than it needs to be.

On the desktop, you end up with mutliple solutions to identical problems that really should be getting driven at the JRE level. Not to mention several advancements in what we should be expecting from our environment that Java's competition has gone to school on over the last few years. Sure there are partial great solutions to some of these problems, but none of them offer what you really want, and they are certainly not something you can expect the world to standardize on when they aren't coming from the "standards" bodies.

No, Java is not dead. At worst, Java will be around for years in the same way ANSI-C has. There is just too much out there to walk away. However, Java seems to have become an also ran in every possible category. It is not "the language of the Web", nor is it a "first class citizen" in the desktop. Even in the world of "AJAX" and "RIA" which Java foretold, it has lost the lead in technology and is negligible in mindshare. Java, however, needs some new life. It needs to reinvent the "Applet" into something cool and powerfully cool. It needs to absorb the things almost everyone needs in every app into not just a spec, but into the core runtime. I noted today that a lot of the very fair criticism of Linux could be applied 100% to Java with a simple search and replace. But most of all, what Java needs -- for the first time I can think of -- is not just someone who can design software or APIs well, it needs "the vision thing".

12 Comments

nferrier
2005-11-04 03:05:52
be around like ansi/c?
I think of Java as more like COBOL now.


Once it was a nice little language... it just goes to show what happens when you don't have an open standardizing process.


I speak from experience having had to resign from the servlet JSR because of Sun's interferance on non-technical grounds.


They have managed Java very badly indeed.

mikehansen1
2005-11-04 06:03:24
be around like ansi/c?
I think of Java as more like COBOL now.


  • I don't understand this comment at all. COBOL hasn't changed in many many years. According to your following comments, Java changes frequently perhaps too frequently. Was COBOL managed very badly?

  • rmeister0
    2005-11-04 07:05:20
    I think...
    ...the Java = COBOL remark, which I have heard from other people before, is that it is everywhere being used for lots of things, and because of it we will be dealing with mountains of Java code for decades to come.


    I agree that Java is the legacy code of the next generation of coders.

    kebernet
    2005-11-04 07:34:01
    be around like ansi/c?
    I don't think there is much of a difference between ANSI-C and COBOL for comparrision, really. Like either of those, it seems that Java is not getting "managed" in a way that transcends somewhat minor points of language mechanics -- at least not in a real way. If you look at both the "core" APIs (java.util.loggging anyone?), the extended APIs (I would consider JavaMail for instance, to be the definition of a poorly designed API) or the J2EE APIs (JAX-RPC) have been late to the party AND/OR simply bad.


    You can publish and consume SOAP services in COBOL if you really want. It doesn't, however, really make sense. There will always be new APIs available for Java to accomplish whatever goal. However, their proliferation, their fragmentation and their divergence will shift Java to being what C or COBOL is: a legacy syntax. You can still get COBOL from CA, GCC and even a .NET CLI compiler. What I am really driving at here is the seeming success of Microsoft at making Java a *language* and not a *platform*.

    Reedo
    2005-11-04 11:10:10
    how about apache?
    It seems to me that Apache has filled the role of a set of widely-used, practical APIs and implementations, almost to the point of being like a de-facto "standard" library. And looking at how individual Apache projects themselves build on top of other Apache projects, one could almost refer to an Apache platform. I say "almost" because there are still significant pieces missing--no available-now Java EE server through Apache, no JVM either.
    kebernet
    2005-11-04 13:53:59
    how about apache?
    In some areas you are correct. In others, Apache is almost part of the problem. The whole point of "Geronimo" was a NIH solution, which isn't that big of a deal since it isn't a whole new framework. However, just looking at, oh, Velocity, Tapestry and Struts on top of plain ole JSTL (and Cocoon/Forest not to mention JSF) you have to admit that is a lot of crossover for not a lot of divergence.


    Someone on another forum seemed to take it that I was saying "choice is bad". I am not. The whole point of J2EE was to give us a baseline and choices of vendors based on expanded functionality. The problem is, it doesn't seem the baseline has moved and so everyone has spiraled off into a thousand directions. Moreover it puts quite a burden on the run of the mill Java web developer to know 3-5 templating systems, 2-3 MVC frameworks and a couple of SOAP APIs.

    jvissers
    2005-11-05 04:08:25
    Here we go again...
    I'm getting sick and tired of people predicting the death of Java/J2EE. It seems like the maturity of the technology is bad for some people just wanting to do things that are brand new and publish about it. This is not to say that Java/J2EE isn't cool anymore. I personally think it is cool that we now can productively create stuff using for a customer that really adds value and can be delivered on time and within budget.


    Stuff like: "At worst, Java will be around for years..." and an argument I've seen on TSS in favor of RoR like "J2EE isn't just fun anymore" just want to make me puke.

    mjmeijer
    2005-11-06 01:18:25
    well...
    if technology is widely accepted, not a lot is published anymore because tooo few would buy it. There is a whole industry feeding on the latest and greatest that influences this debate.


    Proof:
    seen, bought or read any books on 'the wheel' lately?

    nferrier
    2005-11-09 03:25:48
    be around like ansi/c?
    COBOL has changed. OO was introduced etc...


    Java is used in similar ways (as a data processing tool) and has similar friction holding widespread change.


    ajbufort
    2005-11-15 13:17:33
    Amen, Brother!!
    Whew - how refreshing to find someone stating the plain truth rather than attempting to defend how things have developed! The proliferation of software technologies in general is rather ridiculous - what the tech world needs is the 'vision' thing, combined with the will to deliver the instantiation of that vision. Instead we have unbridled competition, standards breakdowns, and even standards that need not exist. There is no need to reinvent the wheel 10,000 times!!
    javapisthu
    2005-12-02 10:57:19
    Agree to some extent...
    I think some things need to become part of JRE like XML parsing...XML has become so fundamental and Java 's parsing speed is not even comparable to .NET


    I think there are also too many recipes (frameworks) for web development and it would take a new developer several months to digest all these frameworks before they can start doing serious enterprise web development.


    There should be clear guideline from Sun and the Java Community on Frameworks


    For extremely large enterprise projects use Struts .For Smaller scale projects on a lower budget and time use JSF ...If you want to be on the bleeding edge use Spring. Right now , there is no guideline whatsoever....


    I want to parse XML , I need to figure out what to use dom4j , nux ,JDOM etc. FIrst I need to what these are, their differences...This is all very time consuming. There should be guidelines as to which technology/framework to use when!


    I think its too sad...but I think PERCIEVED complexity might come as the tolling bell for Java.


    Javapisthu
    http://yellowdomino.blogspot.com/

    jsilva
    2006-05-01 08:13:23
    All this stuff about the Java standarization i call flexibility. While with other frameworks like rails you don't have many options, but in Java based project you have 1.000 ways to put you system works. This is not easy for newer java developers, but when you become an expert Java is a real toolbox with many tools an diferent ways to solve a problem. If your project is isn't a "simply web page with forum and blog" Java is the best aproach.


    Anyway, for simply web development i use Rails. For complex system i use Java, and a waiting for the "smoth integration" betewn them.