Where should Java improve?

July 29th, 2005

After the last entry, I should ask where should Java improve? With ASP.NET gaining ground in a space which Java seemed immovable we should asked outselves that. As I stated in the last post I believe fragmentation within Java is one of the biggest problems. Another main area is the implementation of the JVM. I prefer running FreeBSD but it has always lagged behind with Java because Sun does not produce a release for it. I felt strongly enough that the work on the Java implementation on FreeBSD needed to accelerate that I donated several books to Greg Lewis who is a key developer in that effort. I do not code in C or anything at the system level in FreeBSD but at least I could contribute somehow.

At a Java Users Group a few years back I saw a presentation by James Duncan Davidson, the creator of Ant and also a contributor to the Java Servlet specification. Afterward he and I discussed how Sun should have created a Java Server profile which did not require the Swing API. I know the Swing API is quite large and getting it to pass the compliance tests is a tough job. It also bloats the size of the installation. He said he had argued that same point when he worked at Sun but the managment insisted that Swing must be a core component. I feel that was shortsighted...

Imagine a 10mb installer for a Java Server environment which could handle running Tomcat and talk to MySQL. Why do you think there are a ton of PHP applications out there as open source projects and nearly no Java web projects? It is just too much of a pain to set up a Java web application environment to deploy those applications. With PHP you just place your files into a web folder which has PHP extensions enabled and the application will run. How come a Java web application cannot be that simple?

Also consider the Java Community Process. Is that helping or hurting? I have been reading Accidental Empires by Robert Cringley and in a recent chapter he explains a devious strategy IBM or Microsoft might employ to disupt the success of a competitor. They would simply announce a major change in vision and declare an amazing new product they are starting to develop will be available in just a year to two. The competition would either have to convince the market the new direction is the wrong way to go or abandon their efforts and follow the course of the new vision. You see this all of the time.

With Java I have been watching this unfold with JSF. The Struts Framework was humming along and quickly becoming synonymous with Java Web Application. There were piles of Tag Libraries to compliment Struts and the IDE tools were geared towards working with Struts. Then this idea of the event-driven web framework (JSF) was announced and this popular framework instantly became obsolete. Plans for Struts 2.0 were put on hold and after 2 years we still wait. The delay has been devastating for Java web developers and the glorious benefits of JSF have yet to be realized.

Lastly, I feel there needs to a behavioral shift in the Java community. All too often when I see Java developers value cleverness over productivity. I see a developer happily pore over piles of overly complex code, often refactoring and performance tuning an application which already works just fine. They enjoy the process of writing code so much that they do not care that it takes so much more time and effort than other languages like Ruby, PHP or .NET require. As I have done more work in VisualStudio.NET I have found I can get complex tasks done quickly and it is great. I still like to be clever but I must balance the urge to be clever with the necessity to be productive. It makes me think of the classic Unix operator who must memorize every command and command-line switch because he thinks that makes him cool. I say references man pages and write shells and get back to work!

With all these ills is there reason to be hopeful for Java? I am sure many are still optimistic. When I think about the troubles in Java due to some troublesome specification or implementation I dream up a new idea to replace it and how it will solve all of the problems only to realize I would just be contributing to the fragmentation of Java. So I try to wait patiently and hope projects like Geronimo and Harmony will provide the Java community with the leadership necessary to move it forward.

