The Source for Java Technology Collaboration
User: Password:



Jack Shirazi's Blog

Java and coolness, a discussion

Posted by jacksjpt on September 22, 2004 at 01:04 PM | Comments (14)

In my last newsletter, I laid into those who criticise Java for what I see as simple jealousy. That lead to the following discussion with one of my readers, who I call "B" (I'm the "J" correspondent in the following discussion).

B. I've been a J2EE programmer for 3 years now, and a Java programmer for 6. But, I only use them to pay the bills. Never under any circumstances have I written a personal application in Java. I feel I fall into the category of one who thinks Java is woefully uncool, and knows intimately why.

J. Okay, I've been one for 9 years, and written dozens of personal Java apps. And enjoy it all the time. But let's hear what you have to say.

B Firstly, you said 'In I.T. it seems, only new or unsuccessful niche things are cool'. Well UNIX is still cool... as is C... and they are both older and more popular and more successful than Java. You can't hop online at all these days without using both of those technologies... the same cannot be said about Java.

J. I'd hardly call Thompson and Ritchie's Unix cool. Or BSD. Maybe you mean Linux? Or do you throw in those early ones and the whole of HP/UX, Solaris, RS/UX, to mention but a few? Linux isn't so much cool as a stand against M$.

J. And C is cool? I think you are living in the past. C is a workhorse, but cool? To say that a 35 year old language that is still going is more successful than a 10 year old language that is still going is a truism. And Fortran is even more successful than both on that basis - there is still more scientific computing using Fortran than C or Java. Though my experience is that Java is finally weaning them off Fortran. But I don't understand your point about hopping online. Mosaic and IE were written before Java was released, and all commercial browsers are derivatives of these, so that is hardly surprising. Are you suggesting that if Java is a better language, then everyone should quickly move onto a Java based browser? Why? Technology that works should be used until it no longer works - our industry has a woeful inability to eliminate bugs rapidly, so the older the product the less buggy.

B. Most of the folks I talk to think C is 'cool' (along with BSD), mainly because coding it gives you the bare-metal feel demanded by hard-core programmers. Its not great for consultants, because of the learning curve, and you have to reinvent the wheel sometimes. But Perl and Python can save you there, with even less code than Java.

J. Okay, I guess we'll have to disagree on this one. I just cannot see C or BSD as cool. For "bare-metal" feel, Perl is way nicer, you can hit any sys call in a very flexible way, and it is way more dynamic. I used to do that kind of thing. But nowadays that's real boring. The action for me is a "bare-web" feel. And if you want to hack around the web, Java is perfect.

B. Okay, we'll agree to disagree. Let's move on to your 'J2EE is in a thousand successful commercial applications and cannot be considered acedemic'. But you didn't really address the question there. J2EE is woefully academic - they focus far too much on what is RIGHT, as opposed to what makes sense from a practical standpoint. Alas, the most popular piece of the J2EE framework is JSPs, and almost didn't make it into the spec. Its popular in large part because it is INCORRECT. There is no MVC, barely any seperation of components, its all one big mess. Its the most popular piece of J2EE because its least academic, and most like those horrible ASP/PHP frameworks... and nobody at Sun has bothered to understand why.

J. But JSP is J2EE. And so is JDBC. And JMS. And Servlets. I suspect you mean EJBs when you are talking about academic. But EJB shortcomings are well known in the Java community. Personally I normally recommend not to use them unless you know why you need them. Why tarnish the whole of J2EE because of EJB? You might as well say Linux is a failure because it has fragmented into multiple versions. You can always find things to pick at in anything.

B. Okay, I'll make this point: if J2EE worked as well as other frameworks did, then what would be the purpose of your site? Why on earth would so many people be begging you for performance tuning advice, or tips and tricks for avoiding J2EE pitfalls?

J. You've got this backwards. Java made my site possible because there are so many tools for Java and capabilities in the JVM. Kirk and I made the site a success by working damn hard. There are plenty of other tuning sites for different things - like linux, just about every database, C, C++, and much more. When I was researching for my book, I gathered together a whole list of C tuning stuff - and found half a dozen books with one or more chapters on tuning C programs. And I found many C programmers bemoaning that lack of tuning information available for C. I just wasn't interested in writing a 'C tuning' book. There isn't a language that doesn't need tuning, because of human programmer inefficiencies, and because of the number of possible contention points in any complex program - especially concurrent request handling distributed applications.

B. Let's move back to the core gripe. I like Java... I just dont like the direction its been heading for the past 3 years, and I dont think it has much of a future. And I'm not alone. Half the Java programmers I know feel the same way... the rest either dont know any other languages better, or have faith that eventually Sun will make things work well.

J. Chuckle. Well I guess I'm betting my career that you are wrong. I'm sure there are better things than Java. But not at the moment, at least nothing mainstream is in my opinion - not C, C++, C#, VB, Perl, PHP, Delphi, Python, SQL, Javascript. Which are the next 10 most popular languages nowadays. Of these, Perl is nice, and I still use it for lots of things. But back when I was a full time Perl programmer, we tried to build large scale projects with Perl and found it impossible, the stuff was just unmaintainable no matter how rigorously you tried to follow a set of coding standards. A 7,000 class project in Perl would never be feasible. A 7,000 class project in Java is commonplace.

B. My main gripe is that Java peaked in 'coolness' around about Java 1.1. Since then very little work has been done on the 'guts' of Java, and instead they kept focusing on bigger, more academic, and more bloated features. Java 1.2 added 'Swing', the academically correct yet ultimately useless GUI toolkit. J2EE brought us lots of things very few people need (like EJBs, JNDI, and RMI in general), as well as old concepts from people outside the J2EE group entirely (Servlets, JSPs, JDBC, JMS, etc.) Even today, some of the 'coolest' Java work these days is being done by IBM, not Sun.

J. I think this is called "making it a success".

B. In the minds of hard-core developers, allowing the branching of Java is the only way to ensure it can evolve into a better language. In the minds of consultants and project managers, branching is ALWAYS a nightmare, so it should be stopped. Problem.

J. Again, I guess we'll disagree. I see Linux fracturing as one of its really big problems. It would be significantly more successful if there was one guaranteed version rather than a free for all. And that's exactly the reason Windows beat out the other Unix's - MS guaranteed a single reference point compared to the Unix vendors who fought each other into a lose-lose situation. Saying you support Java branching is the same to me as you saying you want .NET to become the monopoly developer environment.

B. The most insightful comment I saw on this subject was on Slashdot, where somebody said with all sincerity, that Java will be the next COBOL. Not that Java isn't a better language, but it will be what a lot of overly complex business apps will be written in, for better or worse... and they'll always need to be maintained. Good news - you'll probably always be able to find work if your speciality is J2EE.

J. LOL. Everything is the next COBOL. I didn't find that insightful the first time I saw it in the 90's, and you probably saw the millionth incarnation of "X is the next COBOL".

B. When the hard-core programmers stop thinking Java is 'cool', they stop making those so-called niche programs that extend it. And where would you be today without those crazy guys? Without Servlets, without JMS, without JDBC, without JBOSS, without STRUTS, without OSCache, and without Log4J. You should be VERY worried that they are leaving Java in droves, while Sun is tightening its grip... because now you have to rely on Sun alone to save Java.

J. Except there seem to be more and more projects in Java every day. And no, I'm not in the least worried, because I don't see people leaving Java in droves, I see them coming all the time. I guess we just move in very different circles. When Perl was becoming popular and CPAN was being set up in the mid-90's, I was in there helping do some (a very tiny bit mind you) of the core. The excitement was fantastic, and the result was a set of supporting modules which surpassed anything I ever believed possible. More comprehensive and extensive than anything any other language had. And Java has surpassed that as far as I'm concerned. Only recently mind you. But that's not surprising, its only just beginning to mature.

B. "I guess we just move in very different circles.". Bingo... the people you know and trust think Java is 'cool,' whereas the people I know and trust think its 'uncool.' Therefore, I see people leaving in droves, whereas you see people coming. So the question boils down to, which group is more reliable in making that judgement? Probably neither... but I'm still going to rant a bit more.

B. I generally attend O'Reilly conferences, since all the other ones are too full of marketing fluff for my tastes. 5 years ago, people were all excited about Java. I talked with a lot of the guys making Tomcat, and the guys who literally 'wrote the book' on a lot of the killer Java technologies, and J2EE. But recently, the people excited about doing work in Java are few and far between. Most of those guys have moved on to new projects, many of which do not use Java. And even those who do still work with Java criticise Sun and Java regularly because they are too focused on bloat, and not on functionality. A lot of them are closet Python or Objective-C bigots. Its really really rare for me to find somebody excited about using Java. And I also see no 'converts' anymore. Nobody who was using Perl or PHP or C who finds Java and says 'now THATS the way to do it!' It used to happen, but not in the past few years. How about you?

B. Without those crazy hackers (O'Reilly lamely dubbed them 'alpha geeks') thinking Java is cool and extending it... well... I'm concerned that Java will cease being innovative. Because Sun certainly doesn't get it. Maybe being closer to the Java pulse you know about some cool projects that I dont... but Ive been looking... and everything at java-source.net and sourceforge.com is just the same thing over and over. Extensions of old ideas, or ports of applications from other languages. Nothing new...

J. It's those different circles. I see lots of great creative projects hitting exactly the sweet spot for me. Standardized APIs to expert systems, fuzzy logic additions, internet spidering, better data structures, CRM projects, Java games, all the stuff I can use to do the things I want. Again, I guess we'll agree to disagree.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Converting to .Net
    I'm writing this response while reading a book titled "C# for Java Developers". I would have to take the side of "B" on this one.

    Java is cool, but I'm tired of having to learn 5 different ways of doing one thing. Not only playing a guessing game of possible solutions, but once picking a solution, books tell you to wrap the solution up in a facade, adding more complexity to your application.

    That's not to say that patterns are patterns, in any language, but with .Net you are left with the confidence of a strong single leader, Microsoft. Sun and Java, on the other hand, is led by commitee. Smart people are tossing API's out there left and right that are nothing more than ideas-- J2EE for example. Again, I'm left with picking a vendor/solution.

    With Microsoft, things are pretty much set in stone via the tools they provide. This is how .Net handles MVC, this is how .Net handles Database access, this is how .Net cooks a turkey.

    I would feel more confident know that our implementation was written on a single standard versus constantly wondering if we made the right solution of persistent frameworks a month after finishing a project.

    http://hookom.blogspot.com/

    Posted by: jhook on September 22, 2004 at 07:49 PM

  • Converting to .Net
    I am the lead developer for a Java library. I have been considering porting my library to .NET where I may be able to reach more programmers or "customers".

    But lately I've been fearing that porting to .NET could be a waste of time. Do many .NET developers even use third party libraries in their applications? My problem with the .NET "one vendor to rule them all" approach is that it discourages third-party tools like mine to come to the platform!

    Posted by: jessewilson on September 22, 2004 at 08:44 PM

  • Converting to .Net
    but with .Net you are left with the confidence of a strong single leader, Microsoft.

    No offense, but if you feel the need for a "the confidence of a strong single leader" you must not have much confidence in yourself.


    With Microsoft, things are pretty much set in stone via the tools they provide. This is how .Net handles MVC, this is how .Net handles Database access, this is how .Net cooks a turkey.


    That's supposed to be a good thing?

    As far as things being "set in stone", they're only set in stone until MS decides otherwise. I remember a conversation I had around 2000 with a former co-worker who was just getting started as a VB6 programmer. The shop where we had worked together had just ported about 50 16-bit client-server apps from a dead language called "Plexus" to VB6. I left afterward to take a Java development job, while he stayed to maintain and further develop that VB6 codebase. Anyway, when .NET was announced, he asked me if I was worried that it was going to kill Java. I laughed and told him that he should be worried that it was going to kill VB6, because historically, when Microsoft has wanted to build market share for a new product, they've done it by forcing their existing customers toward that product.

    The bottom line is that my friend is still doing VB6 development at the same place, and wondering what he'll do if he ever finds himself out of work, while my Java skills are still as marketable as ever, thanks in part to the fact that Java's future and directions are not subject to the whims of a "strong, single leader."

    Posted by: dglasser on September 23, 2004 at 04:48 AM

  • Forgot Eclipse?
    Nice and informative debate, just 2 remarks:
    Sun's promoted Linux fragmentation myth has little pratical relevance: just look at the j2sdk, it can works on ANY Linux distro.
    Personally, my only reason to use Java is Eclipse. The libraries are a real nightmare (Date..Calendar for example), my programs are even much worst, Eclipse does puts "law and order" into that mess, and enable me to make a living.

    Thanks again for the lively debate.

    Posted by: fgoret on September 23, 2004 at 05:13 AM

  • Converting to .Net
    I think it is a good thing that there is a standard put out by Microsoft with tools to back it up. I don't work for a product vendor, I work in a Fortune 25 company where despite using Java between various locations, we still end up with tons of quirky stuff showing up because Weblogic does it this way while tomcat handles it that way (for example). I don't want to pick Struts or Webwork on our next project then worry about having to bring developers up to speed on whatever new Java tool we pick.

    From a developer standpoint, I'm looking for a common foundation and a toolset to drive future development-- and I am going on 6 years as a Java programmer. I'm presuming it's easier for a programmer to look at a common way the toolset has laid out your application versus playing a guessing game on the layers/service/gimmick architecture a project used with Java. Things like Groovy are counter productive in the professional environment. I really don't care that you can do neat things with for loops if the next Java developer I hire will now have hurdles of entry in maintaining our applications.

    Posted by: jhook on September 23, 2004 at 05:21 AM

  • whining programmers
    I think I know the underlying reason a lot of people are unhappy with Java. B's reasons above are just rationalizations. Unfortunately telling good programmers from bad ones remains difficult, so we are left trying to distinguish ourselves from others by the list of buzzwords on our resumes. Time was Java was the coolest buzzword around. Now it's faded due to its own popularity, and there are a lot of people who are itching to bail out of Java for the next cool thing, and are incredibly frustrated that it's nowhere in sight.

    Posted by: nemakemono on September 23, 2004 at 06:20 AM

  • Converting to .Net
    If right now there is only one way to do something in .NET that is mainly a sign of how new it is. Next year the right way to do that same task may be different. Just look at the history of the right way to do database access "according to Microsoft".

    Similarly Java has many ways to do some things, because better ways have been developed, while the old mechanism still remains for backward compatibility.

    For example, while it is unfortunate that we have both PrintStream and PrintWriter, it is difficult to get rid of PrintStream without significant aggravation.

    Posted by: mthornton on September 23, 2004 at 08:27 AM

  • Converting to .Net --- NOT
    “For every problem there is a solution which is simple, clean and wrong.” - Henry Louis Mencken


    As with anything, ASP.NET provides the pieces to put an application together, however from an Enterprise perspective not necessarily the entire framework. Providing an entire Enterprise framework would mean providing multiple complex frameworks, which would require a great deal of training to learn from the developer using the frameworks, and a great deal of development from Microsoft.

    The following is directly from Microsoft – “An ASP.NET page allows the programmer to implement methods within a page. The single page approach can be useful for prototypes and small short-lived Web applications. As the complexity of the page, or the need to share code between pages, increases, it becomes more useful to separate portions of the code.”

    Without more complex frameworks, like a Struts MVC, .NET is only good for prototyping. 

    Presently, I’m involved in a major application rewrite from .NET to J2EE. .NET is not really suited for the big jobs.

    Posted by: malcolmdavis on September 23, 2004 at 08:27 AM

  • The next big thing is functional
    At least judging by the buzz on everyine's blogs. Java developers have suddendly discovered closures and other neat things from the functional programming world.

    I'd predict O'Caml to be the next big thing. Now if they could only get their license to be DFSG compatible, I'd be very happy :)

    cheers,
    dalibor topic

    Posted by: robilad on September 23, 2004 at 12:52 PM

  • Converting to .Net
    Yes we do.

    The company i'm working for uses both open source (OpenNetCF for mobile development) and commercial (ComponentOne, Janus) librairies. Microsoft isn't great at providing good ui controls so we have to use third party libraires.

    We will also build our applications over an open source framework (CSLA).

    So as you can see we use both MS ans third party stuff.

    but I have to admit that the guys (including myself) who suggested using third party come from a Java background so i can't tell for developers who have only worked with MS products.

    Posted by: jf_gilbert on September 23, 2004 at 12:53 PM

  • Forgot Eclipse?
    Yes. Eclipse is cool!

    There is some cool in the Java world. The greatest contribution Java has made is bringing code sharing to the mainstream. This reduces dev and maintenance time. Apache is cool too!

    People are whinning about Java because developing quick and dirty apps in PHP, Perl or Python is MUCH easier than in Java (I know, cause my Java is much better than my PHP but I'm faster in PHP). This is because dynamic typing is in vogue. People may be getting tired of static typing (though w/ eclipse I feel it a lot less and get the max of the benefits from static typing.. maybe people are still using primitive IDEs??).

    However, whether Python, Ruby, Perl or whatever else, everybody, including Java is just a lame copy of Smalltalk. I say we should update Smalltalk a bit and get the elegance of Smalltalk, the fast dev time of dynamic languages, and the code sharing of Java.

    Of course, I'm a great fan of checked exceptions..... :(

    Posted by: dog on September 23, 2004 at 04:19 PM

  • Converting to .Net
    well said. I've worked for multinationals in the past and there was indeed always a multitude of teams working next to each other on the same platform using often conflicting tools and libraries (this all despite or maybe because (after all we're rebels at heart in this industry) standardisation efforts dictated from far above).

    The large diversity of tools available in the Java world, most of which are either too complex to quickly get up to speed with or too simple to be useful in a realworld environment is probably a big reason why many companies don't go looking at those tools to find whether there's something they can use but prefer to create their own, the selection process taking longer than development...

    I fully agree that Groovy and similar developments are nice from an academic point of view but pretty useless in the real world.
    Generics and autoboxing could help with writing code more quickly, but have dangers as well.

    As to neat things being harmful in that they make code less maintainable to less experienced (with the application or language) programmers, a good programmer can pick such things up quickly.
    If the tools at hand are well thought out and correctly employed there's no reason a neat thing can't yield good code.

    That said, there's a place for Java or people wouldn't use it in increasing numbers.

    Posted by: jwenting on September 24, 2004 at 05:43 AM

  • B sounds more concerned about Sun than about Java
    If I undertand B's concers, the worry is that Sun isn't doing enough to the core language to increase its coolness.

    I personally think that this has helped the Java community make a number of cool things out of Java. The fact that pretty much anything written for jdk1.0 still runs correctly means that programmers can have a fair bit of faith in the future of their cool apps.

    Sun has kept control of the core language -- and I won't even get into the debate over whether or not that is good -- but the best libraries and the best tools are coming from other vendors. Who are some of the biggest names in Java? Apache's Jakarta group, BEA, IBM, and Sun, in no particular order.

    I think B sees Java the language as not having kept up its coolness factor. And that's probably true. Python and Ruby certainly come to mind as cooler languages. But Java has a huge community of developers, of tools, of libraries that is equalled only by those of C/C++, from which Java's simplicity is steadily stealing mind-/market-share.

    I'm afraid that if Java the language were changing as quickly as Python or PHP cores are changing, the community would be much more fragmented, and it would be considerably harder to build large systems in Java. And with Microsoft's "one vendor to rule them" (I like that phrase, Jesse!) on the other side, Java has had to steer a fairly narrow course.

    I'm starting to do some of my personal projects in Ruby and Python, but I don't see either of those as likely to help me earn my bread-and-butte for many years. Java may not be the most hip, but it's still got a lot of people I know excited.

    Posted by: scott_sauyet on September 24, 2004 at 06:12 AM

  • Java next Cobol in line
    I agree with B about Java being the next Cobol :-)). So I decided to pass directly to the parent and find some job requiring me to program in cool langauges.

    ./the_mindstorm

    Read more on:
    programming a cool language or programming to be cool

    Posted by: the_mindstorm on September 27, 2004 at 05:23 AM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds