Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Java Programming IT Technology

Phillip Greenspun: Java == SUV 974

lateralus writes "In his blog, Philip Greenspun re tells of his epiphany that Java is the SUV of programming languages. An interesting point brought forth in his typical extreme style."
This discussion has been archived. No new comments can be posted.

Phillip Greenspun: Java == SUV

Comments Filter:
  • Agreed! (Score:3, Funny)

    by toupsie ( 88295 ) on Monday September 22, 2003 @07:46AM (#7023510) Homepage
    It pollutes the environment and wastes gas...
    • Re:Agreed! (Score:4, Funny)

      by parseexception ( 516727 ) on Monday September 22, 2003 @07:58AM (#7023623) Homepage
      A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl.
      not only that if you have to change direction quickly it will roll over and burst into flames
    • Re:Agreed! (Score:5, Insightful)

      by fshalor ( 133678 ) <fshalor@co[ ]st.net ['mca' in gap]> on Monday September 22, 2003 @08:05AM (#7023684) Homepage Journal
      If gas is CPU power. HP is RAM, etc. It's a pretty accurate discription. Java is an all-terrain vehicle of code (runs on multiple OS's well) which has lotts of flexibility, IE, towinr, storage, passanger space, etc.

      It's not a volvo XC, or auidi quatro. It couldn't possibly hang through a world cross rally with the subaru's and the big "P" dogs.

      I'd call it something like an 4-runner with a stick shift. When you need it, it's there. But... wait a minute. Sun doesn't think linx is worth the disk space anymore... Why am I pushing Java? Perl! It's got to be PERL! :)

      Thank linus for this cup of coffee...
  • JAVA is the suv? (Score:4, Insightful)

    by 192939495969798999 ( 58312 ) <info.devinmoore@com> on Monday September 22, 2003 @07:46AM (#7023514) Homepage Journal
    Well, then I guess we better quit using it or else face huge gasoline deficits! I am sorry, but JAVA and SUV's are so totally different that the comparison is pointless. JAVA may be slightly slower than other languages, but it provides for rapid development and portability that are a developer's dream. JAVA is the developers' programming language.
    • by 192939495969798999 ( 58312 ) <info.devinmoore@com> on Monday September 22, 2003 @07:50AM (#7023543) Homepage Journal
      Let me also state that apparently, according to the article, JAVA is bad because i'd have to move a question mark in a query. Well... if you need a programming lesson, how about not hard-coding SQL strings? If I decompile your great JAVA/.NET /ActiveX component that I downloaded, can I get at all your hard-coded passwords, query strings, etc? If so, I don't think you can blame JAVA.
      • by avdp ( 22065 ) * on Monday September 22, 2003 @08:12AM (#7023741)
        OK, I guess I need a programming lesson then. For a database driven application, how do you propose not to have hardcoded SQL statements? Have the SQL statements looked up in the database or something? And how would you do that without hardcoding statements?

        I am genuinely interested by the way...
        • by 192939495969798999 ( 58312 ) <info.devinmoore@com> on Monday September 22, 2003 @08:18AM (#7023793) Homepage Journal
          I would use an automatic SQL statement generator. Why? Because:
          1) It would prevent people from decompiling my code and just "seeing" exactly how the database is set up. Yes, you could still figure it out, but it would be less obvious.
          2) More importantly, as things change, the queries could easily change with the system without having to go through and change every single instance in hard-coded strings.
          There are easy and hard ways to make an automatic SQL generator: the easy way, as it most always does, would yield a larger, more obfuscated generator, while spending more time in design should yield a more optimized and quick generator. If you want source, hire me. :)
        • by I8TheWorm ( 645702 ) on Monday September 22, 2003 @08:25AM (#7023849) Journal
          Um.. Stored Procedures anyone? LDAP authentication? Connection strings in server side objects? There are TONS of ways to have DB code without stored SQL strings. Plus, you can change SP's without recompiling.
        • by KDan ( 90353 )
          Hibernate [bluemars.net].

          Daniel
        • by SoTuA ( 683507 ) on Monday September 22, 2003 @08:41AM (#7023979)

          Well, I worked at a project with no hardcoded SQL. It was a bitch. It happened because the client would NOT provide ODBC link to the DB. Therefore, we needed a middle server that got "request for X service with Y parameters", looked up in it's own service table what query that was, made it to the DB server, and returned the results in XML.

          The biggest drawback is the fact that the queries are stored in varchar fields in a table. All the queries used by the system (a nationwide chain of gas station managers). So, when you where inserting or modifying a service, you where doing things like "insert into services values ... 'select blah from blah where blah=''... " and you had to start escaping characters like mad. And a missescaped quote would leave LIVE SQL in the SQL command... I saw a case where somebody had a bad escaped ", so the "where" clause was included into the string... he wiped out ALL the functions :o

        • by Ed Avis ( 5917 ) <ed@membled.com> on Monday September 22, 2003 @08:42AM (#7024000) Homepage
          Pray tell what is the problem with hardcoded SQL statements? Why are they any worse than hardcoded C statements or hardcoded Java statements or hardcoded shell scripts?

          SQL is a much higher-level language than C or Java or even Perl. This is why people who talk about 'database abstraction' are usually missing the point. SQL is an abstraction, and a much more expressive one than some object-based mapping full of get_x() and set_x(). But unlike many high-level languages, the extra abstraction of SQL gives you _better_ performance by letting the database optimize your queries for you.
        • by Dr. Bent ( 533421 ) <ben@@@int...com> on Monday September 22, 2003 @09:24AM (#7024380) Homepage
          OK, I guess I need a programming lesson then. For a database driven application, how do you propose not to have hardcoded SQL statements?

          Well you could,

          - Use Java Entity Beans with Container Managed Persistance.
          - Use JDO
          - Use TopLink

          All of the O/R mapping tools automatically generate the SQL queries for you based on your Database Schema. No SQL necessary, hardcoded or otherwise.
      • by JustAnotherReader ( 470464 ) on Monday September 22, 2003 @10:48AM (#7025136)
        If I decompile your great JAVA/.NET /ActiveX component that I downloaded, can I get at all your hard-coded passwords, query strings, etc? If so, I don't think you can blame JAVA.

        Yes it is true that you can easily decompile .class files to get back almost the exact source code (without comments). However it is also true that there are code obfuscators that do a really good job of making it damn near impossible for someone to figure out how the code works. Imagine if you overloaded your methods and classes as much as possible such that 70% of your class names were 'A'. i.e.

        setName(String) becomes a(String)
        setAge(int) becomes a(int)
        getName() becomes a() and
        getAge() becomes b()

        It makes it darn tough to figure out what the code does. And you don't have to write the code in this obfuscated manner, you write it using good code practices and the run the obfuscator on the compiled .class files. The output of that obfuscator is a set of obfuscated code and a mapping file so if you get debug messages like:

        NullPointerException in A.c(int) line 147

        then your mapping file will tell you that "A" was actually your class name "Client" and c(int) is actually "stZipCode(int)". Now you can still debug a customer's error without giving away anything about the code structure to the customer.

        However, the place where Java has been excelling (and where I've made my living for the past 5 of my 15 years in software) is in major web applications where the user doesn't have any access to your compiled code. The combination of Java servlets, talking to Enterprise Java Beans or to a database via JDBC and then outputing the html using Java Server Pages is now pretty much the default way of writing a huge data-centric web site. Pretty much all major banks do their on-line banking web sites this way (this is my area of expertise). This is the technology behind Amazon.com and (I believe) Barnes & Nobel.com as well. If you use Quicken or MS Money to do your bill payments and check your financial statements you're either connecting to CheckFree (Java Based) or to an EEI server (Java based) to transfer all that financial info.

        So is Java fat, bloated and wastefull? Well, how fast is your on-line banking? How fast is Amazon? How fast does your Quicken software work? You'll wait far more because of lag in your web connection than with any kind of slowness with Java.

        So what we have here is some academic geek with a web site on the Harvard Law server telling those of us who actually pay our mortgages writing Java software that we don't know what we're doing. Well, that's fine. When I'm done paying off my house 15 years early (as well as all my car, student loan and credit card payments) and I'm retired debt free at age 50 I'll try not to be too upset that Phil Greenspan's angry little blog said I did it by using the wrong tool.

    • by Anonymous Coward on Monday September 22, 2003 @07:51AM (#7023549)
      You mean, "JAVA is the language of the people who like to call themselves developers."
    • by Anonymous Coward on Monday September 22, 2003 @07:57AM (#7023607)
      JAVA is the developers' programming language.

      With all respect, that's crap. Java is the _managers'_ programming language of choice. It enforces a particular style of programming (right down to naming convontions), it takes a specific programming 'paradigm' (OO) to an unnecessary extreme and it's chock full of trendy buzzwords and BiCapitalised MumboJumbo. Perfect for PHBs.

      JAVA may be slightly slower than other languages,

      Says the Iraqi Information Minister.The fact is that, thanks to it's use of garbage collection and because it stores non-primitives on the heap, Java will always be _significantly_ slower than C/C++, no matter whose JIT you are using.

      This article explains it well. [jelovic.com]
    • Re:JAVA is the suv? (Score:5, Interesting)

      by wegrzyn ( 80917 ) on Monday September 22, 2003 @08:04AM (#7023674)
      I think you miss the point. Before you go back and re-read the article put aside your obvious bias. The problem he was mentioning was that Java is not the right language for every situation. He was stating that you need to understand what you need to perform the job and use the right system. In cases of web-side solutions he is saying perhaps Java is over-kill.

      I've written software in C that has been ported with little effort from one hardware platform to another with less effort than I have seen of many Java applications. I might suggest C is the language of choice for programmers.
      • Re:JAVA is the suv? (Score:4, Interesting)

        by ElGuapoGolf ( 600734 ) on Monday September 22, 2003 @08:47AM (#7024052) Homepage
        Hello World doesn't really count for portability, does it?

        I know with Java I can write an application with DB connectivity and a GUI and have it run on AIX, Windows, and Linux. Without having to change a line of code.

        Now I know it's possible to do this with C (Actually, is it? Is GTK available on AIX? Is GTK any less horrible on Windows than it used to be), but it'd take much more time, and I'd end up with all sorts of conditional code based on OS.

        I might suggest Java is the language of choice for programmers who have jobs to do, need to write tight code, and don't have all the time in the world.
    • Re:JAVA is the suv? (Score:5, Informative)

      by Twylite ( 234238 ) <twylite.crypt@co@za> on Monday September 22, 2003 @08:15AM (#7023767) Homepage

      I've got to agree with this. Reading Greenspun's blog I was left pondering how to start responding to something so completely wrong.

      The article implies a lack of understanding of the JSP paradigm. Sure, binding variables to a relational database is tough. So if you insist on doing that, use JSP tags. But that's not the point of Java -- you should be access instance methods from a JSP page, and those instances can access any data source they choose.

      VB and ASP are intended for developing front-ends to primarily relational data, so they make it pretty easy to accomplish. The fact that they make it easy doesn't mean that you can use the same design and technique to deliver a scalable, maintainable web site. All the current theory says take the pain up front and put in a decent template system, and never put code in your page.

      "People who are serious about getting the job done on time and under budget" will get the requirements first, and not making sweeping bullshit generalisations. There is a huge problem in the industry at the moment with IS departments trying to coalesce the functionality of dozens of specific-purpose VB applications into one enterprise system. The size of the project, requirement for scalability, expected lifetime and regularity of changes, systems integration issues, cost, stability, customer technology preference and other technical and non-technical issues will all influence the choice of a development environment.

      With a dynamic language ... you could do bind variables by having the database interface look at local variables in the caller's environment

      And if you look at development guides and bug reports, you'll find that it is exactly this sort of implementation that has insidious security holes. The security of systems that provide such shortcut functionality depends on the developer understanding how to use the system properly. Unfortunately it is quite often developers who don't have the time or inclination to understand that use these shortcuts.

      With Web applications, nearly all of the engineering happens in the SQL database and the interaction design, which is embedded in the page flow links. None of the extra power of Java is useful when the source of persistence is a relational database management system such as Oracle or SQL Server

      Greenspun seems to believe all "web applications" are Internet (rather than Intranet) applications. Beyond management systems (CMS and document management) I have seem few significant intranet systems that are merely a web interface to a database. Many intranet web applications interface to accounting, stock, POS, banking, quotation and other systems, where integration cannot be accomplished using a database. A Gung Ho "do it all in the web page because its fastest" approach is the quickest route to failure.

      So ASP and PHP have their place, and they're almost certainly easier to understand for a CS senior who isn't interested in reading up on the design principles behind JSP ... but that doesn't make them better.

      • by Hard_Code ( 49548 ) on Monday September 22, 2003 @08:22AM (#7023833)
        The second part of the course he runs (or at least writes the curricula for??) should be to actually MAINTAIN the last class's code. Then he might get an idea why a lot of people prefer Java and servlets (and to a lesser extent JSP) over ad hoc glued together scripts.
    • by PowerPill ( 687850 )
      This is my own opinion drawn from my own experiences. Flames not necessary. =)

      Has anyone ever considered where you might cut costs in one place you might end up losing those gains in another? Like robbing Peter to pay Paul sort of thing.

      Yes I've heard It makes for a rapid devel environment from many a developer/programmer as it facilitates ease of coordination efforts etc. The last company I worked for decided to become a fully accreditted registrar a few years back just in time for the release of the
      • Well, I have only one point to make in response to your comment about your project. In general, a programming language doesn't have anything to do with code maintenance. A well-written C program will be just as easy to maintain as a well-written java program or a well-written php program. However, some programming environments (like java) provide/enforce certain features for organizing code which helps. But in the end, it's up to the developers to write properly organized code, that does the job right.
    • Re:JAVA is the suv? (Score:5, Informative)

      by Ed Avis ( 5917 ) <ed@membled.com> on Monday September 22, 2003 @08:39AM (#7023960) Homepage
      Portability? Oracle ships with three different JVMs because they are all incompatible with each other. That's all you need to know about Java portability.
  • by Anonymous Coward on Monday September 22, 2003 @07:48AM (#7023529)
    Pinto?
  • Finally (Score:4, Interesting)

    by doe ( 64198 ) <edink@php.net> on Monday September 22, 2003 @07:49AM (#7023539)
    A voice of reason. It is refreshing to see a diffrent viewpoint in this time of Java craze. In my own experience (and I work for a web development house) you can cut down time of development by factor 5-10 using a weakly typed scripting language such as PHP.
    • Re:Finally (Score:4, Funny)

      by Anonymous Coward on Monday September 22, 2003 @07:53AM (#7023578)
      I've been writing web applications since the late 70s (initially for the NSA before we made it public) and in my experience Java has a lot of inherent faults that render it useless for large scope projects.

      It's cross-platform feature has been tainted by the agenda of the forces that dominate the respective operating system (BeOS, Windows, OS/2, Mac OS, and AIX). That is a pity since Sun had done such a phenomenal job in releasing the first public Java release back in 1985 which at the time would run on Commodore 128 and my Amstrad PC. About a year later they released a IBM PC version but unfortunately it required 256k of memory which made it dificult to deploy at the time.

      • Re:Finally (Score:5, Informative)

        by Bob9113 ( 14996 ) on Monday September 22, 2003 @09:06AM (#7024218) Homepage
        OK, it's just a joke, but I'm interested in countering one point that some people still believe.

        It's cross-platform feature has been tainted by the agenda of the forces that dominate the respective operating system

        I am currently employed on a project with roughly one megaLOC of Java. It has a Swing GUI, EJB middle tier, and Oracle at the back. It currently runs on Windows, several flavors of Linux, and Solaris, without recompile. I do the production builds on a Linux machine and we distribute them to roughly 2000 Windows and a few dozen Linux workstations. Likewise I do the production middle tier on Linux and deploy to Solaris, and the development and testing versions of the middle tier go to Windows, Linux, and Solaris.

        Would it fit on a wristwatch? No, it's too big. Would it run on BeOS or Mac? You betcha.
    • Re:Finally (Score:5, Insightful)

      by gilgongo ( 57446 ) on Monday September 22, 2003 @07:59AM (#7023635) Homepage Journal
      If you'd said "I work for a web development house that used to produce everyting using J2EE, then we discovered PHP..." I'd be more interested in what you had to say about the merits of PHP over Java. Let me guess - you also can't undertand why anyone would use Oracle when MySQL is so easy and fast, yes?

      It's all about horses for courses.

      There is an "overhead" in Java, because it's not designed for quick-n-dirty deployment of something trivial. Getting the whole J2EE thing together to deliver a mail form is obviously going to take you 5 times longer in Java than it will in, say, perl or PHP.

      But that's obvious, isn't it?

      • Re:Finally (Score:5, Insightful)

        by Hard_Code ( 49548 ) on Monday September 22, 2003 @08:10AM (#7023724)
        Yeah, but "how long will it take" and how expensive will it be when they figure out that the lack of application-level persistence and database pooling absolutely shred their scalability, and they have to convert to JSP/Servlets/JDBC to get decent scalability? "OMIGOD I GOT IT TO WORK ON MY DESKTOP IN HALF THE TIME OF JAVA IT IS SOO MUCH BETTER I'M GOING FOR SOME ICE CREAM BYE"
    • Re:Finally (Score:5, Insightful)

      by (trb001) ( 224998 ) on Monday September 22, 2003 @08:18AM (#7023796) Homepage
      Java is absolutely horrid for web applications when compared to php/perl. I recently had to compose a website in jsp and thought I'd rather shoot myself...the JVM went down constantly (it was shared, what did we expect?), the code was bloated and we had serious heap issues.

      Now, I use Java on my prime contract (large contract for the SEC) and it's a blessing...interoperable over both our platforms (Solaris/NT), works great with the CORBA base we have, we can patch stuff in easily and bounce our processes to reload individual components, etc.

      Java was never meant to be used as a scripting language...it got adapted as such because of the Java zealots. It was designed to be a high level, cross platform, portable language. Any other application of it is as silly as putting Linux on your toaster...sure you could do it, but it's not the most efficient solution.

      --trb
      • Re:Finally (Score:5, Interesting)

        by Lordrashmi ( 167121 ) on Monday September 22, 2003 @08:34AM (#7023913)
        JSP sucks....

        However, I currently am working to migrate our PHP web application to Java and it is going well. I am using Servlets + FreeMarker templates. Using a template system allows me to change some of the presentation details without recompiling and Servlets prevent me from killing myself because of the giant nasty hack that is JSP...

        Yes, I might seem bitter but I can see no real reason to use JSP. The only argument I can get from anyone on for it is "You don't have to recompile and deploy it". That was a good point before application servers accepted changes on the fly to the code. Now I just recompile the one servlet and Tomcat reloads it. Simple...
        • JSP is OK (Score:4, Insightful)

          by Baki ( 72515 ) on Monday September 22, 2003 @09:28AM (#7024420)
          You can use JSP just like a template engine as well, if you want. Sun calls this JSP "model 2", i.e. use servlets for control, and only use JSP for the "view" just like any other template engine.

          It has one advantage (I tried freemarker etc too), which purists might find a disadvantage: sometimes you can "sin" and use a tiny little bit of Java code on your JSP. Also most template engines have some built in logic for if/else or some even have some simple loop structures. Why learn yet another language (even if simple) when you can also use Java. Just restrict yourself and confine your JSP-java to the simplest possible use. It works well and is a practicle solution, while still giving a clean MVC structrure (which template engines try to force on you).

          • Re:JSP is OK (Score:3, Interesting)

            by Lordrashmi ( 167121 )
            I guess I shouldn't have been so zealous in my hatred of JSP. I am by no means a purist. Hell, I was primarily a PHP programmer. My hatred for JSP comes from seeing the horrible nasty code that the so called "java experts" in another programming group at my company write. I guess I should remeber that even evil things (JSP, .NET, Broccoli) can be used for good.
      • Re:Finally (Score:3, Insightful)

        by cca93014 ( 466820 )
        Firstly, yes, Java was never meant to be a scripting language.

        Secondly, if you are building large web applications with a scripting language then you are not doing it right. I do not believe you came up to an overhead problem in Java and not PHP. Java outperforms PHP, period.

        Actually I think you are talking bullshit.
    • Re:Finally (Score:5, Insightful)

      by Moraelin ( 679338 ) on Monday September 22, 2003 @10:19AM (#7024874) Journal
      Let me educate you on a point that you seem to completely miss. (And lots of people with lack of real life experience in large projects miss.) That is: the difference between prototyping and actually making a robust, scalable and (most importantly) maintainable product.

      A prototype is something quick and dirty that just has to look right. Unfortunately, many people mistake it for the real thing. They claim to have written the program when they barely have a prototype.

      Sure, it sorta works now, but it's piss-poorly documented and a nightmare to maintain. It's also already bursting at the seams, so when (not if) the requirements grow any larger, it'll be a flipping disaster. As the monster grows, it quickly becomes far more expensive to change anything in that spaghetti code mixture of logic, presentation and hard-coded values, than it would be to throw it all out the window and start again.

      I've had the mis-fortune of having to maintain a project which had been thrown together by unskilled monkeys in PHP. Guess what? It was a fscking disaster.

      One problem was precisely PHP's weak typing. Sure, it's neat if all you've ever made are small simple sites, but past a point it becomes a liability.

      After having went through several maintenance and change cycles, obviously the programmers of that application had obviously lost track of when something is supposed to be a string and when it's supposed to be a value. The fact that in PHP if (x == 0) is true when x is "", or for that matter when X equals "OTHER", didn't help either.

      In a strongly typed language, this just means gracefully getting a compile error, which is solved in 1 minute. In PHP it was just that the program sometimes mysteriously malfunctioned, even though most of the time it worked right. What would have been a few minutes of debugging in Java, was several days of debugging in PHP, on top of the cost of corrupted production data.

      And that was only one of the many problems that that large application had. (A second one was the exact same mistake in reverse: if (x == "") is true when x = 0.)

      Basically every single attempt they had made at reusing code was littered with this kind of mistakes. It was like it was the poster program for Murphy's Law: If it was possible to pass the wrong data type in a parameter, somewhere they had actually done so. And that weak typing just let them shoot themselves in the foot without any warning.

      So you know what? I'm sick and tired of these blogging monkeys, making judgements they're simply not qualified to make. Just because any unskilled burger-flipper could quickly throw together a 3 page site in PHP, doesn't mean they have _any_ clue how to make a complex enterprise system, that can also be maintained and extended later.

  • by skaffen42 ( 579313 ) on Monday September 22, 2003 @07:51AM (#7023553)
    OK, I've heard Java called a lot of things and I know it has its faults, but I really don't think the SUV comparison holds water.

    Nobody ever started using Java because they wanted to compensate for a small penis, which is the only possible reason for buying an Hummer.

    • Missed points (Score:3, Interesting)

      by Marc2k ( 221814 )
      If you don't get why it's an SUV, then you didn't read the article.

      The point is that most programmers use Java because of its premise of programmatic power. While the metaphor may not stretch to every use of Java, Greenspun talks particularly about WebApps in general, and JSPs in particular. His only point was that while Java *is* powerful, for a low or mid-end Web application system, most of the engineering has to do with designing the database correctly, and integrating everything tightly. Perl and PHP a
  • by BWJones ( 18351 ) on Monday September 22, 2003 @07:52AM (#7023566) Homepage Journal
    Jeez, the server is slow already with only one comment. You'd think Harvard could afford a little better given the current tuition.

    At any rate, from the article: "People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome)."

    This is all fine and good, but the machines that "decoded" the human genome were performing a simple task really and did not require much in the way of alternative paths or any complex programming. For simple tasks or projects, yes VB is pretty handy. For other tasks, or requirements that may need a bit more complex programming, VB will not cut it.

  • Whatever dude. (Score:5, Insightful)

    by botzi ( 673768 ) on Monday September 22, 2003 @07:52AM (#7023567)
    A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl


    This guys is a troll. With all my respect, he doesn't bring any actual arguments with the exception of how difficult binding variables is. Should I also add that he's looking only in a matter of web based project's depending on a SQL-type DB????
    Oh and last:


    take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl..


    Java has never been intended to substitute scripting languages. Of course a project done with PHP and/or Perl will go much faster!!! Both are able to execute almost eveyrthing you throw at them, but you may say exactly the same thing about C++ and PHP/Perl and it will be evenly unfair.
    PS: And this said from a C++ zealot;oP

    • Re:Whatever dude. (Score:5, Insightful)

      by B'Trey ( 111263 ) on Monday September 22, 2003 @08:19AM (#7023803)
      Well, yes. That's exactly the point. An SUV isn't a useless machine. For certain circumstances, it's the perfect vehicle. But it isn't the perfect vehicle for running back and forth to the corner store, and Java isn't the ideal language for scripting web pages. The whole point of camparing Java to an SUV is that both are powerful pieces of equipment all too often used for trivial tasks.

      And you can't say the same thing about C++ because, at least last time I checked, there weren't very many web pages being written in C++.
      • Re:Whatever dude. (Score:3, Insightful)

        by yomahz ( 35486 )
        But it isn't the perfect vehicle for running back and forth to the corner store, and Java isn't the ideal language for scripting web pages.

        That's the thing... most people who develop dynamic websites are developing rather simple applications that are fine for scripting languages such as Perl or PHP.

        That really doesn't mean that Java doesn't have it's place as a Web/HTML/XML language. When you start to develop Enterprise level webapps you'll soon start finding yourself with a bunch of spaghetti code to ma
    • In about 1997, Phil Greenspun wrote in his How to be a Web Whore Just like Me [greenspun.com] book in Chapter 8 [greenspun.com]:
      "You should learn Java. I predict that it will gradually supplant C over the next ten years. Java is going to be big. You heard it here first."

      In this particular post, he is not saying that Java is not ever useful or practical. He merely states that people who develop in Java are often using a tool that is not especially suited to the task -- that it's not always the right tool for the job. This is exactly li
    • by abe ferlman ( 205607 ) <bgtrio.yahoo@com> on Monday September 22, 2003 @10:40AM (#7025067) Homepage Journal
      You want to know what I really think happened?

      Someone at Harvard wanted to load test their server configuration, so they turned to Phil and said "can you post some flame bait and then get it posted to Slashdot for us?"

      So you see he's not a troll, just a resourceful engineer :)

  • by mnmn ( 145599 ) on Monday September 22, 2003 @07:52AM (#7023568) Homepage
    Where ANSI C is the jeep of them all. C++ is a two-door which looks nicer but is slightly less useful. C can be used and abused by anyone anywhere and will obviously outlast Java, but anyone with money to throw and show off (at the cost of wasting enormous resources) will get the SUV. Smaller programmers here and there (not smaller in importance) will use the bicycle which would be Perl. For now, I'll just take a walk (BASIC)
  • by Steve G Swine ( 49788 ) on Monday September 22, 2003 @07:54AM (#7023584) Journal
    SUV's start up instantly!
  • by weave ( 48069 ) on Monday September 22, 2003 @07:54AM (#7023586) Journal
    Let's see, I can't read the article because it's slashdoted already, let me take a stab...

    Weave's rushed tongue-in-cheek SUV vs JAVA comparison:

    • Very successful, can't sell enough of them. Nope
    • Crushes the competition (anything that gets in the way). Nope
    • Able to crash in spectacular ways if not handled correctly. Maybe
    • Bloated, overkill. Yes
    • Wastes resources. Yes
    • Preferred by men with small penises. Yes
    • Can put everything including the kitchen sink into one. Yes
    • Is seldom used to do all of that. Yes
    • Promoted by using annoying advertising. Yes
  • Java's Cover (Score:5, Interesting)

    by nthomas ( 10354 ) on Monday September 22, 2003 @07:56AM (#7023599)
    The blog seems to be down, but in case anyone was interested in a similar story:

    Paul Graham [paulgraham.com] (of Bayesian filtering [paulgraham.com] and Lisp [paulgraham.com] fame) wrote an excellent article called Java's Cover. [paulgraham.com]

    It is about why he thinks Java is bad technology -- despite never having used the language. Very interesting read.

    Thomas

    • Re:Java's Cover (Score:5, Interesting)

      by Avumede ( 111087 ) on Monday September 22, 2003 @08:43AM (#7024008) Homepage
      Graham's article is a load of crap. Not having any factual information to say, his arguments against it are:

      1) It's bad because it's energetically hyped. Unlike Lisp, where no one uses it because everyone is too busy posting on comp.lang.lisp about how wondeful a language it is?

      2) It's aimed low. Gosling has already called bullshit [java.net] on this argument.

      3) It has ulterior motives. So what?

      4) No one loves it? Well, those of us who used to use C++ appreciate it a hell of a lot.

      5) People are forced to use it. Wrong. Countless companies choose it because it is an appropriate technology.

      6) It has too many cooks. I find this a huge advantage to Java. It means their API's very well thought out. It's why Java is nicely internationalizable, for one.

      7) It's bureaucratic. Their API's are no more verbose than many languages. Any "bureacracy" that exists is to promote flexibilty.

      8) It's pseudo-hip. Like quoting Paul Graham.

      9) It's designed for large organizations. True, because large organizations have to do somethign more complicated then the typical perl script can handle. His arguments here are debunked by Gosling in my previous link.

      10) The wrong people like it. That is, Paul Graham's friends don't like it, people Paul Graham doesn't know like it! What an argument!

      11) Its daddy is in a pinch. I fail to see how this is relevant.

      12) The DoD likes it. The DoD also likes the internet, they were one of the first government agencies to really take to it. Does that say something bad about the internet now?

      Comparing Java to Lisp or (ugh) Perl is a joke. Well, I think perl is very ugly and counter-intuitive, so let's take Python as an example. If I were to make a simple website, i'd use Python instead of Java. If I were to do a hacker type of activity, something that may not be around 3 years from now, I'd use Python. Or even Lisp if it was something just for me. They'd be wise choices. However, for an enterprise app? Java is an excellent choice.
      • I've been at this programming thing long enough to know that everything Graham said is completely correct.

        In fact, strong typing is stupid. If you want to treat a byte as a char in one statement and as a bit vector in the next you shouldn't have to beg the computer to let you do exactly what it does on its own. (Study the bit structure of ASCII sometime, and you'll understand.)
  • Thank You (Score:4, Funny)

    by JamesP ( 688957 ) on Monday September 22, 2003 @07:57AM (#7023609)
    Someone spoke for that overbloated thing that is Java.

    Sun really beat M$ in THAT game. If you want to do anything in Java you need a hundred classes, calling a million methods and passing them several times.

    PHP and ASP are much more simple.

    Java joined the complexity of the Windows API with the speed of an interpreted language, along with some bitches as strong-typing, millions of similar classes.

    PHP
    cut(bread)

    ASP
    bread.cut();

    Java
    knifeh = new KnifeHandle
    knifeb = new KnifeBlade
    k = new Knife
    k.Attach(knifeh)
    k.Attach(knifeb)

    _try()
    { bread(k.cut)
    }
    catch (Outch)
    {
    dial.dialnumber(911);
    }

    • Re:Thank You (Score:5, Insightful)

      by rjstanford ( 69735 ) on Monday September 22, 2003 @08:43AM (#7024015) Homepage Journal
      Of course, while your example is an exaggeration, there is some truth to it. Then again, in the (remote but nonzero) possibility that you did cut yourself:

      ASP would randomly write some data into weird places, and put up a pretty page telling the world that it had a problem...

      PHP would just return a plain, white page saying, "PHP: Warning: could not un-recut in /usr/human/hand/finger on line 29371"

      and Java would call 911 for you.

      Right tool, right job. If you don't need complete production stability for a moderate webapp with a short lifetime, by all means use PHP. For a production control system, I'd pick Java.

      -Richard
    • For providing examples of invalid syntax in PHP, ASP, and java!
  • by hethatishere ( 674234 ) on Monday September 22, 2003 @07:58AM (#7023625)
    Just a thought from a friendly MIT student.
    • Ummm... RTFA? (Score:5, Insightful)

      by sporkboy ( 22212 ) on Monday September 22, 2003 @08:06AM (#7023696) Homepage
      JSP is fantastically simpler than "J2EE", which is the recommended-by-Sun way of building applications, but still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience in 6.170.


      Apparently he's lamenting MIT students' inability to program in Java, and blaming the technology rather than the users. He also doesn't seem to be writing about Java at all, but rather JSP pages with "pages of" Java embedded which is horrible form, but typical of students in my experience. Ok enough trolling.
  • by Hard_Code ( 49548 ) on Monday September 22, 2003 @08:01AM (#7023646)
    Phillip Greenspun == Hot air balloon of programming pundits
  • by Anonymous Coward on Monday September 22, 2003 @08:01AM (#7023648)
    ...must be the Humvee.

    True story: I was working for a startup in 1992 that needed to get a product to market in record time with minimal resources. The product was not a piece of software, but a simple Windows utility was needed to control it.

    The utility was not very large and manipulated only very small amounts of data, but it needed to be easy to use, reliable, and look and feel like a good "commercial-quality" Windows application. The total number of hoped-for installations was to be in the low two digits.

    I chose VB as the development system, which at that time was almost brand-new, to implement the software. I got it done in time--about nine months. It was a beautiful candidate for rapid application development. During the development, we added many features and change the UI many times in response to user testing and management requests.

    It worked well. I am not aware of any problems with it, with respect to performance or UI, other than a rather slow startup time (about 30 seconds on the hardware of the day--which was an 80386SX running at, IIRC, 33 MHz).

    I left the company, the company was bought by a new set of VC's, they hired a new software developer (who was absolutely first-rate).

    The VC's insisted that the software be rewritten in C++.

    There's no real punchline, because after two years of work the new developer succeeded in converting the program, and adding some new features (relating to minor changes in hardware capabilities). Neither I, nor the programmer, nor anyone at the company was aware of any real gains from the recoding, other than the ego satisfaction of knowing that they were using a "professional" programming language.

    In my next few job searches, the hiring manager looking at the part of the resume where I described this work experience skipped over the "successfully completed on time" part and focussed on the "Visual Basic" part. It seemed as if the appearance of VB on a resume practically erased all my experience with other languages.

    Of course, PERL and friends, being associated with the academic and UNIX communities, don't have quite the same aroma to them.

    Nevertheless, I was very struck with the amount of damage to one's career that one can do by doing topnotch work, but using the "wrong" programming language in which to do it.

    • by shamilton ( 619422 ) on Monday September 22, 2003 @08:42AM (#7023994)
      Of course, PERL and friends, being associated with the academic and UNIX communities, don't have quite the same aroma to them.

      True, but Perl is hardly the Unix analogue to Visual Basic. Visual Basic is very easy to learn and use, so "VB Jedi" doesn't have much weight. VB exists to make complete applications rapidly. On the other hand, Perl's strength is in text processing.

      A function to reverse the order of the words in a sentence is a single line of Perl, but could be a hundred lines of C or VB.

      A program to display a form with two text boxes, and display the sum of the numbers in those two boxes, would take seconds to write in VB, but hours in Perl or C.

      A program to perform a numerical simulation would take about the same time to write in all three, but the Perl script would run considerably slower than the C or VB program.

      I do believe Borland Delphi has a considerable edge over Visual Basic. No runtime libraries, and the language (Object Pascal) is as featureful as C++. To remain topical, I don't think there's any reason to ever use Java, save programmer-masochism.

      Choose your tools wisely.

  • by SuperBanana ( 662181 ) on Monday September 22, 2003 @08:09AM (#7023721)

    Java, n.
    The Philosopher's Stone of the alchemists, the Second Coming of Christ, the Maltese Falcon, and the fourth Star Wars movie, all rolled into one. A technology for developing programs that will run on any platform, and crash in a different way on all of them. A mighty acorn that grew from a tiny Oak. An idea whose time has come, leaving General Magic to sleep on the wet spot.
    -Godling's Glossary

  • i'm sorry but.. (Score:3, Informative)

    by gl4ss ( 559668 ) on Monday September 22, 2003 @08:11AM (#7023732) Homepage Journal
    **Our students this semester in 6.171, Software Engineering for Internet Applications have divided themselves into roughly three groups. One third has chosen to use Microsoft .NET, building pages in C#/ASP.NET connecting to SQL Server. One third has chosen to use scripting languages such as PHP connecting to PostgreSQL and sometimes Oracle. The final third, which seems to be struggling the most, is using Java Server Pages (JSP) with Oracle on Linux. JSP is fantastically simpler than "J2EE", which is the recommended-by-Sun way of building applications, but still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience in 6.170.**

    but they should be able to do them in all three of the choices they had, or was the course subtitled: "gaining profiency in one of 3 systems for doing one kind of a web project"?

    and jsp is simpler than j2ee? jsp is part of j2ee, heres a clip from somewhere

    ***"What Is JSP?

    JavaServer Pages (JSP) is a Sun Microsystems specification for combining Java with HTML to provide dynamic content for Web pages. When you create dynamic content, JSPs are more convenient to write than HTTP servlets because they allow you to embed Java code directly into your HTML pages, in contrast with HTTP servlets, in which you embed HTML inside Java code. JSP is part of the Java 2 Enterprise Edition (J2EE).

    JSP enables you to separate the dynamic content of a Web page from its presentation. It caters to two different types of developers: HTML developers, who are responsible for the graphical design of the page, and Java developers, who handle the development of software to create the dynamic content.

    Because JSP is part of the J2EE standard, you can deploy JSPs on a variety of platforms, including WebLogic Server. In addition, third-party vendors and application developers can provide JavaBean components and define custom JSP tags that can be referenced from a JSP page to provide dynamic content.

    "***

    and are we a little generic here (from greenspun)**A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome).**

    that's nice, what kind of a 'project' is this project in this? the whole point in using java in projects like this is that you can reuse the code in other parts straight(heck, make a game for a java phone, then use the _same_ compiled classes on the server to determine if the uploaded scores are legit that you use for game engine on the j2me device). sure there's other points as well, like not tying yourself to microsoft(though, that is a point for php as well).

    and really, people who use visual basic for big projects don't except to live long.. or be taken seriously on slashdot. surely you can do it seemingly cheaper when anyone can do it(but if mit produces people who aren't able to learn any language that suits the job best in reasonable time i've kinda lost my respect for them).
  • by Junks Jerzey ( 54586 ) on Monday September 22, 2003 @08:12AM (#7023740)
    They require lots of power, and the capabilities provided by that power consumption aren't needed by 99% of the people who buy them. That' pretty much describes SUVs.

    If the auto market were like the PC market, though, then you wouldn't be able to buy anything except a SUV.
  • Wow (Score:3, Insightful)

    by Hard_Code ( 49548 ) on Monday September 22, 2003 @08:12AM (#7023749)
    "Supposedly this situation has been improved in JDBC 3.0 but this example of Java's inferiority to C interfaces from 20 years earlier should remind you to be skeptical of vendor claims for the advantages of new languages and development tools."

    Wow! You're right! I guess because Java has a minor annoyance that supposed to be fixed in the next release of that specific API, that the whole language and libraries are worthless and we should all go back to C for everything! How brilliant! I will never trust Sun again when they say "Java is a revolutionary new language whose main feature is that you do not have to set variables in PreparedStatements by ordinal value! We are basing our whole language on this!" Big fat liars. :(
  • by surfsalot ( 15319 ) <ramanujon@nosPAM.gmail.com> on Monday September 22, 2003 @08:14AM (#7023765) Homepage
    including the author of the blog. Java is great for what it is supposed to be used for. Yes, managed improperly its a great scapegoat for developers who have no clue whats going on. Managed properly (I say managed as in development code, concept usage, and production) it can be a valuable tool. Its quick to develop larger scale applications in, it provides a fairly uniform method of creating documentation, a framework so that others can understand whats going on, and (once again) when used properly is sufficiently fast for most all applications. The problem that comes about is the same problem with all new technology aimed at the business market... its not designed for a /single/ user. Its designed for a business, and what makes the most sense for that market. If I want to do something, yes, I'm going to do it in a scripting language. If someone else wants me to work on a team, share code, resources, and not be tied to a proprietary platform / application base, then yes, I'm going to write something in java. Thats the difference that everyone is missing, its not for me and you, its for a company. Swing and Awt suck, but the world doesnt revolve around gui applets. Java is great for server side applications that require stability (bug tracking is easy... its either there and you fix it, or its sun/ibm's fault and you wait or work around it). I wouldnt compare it to an suv, but maybe more of a bus: Its not /really/ small, it doesnt go /really/ fast, but if you have a lot of people that all need to get to the same place, and they need to get there as quickly / cheaply as possible, then it does the trick.
  • by node159 ( 636992 ) on Monday September 22, 2003 @08:15AM (#7023775)
    I'd have to agree, having expensive coding experience in both java and php, and having had to maintain both a JSP based HR program/portal (with NO comments, took me nearly 2 years to comment the entire thing, some people should be put down for the survival of the species me thinks), and a php portal that really stretched php to the max (can anybody say multiple persistent processes that can communicate with each other written in php), I'd have to say that java is good for:
    Server cross platform apps
    Server cross platform apps
    Server cross platform apps

    Its slow as fuck (all that crap about JIT optimization looks good on paper, but its CRAP), bloatware, and just generally unfriendly to use. Java is one of those, looks good on paper, but fails in implementation. One nice thing to say about it is that it is a very clean programming language, very nice to code in (I'm forgetting about the explicit exception handeling of course).

    PHP on the other hand knows its job, and it does it exceptionally well, and if you don't like it you can always extend it.

    Nuf said, php for web stuff, java for server apps.
  • by tgreiner ( 107912 ) on Monday September 22, 2003 @08:16AM (#7023777) Homepage
    What this guy describes is called a JSP "type 1" application. It (ab-)uses the JSP's ability to embed Java code directly into the JSP page (which is typical for languages like PHP). Doing this is a BAD idea.

    You will typically
    • use Java beans or some other utiliy classes to encapsulate data base or business logic access (type 2)
    • use a Java tag library like Jakarta struts to provide you with an application framework and common used tags (logic tags, bean access etc.) (type 3)


    I tend to agree with his problems with JDBC being quite cumbersome to use. This is why one will typically use data access Java beans which encapsulate data access. Also there are several object-relational mapping frameworks (e.g. CastorJDO) which will even isolate you from SQL and database details completely.

    I would even tend to agree with him on terms of how quickly one can hack some web application. One will be faster with a scripting language like PHP, but when it comes to extending/maintaining a JSP type 2/3 application will win.
  • by Jugalator ( 259273 ) on Monday September 22, 2003 @08:18AM (#7023792) Journal
    IMHO...
    • Visual Basic [kellamknives.com] -- is a comment really necessary?
    • Java [silveragent.com] -- does what it's supposed to do
    • C# [promountainsports.com] -- tries to be more advanced than Java, and is, but is rather similar in the end...
    • C / C++ [freeserve.co.uk] -- now we're getting somewhere... does the job efficiently, but be sure you can handle it
    • Assembler [churchfarm.org.uk] -- it's cool, it's efficient, it's deadly if handled wrong
  • Discredited (Score:5, Insightful)

    by dnoyeb ( 547705 ) on Monday September 22, 2003 @08:18AM (#7023795) Homepage Journal
    From the blog

    "A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome). "

    He suggests that Visual Basic is better than Java. I will refrain from comment, the quote speaks for itself.
    • Re:Discredited (Score:5, Insightful)

      by Pfhreakaz0id ( 82141 ) on Monday September 22, 2003 @09:47AM (#7024572)
      VB IS better than Java, for any application with a UI that doesn't need to run anywhere besides Windows.

      That fact is unasailable. It will run faster, and can be written in a fraction of the time by a VB developer who has a clue at all.
      • Re:Discredited (Score:3, Interesting)

        VB needs too much server, and it doesn't run well on any server except a windows server, which causes it's own problems.

        Faster? Maybe against Java running on windows, under IIS. Faster to code? Could be. Point and Drool is hard to beat...for time.
    • He suggests that Visual Basic is better than Java. I will refrain from comment, the quote speaks for itself.

      Rootbeer's Corollary to Godwin's Law:

      On Slashdot, the terms "Visual Basic" and "Hitler" shall be interchangeable.

  • by Get Behind the Mule ( 61986 ) on Monday September 22, 2003 @08:21AM (#7023820)
    This missive contains a few blaring warning signs of a guy who has not learned best practices for Java programming, and indeed is very naive about the needs of enterprise software development.

    • He seems to equate Web application programming with programming JSP scripts. In fact, he doesn't seem to draw much of a distinction between JSP and everything else that Java encompasses.
    • In the context of Web application programming, he declares: "Mostly what you get with Java are reams of repetitive declarations at the top of every script so that the relevant code for serving a page is buried several screens down." The rationale for this statement is nowhere to be found, and it's anybody's guess what in the world he's talking about.
    • The only concrete complaint he brings up has to do with the way you assign values to bind variables in a prepared SQL statement in JDBC. Again, this is in the context of Web applications, which he conflates with JSPs (he talks about "script variables"). But first of all, one of the very first best practices anybody learns is that you don't include raw Java code in JSP scripts: instead, use actions, directives and custom tags to lay out the script like HTML, and delegate all programming to proper Java classes. Or better yet, use a framework like Struts. And second, a guy who dismisses JDBC altogether because of syntactical construct he dislikes, without considering all of the other benefits that it provides, is probably completely naive about the needs of DB programming for the enterprise.
    • He says: "People who are serious about getting the job done on time and under budget will use tools such as Visual Basic." No further comment necessary.
    • Also: "If a programmer is attacking a truly difficult problem he or she will generally have to use a language with systems programming and dynamic type extension capability, such as Lisp." Again, no further comment, except to note that no one, I mean no one in business computing considers using Lisp. (Now some smartass Slashdotter will come along and triumphantly cite some obscure exception, which only confirms the rule.) This to me is a sure sign of a guy stuck in academia.
    • Of JSP he says, "... still it seems to be too complex for seniors and graduate students in the MIT computer science program, despite the fact that they all had at least one semester of Java experience ..." I expect that seniors and grads at MIT are very smart, but good software engineering discipline usually requires years to learn, even by the smartest cookies. To expect it after one semester is another clear sign of enormous naivete.


    Plenty of legitimate criticisms can be formulated against Java, JSP and JDBC, but I think we can safely ignore what this guy has to say about it.
    • Who do you think keeps Franz [franz.com] and Digitool [digitool.com] in business? Hobbyists? I don't think so; they'd be using one of the free implementations. [lisp.org] Your "no one in business computing considers using Lisp" comment shows you don't know what you're talking about.

      I myself use Scheme [schemers.org] in my employment, and it's helped a lot.

    • by 11223 ( 201561 ) on Monday September 22, 2003 @09:11AM (#7024261)
      Again, no further comment, except to note that no one, I mean
      no one in business computing considers using Lisp.
      Your ignorance is astounding. No, I'm not going to cite some obscure example. Instead I'm going to point you at the Franz "Success Stories" site at http://www.franz.com/success/ [franz.com]. Read through all the categories. Then realize these are just the people who thought it worth $10k to use Franz's Allegro Common Lisp. Also see all the applications that Xanalys [xanalys.com] develops with their LispWorks product.

      AMD also uses GNU Common Lisp and ACL2 internally, though they can't reveal any specifics - this is of course the problem with a language that's suited well for the research and development part of the product phase. Who wants to give away what they're doing just to advertise that they're using Lisp?

      Of course, if you wanted pretty pictures and "yet another database web interface", try the Stargreen site [stargreen.com]. But you won't find a lot of people using Lisp on those, for the simple reason that most of that work is cut and paste from a previous project.

  • Ummm??? (Score:3, Funny)

    by ayjay29 ( 144994 ) on Monday September 22, 2003 @08:23AM (#7023838)
    How can "Java == SUV". it does not support operator overloads?

    Maybe Java.equals (SUV).

  • by acomj ( 20611 ) on Monday September 22, 2003 @08:41AM (#7023981) Homepage
    Java can be platform independent because it includes a very larg class library structure.

    C also have a large library that is provided by the OS that you #include. C++ has the STL and some other libraries

    I believe thats why java feel awkward to a lot of programmers not familiar with its class libraries who want to use c system calls or shell calls to get the job done. The java folks created this because cross platform compatability is hard without this.

    However the argument that java is significantly slower than c is pretty much moot. For test and XML processing its almost right there, and significantly easier to write code. All the extra data structures and types allow coders to use more efficent structures easily, usually resulting in faster code. (Similar to the way Perl coders can write blindly fast code easily using the built in Hash functions)

    I'm not saying Java is better than everything else, just use the right tool for the job your doing.

  • by *weasel ( 174362 ) on Monday September 22, 2003 @08:59AM (#7024164)
    ... But the more I read, the more I code, the more I continue to learn and experience in the sfotware development industry - The more I begin to begrudgingly admit that the man is right more times than not. And I hate being wrong, so it's not like I'm particularly pleased with this turn of events.

    To the contrary, it seems that it was -I- who was wrong by way of arrogance and hubris. I'd developed dozens of web apps, I'd been on teams designing and developing enterprise, corporate and consumer apps - I thought he was just full of it. What'd he know?

    But as I started working with junior developers more, planning and managing projects more, rewriting inherited projects years after designing their previous incarnations - I started to see an eerie parallel to what the man had said.

    Even if you still think yourself the ultimate programmer, incapable of mistake or misstep, impervious to making a bad design the first time through a problem - there still comes a time in which you work with developers less talented than yourself, developers less experienced than yourself. Therein you will painfully learn the wisdom of what tools, truisms, and technologies actually -help- make successful projects, and which just hinder.

    I still find him to be an arrogant, pompous, ass; but what wise-ass hacker isn't? It's our calling card.
  • Background (Score:4, Interesting)

    by Ed Avis ( 5917 ) <ed@membled.com> on Monday September 22, 2003 @09:08AM (#7024233) Homepage
    It might be helpful (for those who don't know) to learn a bit about the ArsDigita experience with Java. aD was philg's old company and developed a toolkit (the ACS) based on Tcl and Oracle. The software was a bit kludgy in many ways but had the advantage of being fairly scalable and written close to the database, so you could tune the queries and generally figure out what was going on. The lack of typechecking in Tcl didn't matter too much because SQL queries and stored procedure calls are checked at compilation - and besides, if you keep the edit-test cycle down to under a second you can quickly find bugs.

    The rewrite of the system in Java, based on using database abstractions and (would you believe) HTML abstractions was a complete crock [membled.com] and ended up being not only slower than the Tcl/SQL version, but less maintainable and much more buggy. I think they got something out of it in the end, after dropping 90% of the extra complexity and object-oriented-itis, but there's no way Java plus an object-relational mapping layer was the right implementation language.

    OpenACS and Java [openacs.org] makes a similar argument to philg's, but more coherently and less trollishly. I agree with his essential points however. And what he writes is based on experience, both with managing a web development company and with teaching students.
  • by Headius ( 5562 ) on Monday September 22, 2003 @09:09AM (#7024249) Homepage Journal
    No language is without flaws. In C, the golden boy among die-hard geeks, you spend as much time managing memory and pointers as you do creating application logic. C++ saves many of those problems while introducing new pseudo-OO constructs that have peculiar and arcane rules governing their use. C# opts to provide far too many keywords for nearly identical behaviors and then renames half of them to look "new". Perl is terribly powerful, but can become obfuscated and impossible to maintain if used most efficiently. VB glosses over so many basic programming principles that its users waste time and CPU cycles re-reinventing the wheel. I can't say I know what's wrong with many others because I haven't used them, but no language is perfect.

    That said, Java has terrific benefits and some deadly flaws. JSPs, for one, are a mess. Embedding code for even such simple tasks as displaying dynamic fields is error-prone and difficult to maintain. Add to that the fact that so many JSP developers leave reams of business code in the JSPs themselves, and the hackish nature of JSP comes to light. This is not, however, a simple Java problem, and it plagues any similar templating languages. I have seen some ASP pages that were phenomenally large. Bad practice is bad practice, irregardless of where it occurs.

    Java also suffers, as many know, from serious memory issues. In the rush to provide a single language platform for applications across all aspects of software engineering, Java tries to do too much in too many places. Java can be embedded inside phones for small Internet clients and video games, or loaded onto the largest servers for massive Java-based enterprise integration applications. It does both of those things exceedingly well, providing powerful abstractions at both micro and macro levels. The grey area in the middle is where most people stumble. Drawing the line between "enterprise" and "standard" code libraries is very difficult, and many "enterprise" features remain in the "standard" version of Java, adding to the bloat. What's worse, only within the last couple years has the question of memory consumption begun to be addressed in earnest by Sun engineers. There are many lights ahead, however, be it the improved base memory handling in Java 1.5, or the eventual integration of Apple's VM-sharing innovations into the Sun Java proper.

    Java being staticly type has other problematic side-effects; namely, as data and systems outside an application change or as the application as a whole needs to grow and adapt to new requirements, single small changes in a few classes can explode into massive alterations throughout the system. Again, much of this can be mitigated with rigid adherence to preferred OO practices. If those practices are not enough, there are a number of freely-available APIs and libraries to allow for more dynamicity and looser coupling between tiers, almost certainly easing these upward transitions.

    At the end of the day, any software development group wants the tool that gets the job done. No project I've ever been associated with chose Java because of market hype or buzzword psychosis. They chose Java because it presented the most complete set of enterprise service abstractions in a single platform, without needing vast amounts of glue code to aggregate them into a single, homogeneous enterprise application. I have also never been on a Java project that failed, although many stumbled along the way. Java is not market-successful simply because it is hyped, or because it is trendy, or because I say so. It is successful because it provides developers more tools in a single toolbox than other comparable languages.
  • by Dr. Bent ( 533421 ) <ben@@@int...com> on Monday September 22, 2003 @09:12AM (#7024273) Homepage
    JSP is fantastically simpler than "J2EE", which is the recommended-by-Sun way of building applications

    JSP is a component of J2EE. [sun.com] Here's a tip: When you have an "epiphany" about the nature of something, it ususally helps to have at least a basic understanding of whatever the hell it is you're talking about.
  • by theolein ( 316044 ) on Monday September 22, 2003 @09:31AM (#7024442) Journal
    As someone who used an overly complex PHP "application server" for a project that was screaming "decent seperation of logic and presentation" I think the guy is on some nice drug.

    PHP is fine for smaller applications. It is an utter desaster for large applications that need maintenance and the ability to be coded by many inidividuals. Every bit of templating done in PHP has to be done by hand or you have to have intimate understanding of the code for the "application server".

    JSP allows you to use Java's strengths in that the logic can be done in servlets, beans etc and implemented as one line JSP tags. It's overhead heavy for small projects but excellent for larger ones where you will still be able to figure out what the code does if the original developer left or got fired. This is similar to ASP.Net I imagine.

    His comparisons say nothing about the scope of the students applications or the tools used. Anyone doing a whole application in JSP is going to suffer, and this is because JSP is not meant for this, and a comparison of JSP and PHP on this basis alone will make PHP seem better than it is.

    As someone else mentioned: Use the right tool for the job.
  • by Stu Charlton ( 1311 ) on Monday September 22, 2003 @09:40AM (#7024513) Homepage
    While I think Phil exagerrates the cost of a Java solution over a scripting based solution, he does hit the nail on the head with Java's dearth of support for named bind-variables and flexible SQL support.

    This is more cultural than technological. SQLJ has been available for years and handles bind variables in the same way that C does. But nobody uses it.

    There's a tremendous distaste for SQL databases in the Java community. A major component of the Java community seems to have evolved out of the OO purist / Smalltalk view of things that view relational databases as an abomination to be avoided, or at least wrapped and hidden with an object-relational mapping layer. This is due to many varied reasons: dealing with objects alone is very empowering, and becoming an expert at SQL and relations is a discipline unto itself that many Java developers choose not to undertake.

    If one DID actually try to learn the technology behind SQL and databases like Oracle, they'd discover a tremendously powerful engine for storing and retrieving data, that doesn't necessarily require elaborate model-view-controller architectures for good maintainability.

    Simple web applications can be written with packages of stored procedures and a minimal data binding framework to JSP pages in a snap. In fact, this seems to be the approach ASP.NET and ADO.NET has been taking. Apple's WebObjects took this approach too, though with an object/relational mapper underneath (and "Fetch Specifications" instead of , or in support of, stored procedures).

    Struts was the first real stab at a good data binding framework for JSP and is wonderful, but generally wasn't dynamic enough until the introduction of the DynaBean.

    In summary, I think Java can definitely achieve the productivity levels of PHP and Perl, but the default recommendations from Sun are not the approaches that lead to these levels of productivity. I would suggest that the learning curve in Java might be higher to achieve this productivity, but it certainly is possible.

    But I also think that the Java-based techniques do tend to favour a certain level of modularity that PHP and Perl and traditional VB/ASP based approaches do not favour out of the box, thus leading to a very unmaintainable approach. I think the Java community over compensated with "too much" modularity, but there are signs this is calming down.

  • by flakac ( 307921 ) on Monday September 22, 2003 @09:45AM (#7024560)
    I develop regularly in C/C++ (Unix and Windows), Java (J2EE), and PHP, and can't really agree with the author's contentions. J2EE is much superior to PHP for serious web applications -- the students mentioned in the article would have been much happier using WebLogic or jBoss instead of than Oracle.

    Of the three, C/C++ is obviously not well suited for developing web-based applications.

    PHP is quick and easy, but it suffers from a lack of vision -- it was never designed, and the authors don't really seem to know what they want to do or where they want to go with it (don't even get me started on how it's supposed to be "Object-oriented" now...). IMO, it's much easier to make a mistake in PHP, and code is much less maintainable than equivalent JSP pages -- just try switching from MySQL to Oracle, and you'll see what I mean. I shudder whenever I hear the words PHP and enterprise in the same sentence.
  • by shemnon ( 77367 ) on Monday September 22, 2003 @09:59AM (#7024694) Journal
    Ahh, the good old ==. We are talking about Java, and instance of something, and an SUV, a tpye label assigned to various other isntances. The headling won't compile, you need to say Java == SUV.class but that's not quite right either. So what the headline should say is...

    Java instanceof SUV

    We'll ignore the bad naming conventions, specifically it should be a lowercase J. Dont forget also that Java instanceof 3GL and Java instanceof OO.

    My favorit happens to be Java instanceof ToyLanguage. The difference between men and boys? The size of their toys!
  • by pgreenspun ( 64424 ) on Monday September 22, 2003 @12:51PM (#7026207) Homepage
    Thanks, guys, for giving the Sun E450 (philip.greenspun.com shares that 5-year-old machine with photo.net) and Harvard's little blog server a workout.

    Don't assume from my posting that I'm in any personal hurry to learn VB and PHP! But having so many bright young people in 6.171 gives one a fun opportunity to take a high-level look at the programming tools of the moment.

    What would I personally prefer to use? The same thing that I would have wanted to use 10 years ago: Common Lisp, CLOS, plus an ML-like type inferencing compiler/error checker. I find this preference, shameful, however, and try to keep it concealed from young people.

    Just yesterday I ran into a friend. She's a 23-year-old graduate student in computer science at Harvard. Conversation rolled around to programming tools. Unprompted she said "What I think would be best is Common Lisp Object Systemw with a modern type system". I was stunned. I thought it was only dinosaurs like me that clung to Lisp.

    I had a second ephiphany for the week... Believing that Lisp circa 1982 plus some mid-1980s ML tricks thrown in is better than all of the new programming tools (C#, Java) that have been built since then is sort of like being a Holocaust denier.

One good suit is worth a thousand resumes.

Working...