7 Responses to “Where should Java improve?”

  1. aaa Says:

    well, actually Tomcat 5.5 is now 4 MB and do not require JDK. so total is like 15-16 MB's ? Plus you do not need an external HTTP server either. deploying a server application is just putting a war file to the webapps directory.

    what is easier now?

    php: need apache or such http server, configure them, copy you app as a directory

    java app: install tomcat, put the war file. done.

    Plus, arent you mixing Application Server and Servlet Container concepts. Geronimo is suppose to be an app server, and you dont need geronimo now, There are three open source app servers available (GlassFish, JBoss, Jonas)

    Also, sorry but i am having a feeling from your posts that you are a little behid current java technologies and java world.

  2. Rob Abbe Says:

    Where is it you feel ASP.Net is gaining ground? Almost all of the major websites run Java on the backend. USPS, Homedepot, Fedex, UPS, Bestbuy.com, walmart.com, GMBuypower, volvo, target.com...

    etrade.com and webex offer excellent desktop applications as well.

    Those are just the few I could think of off the top of my head.

    .Net is really only semi-popular in the Small to medium business space and as I understand it, it's losing ground there as well overseas in particular.

    VB.Net is a miserable failiure. No clear migration path and with a language that feels more like C# than VB6

    MS has shown it's share holders nothing to get excited about in the last 5 years.

    Lastly, J2EE/Java jobs out number .Net jobs 2 to 1 on monster.com.

    Java isn't perfect. It has plenty of room for improvment. Performance is good but can always be better.

  3. James Says:

    At my fortune 50 company, Java is on the way out. ASP.Net 2.0 is where we are headed. We will be supporting Java for some time, but it's way behind ASP.Net. When I see JSP sites (we have many) they are about equivalent to the old ASP scripting stuff - nasty. If the community had gotten to JSF, which is reasonably on par with ASP.Net, then they may have had a chance at our co. Oh well. It's just code - there's more important things in life.

  4. Brennan Stehling Says:

    Interesting points... I suppose Tomcat 5.5 not requiring the JDK is one thing, but it still requires the JVM. As for simply deploying a War file, I think that is great and all, but once you have installed a few PHP or .NET applications you will see a world of difference. I have not played with Tomcat much lately, but mostly because I was waiting to get my server updated with the latest Java runtime which Sun failed to provide. And even with FreeBSD volunteers they still had to make it difficult with red tape.

    As for ASP.NET gaining ground on Java, instead of citing a few websites off the top of my head I will reference Netcraft and a report they published last year backing up my claims. I believe this where I first got the news via Slashdot.

    http://news.netcraft.com/archives/2004/03/23/aspnet_overtakes_jsp_and_java_servlets.html

    And for the number of jobs for Java over .NET, I cannot say that is a good thing. If skills with ASP.NET are rare that means a developer can get a higher salary. That was actually why it was so easy for me to move to .NET. The Java job market was saturated with people who claimed to be software developers but were really not. I do not believe in certifications, but when a platform like .NET is not fragmented into 100 different open source solutions it is easier to believe them when they say they know .NET. I could say I know Java, but does that mean I also fully understand Tomcat 5.5, JBoss, Hibernate, etc? All is really means is that I know my way around the core namespaces and how to create for loop without referencing documentation.

  5. aaa Says:

    "... but once you have installed a few PHP or .NET applications you will see a world of difference."

    i worked with php. i feel much comfortable with Java. Java and Java technologies are far beyond php in my opinion. My frineds are dealing with .Net, i hear their grunts everyday. i talk with them and get their opinions. even helped them fixing some bugs.

    About JDK, If Sun does not make a JDK spesific to FreeBSD, sorry for that, but you are not without options, if you servers are dedicated to server work, Solaris 10 is a better choice than Free BSD IMHO. But i am OS agnostic, so i do not enter OS wars. .Net and and real Platform independency is a BIG joke of course.
    The skills in .Net area rare, but it is not because .Net is new, problem is the mindset. Everybody who makes a toy web site with vizards marks themselves as ".Net developer" nowadays. and no, i believe Java developers are getting better salaries, and jobs.

    My honest suggestion, if you are not using Java actively or following the technologies currently, i think making "where should Java improve" comments is not wise. of course this is your blog, you can write anything you want, but this kind of things may make people not to take you posts serious..

  6. aaa Says:

    Ah, one comment on the surveys: their techniques are so horrible i dont even want to talk about it. they check the extensions of the pages as
    " * ASP.NET - local references to ASP.NET file extensions are found on the front page of the site.
    * Java Servlets - local references to .jhtml, .jsp, .gsp file extensions, or a local url starting "/servlets".

    funny thing is, most java frameworks do not use jhtml, jsp or /servlets stuff. Their extension mechanisms are usually flexible and using "htm, html" is suggested. Webwork , Struts, Spring, tapestry etc all may use different stuff (.action, .do etc. ).

    One last thing, those are web page statistics. Java usage is ten fold more common in real server jobs, not only the web front end.

  7. Brennan Stehling Says:

    aaa,

    It is also possible to use alternative extensions with ASP.NET.

    But this is not a forum for arguments. Go elsewhere if you want a fight. Also, please do not post anonymously in the future. I will not carry on a discussion with you through comments.