Slashdot Mirror


Phillip Greenspun: Java == SUV

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."

974 comments

  1. Agreed! by toupsie · · Score: 3, Funny

    It pollutes the environment and wastes gas...

    --
    Strange women lying in ponds distributing swords is no basis for a system of government.
    1. Re:Agreed! by Anonymous Coward · · Score: 0

      what are you talking about offtopic? it is the bumperstickers people put on (other peoples) SUV's

    2. Re:Agreed! by parseexception · · Score: 4, Funny

      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

      --
      Yeah, I saw a yard gnome once, it didn't scare me - Space Ghost
    3. Re:Agreed! by fshalor · · Score: 4, Insightful

      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...

      --
      -=fshalor ::this post not spellchecked. move along::
    4. Re:Agreed! by flu1d · · Score: 1, Insightful

      it pollutes the environment and wastes gas... and has a tendancy to roll over and crash more than any other vehicle.

    5. Re:Agreed! by Hard_Code · · Score: 1, Interesting

      Maybe Java is an SUV because it is actually used OFF ROAD in the REAL WORLD, instead of rinky dink academic exercises. OMIGOD MY RADIO HAS BUTTONS INSTEAD OF DIALS THIS WHOLE CAR IS WORTHLESS!

      --

      It's 10 PM. Do you know if you're un-American?
    6. Re:Agreed! by AndyElf · · Score: 1

      Well, one thing you have to aknowledge that for change philg is not pushing Tcl as scripting solution. You *do* know what he thinks (used to?) about Perl, don't you? :)

      --

      --AP
    7. Re:Agreed! by Anonymous Coward · · Score: 1

      No one uses an SUV OFF ROAD in the REAL WORLD, kid. People who need to go off road use a real off road vehicle, not some rinky-dink soccer mom peice of shit SUV.

    8. Re:Agreed! by KDan · · Score: 1

      Spoken like someone who's never had to maintain a large PHP project...

      Daniel

      --
      Carpe Diem
    9. Re:Agreed! by KDan · · Score: 1

      That's what I'm doing right now, for a project several orders of magnitudes larger than projects which php could not handle in the long run.

      Daniel

      --
      Carpe Diem
    10. Re:Agreed! by shokk · · Score: 0, Redundant

      It pollutes the environment and wastes gas...



      Agreed! Somewhere people are buying faster processors solely for the purpose of making their Java app run right. Is it a lot...it is surely more than zero. Faster systems = more power = more wasted energy = more wasted $$$. That electricity for powering that bloated run time environment comes from burning something somewhere in the world. Somewhere a Saudi prince is smiling.


      --
      "Beware of he who would deny you access to information, for in his heart, he dreams himself your master."
    11. Re:Agreed! by Anonymous Coward · · Score: 0

      of course,because perl is the visual basic of the open source world...

    12. Re:Agreed! by Anonymous Coward · · Score: 0

      WTF? Both the parent and its parent say the exact same thing only with the different programming languages and only the parent gets modded down. You're all a bunch of prententious cocks spewing out bullshit.

    13. Re:Agreed! by Anonymous Coward · · Score: 0
      ...discription... lotts... towinr... passanger... auidi quatro... linx... Thank linus for this cup of coffee...

      Dude, you need to put that cup of coffee down.

    14. Re:Agreed! by Anonymous Coward · · Score: 2, Insightful

      Java is an all-terrain vehicle of code (runs on multiple OS's well) which has lotts of flexibility

      Yes, but there's a key difference between Java and an SUV:

      When people use Java, it's usually because they NEED (or want) to run on multiple OS's or need/want that flexibility.

      With SUV's, on the other hand, how many people who buy SUV's actually go offroad with them? Hardly any. They buy all that offroad power, and then drive on the damn road. Most of the SUVs you see in the parking lots are immaculately clean.

    15. Re:Agreed! by KDan · · Score: 1

      Maybe because one of the statements makes sense and the other one doesn't...?

      Daniel

      --
      Carpe Diem
    16. Re:Agreed! by sketerpot · · Score: 0

      I hear that with certain VMs, with certain applications, Java can sometimes be faster than the equivalent app written in C. I haven't been able to verify this, though, and it always seems to me like Java is dead slow.

    17. Re:Agreed! by Illbay · · Score: 0, Offtopic
      I just want you commie pinko fagots to know that I own TWO Ford Expeditions each with the BIG V-8, and I drive 'em EVERY FRIGGIN' DAY!!!!

      Thanks, I really needed to get that off my chest.

      --
      Any technology distinguishable from magic is insufficiently advanced.
    18. Re:Agreed! by kardar · · Score: 1

      If my CPU and my RAM and my system in general were a pickup truck, java would be a very heavy load. I suppose that if you wrote a Java application and programmed it so that is uses more than one CPU, and then stuck it on a 64-way ultrasparc, you would be rocking and rolling. These kinds of machines are all about having a heavy load.

      But on the computers of mere mortals, with our Athlons and Pentiums, it's a heavier load (comparatively speaking).

    19. Re:Agreed! by achacha · · Score: 1

      You must be quite skilled to drive BOTH of them...

    20. Re:Agreed! by BSD+Yoda · · Score: 1
      With SUV's, on the other hand, how many people who buy SUV's actually go offroad with them? Hardly any. They buy all that offroad power, and then drive on the damn road. Most of the SUVs you see in the parking lots are immaculately clean.

      How many people who buy Porsche 911's actually drive 175MPH? None where I live. Just because a vehicle *can* do something doesn't mean you're legally obligated to do it. I drive a Ford Expedition because: (1)I used to drive an F-series pickup (which is what the Expedition/Navigator basically is underneath), (2) I had kids and would sooner stick a fork in my eye than drive a minivan, and (3) because I feel like it.

      Question: Why do all the hippie tree-huggers bitch about people who have SUVs and don't drive offroad, yet bitch even LOUDER when someone DOES drive offroad that they're destroying the ecosystem and are accelerating the hand-of-god-coming-to-sweep-us-of-the-face-of-the- earth process?

    21. Re:Agreed! by Anonymous Coward · · Score: 0

      So you don't drive a minivan because you're a pretentious cock concerned with what other people think about the car you drive. You are a sad sad little pretentious cock...

    22. Re:Agreed! by GunFodder · · Score: 1

      I'm glad someone is willing to stick up for the rights of Americans to spend >$30000 on a pickup truck that gets 12 MPG so they can look cool.

    23. Re:Agreed! by SageMusings · · Score: 1

      I am not at all convinced that most SUV's are capable of doing much of anything off-road. By and large, they appear engineered for glitz and show, nothing more.

      --
      -- Posted from my parent's basement
    24. Re:Agreed! by t0ny · · Score: 1

      My Java programmed financed a terrorist school in the Philipines!

      --

      Manipulate the moderator system! Mod someone as "overrated" today.

    25. Re:Agreed! by Doctor+Memory · · Score: 1

      How many people who buy Porsche 911's actually drive 175MPH?

      It's not about driving 175. It's about taking an off-ramp marked 25 at 75 and then wondering where that Mustang that was following you went...

      --
      Just junk food for thought...
    26. Re:Agreed! by BSD+Yoda · · Score: 1

      So is Brittney Spears, and...wait, I was going to make a point about something....

    27. Re:Agreed! by BSD+Yoda · · Score: 1
      Actually, I've put a different exhaust and a supercharger on mine because I was disappointed with the acceleration. It now goes 0-60 in about 7 seconds, but alas, it gets well under 10MPG. I'll stick up for your right to do the same....

      Oh, and yes, I look very cool.

    28. Re:Agreed! by BSD+Yoda · · Score: 1

      I was pretty clear that I could not care less what people think of the car I drive, should be obvious since my choice is relatively unpopular around here.

      I don't like vans, mini or otherwise, so I don't drive one.

      Judging by your AC post, use of profanity, and weak point, I'd say your just frustrated with having to ride back and forth to school in your mother's minivan and you're taking it out on me....

  2. JAVA is the suv? by 192939495969798999 · · Score: 4, Insightful

    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.

    --
    stuff |
    1. Re:JAVA is the suv? by Anonymous Coward · · Score: 4, Funny

      You mean, "JAVA is the language of the people who like to call themselves developers."

    2. Re:JAVA is the suv? by Anonymous Coward · · Score: 1, Insightful

      >Java is the developers' programming language?

      Oh please. Thats ridiculous. Pick the correct tool for the job. At least C++/vi kept out the VBA-like coders from infecting too many systems, lowering the entry barrier and making it easier is not always a good thing....

    3. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      it provides for rapid development and portability that are a developer's dream

      That must explain why we've spent the last week wasting our time with a newly delivered peice of code that refuses to run. It was developed on Apache/Tomcat and we tried to deploy it on Weblogic. Whoops, not so portable after all!

      Whoever wrote the stinking pile of crap wasn't what I'd call "a developer", either. I'd call them something, but certainly not a "developer"

    4. Re:JAVA is the suv? by Anonymous Coward · · Score: 4, Insightful

      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.

    5. Re:JAVA is the suv? by aborchers · · Score: 2, Insightful

      it provides for rapid development and portability that are a developer's dream

      That must explain why we've spent the last week wasting our time with a newly delivered peice of code that refuses to run.


      No, the incompetence of your developer explains that. Just because you can write it in Java doesn't guarantee its portability. Java gives you abstractions that can be used to guarantee portability, but it is a complete language and therefore also gives you, to nick the famous axiom about C, enough rope to shoot yourself in the foot.


      Whoever wrote the stinking pile of crap wasn't what I'd call "a developer", either. I'd call them something, but certainly not a "developer"


      Ah, I see you've come to the same conclusion yourself...
      --
      Trouble making decisions? Just flip for it.
    6. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Ah, C++, home of the mighty buffer overflow and the majestic security hole. Where the incomprehensible code roams across the land of the noncompliant compiler. How do I love thee, C++!

    7. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      The only reason I brought it up is because I'm a little fed up with the oft-quoted meme that "Java is portable! Compile once, run anywhere!", which somehow implies that Java is this magical, completely abstracted wonder language that will solve all your RAD problems in one fell swoop. Of course, it is nothing of the sort.

      As for the developers, well it was outsourced to the cheapest bid. In India. I've worked with some excelent Indian developers before, but these guys must have taught themselves to code on a Speak 'n Spell.

    8. Re:JAVA is the suv? by Anonymous Coward · · Score: 1, Informative

      You're thinking about C, sparky. C++ has STL strings which are immune from buffer overflow.

    9. Re:JAVA is the suv? by wegrzyn · · Score: 5, Interesting

      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.

    10. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Is the euphamism you are looking for "enough rope to hang yourself" or ".. gives us a gun to shoot yourself in the foot"? Your version doesn't make sense and isn't even funny.

    11. Re:JAVA is the suv? by aborchers · · Score: 1
      As for the developers, well it was outsourced to the cheapest bid.


      Yep. That's a big problem, too. I've spent years (as a non-cheap consultant) undoing the messes left by lowest-bid outsourcers. God bless 'em...

      As for "compile once, run anywhere" I'm guessing your program runs, just not correctly? Container hazards are a big problem in Web apps. I've had to take the architectural low road more than once when dealing with proprietary app servers...

      --
      Trouble making decisions? Just flip for it.
    12. Re:JAVA is the suv? by Twylite · · Score: 5, Informative

      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.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    13. Re:JAVA is the suv? by aborchers · · Score: 1
      Is the euphamism you are looking for "enough rope to hang yourself" or ".. gives us a gun to shoot yourself in the foot"? Your version doesn't make sense and isn't even funny.


      It's the title of a book on C/C++ programming by Holub. That you find it neither sensible nor funny suggests you have never used either of those languages...

      --
      Trouble making decisions? Just flip for it.
    14. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Nope, won't run at all. Doesn't even deploy correctly. They couldn't have done it better if they'd written it in ASP for IIS 5.

    15. Re:JAVA is the suv? by Hard_Code · · Score: 5, Insightful

      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.

      --

      It's 10 PM. Do you know if you're un-American?
    16. Re:JAVA is the suv? by hplasm · · Score: 2, Funny

      Ok, then Java isn't an SUV. It's the Econoline/ Transit van of the programming world. Until you get stuck behind it, it's fine...

      --
      ...and he grinned, like a fox eating shit out of a wire brush.
    17. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      There I was thinking you meant it had a clasp lock bolted to the rusty doors and "Clean me" inscribed in the black grim on the windows.

    18. Re:JAVA is the suv? by capnjack41 · · Score: 0, Redundant
      JAVA may be slightly slower than other languages, but it provides for rapid development and portability that are a developer's dream.

      Maybe that's important for some people, but in my case, it's not. My organization uses basically all Linux PCs as servers. Therefore, we don't need cross-platform capabilities; I just want to get the little database app that should be done in 2 hours done in 2 hours. Java has lots of type-checking, etc. that's usually unnecessary for my simple reporting/collection of database data. I'm making the push (in a meeting sometime today, actually) for the whole LAMP thing, instead of Tomcat that we're using now.

      Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on. Just give me a language where I can throw in a little bit of code in the middle of a webpage, in the regular web directory, and be done with it.

      For this stuff I'd really prefer PHP/MySQL (replace PHP or LAMP with whatever else you prefer). Your mileage may vary (har, har).

    19. Re:JAVA is the suv? by PowerPill · · Score: 3, Insightful

      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 .ca registry to CIRA... Devel used Java.

      The decision was based on the idea that the sooner we were up and running the better jump we'd have on the competition. At the time we were the quickest company to ever set up a "registry shop" from the get go. It took us just over 5 months. And it worked. We had an edge over others concerning .ca's. Great...

      But it was an administrators NIGHTMARE to keep the system up and running afterwards. I was always against java for jobs as big as that and well... That experience proved it once and for all for me. It wasn't like the developers were morons either. They were some of the brightest minds I've ever had the pleasure to work along side with.

      So with rapid development aside, does that nullify the expense of deployment and maintaining the end system? I sincerely believe that money could be saved in the long run if (in this case) Java was left well enough alone. Maybe there are some true success stories regarding systems based on Java but I haven't ever witnessed the creation of one myself. But in retrospect, we did get the "jump" though.

      I'm not a developer, just a lowly systems engineer so I can't throw forth many of the virtues of using Java(I use perl/php/shell scripts etc). I won't argue that point as I beleive the good things people say about it(Java).

      But I can truly attest to dealing with it afterwards! All that that experience showed me was that if you need something up and going in a pinch, Java can do that for you. But Quick'n Dirty isn't always the best choice. We could have just as easily used perl instead. Basically I beleive this is something to really consider before making any final decisions.

      Just my 2 cents...

    20. Re:JAVA is the suv? by Ed+Avis · · Score: 4, Informative

      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.

      --
      -- Ed Avis ed@membled.com
    21. Re:JAVA is the suv? by popeyethesailor · · Score: 1

      You mean, somebody actually uses last class' code ?
      Woah !

    22. Re:JAVA is the suv? by pimpybra · · Score: 1

      "Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on. Just give me a language where I can throw in a little bit of code in the middle of a webpage, in the regular web directory, and be done with it."

      Dude are you an idiot? Tomcat is easy as hell to configure. You point it at a directory you want to serve up (in the simplest of setups). Bam you are now serving that entire directory.

      In that directory, you can have JSP's which are files WITH A BIT OF CODE IN THEM IN THE MIDDLE, which compile (after a change) the next time the page is visited.

      Don't complain about Tomcat if you don't know what the fuck you are doing.

    23. Re:JAVA is the suv? by KDan · · Score: 1

      So how is it that so many programs (written in C++ - winblows is C++ I believe) still are chock full of buffer overflows?

      Daniel

      --
      Carpe Diem
    24. Re:JAVA is the suv? by ElGuapoGolf · · Score: 3, Interesting

      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.

    25. Re:JAVA is the suv? by kisrael · · Score: 1

      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.
      Hell, even one Java server to another can be a huge chore. Admittedly, these are usually trying to do complicatedish things, but still.

      I guess I'm not seeing the point of the same byte code running on different platforms as much as I used to...

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    26. Re:JAVA is the suv? by Tirel · · Score: 1
    27. Re:JAVA is the suv? by ElGuapoGolf · · Score: 1

      Yeah, that type checking stuff is really bad.

      Making sure your String is really a String so you don't throw exceptions during runtime is such a bitch.

    28. Re:JAVA is the suv? by KDan · · Score: 0, Offtopic

      You need to buy a sense of humour. Any will do, even a second-hand one from eBay.

      Daniel

      --
      Carpe Diem
    29. Re:JAVA is the suv? by revscat · · Score: 4, Funny

      Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on. Just give me a language where I can throw in a little bit of code in the middle of a webpage, in the regular web directory, and be done with it.

      Boy, what da HELL you talkin 'bout? Looky heah:

      <body>
      <p>
      <% for (int i = 0; i < 100; i++) { %>
      <b>Youz dummer dan a gator on whiskey!</b>
      <% } %>
      </p>

      Now, what so hard 'bout dat? Looks like code t'me! Looks like it's in the middle of a page! Hit it, load it, be done with it. Need t'change a value? Change it, save it, reload it. You all needs t'pull yo cranium outta yo backside, mmmhmm.

      "Gotta keep javac'ing." I declare, that's the DUMBEST thing I done heard all day.

    30. Re:JAVA is the suv? by KDan · · Score: 2, Insightful

      A little database app isn't worth considering Java for. Would you write a trivial .sh file in assembler or C? Didn't think so. Don't write little db apps in java, either.

      For a big, enterprise-class db-driven web application, though, J2EE is a treat (there's a reason why it's called Java 2 Enterprise Edition).

      Daniel

      --
      Carpe Diem
    31. Re:JAVA is the suv? by capnjack41 · · Score: 1
      Ok thanks. I honestly don't really know that much about setting up Tomcat. I'm not the one in charge of the system itself either; they have set standards about how our setup's done, and we have to do it this way (compile, compile), and with no JSP's.

      So I want to get them to change that to a simpler way of doing things; hopefully I can get them to just change over to PHP.

    32. Re:JAVA is the suv? by aled · · Score: 1

      You know that you can have many Java versions installed at the same time, didn't you? no? Oh...

      --

      "I think this line is mostly filler"
    33. Re:JAVA is the suv? by aled · · Score: 1

      I just unzipped the tomcat distribution in windows, linux and as/400. Only problem was to change two lines in the startup.sh script in as/400. Runs out the box.
      You may need a little more to customize settings but other than having to tweak a little with the mod_jk2 settings in apache it work as is. (not a programming problem, the documentation of mod_jk2 still isn't clear).

      --

      "I think this line is mostly filler"
    34. Re:JAVA is the suv? by eglamkowski · · Score: 1

      Rapid development?
      *faints*

      C with a good set of libraries is a gajillion times faster. I find Java to be painfully slow by comparison.

      But at the end of the day, it's almost certainly just whatever your most comfortable with. I've done more C/C++ then anything else, so that's what I'm fastest with. You've probably done more Java then anything else, so that's what you're fastest with.

      Portability, however, can be quite another matter...

      Then again, it depends on what you're developing for. I've never been in a situation where portability was an issue, except between various versions of Windows. And that's doesn't really count :-p

      --
      Government IS the problem.
    35. Re:JAVA is the suv? by gbjbaanb · · Score: 1

      believe you me, its probably easier to 'maintain' a set of glued togetehr scripts than it is for JSP/Java/well, any language actually.

      there's no guarantee that the students will write good code no matter what language they use. Sure, they are more likely to write hacked-together crap in a script language, but usually that's fine - need changes - rewrite it, that's what the underpaid hacker who does these things will do anyway.

      Probably the reason people prefer java and servlets is more to with experience with those languages, or religious reasons. In a company, you'll find that the language used is nearly always what the company dictates.

      Maintaining the last class' code is a fantastic idea though - teach them kids *why* you should write properly in the first place. hehehe.

    36. Re:JAVA is the suv? by Mr.+Shiny+And+New · · Score: 2, Insightful

      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.

      I've seen java products that succeeded and java products that failed, and it's not usually Java that decides the difference. However, I have noticed that programs written quickly, in order to get to market faster, usually suffer from having too many corners cut in the design and implementation. These affect long-term maintainability more than the choice of the language.

      Java can help you get to market faster (than, say, C) by eliminating certain kinds of bugs, like memory bugs, and by providing a set of tools (like the Java class libraries) to help you write business code. But in the end, the programmers are responsible for writing the code you have to maintain.

    37. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      lol u r dumb

    38. Re:JAVA is the suv? by hackstraw · · Score: 1
      The problem he was mentioning was that Java is not the right language for every situation.

      By looking around, it seems like SUVs are, in many people's eyes, the right car for every situation.

      Regarding C. I like it. I think Larry Wall puts it best:
      "If you want to program in C, program in C. It's a nice language. I use it occasionally... :-)"
      --Lary Wall
    39. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Python is much better for rapid development. Java is the Lowest Common Denominator...everyone knows it, everyone can write it and it's easy...so everybody uses it...so I have to use it.

      Hey, I don't have to learn pointer arithmetic! Hey, I just have to figure out the fastest way to manipulate Strings by reading a few books and write some timer loops to see what the @#%$% VM is doing to my code, then repeat when I move to another platform with a different VM implementation!

      Java IS the SUV...in fact, it's the Ford Excursion with ONE FREAKIN' PERSON DRIVING IT IN THE CARPOOL LANE.

    40. Re:JAVA is the suv? by DollyTheSheep · · Score: 1
      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.

      Have you ever looked out for machine-compiled Java code? I know of atleast two virtual machines/Java compilers, that do that: AICAS and PERC. They also feature incremental garbage collection and other goodies, wich reduce memory and startup time and make things really fast.

    41. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      (there's a reason why it's called Java 2 Enterprise Edition)

      Yeah, they needed to fill their buzzword quota.

    42. Re:JAVA is the suv? by NeXS · · Score: 1

      enough insults... I AM a developper, I started programming at 12 in basic on C64, continued at 14 in Turbo Pascal, at 15 in Assembly, at 16 in C/assembly, at 19 I was continuing with C++ / C and teaching C++ to my university teachers... I got my job at Alcatel at 22 as a software Engineer and worked for 4 years onto big expert systems written in Lisp OO (CLOS)... Now, I'm working onto other expert systems in north America. Those systems are written in C/ C++ AND java... I work 80% of my time in Java, 20% in C++... I'm sorry to say : if you only know C++, YOU are the "crap programmer", not me... The real programmer knows when it is time to do his job in C++, when it is time to do it in PERL, in PHP, and when it is time to forget all the past and go ahead with JAVA like languages... You like C++ ? I like it too... But stop saying Java programmers are "crap"... I've seen a lot more good modeled programs in Java that I've saw in C/C++...

    43. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Windows is written in C#, or at least WinXP is.

    44. Re:JAVA is the suv? by arkanes · · Score: 1

      I don't know why you think that GTK is the only cross platform toolkit, because it's about the crappiest one (no, GTK on Windows isn't any less horrible), but good ones make cross platform programming a breeze. C++ rather than C tends to be the language of choice. I prefer wxWindows, but theres a number of others, including Qt, FLTK, and FOX.

    45. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      the fact is that, thanks to it's use of garbage collection

      Let me guess: you never call free or destroy objects, Mr. Memory Leak.

      Hint: allocated memory has to be deallocated SOMETIME, and the deallocation does take time, no matter whether it's being done manually or automatically.

      I agree that a poorly-written or old-fashioned garbage collector can be PERCEIVED as slow, because the deallocation all happens in one big lump, but that doesn't mean that the overall runtime is necessarily that much more. With a good modern garbage collector, the overhead and pause time is minimal.

    46. Re:JAVA is the suv? by PierceLabs · · Score: 1

      Uh, no. WinXP is not written in C#. The framework for XP existed long before C# was even in a condition to be made available. Longhorn may end up being C# based (and would explain all of the delays), but C# would have been too young to form the framework for XP.

    47. Re:JAVA is the suv? by tuffy · · Score: 1
      "Gotta keep javac'ing." I declare, that's the DUMBEST thing I done heard all day.

      The day is young. Perhaps SCO will put out another press release and reclaim the title.

      --

      Ita erat quando hic adveni.

    48. Re:JAVA is the suv? by Anonymous Coward · · Score: 0
      Because programmers (people) make mistakes.

      Now it's my turn: how is it that Java runs slower and uses more memory? Is it because of human error too, or is it for more fundamental reasons?

    49. Re:JAVA is the suv? by StillNeedMoreCoffee · · Score: 1

      Well that is not so much an indictment of Java as it is of the contain technologies that are not standard. The language itself is highly portable but the various containers do like to lock you in with features and libraries. The various servlet engines too do not have a standard for configuration. It is those not the Java part that are causing you problems. That is one reason while we wrote our own.. well ok we wrote it before J2EE was out, and we only have problems with configurations, when we move to new envirionments.

      KISS is a good pattern to follow.

    50. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Java will always be _significantly_ slower than C/C+

      Yes, but nobody cares about speed anymore, at least for 90% of applications out there, speed is not an issue. A few games require it but even this may change in the future.

      And the alternate is a language that is easier to program, less stressful, requires less lines of code etc.. all good things and things i'd rather have than speed.

      Why do you think nobody is making programming languages like C/C++ anymore?

    51. Re:JAVA is the suv? by StillNeedMoreCoffee · · Score: 2, Insightful

      "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."

      So whats your point?

      If you are writting low level nose to the cpu clock code, then you use a prettied up assembler language alike C or C features of C++. If you are writting time critical applications (short time to customer) then you are writting in a highter level language, or in C++ using the OOP features. If you are using the OOP features in C++ then the proformance is comparable.

      But at the end of the day, if you have a memory leak or if you have to go back and actually maintain or evolve your code over time (them most common business situation) then a clearer language and easier to change environment is where you want to be.

      If you asked me if I wanted to reverse engineer someone else's code to modify it, and one case was a C or a C++ program and a Java program. Well no contest. I have a chance of getting home on the weekend if it is a Java program. The other and lets burn the late night oil just to understand it.

      Sometimes conventions pay off big time.

    52. Re:JAVA is the suv? by ElGuapoGolf · · Score: 1

      Actually, I *do* like QT.

      But, having said that, and I can't believe I'm saying this... Java is free. I know QT and believe WxWindows have some sort of licensing costs. I'm not sure about the last 2, but I'd bet they're not quite as rich as the first 2, and even... Swing.

    53. Re:JAVA is the suv? by Mr.+McGibby · · Score: 1

      I agree that a poorly-written or old-fashioned garbage collector can be PERCEIVED as slow, because the deallocation all happens in one big lump, but that doesn't mean that the overall runtime is necessarily that much more.

      Most of the time in a garbage collector isn't spent in system level free() calls. It's spent searching the object store for objects to deallocate. If the GC process isn't a big part of the time used, then why all the research on improving GCs?

      In non-GC lagnuages, memory management is specific to the code being written. In GC languages, memory management is general purpose. 99% of the time, a specific solution is faster than a general purpose one.

      --
      Mad Software: Rantings on Developing So
    54. Re:JAVA is the suv? by Avumede · · Score: 1

      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.

      Actually garbage collection could be faster than manual memory deallocation in many situations. Imagine if you have a program who does lots of activity in bursts. If you deallocate everything as you are done, you may do a bunch of deallocation in the bursts, whereas garbage collection may wait until it is idle before deallocating. Bingo, improved performance.

      It's sort of like how compiled code can be faster than assembly code. Compiled code can do a bunch of tricks no sane human would do with assembly code (especially if one wants to code assembly for readability).

    55. Re:JAVA is the suv? by Anonymous+Brave+Guy · · Score: 1
      Maintaining the last class' code is a fantastic idea though - teach them kids *why* you should write properly in the first place. hehehe.

      You're [pinky] $1mil evil, but I'm [pinky] $1bil evil.

      I'd make them maintain the code the guy next to them wrote last class.

      }:-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    56. Re:JAVA is the suv? by arkanes · · Score: 1
      wxWindows is free (it's license is similiar to the LGPL). I'm not 100% sure about the others I mentioned, but most of the mature toolkits are LGPL or something similiar. Qt is a notable exception.

      Seriously - give wxWindows a look. It's very mature, it's free, it's heavily developed and well supported, and it's just fun to work with.

    57. Re:JAVA is the suv? by sdcharle · · Score: 1

      Sounds like you know when to hold them, when to fold them, when to walk away AND when to run.

    58. Re:JAVA is the suv? by ElGuapoGolf · · Score: 1

      Correct me if I'm wrong, but isn't wxWindows just a widget kit?

      Part of the appeal of java is, at least for me, the libs that are included. The JDBC is very nice, despite what topic blog poster said about question marks in his PreparedStatements.

    59. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Becuase a large portion of people doing programming these days are complete idiots. Becuase a lot of the code that is written today is in the form of maintenance on code that was written some years ago. Someone responded that it was because programmers are people, implying that they are fallible. While this is true, it is not an excuse when there exist known methods and tools available to essentially eliminate the problem.

    60. Re:JAVA is the suv? by arkanes · · Score: 1
      You could go look, instead of asking:P

      wxWindows is, indeed, a widget lib, but it's also an OS abstraction layer. It includes things like threads, timers, filesystem, and IO classes to minimize the platform specfic code you'll need - it's very possible to write major applications that use no platform specific code whatsoever. There's a couple database libraries, but wxOTL (a wxWindows wrapper around the OTL library) is the one I prefer. It's not as mature as JDMC is, though - wxWindows is mainy used for writing desktop applications (obviously), not server side code.

    61. Re:JAVA is the suv? by leandrod · · Score: 1

      > Many intranet web applications interface to accounting, stock, POS, banking, quotation and other systems, where integration cannot be accomplished using a database.

      Why not?

      This just means you lack a database, but instead has a patchwork of them. This is your problem, perhaps due to reliance on off-the-shelf proprietary apps -- in other words, you don't own your data, but Oracle|MS|SAP|PeopleSoft does.

      This is a sad situation. In a world where people and organisations really owned their data, I'd want mine in a truly relational, perhaps distributed, RDBMS -- not SQL.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    62. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Have you read it? Most of what is contains applies equally well to any language.

    63. Re:JAVA is the suv? by blogboy · · Score: 1

      Totally agree! I develop my JSP and beans on my Mac, test on Windows 2K, then deploy on Linux RedHat. Yeah, it's a little crazy, but try that with ASP or .Net! Sure, it's possible, but pleeeeze! If you're writing web apps for hetergeneous hosting environments then it's gotta be Java.

    64. Re:JAVA is the suv? by ElGuapoGolf · · Score: 1

      I could have looked, but www.wxwindows.com didn't take me where I wanted to go... :)

      Don't get me wrong, I don't think Java is the end all for everything. I'm very fond of QT, have even suffered thru some GTK in the past.

      But Java is pretty mature compared to most other things. JDBC, JavaDoc, Swing.... they're all good. Not to mention, and this is the big one for me, one .jar can run on any machine with a modern VM. Because I need to write stuff that runs on a... variety... of operating systems, that's pretty priceless.

    65. Re:JAVA is the suv? by arkanes · · Score: 1

      Hah, I shoulda double checked. It's www.wxwindows.org, of course. wxWindows won't give you binary compatability, of course. But source compatability is pretty straightforward. Thats good enough for me. And I like my gui with the native look & feel, without the ass-like slowness of Swing (Yes, I know it can be fast(er). It's not in the average case, and certainly not on hardware which is sufficent for any other purpose.)

    66. Re:JAVA is the suv? by ElGuapoGolf · · Score: 2, Insightful

      See... that's bad....

      Swing hasn't been slow for a long time. Bad programmers can make poor Swing slow, sure. Bad programmers can make QT slow. Decent programmers can make GTK do odd things (flicker anyone)...

      Try using a tool like SmartCVS... completely swing based, and with a nice look and feel (it ain't ugly). It's fast and responsive, a good example of a well written swing app.

    67. Re:JAVA is the suv? by SoTuA · · Score: 2, Insightful
      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.

      What does different JVMs have to do with portability? It's like arguing that GCC sanity checks say that C is not portable ("oooh, it says my compiler is not the same one used for compiling my kernel! Who said C is portable? I need DIFFERENT COMPILERS, oh my"). Or you really expect portability to mean the same BINARY EXECUTABLE runs on every platform? (in java your .class files are portable, your JVM is *not*. The jvm must be platform-specific.)

    68. Re:JAVA is the suv? by arkanes · · Score: 1
      a) I hate the Swing look & feel. Thats purely subjective, though, so I won't make an issue of that.
      b) It's slow. I don't care what anyone says about how it's not anymore. On my workstation, which is aging but perfectly capable of running any of the normal, non-Java applications I ask it too (but no gaming, please), it's slow. It's slow to start, it's cumbersome to use. I can't stand it. There's varying levels of crappiness, with the low end being, say, Oracle's admin tools, and the high end being Eclipse, but they're all crappy. I like menus that show up right when I click on them, dropdowns that populate right when I drop them, and windows that move right when I move them.

      Now, thats my personal experience and thats in my personal situation, but thats why I avoid Java applications. I'll take a well written (or even a decently written) native application instead, thanks.

    69. Re:JAVA is the suv? by Slime-dogg · · Score: 1

      Given the referenced DBMS's, it is possible to do all of your logic coding in SQL using their own proprietary extensions. We have an AR system that is based on SQL Server that has all of the logic contained in Stored Procedures. There are some benefits to doing it this way, as well as some negatives.

      Benefits:

      • You can write a front end in any language, for any platform that can connect to SQL Server.

      Negatives:

      • Writing complicated logic in SQL is worse than a 10-pound earhole during a hangover.
      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    70. Re:JAVA is the suv? by Anonymous Coward · · Score: 0
      If you asked me if I wanted to reverse engineer someone else's code to modify it, and one case was a C or a C++ program and a Java program. Well no contest.
      If the choice were up to me, I would be much more concerned with who was responsible for writing the respective programs, and what condiditions they were written under. I'd rather maintain a program in s390 assembler written by a consciencious professional who was concerned about writing maintainable code over something done in Java by some random person I don't know anything about.
    71. Re:JAVA is the suv? by Mryll · · Score: 1
      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.

      And how frequently is this relevant to the ultimate delivery of useful work to a user? IMO it depends greatly on the task at hand and the code's portion of that task.

    72. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      3 incompatible JVMs from Oracle. Sounds like Oracle has problems!

    73. Re:JAVA is the suv? by greg_barton · · Score: 1

      Oracle ships with three different JVMs

      OK, I'll bite. What are the versions and why do they distribute different ones? Do you have some specific facts here, or are you all smoke and no fire?

    74. Re:JAVA is the suv? by fucksl4shd0t · · Score: 1

      But Java is pretty mature compared to most other things. JDBC, JavaDoc, Swing.... they're all good. Not to mention, and this is the big one for me, one .jar can run on any machine with a modern VM. Because I need to write stuff that runs on a... variety... of operating systems, that's pretty priceless.

      Um, wxWindows predates Java by some years, actually. Sure, it's been in a niche for most of its life, but with the 2.4 release it actually has just about everything you'll find in MFC. Plus it's very easy with C++ to just use the libraries you like the most.

      The saying goes like this:

      ANSI C++. Write once, compile anywhere.

      Java. Write once, debug everywhere.

      :)

      --
      Like what I said? You might like my music
    75. Re:JAVA is the suv? by fucksl4shd0t · · Score: 1

      Sounds like you know when to hold them, when to fold them, when to walk away AND when to run.

      But obviously he counts his money while he's sitting at the table. *sigh*

      --
      Like what I said? You might like my music
    76. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      > (right down to naming convontions)

      way to make your point! You won't be held to any lousy convontions! naming, spelling, whatever!

      This cheap shot brought to you by someone that actually agrees 100% with your point!

      -C++ Troll

    77. Re:JAVA is the suv? by Ed+Avis · · Score: 1

      Oracle ships three JVMs on the *same platform*. As in, Oracle on Windows includes three different ones and they are all installed in different places. If Java were portable, you'd expect that one JVM would suffice. To the other poster who asked for hard facts: I'll have a look at the files installed when I go to work tomorrow.

      --
      -- Ed Avis ed@membled.com
    78. Re:JAVA is the suv? by Anonymous Coward · · Score: 0

      Real programming is not writting applications with GUI's or DB connectivity. Real programming is making the toolkits and systems for other people to use.

      With that in mind, I want you to write an OS in JAVA and then tell me it was easier and had tighter code then the OS I wrote in C.

      What the article is trying to say and what everyone is ignoring is JAVA is a situational language, just like every other programming language. Would I use lisp to write a OS? Hell no, but I might use it to write a compiler. Would I use C++ to write a NIC driver, probably not. Would I use any form of JAVA for a web page, well it depends on the depth of the page. Would I use JAVA to write the user management software for my server. Of course not, I would use bash or perl.

    79. Re:JAVA is the suv? by Phil+Wilkins · · Score: 1

      That's possibly the best idea I've heard in a long while.

    80. Re:JAVA is the suv? by SoTuA · · Score: 1
      Oracle ships three JVMs on the *same platform*. As in, Oracle on Windows includes three different ones and they are all installed in different places.

      Oh that. That's because Oracle products are certified for a certain java version. Seems like modules are certified for different versions. So, if they certified for java 1.1.8 for some things, and java 1.3.1 for others, there's no way they can assure you that it will run as intended unless you have the certified versions. It's like including libraries. (I had some problems when moving to Oracle OC4J because of the jvm versions and using a newer JVM).

      If Java were portable, you'd expect that one JVM would suffice.

      If you insist in using old versions of software because they work (wich is, I guess, why oracle still uses that instead of redoing all the stuff with the newer APIs), you should provide the old-software working environment (be it libraries or JVMs) or expect it to behave in strange and un-funny ways. Oracle does NOT want your Oracle products to behave like, say, M$ products :)

      Besides, the "one JVM" is still a non-argument. Backwards compatibility and portability are different issues.

    81. Re:JAVA is the suv? by NeXS · · Score: 1

      Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on. Just give me a language where I can throw in a little bit of code in the middle of a webpage, in the regular web directory, and be done with it.
      well... You think that tomcat is a pain to configure ??? ...

      I've bad news for you... Perhaps you did not find the right job for you ...

      By the way, you don't need to do any javac if you're working with jsp ... tomcat do it for you.
      OH... Perhaps you're talking about TOMCAT Compilation ! ... You mean you did'nt manage to compile tomcat ???...

      Okay... keep on trying ...

      Hint: there's no ./configure ...

    82. Re:JAVA is the suv? by AndrewCox · · Score: 1

      Java is not "JAVA" ... it is not an acronym, just a name for a language.

      --
      The Red Pill ... all I'm o
    83. Re:JAVA is the suv? by Twylite · · Score: 1

      Because in enterprises serious about their data, all data access is via a rules engine. This prevents the current global problem of having business rules hacked into literally dozens of places in your system, and completely unmaintainable (let alone not even knowing what your business rules are).

      I should thank you though. It is people who think like you that drive a multi-billion dollar reverse engineering industry to recover system design and business rules.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    84. Re:JAVA is the suv? by Twylite · · Score: 1

      This is making some sweeping assumptions. First, that the data is stored in a SQL DBMS, or one that is extensible. Second, that the application you are integrating to allows something else to modify the database concurrently. Third, that the web front-end doesn't require real-time response from the "legacy" application (or that all the data is stored, versus calculated). Forth, that you can somehow access the DBMS.

      Since many (esp. older) enterprise applications expect to own the database, they make assumptions that it hasn't been altered by other processes. Even when this isn't the case, few of these systems poll the database to detect changes so that you can effectively communicate with the application.

      Let's take a real-world scenario: a bank wanted to deliver an intranet application for its consultants that calculated home loan repayments. To a bank this isn't a simple amortisation -- the quote has to be accurate and valid, which means that it has to use the business rules, current interest rates, special charges and everything else as done by the home loan application on the mainframe. The existing way to do this was to send a faxed request to the head office, have a special clerk enter a loan application into the mainframe (but not mark it active), get the response and fax it back.

      Problem #1: the mainframe application was written in an archaic language using DB2. Problem #2: The business rules encoded into the application were largely undocumented -- the bank implicitly trusted any value they got from the application, even if they couldn't figure out how it was calculated. Problem #3: You can't simply query the database for the quote -- it has to be calculated using the appropriate application logic. Problem #4: You can't simply write the request into the database and expect it to be calculated -- the application doesn't work like that. Problem #5: Talking to the mainframe.

      So how do you solve the problem? Well, this wasn't the only work going on in the bank, so they deployed Message Oriented Middleware as an integration technology (common in large enterprises). Intranet applications accessed objects that wrapped access to the MoM requests and responses. In the case of the home loan system, they had to run the terminal client for the mainframe application in a virtual environment, simulate keystrokes and directly read the screen in order to achieve input and output, and then write a further integration layer about that to expose "functions" that could be meaningfully accessed via the MoM.

      None of which can be done by integrating to a DBMS.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    85. Re:JAVA is the suv? by gbjbaanb · · Score: 1

      lol. surely that'll be their own code then :)

      mm. you *are* the evil master after all.

    86. Re:JAVA is the suv? by KDan · · Score: 1

      Becuase a large portion of people doing programming these days are complete idiots

      I'll drink to that. You wouldn't believe the kind of muppet design flaws I'm seeing on this enterprise project I'm working on...

      Daniel

      --
      Carpe Diem
    87. Re:JAVA is the suv? by Ed+Avis · · Score: 1

      I was thinking of a PC which had Oracle installed with Oracle Forms and had at least three java.exe in the Oracle installation alone. I know because we did 'dir /s java.exe' to track down a problem where one of those executables was doing a kind of fork-bomb at startup. The PC has since been reinstalled so I can't give the dir /s output now.

      As for why they distribute different ones: who knows. Perhaps it is Oracle that has the problem, not Java, and it would all work fine if they just shipped .class files. But you have to wonder.

      --
      -- Ed Avis ed@membled.com
    88. Re:JAVA is the suv? by leandrod · · Score: 1
      > in enterprises serious about their data, all data access is via a rules engine

      Yes, for everything that currently can't be done in SQL. Fuller compatibility with the SQL standards, and eventually a relational successor to SQL should make the RDBMS its own even more efficient, fully declarative rules engine.

      But even with a rule engine, you still want to have all your data in a single database, clustered and (or) distributed as you like.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    89. Re:JAVA is the suv? by Twylite · · Score: 1

      Do you have the vaguest concept of what a "rules engine" is? Hint: its got little to do with input validation.

      Your average rules engine has things like this: "Residential users pay a basic waster connection charge of 1080c which is exempt from sales tax and includes 50 litres of water free. The first 100 litres of water thereafter costs 2.6c per litre, after which the charge is 1.8c per litre up to 1000 litres, then 3.4c per litre. Insurance claims for burst pipes are only valid on accounts that pay 234c per month for the insurance and are not outstanding at the time of the claim; claims of up to 20000c are automatically approved, but anything beyond that must be approved by a supervisor and associated with an inspection report already submitted into the system."

      Are we getting a clue yet? There is, surprisingly enough, a reason why system architects and system integrators have different job functions to database administrators.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    90. Re:JAVA is the suv? by scotartt · · Score: 1

      Java is not necessarily slower than other languages. It's true for Java 1.1, but most Java 1.3 + 1.4 implementations are way faster than that.

      In fact, when used with a JIT compiler, it can be faster than an optimized C++ program. To quote from a roundup at javaperformancetuning.com;

      http://www.javaperformancetuning.com/news/roundu p0 33.shtml

      "First, the optimizing compiler compiles byte code down to native assembler. Ok, no big deal here, so do the C/C++ compilers and if that were the end of the story... The interesting part comes with the realization that the native code produced by the optimizing compiler will have undergone optimizations based on the current runtime conditions, something that the C/C++ static compliers are incapable of doing. Thus, the native code that is produced by the JIT may actually be more highly optimized for the task it is performing. "

      regs,

      --
      -A lovely little thinker, but a bugger when he's pissed-
    91. Re:JAVA is the suv? by leandrod · · Score: 1
      > Do you have the vaguest concept of what a "rules engine" is?

      Do you have the vaguest concept of what rules are? The exact stuff that is fully translatable into declared integrity constraints.

      > Hint: its got little to do with input validation.

      Who said anything about input validation? An integrity constraint can be a type, an attribute type declaration, a relation constraint, a database constraint (whose most popular type is referential integrity), a transition constraint. You seem to think SQL is all that is to relational databases?

      > Your average rules engine has things like this

      And all of that can be declared as integrity constraints. All that is left to procedural code is the action to take in case of attempted violation.

      > There is, surprisingly enough, a reason why system architects and system integrators have different job functions to database administrators.

      There are bad data and database administrators, and bad system architects and integrators. One of the worst types in both fields is that who mixes ignorance with arrogance, especially if they use their misunderstandings about the foundations of their own jobs, and the nature of other people's jobs, to think they are something.

      About clues: _What Not How_ by Chris(topher) J Date, and my own Open Directory categories.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
  3. so I guess that would make C# the.... by Anonymous Coward · · Score: 4, Funny

    Pinto?

    1. Re:so I guess that would make C# the.... by Epistax · · Score: 2, Funny

      I think VB would be one of those things you put together with lego.

    2. Re:so I guess that would make C# the.... by fedork · · Score: 1

      I guess it makes C# an RV because you'll just live in it one day...

      --
      ...remember good 'ol times when IP used to mean Internet Protocol....
    3. Re:so I guess that would make C# the.... by turgid · · Score: 1
      Pinto?

      No! You have it all wrong!

      C# is the Reliant Robbin of programming languages.

    4. Re:so I guess that would make C# the.... by Anonymous Coward · · Score: 1, Insightful

      Oh, shut up. I'm guessing that you've never written a single line in C#. Frankly, .NET rocks, despite its Microsoft lineage.

    5. Re:so I guess that would make C# the.... by Anonymous Coward · · Score: 0

      "I think VB would be one of those things you put together with lego. "

      No, while lego may be easy and fun, i've never found a way to make loads of easy money using it.

    6. Re:so I guess that would make C# the.... by Anonymous Coward · · Score: 0

      Pinto's are small, and easily run over by SUV's (or mid-sized sedans or large morotcycles). C# is more like the semi driven by the obnoxious guy who hasn't stopped to sleep in thirty-eight hours: Runs you off the road, changes lanes without signaling while you're next to it, accellerates to 80 to pass you then slams on the brakes in front of you and then you just exit the freeway and take the service road.

  4. /.'d already.... by cbiltcliffe · · Score: 1

    Anybody got a mirror?

    --
    "City hall" in German is "Rathaus" Kinda explains a few things......
    1. Re:/.'d already.... by SMOC · · Score: 0

      Google is your friend.

      --
      All errors in this comment are mine. Corrections are considered a derivative work, and punishable under copyright law.
    2. Re:/.'d already.... by jrc313 · · Score: 4, Informative
    3. Re:/.'d already.... by mgs1000 · · Score: 1

      I guess it's hosted on the Geo Metro of web servers.

  5. .net by Anonymous Coward · · Score: 0

    and .net is a tank rush (some will recognise the reference :)

  6. Finally by doe · · Score: 4, Interesting

    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.

    1. Re:Finally by Anonymous Coward · · Score: 4, Funny

      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.

    2. Re:Finally by ctl · · Score: 0, Funny

      A voice of reason

      Well, note that Phil does advocate in his article the use of VB instead!

    3. Re:Finally by Kytakh · · Score: 1

      Im glad you found something in the article worthwile...

    4. Re:Finally by gilgongo · · Score: 5, Insightful

      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?

      --
      "And the meaning of words; when they cease to function; when will it start worrying you?"
    5. Re:Finally by aborchers · · Score: 1
      A voice of reason. It is refreshing to see a diffrent viewpoint in this time of Java craze.


      <sarcasm>Yeah, I've never heard anyone complain about Java before...</sarcasm>

      --
      Trouble making decisions? Just flip for it.
    6. Re:Finally by Anonymous Coward · · Score: 0

      "I've been writing web applications since the late 70s"

      Huh?

      "releasing the first public Java release back in 1985"

      Double Huh?

    7. Re:Finally by Hard_Code · · Score: 4, Insightful

      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"

      --

      It's 10 PM. Do you know if you're un-American?
    8. Re:Finally by Anonymous Coward · · Score: 0

      'Tis truly a pity that there is no "-5 - Complete and Utter Bullshit" moderation available.

    9. Re:Finally by (trb001) · · Score: 5, Insightful

      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

    10. Re:Finally by Anonymous Coward · · Score: 0

      Binding variables? I think I smell a scheme/lisp junky here. Java isn't an SUV, it isn't a high strung ferrari like C, a transformer like Perl or Python, a Hyundai like Visual Basic, its more likely an Accord or Golf. A little boring, quite reliable, very servicable. Why do you think its the err apparent to Cobol?

      As for the students, in the first place they are likely struggling with JSP because they are using it in the same fashion as PHP, which is wrong. Use a Model 2 architecture(MVC), and then jsp simply becomes a view for displaying results. Notice there is seperation of concerns which is one of the biggest weaknesses of development with scripting languages. Fast to roll out, horrible to maintain.

    11. Re:Finally by Alkonaut · · Score: 1
      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.

      True, but then you have the cost of maintaining too. Strong typing or not is quite irrelevant for the guy developing, but the guy who has to maintain on the other hand...

      Once a web project reaches 100 lines of code mixed with style & content, you should trash it and start over.

    12. Re:Finally by tgd · · Score: 0, Troll

      Web development is not software development. The only people who think so are pseudo 3133t h4x0r kids who've never written real software before.

      Real software development isn't about how fast you bang out unplanned, undocumented, and untested code to throw out to the customer and hope you can fix before they find the problems.

    13. Re:Finally by Anonymous Coward · · Score: 0

      No, but we're a fan as well. I usually try to make things open source.

    14. Re:Finally by Lordrashmi · · Score: 5, Interesting

      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...

    15. Re:Finally by Anonymous Coward · · Score: 2, Funny
      as silly as putting Linux on your toaster...sure you could do it, but it's not the most efficient solution.

      That's right. Everyone knows that NetBSD is the toaster OS of choice!
    16. Re:Finally by aborchers · · Score: 1
      I think I smell a scheme/lisp junky here.


      You do, but I think you replied to the wrong post! ;-)

      --
      Trouble making decisions? Just flip for it.
    17. Re:Finally by cca93014 · · Score: 2, Insightful

      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.

    18. Re:Finally by kisrael · · Score: 1

      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".

      Really? No one tries to argue that it's nice not to bend through hoops to escape out all your HTML, have a lot of HTML embedded in your Java code?

      I'm not saying it's the perfect reasoning either, but it is a point.

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    19. Re:Finally by Anonymous Coward · · Score: 1, Insightful

      I should point out that the enterprise application I've seen (And the company I work for develops J2EE apps. I do systems integration work for them.) tend to have horrible scalability, despite application-level persistence and database pooling. I'm tempted to say "because of" but I won't.

      From personal experience there's nothing to indicate in the least that either of these 2 features inherently make the app more scalable. What seems to make apps more scalable is reasonable design. Not the tools you use to design it.

    20. Re:Finally by Anonymous Coward · · Score: 0

      But you'll have to take 5 times as many showers.

    21. Re:Finally by doe · · Score: 2, Interesting

      Not really

      We're using PHP to connect to different sort of backend databases and other services. We used mostly Oracle in the past, but have made a move to Postgres mostly due to the cost. We're still using Oracle for clients who are willing to pay for it.

      My most recent assignment was using DB2 on an IBM iSeries machine (formerly known as AS/400).

      PHP can and is used to develop "enterprise" size web applications. It doesn't have to be Java. And I can been the cost of any Java shop around here.

    22. Re:Finally by afidel · · Score: 1

      Tell that to companies like eBay, buy.com, Amazon, or Progressive. These companies absolutly rely on their websites, for them web development IS the enterprise application. And hacking together something in PHP, Perl, whatever just doesn't cut it.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    23. Re:Finally by Bob9113 · · Score: 5, Informative

      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.

    24. Re:Finally by Lordrashmi · · Score: 2

      No HTML in my Java. Like I said in my post, I use templates. All HTML goes into the templates.

      I choose what objects to expose to the template engine, and the template engine then merges the objects with the template. For example, when a user logs in, an object is created that contains personal preferences like font size, colors, what content they want on their front page. Lets call this object "blah" though I can expose it to the template using any name I want. In the template, if I want to get information from that object, I just call ${blah.myMethodName()}.

    25. Re:Finally by CTho9305 · · Score: 1

      ... so use ASP. It's VERY fast to write, and people have already written objects that will do almost everything you need.

    26. Re:Finally by Anonymous Coward · · Score: 0

      Trolled.

    27. Re:Finally by eglamkowski · · Score: 1

      But Java HAS been around since 1985: http://java.sun.com/features/1998/05/birthday.html

      As for the web... well, hypertext at least has been around since the 1960s... *shrug*
      http://www.w3.org/History.html

      --
      Government IS the problem.
    28. Re:Finally by tgd · · Score: 1

      What those companies do is not web development, its software development with a web interface. Its *very* different. You can't reasonably do software development with languages like PHP.

      Use the right tool for the right task.

    29. Re:Finally by kisrael · · Score: 1

      Ah, sorry.

      Yeah templates are good, but sometimes JSPs just feel like the right solution.

      And just a side note, one thing you have to watch out for in an application like yours is over-customizability. People want a bit of flexibility, but mostly they want defaults that just are good and usable without having to think about it too much. (Though to be fair, I have underestimated the popularity of stuff like skins before...)

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    30. Re:Finally by Xugumad · · Score: 1

      Can you add some context to this? What sort of application are you writing? Roughly how many pages does it contain, and how many lines of code are we talking about?

      I joined the team working on an educational web-based application in 2001. At the time, the system was written in Tcl/Tk. It rolls in at around 60,000 lines of code, across approx. 240 pages. The original development took 3 developers about 3 years.

      It was decided that due to speed problems with Tcl/Tk, and the growing system complexity, we would rewrite the system from scratch.

      From start 2002 to now (we've been in beta for about a year, and should have our first proper release within days), an average of myself and one other developer (we've had between 1 and 3 developers at a time, but on average) managed to not only do a complete backwards compatible rewrite, but also a new, seperate system. Sure, it helped that we had an existing design to work from, but I still reckon the Java version was a lot lot easier to write.

      Java isn't for everything, but if you're writing large-scale web applications, scripting languages are really unlikely to be the answer either.

    31. Re:Finally by Anonymous Coward · · Score: 0

      What those companies do is not web development, its software development with a web interface.

      I should try that next time I am losing an arguement. Just make up your own definitions for things, and suddenly I'm not losing any more!

    32. Re:Finally by Xugumad · · Score: 1

      One of my colleagues read an article that said JSP was much better than servlets, and no-one should use servlets. The result was 1,200 lines of unseperated code, which no-one including the code's writer could make sense of.

      If I ever find the author of that article... (yeah, I know it's not his fault I'm working with idiots, that's not the point)

    33. Re:Finally by Baki · · Score: 1

      JSP is a servlet, it gets generated and compiled into a servlet. SO to say that JSP is better than servlets is a bit stupid, to say the least.

      SUN recommends to use JSP directly only for simple and small apps, and to use servlets for control and JSP just for rendering for more complex things.

      See sun's recommendation for more info and for JSP model 1 versus model 2.

    34. Re:Finally by HaloZero · · Score: 1

      See also:
      - perl.org
      - cpan.org

      --
      Informatus Technologicus
    35. Re:Finally by Anonymous Coward · · Score: 0

      1995 you dolt.

    36. Re:Finally by Glock27 · · Score: 1
      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...

      Have you tried Jython? Python addresses most or all of your points I think, and Jython is reputed to be the fastest Python runtime.

      the JVM went down constantly (it was shared, what did we expect?)

      Shared with what? Also, why did you expect this and then do nothing about it? ;-)

      the code was bloated

      If you mean Java/JSP tends to be wordy, yes...

      If that is your primary criteria for choosing a programming language, well...

      and we had serious heap issues.

      Meaning what? GC pauses?

      If you're thrashing the GC, you've run into a common Java programming mistake. Don't do that.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    37. Re:Finally by CTho9305 · · Score: 1

      Personally, I find perl harder than vbscript, but to each his own ;)

    38. Re:Finally by InfiniteWisdom · · Score: 1

      Any other application of it is as silly as putting Linux on your toaster
      I'm posting this from my toaster, you insensitive clod!

    39. Re:Finally by S.O.B. · · Score: 1

      But Java HAS been around since 1985: http://java.sun.com/features/1998/05/birthday.html

      Cut and pasted directly from the article you referenced: "Since its introduction in May 1995, the Java platform has been adopted more quickly across the industry than any other new technology in computing history."

      That's 1995 not 1985. The year 1985 does not even appear in the article.

      As for the web... well, hypertext at least has been around since the 1960s... *shrug*
      http://www.w3.org/History.html

      Hypertext might have been around in the 60s but that doesn't mean there was a "web". That didn't happen until there was a web browser which according to the link you provided happened in October 1990.

      Since there was no web browser until 1990 it would be rather hard to for you to have been "writing web applications since the late 70s" as you claim.

      By your reasoning anyone who drove a Model T Ford in 1908 is a modern Formula One driver.

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    40. Re:Finally by fishbot · · Score: 1

      PHP is used for enterprise sized applications, sure. It shouldn't be though. More problems are caused by simple typos than anything else in PHP!

      Try tracking down why the product management system is losing track of cost when running through the billing system, and it turns out after much blood, sweat and tears to be the fact that someone was passing the variable '$intAmunt' to the amount calculator. This wouldn't even register on the scope of a bug in a more strict language (even perl with 'use strict'!). It'd be more of a 30 second "d'oh!" on the part of the developer who did it, and it would be fixed.

      This isn't to say that, with EXTREME discipline and massive amounts of checking, code review, and testing PHP can't do these things. It's just that it handily lends itself to the kind of programmer to whom discipline and adherance to standards is secondary to churning out kewl new stuff.

    41. Re:Finally by Moraelin · · Score: 4, Insightful
      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.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    42. Re:Finally by eglamkowski · · Score: 1

      First, I did misread the java thing, so my bad.

      But, I didn't claim the hypertext was the web, and I sure as hell didn't claim to be writing web applications EVER, much less in the 70s. Get your attributions right, you insensitive clod :-p

      --
      Government IS the problem.
    43. Re:Finally by jason0000042 · · Score: 1
      Once a web project reaches 100 lines of code mixed with style & content, you should trash it and start over.

      Just because you can mix code, content and style in PHP and etc, that doesn't mean you should. Keep these things as far apart as possible. In my experience it makes everything much easier to maintain.

      --
      i don't like my old sig.
    44. Re:Finally by Anonymous Coward · · Score: 0

      You mean like Yahoo!?

    45. Re:Finally by S.O.B. · · Score: 1

      When you defended the Anonymous Coward further up this thread with some of the same obviously wrong information I incorrectly assumed that you were him. He was the one who claimed to be writing web applications in the late 70s.

      As for claiming hypertext was the web, in your defense of the AC's claims you stated "As for the web... well, hypertext at least has been around since the 1960s". Since you were defending his position I assume you meant to suggest that hypertext was the web.

      --
      Some of what I say is fact, some is conjecture, the rest I'm just blowing out my ass...you guess.
    46. Re:Finally by jrj102 · · Score: 1

      Creating web apps since the 70s, huh? I'm sure TBL, who invented the web in the late 80's and early 90's (without Al Gore's or your help) will be surprised to hear that.

      Go ahead and mod me down for trolling... but saying things like "I've been doing X since 15 years before X existed" is a major pet peeve of mine.

      --- JRJ

    47. Re:Finally by keester · · Score: 1
      Well, JSP is good for one thing, outputting text. Scriptlets (of any size) will make it more difficult for someone to understand the text being output. However, the taglibs (in particular the new easier to write taglibs coming out with the next version of JSP) greatly reduce what would otherwise be "unneeded complexity".

      In my opinion, if your application is all servlets, or all JSP (what's the difference?) then the problem isn't with the language, it's with the use of the language.

      --
      Take it easy? I'll take it anyway I can get it . . .
    48. Re:Finally by bmj · · Score: 1

      I agree with you, though I've heard Freemarker sucks (but that's from Velocity/Turbine developers). But the templating system isn't without it's flaws either.

      Having worked extensively with JSPs, I think if you either use or create a good custom tag library, it's not hard to separate logic from presentation. I've been using Velocity for about 6 months, and while it has its limitations, it, combined with Turbine, makes for a decent web app framework.

      Now I just recompile the one servlet and Tomcat reloads it. Simple...

      Hah! How many times have you had to restart Tomcat to get it see the new classes? I know the "hot" reloading has come a long way in last year or so, but I wouldn't bet the farm on it...

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
    49. Re:Finally by Lordrashmi · · Score: 2

      Like I said in one of my other comments, my hatred of JSP's come from co-workers ugly code.

      I am sure that there are better ways to do JSP then how they were doing it, but it left such a bad taste in my mouth that when I was evaluting how we were going to write our new application, I much prefered Servlets + Freemarker.

      If I ever see a case where I think JSP or any other item can do the job better, I will use it.

      As far as FreeMarker sucking, I think that was just Velocity/Turbine bitterness. I have had many more issues with Velocity then I have with FreeMarker.

    50. Re:Finally by (trb001) · · Score: 1

      Shared with what? Also, why did you expect this and then do nothing about it? ;-)

      As anyone who is a developer on a project knows, very rarely do you actually get to choose 1) platform, or 2) coding standard. This was kinda thrust on me.

      and we had serious heap issues.

      the provider we chose (mind you...we were working for a small client, building a small website) allocated us XXX amount of heap for our processes. We ran over that a number of times with our system because of the nature of JSP (issues with includes and resource allocation).

      We didn't thrash the GC ever, but other people might have. When you share a JVM, everyone's process on that box run under the same JVM. That means if one person thrashes it, everyone's processes go down. It sucks, try to avoid it if possible in your projects (we were held to a given budget, and therefore couldn't spend the money on private JVM support...yada yada).

      --trb

    51. Re:Finally by Glock27 · · Score: 1
      the provider we chose (mind you...we were working for a small client, building a small website) allocated us XXX amount of heap for our processes. We ran over that a number of times with our system because of the nature of JSP (issues with includes and resource allocation).

      We didn't thrash the GC ever, but other people might have. When you share a JVM, everyone's process on that box run under the same JVM. That means if one person thrashes it, everyone's processes go down. It sucks, try to avoid it if possible in your projects (we were held to a given budget, and therefore couldn't spend the money on private JVM support...yada yada).

      So basically due to not spending an extra $100 or so a month on ISP resources you spent untold thousands debugging and testing...and ended up deploying an unsatisfactory product regardless.

      And the thing at fault in all this is...Java? Not hardly.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    52. Re:Finally by SoTuA · · Score: 1
      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.

      And then you are transferred to a different project, and you are faced with PHP that isn't yours and does non-trivial tasks, and your task is to fix it and extend it's features. Still like PHP much? I surely don't, after that experience :s

    53. Re:Finally by (trb001) · · Score: 1

      nonono...Java is not directly responsible. Given the resources allocated, Java was not a good choice. However, PHP would have been fine within those constraints. Java would make a fine platform with more resources, but with limited amounts it's horrendous. That was my original point.

      --trb

    54. Re:Finally by Mryll · · Score: 1

      Agreed that the serious enterprise software development generally ignores slipshod one-off "systems", be they based on scripting languages or Java or whatever. J2EE has more of the elements that they see as necessary. Frankly I'm now seeing more new enterprise systems proposed and being developed on .NET than J2EE, with some wholesale conversion projects. (Too bad for me, have been drifting away from MS development technologies for about five years now.) Nobody big seems to be moving from J2EE down to scripting languages because they're worried about performance, though. :)

    55. Re:Finally by sircrown · · Score: 1

      Look out for JSP2 which is going to add a lot of the nice, friendly features already seen in other templating engines like Velocity and FreeMarker. The big one is the new JavaServer Pages Standard Tag Library (JSTL) and it's included expression language which gives you easy access to objects using the familiar ${object} syntax. See chapter 16 here

    56. Re:Finally by fucksl4shd0t · · Score: 1

      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.

      Weak typing is always a mistake, in my opinion. I have yet to create an app or even a very very short script that didn't somehow need typing to be separated. Sure, it can smooth over some quick prototyping, but it's always a pain in the ass. When using weakly typed languages, I always use a shitty naming convention to show what the variable should contain. It's only a hack solution, and it doesn't fix the language, but it does help in maintenance because you can see what the variable is supposed to contain.

      Weak typing also tends to encourage people to jump back and forth with what they store in a variable, which is a bad habit. A variable, from creation to destruction, should only store one type of data. If it's a string, great. If it's an integer, great. If it's 3 letters, null-terminated, great. But only one type of data, always. You code yourself into a corner if you keep flip-flopping what kind of data is kept in a variable.

      Uninitialized variables are another "feature" of weak typed languages that I can really do without. (Yeah, I know, C and C++ allow you to use a variable before it's initialized, and Java doesn't, and I like that about Java, but gcc will warn you when you do that, and I like that about gcc) When you need a string to be either "true" or "false", and it's initialized to "" by default, then you're screwed when it doesn't equal one of the values it must equal. (Yeah, it's better to create constants or at least variables that you agree never to change and name them true or false if you have to, but something must be done for code readability. Once you're > 300 lines || > 3 days from writing the code, you've gotta be able to read it)

      --
      Like what I said? You might like my music
    57. Re:Finally by pyrrho · · Score: 1

      Java vs. C++, I keep hearing about "rapid development"... is there something about rapid development that makes it hard to do things quick-n-dirty?

      --

      -pyrrho

    58. Re:Finally by 1110110001 · · Score: 1

      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.

      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.

      You've something in common with the burger-flipper: You don't read documentation or don't unterstand it. PHP is very well documented. See http://at.php.net/manual/en/language.operators.com parison.php and http://at.php.net/manual/en/types.comparisons.php and solve your problems. As you can see PHP has two operators for testing if two terms are equal. === and !== are the strict ones you need. Next time learn the language before using it.

      b4n

    59. Re:Finally by dash2 · · Score: 1

      ... except that, as I learnt yesterday from another poster, Amazon uses Perl and HTML::Mason for its templating engine. And please don't mention Perl in the same breath as PHP, you know how we hate that.

    60. Re:Finally by RajivSLK · · Score: 1

      Mod the parent up.

      It is possible to write piss poor spaghetti code in any language if you are a piss poor programmer.

      I maintain and develop a 600,000 (yes six hundred thousand) line PHP web application. Through the use of very strict APIs and coding standards with strong emphasis on encapsulation it works out pretty well. For our specific application PHP is a better choice than JAVA.

      PHP has many problems, however, we can overcome many of these by consistently applying simple coding standards. Some problems and their solutions are listed below.

      Problem: PHP doesn't support private class variables or private methods.
      Solution: prefix variable/method name with an _ to indicate its status as private. (Ex. $_foobar) Additionally require the use of accessor functions to access variables.

      Problem: PHP (and most other languages) encourages UI code to be interspersed with application logic.
      Solution: Enforce a separation between UI, application code and external data sources (i.e. three tiered application design).

      Problem: No strongly typed vars
      Solution: Public class vars and global vars must have their type appended to their name (ex $memberNameStr).

      The list is actually quite a bit longer however includes nothing major (sure abstract classes would be nice but not critical). Admittedly it is incredibly easily to write horribly bad code using PHP. The language doesn't enforce any sort of structure to the code whatsoever. It can be pain when a new developer is hired. In a relatively short amount of time they can write some significantly bad code and generally trash the code base. (something that is not as easy to do in stricter languages). However, most new developer's check-ins are scrutinized and the resulting beating they receive generally solves this problem.

    61. Re:Finally by Moraelin · · Score: 1

      Well, then blame the monkeys who had written the program in the first place. Because it was littered with stuff like that, and worse.

      For starters, I'd really like to see how those operators save you when the wrong type variable is used in an expression. Because that was most of the cases where stuff like that happened.

      Does PHP have also strict version for +, -, and generally every single numeric or string function or operator? No, I didn't think so. So the implicit type conversions will still bite you in the rear, sooner or later. Like it bit those guys. Hard.

      Want another problem with it? Variables which, on certain code paths, were used uninitialized. Well, gee, another situation where the program only _sometimes_ malfunctions, in unexpected ways. Whereas Java would at least give a compile time warning.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    62. Re:Finally by 1110110001 · · Score: 1
      I don't see a problem with types in PHP. Most of your time you're working with HTTP and HTML in PHP. Both have no types either. If you don't know the type of a variable it's most likely you didn't check its value. Remeber: Always check your inputs. You can't trust anything you get from the user. If you have an id do:
      $id = 0;
      if(is_numeric($_GET['id'])) {
      $id = $_GET['id'];
      }
      You see? I've initialized $id and made sure it's an integer. If $id is used (not as leftside operator) you get a warning. Turn error_reporting on while developing (I mean E_ALL so you get all warnings and notices).

      b4n
    63. Re:Finally by 1110110001 · · Score: 1
      I'm working on a similar big project. I've written the core and designed how the different parts should look like (include coding standards, which are similar to the PEAR ones). I did this with the help of a Java freak, so if he is satisfied it should be fine ;)

      Problem: PHP (and most other languages) encourages UI code to be interspersed with application logic.
      Solution: Enforce a separation between UI, application code and external data sources (i.e. three tiered application design).


      Smarty is a really good solution for this (http://smarty.php.net/). I used it all the time.

      Problem: No strongly typed vars
      Solution: Public class vars and global vars must have their type appended to their name (ex $memberNameStr)


      Have to disagree here. I use asserts instead. I.e. a function looks like this:
      function foobar($id)
      {
      assert(is_numeric($id));
      }
      The big advantage is that you get a warning. And you could remove all asserts before putting the whole thing live.

      An other thing that can be done is a checking script in CVS. So no one is able to checkin a $foo = new Foobar; echo $foo->_baz;

      Anyway - we're already a bit OT ;)

      b4n
    64. Re:Finally by gilgongo · · Score: 1

      No - use ASP.NET (if you must)

      ASP is Visual Basic. Visual Basic is just shit for anything other than a five-line knock-up. ... and don't even THINK about COM.

      --
      "And the meaning of words; when they cease to function; when will it start worrying you?"
    65. Re:Finally by unix1011 · · Score: 1

      On the flip side if you practice good programming, use python, and say gtk, or wxWindows you could increase have your portabiliy and increase your productivity. A good standard scripting language has just as much portability as java and so much more productivity.

    66. Re:Finally by Anonymous Coward · · Score: 0

      YHBT. HAND.

  7. Programming lesson 101 by 192939495969798999 · · Score: 4, Insightful

    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.

    --
    stuff |
    1. Re:Programming lesson 101 by avdp · · Score: 5, Interesting

      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...

    2. Re:Programming lesson 101 by Pfhreakaz0id · · Score: 2, Insightful

      well, I have a java/web application that doesn't have a signle SQL statement, but it uses Toplink to do a object to DB mapping.

      I agree though, short of a mapper tool, you're gonna have to have SQL SOMEWHERE.

    3. Re:Programming lesson 101 by 192939495969798999 · · Score: 4, Interesting

      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. :)

      --
      stuff |
    4. Re:Programming lesson 101 by SMOC · · Score: 0

      Use only stored procedures on the client side. Makes it easier to update code too.

      I really wish I had thought of that BEFORE my last db project.

      --
      All errors in this comment are mine. Corrections are considered a derivative work, and punishable under copyright law.
    5. Re:Programming lesson 101 by bmj · · Score: 1

      I agree though, short of a mapper tool, you're gonna have to have SQL SOMEWHERE.

      While an OM tool like Torque will allow you to remove SQL from your code, all of your database information will be in a configuration file....like someone pointed out, that information has to _somewhere_.

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
    6. Re:Programming lesson 101 by I8TheWorm · · Score: 4, Insightful

      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.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    7. Re:Programming lesson 101 by raffe · · Score: 1

      You put them in an xml file so you dont have to recmopile your app if you want to change sql statements. Works good, it even a pattern! :-)

    8. Re:Programming lesson 101 by NeXS · · Score: 2, Interesting

      we developped a SQLRepository object which stores sql code and definitions in an xml file... This file can be packaged together with the jar or an external url... It could be possible to transfert it via secured https to prevent the user to see db structure...

    9. Re:Programming lesson 101 by KDan · · Score: 2, Informative

      Hibernate.

      Daniel

      --
      Carpe Diem
    10. Re:Programming lesson 101 by SoTuA · · Score: 5, Interesting

      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

    11. Re:Programming lesson 101 by Ed+Avis · · Score: 4, Insightful

      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.

      --
      -- Ed Avis ed@membled.com
    12. Re:Programming lesson 101 by Ed+Avis · · Score: 1

      What the OpenACS project do to separate out SQL is to have separate code and query files. This keeps the code tidy, lets you have separate queries for Postgres and Oracle if that should prove necessary, and lets a database programmer go and optimize the queries while an application programmer rewrites the code, without them stepping on each others' footsteps. OpenACS, BTW, is the descendent of the ACS toolkit developed by Philip Greenspun's company ArsDigita.

      --
      -- Ed Avis ed@membled.com
    13. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Stored procedures.

    14. Re:Programming lesson 101 by perdelucena · · Score: 1

      You can Have EJB-QL Statements in your XML descriptors, not on the Entitybean code (CMP)

      ---
      MVC - Making things manageable....

    15. Re:Programming lesson 101 by Cyberax · · Score: 1

      SQL in presentation layer (JSP, ASP, PHP, whatever) is EVIL! Yes, it allows to write something fast, but maintainance will be a nightmare. SQL should be moved to another layer and wrapped in some sort of DAOs (Data Access Objects). There are tools in Java which can do data binding for you - look at Hibernate (www.hibernate.org), so you won't need SQL at all!

    16. Re:Programming lesson 101 by Sircus · · Score: 1

      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.

      Security through obscurity. A winner every time. Your other point's valid, though.

      --
      PenguiNet: the (shareware) Windows SSH client
    17. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Use that preview button!

    18. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Ahh yes. Troll pattern #212. Suggest using xml to solve everything.

    19. Re:Programming lesson 101 by Dr.+Bent · · Score: 3, Informative

      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.

    20. Re:Programming lesson 101 by M$+Mole · · Score: 1

      If they're using SQL Server, Oracle, and PostgreSQL, then why are their queries in the middle tier to begin with? Those queries should be built as storedprocs.

      --
      Karma: Non-existant. Due mostly to the fact that you smell funny and nobody likes you.
    21. Re:Programming lesson 101 by JoshRoss · · Score: 1

      The stupid statments still have to get passed to the server. Anyone with a profiler could see what the hell the connection is doing. As far as passwords go, you should be using hashes over an encrypted channel anyways. Why would anybody look at you applications SELECTs, UPDATEs, INSERTs or DELETEs? Most of those should be in stored procs, encrypted if nessessary.

    22. Re:Programming lesson 101 by Lord+Ender · · Score: 0

      You would just hardcode the entire database into the java executeable. It shouldn't make too much difference in the size of the java executeable...

      --
      A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
    23. Re:Programming lesson 101 by SatanicPuppy · · Score: 1

      The key is HARDCODED.

      If I was going to have an app where I was going to need to change the SQL all the time...Can't think what that would be, since I could run most queries straight to the database...I'd just slap my queries in an XML file, and source 'em from inside the actual app.

      The performace hit is negligible, unless you're talking a couple hundred unique queries.

      Usually I just put together one basic query of every type that I'm going to need, with variables in strategic places, and just "Build" the query on the fly. Nice abstraction, cuts down on the code size, and kicks ass for the all important "Code reusablity" factor.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    24. Re:Programming lesson 101 by shostiru · · Score: 2, Insightful
      Discovering database schema is trivial with many DBMSes, only slightly less trivial in the others. And why would you want to hide your database schema? Anyone who truly wants to steal your schema will have the tools or knowledge to do so. Those most affected will be customers who want to run their own SQL queries against the DB.

      I can see the virtue of dynamic SQL queries -- I use them myself occasionally -- although a well-designed DB can go a long way towards reducing the need. However, you've still got a performance hit and increased code complexity with dynamically constructed queries. In a relatively simple app where runtime isn't an issue this is less relevant, on a 100KLOCS app with a hundred million or so entities it's not necessarily a good idea.

    25. Re:Programming lesson 101 by JustAnotherReader · · Score: 4, Informative
      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.

    26. Re:Programming lesson 101 by avdp · · Score: 1

      The original poster suggested not hardcoding SQL because of the all the security issue it might cause (a user might see what the db structure is, etc). I don't see how keeping the SQLs in an XML file would change anything there...

    27. Re:Programming lesson 101 by avdp · · Score: 1

      interesting... But it doesn't addresses the original poster that a user could see the SQL and therefore guess the db design/structure since presumably you'd have to distribute that external file with the application.

      (Ps: not that I really think it's a valid concern, I just think people misunderstood my question. An external file for the SQL is something I do too, I just don't see it as a solution is his problem/statement).

    28. Re:Programming lesson 101 by 1gor · · Score: 1

      For a database-driven application you should use Enterprise Java beans (entity beans, container-managed, to be exact). So you never has to write another SQL query again.

      --
      --
    29. Re:Programming lesson 101 by CaptRespect · · Score: 1

      Yes it would if you have the XML files in a protected location on the server. De-compiling the source would then not show any XML.

    30. Re:Programming lesson 101 by Ed+Avis · · Score: 1

      A user can see the SQL structure anyway by looking at the database and by logging what queries are executed. If you're paranoid about that you can use sqlite.

      --
      -- Ed Avis ed@membled.com
    31. Re:Programming lesson 101 by holzp · · Score: 5, Insightful

      you could also write your application to suck up huge amounts of memory and bandwitdh for no reason but buzzwords...

    32. Re:Programming lesson 101 by avdp · · Score: 1

      Yes, I get the idea that decompiling the code would not yield SQL statements, but all you've done is shifting the problem from one file to another. It's probably harder to decompile an exe that it would be to read and retreive an XML file. If you're talking about encrypting that XML file then how do you hide the encryption keys? Even if you successfully hide the encryption keys it will be TRIVIAL to read the SQL statements read out of the xml file using a debugger.

      All this to hide some SQL statements... Jeez... Sounds like a heck of a lot more work than neccessary. I doubt that knowing a SQL statement will yield any great secrets. SQL statements are data. They are not any more secret than the decompiled code itself.

    33. Re:Programming lesson 101 by dpb · · Score: 1

      Red Hat Web Application Framework (ie what started off as the Java port called ArsDigita Community System), has a object <-> relational DB persistence layer. THis automatically generates all SQL queries, DML & DDL based on the object model you define. No these mappings are never perfect, but the sheer amount of time it saves by not having to maintain custom SQL quieries more than makes up for slightly lower performance.

      See, http://rhea.redhat.com/

    34. Re:Programming lesson 101 by bnenning · · Score: 1
      For a database driven application, how do you propose not to have hardcoded SQL statements?


      Here's one way. In WebObjects, you don't manipulate database rows.. You create, search for, and modify objects, tell them to persist themselves, and the SQL is generated for you. Actually the persistence layer doesn't even have to be a SQL database; it could be LDAP or a flat file, but your code remains the same.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    35. Re:Programming lesson 101 by 198348726583297634 · · Score: 1

      wow. nice username. :)

    36. Re:Programming lesson 101 by vianetman · · Score: 1

      JDO

    37. Re:Programming lesson 101 by chromatic · · Score: 1

      Amazon uses Perl.

    38. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      You load SQL statements via a properties file and have the statements secured in a file readable only by the admins. In Dev the file can be readable by developers and shit, but in production only the production admins should have rights to the file. That way, developers never get to know the db passwords, they code there SQL and then the admin gets the file and adds passwords. Simple.

    39. Re:Programming lesson 101 by allenthelee · · Score: 0

      Sensitive data could be stored in encrypted server-side files and decrypted by the server process.

    40. Re:Programming lesson 101 by btakita · · Score: 1

      You still need the question marks for the Stored Procedures.

      How would you insert/update/delete a record?

    41. Re:Programming lesson 101 by Anonymous Coward · · Score: 1, Informative

      Or use Prevayler so you dont need a dbms anymore.

    42. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Depending on the actual needs of the project, "no hardcoded sql" can be good or bad. It's probably a mistake in a system with 3 tables and 5 queries but probably the right thing for one with 300 tables and 5000 queries.

      Some of the problems you mention (i.e. escapification) indicate your client simply did not have much experience with this design. One question that comes to mind is: how come they didn't bootstrap the system? I.e. implement a few hard-coded operations to manage your table of queries, solve all the "interesting" query mangement problems in the implementation of a few service-management services and then go from there?

    43. Re:Programming lesson 101 by Mryll · · Score: 1

      CMP can let you delegate much of SQL generation and handling to the app server.

    44. Re:Programming lesson 101 by Dr.+Bent · · Score: 2, Insightful

      Memory is cheap. Programmers aren't. Any task that I can delegate to a 3rd party library or EJB container is going to save me money and time, and if I have to spend $250 to double the amount of memory in my server, then fine. It's much better than spending weeks of development on a hand-coded SQL persistance mechanism that has to be designed, written, tested, documented and maintained.

      Besides, the local entity beans in CMP 2.0 reside in the same VM as the client code, so no RMI calls, and no bandwidth usage. And just as compilers are better at optimization than 99.999% of programmers, chances are an EJB container can optimize database connections and object pooling better than you can.

      O/R mapping tools are very powerful. They save time and money. If you like writing SQL queries yourself, and don't mind working overtime to do it then fine. Me, I like to go home every once in a while.

    45. Re:Programming lesson 101 by Anonymous Coward · · Score: 1, Insightful

      Maybe you should spend less time worrying about your application being decompiled and allowing people to see your super secret database and instead spend time setting up proper rules that limit who can connection to which databases from which addresses etc. Do you really think I give a rat's ass if someone sees my database password when it doesn't even accept connections from anywhere besides a single IP address? And that IP address is on a private network?

    46. Re:Programming lesson 101 by I8TheWorm · · Score: 1

      Sure, you can give the SP name in the proc, and pass parameters. But there wouldn't be any DB/security information that way. So if someone were to decompile, they'd get an SP name and parameter names, but that's it. No IUD, no PW, not even a DB name, as long as the UID in LDAP has a default DB set.

      --
      Saying Android is a family of phones is akin to saying Linux is a family of PCs.
    47. Re:Programming lesson 101 by fucksl4shd0t · · Score: 1

      All this to hide some SQL statements... Jeez... Sounds like a heck of a lot more work than neccessary. I doubt that knowing a SQL statement will yield any great secrets. SQL statements are data. They are not any more secret than the decompiled code itself.

      Not that hard, if you have access to the server, that is. Apache runs as the user apache on most systems by default. Change that. :) Then store your xml file somewhere out of the website root and the web server root, and define its location in an env variable. Then you can store it anywhere you want, just make sure to update that env variable. Store it in your home directory, but chown it to the web server's user and group, and chmod it 400.

      NOw it can't be downloaded from the web server. It you've stored it carefully, you've put it where it can't be downloaded through other servers (such as proftpd and whatever else is installed). You've only made it readable by the webserver user and group, and you *did* make a strong password for that account, right? And you change it regularly? So a user has to have shell access to the machine, *and* they have to crach the webserver user's account, in which case they'd have control of your entire web server anyway.

      --
      Like what I said? You might like my music
    48. Re:Programming lesson 101 by Mybrid · · Score: 1

      Well, how fast is your on-line banking?

      Slow, really slow. I use Citibank. It's very slow and down much of the time, especially on Friday nights.

      Since when did the "technology" gurus at banks become industry experts? My guess is that management made decisions based on technology fads much of the way the read management fad books. Much the way they are sending jobs offshore to India as a fad and not based on any solid science. It's the thing to do. Use Java and send the jobs offshore! My guess is that Phillip is far more qualified as a subject matter expert than bankers.

      The fact that many people make money writing in Java paid for by bankers is more a source of amusement than science.

    49. Re:Programming lesson 101 by Dr.+Photo · · Score: 1

      Programming lesson 101

      Hibernate.


      [Insert half-hearted joke about job market here.]

    50. Re:Programming lesson 101 by praxis · · Score: 1

      That's all great, fine, and dandy until you want to write resuable objects that don't require the original source.

    51. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Just put the sql into an external datafile
      and mark the parameters needed by the sql string
      so that you can communicate data from the actual
      code to the sql side. There, no hard-coding,
      at least not within the programming language
      side. To use a query, make a function that inserts
      proper parameters to proper spots in the external
      query (which you naturally read from the file
      at some point) and execute the query. This is an
      absolute must in database projects, by my
      experience. Stored procedures are an absolute
      no-no.

    52. Re:Programming lesson 101 by avdp · · Score: 1

      hmm... allright... I guess you've defined how to do this for a web application where both the XML file and the application itself would be on the same server. I can think of only one possible use for this scenario - perhaps if you're a web hosting company and trying to hide the SQL from your customers. Anybody else would have to be an admin on the server to reconfigure apache, and therefore would have access to the xml file no matter what.

      I really didn't have that scenario in mind , but good effort! If I ever get into that business (web hosting) I'll have to remember that trick..

    53. Re:Programming lesson 101 by fucksl4shd0t · · Score: 1

      hmm... allright... I guess you've defined how to do this for a web application where both the XML file and the application itself would be on the same server. I can think of only one possible use for this scenario - perhaps if you're a web hosting company and trying to hide the SQL from your customers. Anybody else would have to be an admin on the server to reconfigure apache, and therefore would have access to the xml file no matter what.

      I should point out that it can be tricky to setup, but some webhost providers give you such a directory to use. Even so, if you chown your xml file to the web server user, other websites hosted on the same server might be able to find your file and read it, so it's not perfectly safe. :) Since when was security an exact science? Personally, I don't see a reason for trying that hard to keep other users from seeing the file. If you just chown the file to the apache group and chmod it 640, you should be able to safely store it within your website root and nobody can download it.

      Of course, in a shared server environment, you're better off hardcoding your SQL if you want to keep it hidden. :) I don't see any reason to keep it hidden, but I don't see any reason to make it freely available either. If I were coding for a client, I'd want them to have access to the schema no matter what, because it's their data stored there. Otherwise, I don't see this setup as being nearly as useful for security as the GP poster seemed to think it was. It's just like a resource file, where you can change little things without having to recompile the application.

      I use this method on my home machine, actually, for some files (but not xml schema, unless wikkitikkitavi does it, and it might). But then, I have complete access to the machine. :) But it does serve up my own website. Not that my website is the most secure thing by my standards, but one thing at a time. I've got a bunch of meals cooking on different burners, and I can only work on one at a time. :)

      --
      Like what I said? You might like my music
    54. Re:Programming lesson 101 by avdp · · Score: 2, Insightful

      Oh yes, I can completely see the benefits of storing SQL statement in text files (XML or otherwise) - no question about it. Although I do most of my web programming in scripting languages that don't require compiling, so the benefits are somewhat mitigated. Although typing make is not that hard anyway.

      The original poster I responded to seemed to be horrified at hard coding SQL statement since doing so may reveal the db schema to a user. Well, whatever. I don't see the point of hiding a db schema from anyone (is there anything particularly innovative about a db layout? I could probably come up with my own faster than decompiling anything). I would be more concerned about keeping intruders out of my database than hiding it's schema.

    55. Re:Programming lesson 101 by Trejkaz · · Score: 1

      The compiler doesn't pick up errors in hard-coded SQL statements. Finding errors earlier is better than finding them later.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    56. Re:Programming lesson 101 by angel'o'sphere · · Score: 1

      With EJBs the person using the EJB is defining the SQL statements at deploy time.

      That means: I code a EJB, WITHOUT ANY DB KNOWLEDGE.

      You buy it. You deploy it. You configure it. You configure MY EJB, to fit to YOUR DB.

      No hard coded SQL, no hard coded DB access of any kind.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    57. Re:Programming lesson 101 by mdz0 · · Score: 1

      No, Amazon uses a lot of stuff - but they use MOSTLY Java.

    58. Re:Programming lesson 101 by chromatic · · Score: 1

      Did Amazon switch away from a Mason-powered site recently? I haven't heard anything from my contacts there.

    59. Re:Programming lesson 101 by karlanka · · Score: 1

      Use stored procedure. That's the only way to go! This discussion about JAVA/PHP/ASP would be irrelevant if you ha all business logic their. Some advantages you get by using stored procedures: 1. Security. (Impossible yo by-pass business logic) 2. If you need a Admintoll written in whatever, just plug it in. 3. Transaction handling for free. Are you aware of the huge overhead on letting something like J2EE handle this) 4. Rather then millions of small calls, fewer bigger ones => More scalable system. 5. Less netwoek traffic between DB and application server. 6. Parsing of SQL statement only once. That's right I never ever seen anyone doing this in JAVA. Re-parsing kills the DB. 7. Code-Dependency tree fully controlled. 8. Auditing. 9. Miniumum amonut of locking. 10. Take advantage of the physical layout of tables. (Partitioned tables) 11. The BEST one! Which I can't believe people are still doing: Everything will always be CONSISTENT within a transaction. (for free) Take a look at you layoy. I bet you only have one DB, so where do you think the bottlenecks gone be => Use it as efficent as possible => Use stored procedures and have real DB-developers writing you app, not people who belive they know SQL because the 4 commands. Just put presentation logic in the middletier. All business logic has to go int the DB. What would protect the data oterwise.? Always avoid dynamic-SQL (even inside stored procedures). Always, Alw

    60. Re:Programming lesson 101 by karlanka · · Score: 1

      Use stored procedure. That's the only way to go! This discussion about JAVA/PHP/ASP would be irrelevant if you ha all business logic their. Some advantages you get by using stored procedures: 1. Security. (Impossible yo by-pass business logic) 2. If you need a Admintoll written in whatever, just plug it in. 3. Transaction handling for free. Are you aware of the huge overhead on letting something like J2EE handle this) 4. Rather then millions of small calls, fewer bigger ones => More scalable system. 5. Less netwoek traffic between DB and application server. 6. Parsing of SQL statement only once. That's right I never ever seen anyone doing this in JAVA. Re-parsing kills the DB. 7. Code-Dependency tree fully controlled. 8. Auditing. 9. Miniumum amonut of locking. 10. Take advantage of the physical layout of tables. (Partitioned tables) 11. The BEST one! Which I can't believe people are still doing: Everything will always be CONSISTENT within a transaction. (for free) Take a look at your application, I bet you only have one DB, so where do you think the bottlenecks gone be => Use it as efficent as possible => Use stored procedures and have real DB-developers writing you app, not people who belive they know SQL because the 4 commands. Just put presentation logic in the middletier. All business logic has to go int the DB. What would protect the data oterwise.? Always avoid dynamic-SQL (even inside stored procedures).

    61. Re:Programming lesson 101 by avdp · · Score: 1

      OK, so you can't decompile Beans?

    62. Re:Programming lesson 101 by duncangough · · Score: 0

      1) Security through obscurity, no?

      2) Agreed, a SQL dictionary is nice although it comes with added overhead.

    63. Re:Programming lesson 101 by KDan · · Score: 1

      roflmao!!!

      Yeah, I didn't see it that way... heh...

      Daniel

      --
      Carpe Diem
    64. Re:Programming lesson 101 by laird · · Score: 1

      Yick. If you dynamically generate SQL statements at runtime, the database can't cache the compiled statements, so it has to get interpreted every time. That is, calling "select * from foo where a=?" 100,000 times with 100,000 parameters is a much better idea than generating 100,000 unique select statements, because you don't force the databast to parse and compile the statement 100,000 times. It also makes it much easier to profile your database performance (you can tell that you issued the query 100,000 times), etc.

      Compile-type dynamically generated SQL statements might be a good idea (depends on the applicatin whether you're being too damned clever)...

      The business with SQL parameter numbering (i.e. the "queston mark number 7") is a red herring -- that has nothing to do with the calling language, it's how SQL parameter passing is defined. Avoiding it is like avoiding using commas.

    65. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Citibank uses ASP

    66. Re:Programming lesson 101 by scotartt · · Score: 1

      Also maybe worrying about the architecture you are using if you are putting jdbc directly into your JSPs!!! The whole article is whack; small projects done by inexperienced staff and with no maintainability issues are the best ones to do with scripts; database access in JSPs is just silly architecture; etc. It's like saying, "I discovered that using a Ferrari to drive over a small bug on your driveway is an incredibly inefficient way to crush bugs. Therefore, Ferraris are bad cars."

      --
      -A lovely little thinker, but a bugger when he's pissed-
    67. Re:Programming lesson 101 by Anonymous Coward · · Score: 0

      Here's the way that I've seen some people do it. Treat them as Properties.

      Define these things:

      • A class (say, SQLProperty) that holds two items: a property key, and a SQL String. The SQL String will get loaded at run-time by a call like System.getProperty(key). (Cache it; avoid more hits to the Properties.)
      • One or more classes that are simply a bunch of static constants, each one a SQLProperty with a different key. Some 1:1 constant-name:property-key correspondence is handy. The rest of your code references these; something of yours will eventually do getSQLString() on it.
      • Some sets of properties files, probably one set per constants-class. Each different one is for a different database platform.
      • Some addition to your property initialization code (you do have a PropUtils.loadAppProperties(), right? You avoided embedded user strings like a good little coder?) that understands that you support different databases, and that a given database needs a certain property file loaded, after the database is chosen and before the database is contacted.
      Think localization -- you support multiple human languages, right? SQL is almost the Tower of Babel as the stuff grokked by human data systems. (almost) Going this route has the potential of converting a database port into a few files added to your build. No, it's never that easy, but also think: fixing a bug that affects one database, has less chance of sending support for a different platform side-ways.

      (Some will argue that the constants should be defined in the classes that use them; some will quibble about dumping ever so much into the Properties. After converting substantial, high-bandwith data processing code to this style, I haven't measured any hits attributable to this.)

      oh wait, that's UI, and this is /. . uups, my bad, sorry, I'll stop that now.

    68. Re:Programming lesson 101 by Doctor+Memory · · Score: 1

      Yeah, smoke that Sun crack, baby! If you're at all interested in performance, you'll avoid entity beans like a plague of suits. Check out this paper on EJB performance. Using entity beans means a >50% performance hit for database access. CMP, BMP, 1.1, 2.0, doesn't matter, you're gonna pay. If you really, really need to distribute your application across an eight-way cluster, then you might win with entity beans, but if you're running single-node, just save yourself the painful "performance review meeting" the week after your application goes live and just make JDBC calls from your session beans.

      --
      Just junk food for thought...
    69. Re:Programming lesson 101 by ProfKyne · · Score: 1

      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...

      Properties files or equivalent externalizing mechanism.

      --
      "First you gotta do the truffle shuffle."
  8. Worst analogy ever by Powercntrl · · Score: 1

    What's next, articles comparing P2P filesharing to looting and plundering on the high seas?

    --

    ---
    DRM is like antifreeze, to the MPAA/RIAA it's sweet, to the consumers it's poison.
    1. Re:Worst analogy ever by Anonymous Coward · · Score: 2, Funny

      Mmm, nice comparison, can I compare assembly programming to bull running, it gets you fit and fast, but it winds up being a pain in the ass.

    2. Re:Worst analogy ever by Anonymous Coward · · Score: 1, Insightful

      I dunno, SUV=Resource hog, slow, and bulky. Sounds accurate to me....

      Next stop, Flash is the Volkswagon Beetle, cute on the outside, trouble on the inside. :)

    3. Re:Worst analogy ever by Anonymous Coward · · Score: 0

      Arvast matey, I'm going to download all your sea shanties without paying. Arrrh.

    4. Re:Worst analogy ever by Powercntrl · · Score: 2, Insightful

      I dunno, SUV=Resource hog, slow, and bulky. Sounds accurate to me....

      While I refuse to try and dispute such an inane analogy as comparing SUVs to Java, I will comment on the SUV aspect.

      Where the hell does everyone live that SUVs are moving slowly?! Most SUV drivers I see on the highway go recklessly faster than the speed limit - even in bad weather. Some of the drivers honestly appear to be driving like they believe their SUV has a device under the hood that can modify the laws of physics to give them perfect traction on a slippery road and allow them to stop with the same amount of distance as a car.

      Oh sure, there's the Fast and the Furious wannabes in their riced out Type R mobiles driving insane too... But when you see this big Ford Expedition tailgating you and then cutting you off so he can do 80MPH in a 55MPH zone IN THE RAIN, you begin to wonder what these people are thinking.

      The vehicles I usually see travelling the slowest are soccer moms in minivans and cars old people seem to like... Crown Vics, Lincolns, Oldsmobiles.

      --

      ---
      DRM is like antifreeze, to the MPAA/RIAA it's sweet, to the consumers it's poison.
    5. Re:Worst analogy ever by arth1 · · Score: 1

      It's clear to me that the author know as little about SUV's (and cars in general) as he has real life experience with java.
      Could he please tell me which SUV that can climb a 1:1 (45 degree) dirt slope, as he apparently believes? 1:5 would be tough!
      And could he please tell me why he believes that java is an advanced and difficult language? It's much more limiting and easier to fully understand than open-ended languages like C and perl. It may have a high internal complexity, but that doesn't extend to the programming, which is dead simple compared to many other languages.

      In my opinion, using java isn't like driving an SUV -- it's like shipping yourself with FedEx. You don't have to learn how to drive, and you'll probably get there, dead or alive, and nobody ever got fired for using FedEx, right?

      --
      *Art

    6. Re:Worst analogy ever by EastCoastSurfer · · Score: 1

      Could he please tell me which SUV that can climb a 1:1 (45 degree) dirt slope

      I saw a show on Discovery which showed the militarys version of the Hummer doing some pretty crazy stuff. It did climb some crazy slopes, but I'm not sure what the surfaces was.

      And could he please tell me why he believes that java is an advanced and difficult language?

      Java as a language is easy. Something that I have just recently struggled with and figured out though was the setting up of a J2EE environment. The Sun tuturorial is way to complex to see just how to run a jsp or servlet. Now that I know how to do it, it is extremely easy. Finding nice straightforward information about doing simple J2EE things was a PITA. The apache tomcat site is what ended up showing me that way.

  9. SUV? Sure! by Anonymous Coward · · Score: 0, Funny
    Does that mean it's big, bloated and flips over every time you try to push it to do what it's supposed to do?

    /me wonders what the Firestone tires of programming is. Then goes to RTFA.

    1. Re:SUV? Sure! by Anonymous Coward · · Score: 0, Funny

      Couldn't RTFA, for some unknown reason. Thank you, /.!

    2. Re:SUV? Sure! by Temporal · · Score: 1

      Couldn't RTFA, for some unknown reason.

      You're new here, aren't you?

  10. Penis extension? by skaffen42 · · Score: 4, Funny

    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.

    --
    People couldn't type. We realized: Death would eventually take care of this.
    1. Re:Penis extension? by Anonymous Coward · · Score: 0

      Troll=1, Redundant=2, Funny=6, Overrated=3, Total=12: So was it funny or not?

      It was a redundantly overrated joke with a dash of troll. Next time, post something original or start a new running gag... You'll get +5 for sure.

    2. Re:Penis extension? by Anonymous Coward · · Score: 0

      I'll never understand that SUV and small penis joke. SUVs are driven by as many women as men, are almost exclusively used by families, and really are more of a symbol of settling down then anything else. Now when you see an old man driving a corvette, or even a little Mazda Miata, you know they are compensating.

      I think you need to go back to your Psych class. Men don't compensate size for size. They compensate POWER for size.

      That being said - there is no reason in the world to own a Hummer.

    3. Re:Penis extension? by Anonymous Coward · · Score: 0

      >SUVs are driven by as many women as men

      They're actually men! Something's too small you think they're women.

    4. Re:Penis extension? by Grishnakh · · Score: 1

      SUVs are driven by as many women as men,

      Yes, and they're also compensating for size. Instead of a small penis, they're trying to compensate for the feeling of inferiority or lack of power that they have as a woman, by driving a huge vehicle that they can intimidate others with, something they cannot do in person. (I'm not saying women are inferior, just that these particular women feel this way.)

      An old man driving a Miata is definitely not compensating for a small penis; those cars are sooo small, are not particularly powerful (140 HP compared to the Corvette's ~350), and would be easily crushed by a soccer mom's SUV. I think this is more of a case of an old man wanting to drive a fun car, which is something he didn't get to do when he was young because he was too poor then.

    5. Re:Penis extension? by mattgreen · · Score: 1

      I thought thats why the C crowd continues using their language?

    6. Re:Penis extension? by Mryll · · Score: 1

      I still laugh when I think about the "scare more guys" version of the Hummer ad with the 20-ish girl driving it through the city. Too rich to even dissect.

    7. Re:Penis extension? by fucksl4shd0t · · Score: 1

      Yes, and they're also compensating for size. Instead of a small penis, they're trying to compensate for the feeling of inferiority or lack of power that they have as a woman, by driving a huge vehicle that they can intimidate others with, something they cannot do in person. (I'm not saying women are inferior, just that these particular women feel this way.)

      Hmmm, maybe they're driving and SUV because their little-dick husbands bought it for them?

      That said, I drive a little Corolla, and I ain't afraid of no SUV out there. Quite simple, I can outmaneuver them on any surface I'm likely to be driving on. I'll lead them into a wall before they ever scratch my car.

      An old man driving a Miata is definitely not compensating for a small penis; those cars are sooo small, are not particularly powerful (140 HP compared to the Corvette's ~350), and would be easily crushed by a soccer mom's SUV. I think this is more of a case of an old man wanting to drive a fun car, which is something he didn't get to do when he was young because he was too poor then.

      True, but that Miatta does for the old man what Viagra cannot do.

      --
      Like what I said? You might like my music
    8. Re:Penis extension? by pyrrho · · Score: 1

      >With a good modern garbage collector, the overhead and pause time is minimal.

      they are obsessively worried about dangling pointers --- hello!?!

      --

      -pyrrho

  11. Complex programming by BWJones · · Score: 3, Insightful

    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.

    --
    Visit Jonesblog and say hello.
    1. Re:Complex programming by badmonkey · · Score: 1

      I was under the impression from several sources that the genome was decoded by a bunch of perl scripts piped together (since it is really just a big text processing job). Is there a link to this VB assertion? Even if VB was controlling the machines, I'm sure it wasn't doing the heavy lifting.

    2. Re:Complex programming by AdEbh · · Score: 1

      From the quote from the article I think Philip Greenspun was saying that the machines that handled the physical side, i.e. test tubes and what not, were controlled by programs written in VB. If this is the case then "machines" was a bit confusing. Robots was probably a better word to use.

      Then again I could be wrong. I have yet to read the article due to the /. effect.

      - EBH

    3. Re:Complex programming by Anonymous Coward · · Score: 0

      You don't know what you're talking about - unless it just another 'bash MS' knee-jerk.

      VB is a pretty rubbish language, I write c++, but if I need a GUI, straightaway I reach for VB.

      For really complex tasks, VB does cut it - you'd be surprised at how many financial apps run VB. it works, may not scale too well even though MS does have soem scaleable apps written in it. The point is that it can do pretty much anything you want. Maybe not as fast as you'd like, maybe not as scalable, but you can do it - and keep it maintainable.

      I'd say try it, you may like it, but I know you won't.

    4. Re:Complex programming by electroniceric · · Score: 1
      Excellent point!

      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.

      I'd be really interested to see what fraction of programming projects are or ought to be simple ones. It has always seemed to me that many, many organizations need (and are ready to pay for) something much more than they need an elegantly designed system. This does provoke growing pains as the load on the system grows, but then again, the org probably has systemic changes prompting the increased load. I wonder if it's possible to compare the number of man-hours on relatively simple projects with those on complex projects requiring more complex tools.

      That said, I do think it's rather inflammatory of Greenspun to claim that everyone is stupid for using a language he found hard to learn. As others have pointed out, he just seemed to have a rather shallow knowledge of the subject. Just because someone has an opinion doesn't mean they know anything - I and plenty of other /bots can certainly attest to that. :]
    5. Re:Complex programming by babbage · · Score: 1
      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.

      Err, I think that's exactly why Greenspun is sticking up for VB: in a traditional MVC system, the best language for the View portion should be a lightweight, easy to use language that, ideally, won't scare away your UI designers. VB is just fine for this. So is PHP. Perl might be a little bit scary, but it has so many great templating options that one of those should be used for the View portion anyway, not raw Perl.

      For the other portions of MVC, where a more powerful language makes more sense, then yeah, VB might not be the best choice. If what you're trying to do is really complex, then maybe Java makes more sense, or mod_perl modules, or C/C++, or what have you. But then again, if all your system is doing is providing code to extract database queries, then again the problem isn't very complex, and there's no reason VB can't do a perfectly fine job of it.

      The point of the journal entry isn't that VB is a "better" tool than Java, but that for a lot of the things people are writing software to do, a relatively simple tool like VB can do a perfectly adequate job of it, and that it is in fact overkill to bring in all the heavy machinery of a J2EE framework when all you're trying to do is wrap web pages around SQL calls.

      "Horses for courses."

    6. Re:Complex programming by Godeke · · Score: 1

      My biggest problem with Java is the fragility of the system when system changes must be made. So much design gets coded into the object hierarchy instead of versionable interfaces, that what would be a simple change in most environments is a tear the spine out and replace it with another operation.

      Reality is that by using a combination of scripting languages for the presentation layer, objects for business rules and a relational database for storage, the company I am the lead designer for has outmaneuvered companies with 100 times the resources. I listen with bemusement with the pain they are having trying to flex their over engineered systems even a hair, while our code generator modules rewrite entire systems just by changing templating code.

      Java *could* be used for such a project, but most people are too hung up on "proper" OO design to actually archive a timely result. And yes, our project has scaled just fine to millions of dollars of revenue a month passing through it: Java does not have a lock on any portion of scalable *design* which is *mostly* irrelevant to the language choice.

      --
      Sig under construction since 1998.
    7. Re:Complex programming by Anonymous Coward · · Score: 0

      VB is not suitable for developing for a non-windows platforms. However, it handles complex programming jobs just fine. Most people that take cheap shots at VB are ignorant of its capabilities.

    8. Re:Complex programming by Otter · · Score: 1
      The article doesn't say anything beyond that, but you're right -- the various bits of robotic lab equipment are almost all controlled by dedicated PCs running VB applications. That's the sort of thing for which VB is perfect.

      The heavy-duty assembly and informatics were absolutely not done in VB, and Java was used extensively, along with Perl, Python and a lot of other stuff.

    9. Re:Complex programming by Anonymous Coward · · Score: 0

      Jeez, the server is slow already with only one comment. You'd think Harvard could afford a little better given the current tuition.

      Oh yeah, that'd be a good use of the students' money. Why waste it on education when you can spend it on blogs?

      Besides, it's the law school. Harvard Law IT regularly takes their mail servers down for days at a time, and are the only people I've ever seen to announce a planned downtime without an estimated completion time.

    10. Re:Complex programming by Anonymous+Brave+Guy · · Score: 1
      Jeez, the server is slow already with only one comment.

      /me resists urge to write witty comment on what language they're using to script their web site...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    11. Re:Complex programming by fucksl4shd0t · · Score: 1

      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.

      Shit like that is just misinformation, or something like that. Not what you said, what greenspun said. Just because his fucking system can decode the human genome does not mean that it will suitably deliver my e-commerce store to 10,000 visitors daily. Apples and human genomes. Qualifying for one job doesn't mean it qualifies for another. I've got a friend who can screw and unscrew all day long, but I wouldn't give him a ratchet and tell him to go fix my car. Why? Just because he can drive a screw doesn't mean he can turn my crank.

      --
      Like what I said? You might like my music
  12. Whatever dude. by botzi · · Score: 5, Insightful
    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

    --
    1. No sig. 2. ???? 3. Profit!!!
    1. Re:Whatever dude. by Anonymous Coward · · Score: 0

      Java has never been intended to substitute scripting languages.

      That's precisely the point: Java isn't the right tool for webdevelopment because it doesn't lend itself to the development style in that context. "It uses too much gas, like an SUV". On the other hand, Java isn't the right tool for programming outside of rapid prototyping either. "The SUV get's stuck in the sand if it's taken offroad". His opinion (not mine) is that Java doesn't have a niche in which it fares better than it's respective competitors which are less compromising in a one-size-fits-all kind of way.

    2. Re:Whatever dude. by B'Trey · · Score: 4, Insightful

      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++.

      --

      "The legitimate powers of government extend only to such acts as are injurious to others." Thomas Jefferson.

    3. Re:Whatever dude. by botzi · · Score: 0
      His opinion (not mine) is that Java doesn't have a niche in which it fares better than it's respective competitors which are less compromising in a one-size-fits-all kind of way.


      But it has.
      Wondering what the standard language of choice for Embedded device applications developpment will be/is?? Well you found it.

      Want a rapid development for a web application with GUI-like capabilites??? Why not Java?(I'm sure I'll get at least one answer of this one, as I do see it even now, but let someone else get the Karma;oPP) etc.
      Java surely has some great ideas and already an ENORMOUS library. I'm ready to count on those things to be here to stay for some years.
      [OT]
      The only thing I ever approached to Java was that it win much over C++, simply because at the time there was *not* a full compiler support(heck it wasn't there till an year or two ago and we're still wating for compiler compatibility) and there was a lack of high-quality C++ programmers, thus educating the youth in Java was far simple than going on with C++ which was a pain even for some university staffs(and yes, talking from personal experience here.).
      [/OT]

      --
      1. No sig. 2. ???? 3. Profit!!!
    4. Re:Whatever dude. by hachete · · Score: 2, Interesting

      He's obviously never had to maintain large perl programs. Given the potential for pitfalls (synonyms are shite, scoping is just pure bollocks wrt $_, I've met precious few people who know what local means, even if it is written in the book - having two mechanisms for scope - just how does that work then?), I wouldn't use Perl for anything bigger than a 100 lines, even then it would have to be "throwaway".

      $_ doesn't matter on a small level like that but $_ with a couple thousand functions and various programmers meddling at intervals, not at all entirely contiguous and it'a recipe for disaster. Been there, done that. Never again.

      If someone were to say to you "I'll just write this little script, it won't take me long" I'd advise that you either (a) fire them or (b) run for the hills. They have no idea what they're doing. In the long run, all you get is grief.

      Oh yes, I've seen the cesspit that is CPAN.

      h

      Would you like a nice long sig with that, madam?

      --
      Patriotism is a virtue of the vicious
    5. Re:Whatever dude. by Anonymous Coward · · Score: 0

      Agreed, Java never intended to be a scripting language.

      In fact, there's a JSR out at the moment to bind PHP to Java - using PHP for the web/presentation tier and Java (J2EE) for application logic and beyond.

    6. Re:Whatever dude. by julesh · · Score: 1

      last time I checked, there weren't very many web pages being written in C++.

      Oooh, Oooh, I've done that.

      Not going to do it again though. 'twas nasty.

      For reference: I needed a CGI system that could run be compiled and dumped onto a server on a variety of OS's without the hassle of installing a script interpreter, such as perl, on those that don't have them. That's when you write a web site in C++.

      Another thing: the first part of the project is making a suitable template expander. Any other way is just daft.

    7. Re:Whatever dude. by yomahz · · Score: 2, Insightful

      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 maintain with these scripting languages.

      When you're integrating Web Services, XML, distributed computing with transactions, security, resource pooling, and concurrency you'll, more than likely, find yourself in a world of hurt. That's where Application Servers, EJBs, and frameworks that use established, successful design patterns (such as Struts, JSF, etc.) come into play.

      Sure it's overkill for your average web scrapper but it definitely has it's place. Even if you were able to squeak out an Enterprise level application with Perl or PHP faster than Java, I'd place a hefty wager that you'll spen 10x the amount of time supporting and extending it.

      --
      "A mind is a terrible thing to taste."
    8. Re:Whatever dude. by bug-eyed+monster · · Score: 1

      I pretty much stop listening when people say stuff like "a project done" without defining what they mean by "done." Does it mean that the program compiles and runs? Does it mean it's been QA'd and has no severity 1 defects? Severity n? Of course, many "projects" go through at least one cycle of maintenance before they become really useful, so does "done" include any maintenance cycles?

      Then there is "project" itself... Are we talking about a system written by a small team of developers? Or a complex system written by several teams who need to eventually integrate their various parts?

      Some languages are better at getting your project to the "compiles and runs" phase, while other languages are better in the long-term. Yeah, the article comes out trollish, because the guy throws around all these unsubstantiated numbers in relation to poorly defined terms.

    9. Re:Whatever dude. by Anonymous Coward · · Score: 0

      Exactly, I've been using Java for machine control applications (automated electron microscopes) for three years, and the stability is outstanding. For high performance image processing we use C with a JNI bridge or custom designed hardware when even C isn't fast enough.

    10. Re:Whatever dude. by Joe+the+Lesser · · Score: 1

      I prefer the analogy, Java is a 747, and scripting is for Cessnas.

      But then we're comparing apples to oranges, and any smart IT people know that.

      Woowoo, there's my pointless comment to this pointless discussion.

      --
      "I only speak the truth"
      Karma: null(Mostly affected by an unassigned variable)
    11. Re:Whatever dude. by Scotch+Game · · Score: 1

      The guy's a troll. It's a blog entry, moron. How can you troll your own blog?

      It's a notable comment because Greenspun's a notable commentator, but his blog entry wasn't meant to be an in-depth article. It's just interesting because his point of view is that Java is sucking hard. And from him, that's interesting.

  13. Jeep is better than SUV by mnmn · · Score: 3, Funny

    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)

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
    1. Re:Jeep is better than SUV by pebs · · Score: 4, Funny

      Take a hike (use assembly language)

      --
      #!/
    2. Re:Jeep is better than SUV by Anonymous Coward · · Score: 0

      If programming that big project is like trying to cross the Sahara then discriminating hackers choose a caml. It's unlikely to get bogged down, overheat or require dozens of volatile tank expanders.

    3. Re:Jeep is better than SUV by Anonymous Coward · · Score: 0

      One other thing to point out about the old ANSI C jeep is that it comes in a kit. You don't buy one built you have to (or get to) build it the way you want it. Need a bigger engine --- write tighter code in critical sections. Still not enough? add a turbo by dropping in some assembly. Want better traction relative to a DB, go find a nice set of library/tires. The only down side of C is that I get tired of having to continually do the mundane crap like putting in the seats (i.e. UI issues). I suppose memory issues have to be mentioned -- but that's like knowing how to set the carbuerator -- when you have done enough memory management and have engrained patterns/conventions it's not too bad

    4. Re:Jeep is better than SUV by Dark+Lord+Seth · · Score: 1

      I thought assembly was comparable to the Russian T90 tank? Big and ugly, yet powerful and fast... ( when going downhill that is... )

    5. Re:Jeep is better than SUV by Nate+B. · · Score: 1

      Climb a mountain, use machine code!

      --

      "Insanity is doing the same thing over again expecting a different result."
    6. Re:Jeep is better than SUV by kev0153 · · Score: 1

      "obviously outlast Java"

      You have never owned a Jeep. Those things are rust buckets.

    7. Re:Jeep is better than SUV by TheLink · · Score: 1

      Build the mountain first then climb it - flip the switches in the front to program the firmware, then use machine code for the rest.

      --
    8. Re:Jeep is better than SUV by Anonymous Coward · · Score: 1

      How can C++ be less useful than C, when it for all practical purposes is a superset?

    9. Re:Jeep is better than SUV by QuasiEvil · · Score: 1

      Pretty easily, really. For those of us that dislike object-oriented programming with a passion, C++ allows programmers to do things in ways that we find ugly, ineffecient, or at the least obfuscated. By adding to the language, you've allowed them to do things in ways we pure C guys object to.

    10. Re:Jeep is better than SUV by quigonn · · Score: 1

      Absolutely right. C++ is bloat.

      --
      A monkey is doing the real work for me.
    11. Re:Jeep is better than SUV by julesh · · Score: 1

      By adding to the language, you've allowed them to do things in ways we pure C guys object to.

      I can write (and in fact have written) object oriented programs in C.

      C++ makes it easier to write object oriented programs, but just because it makes something you don't like easier doesn't mean it has to be bad. It means that when somebody does write an object oriented program in it, you can probably at least understand what its doing.

    12. Re:Jeep is better than SUV by Anonymous Coward · · Score: 0

      Where ANSI C is the jeep of them all. C++ is a two-door which looks nicer but is slightly less useful.

      Hm, I'd place C++ more as some sort of luxury vehicle. It's a lot harder to build and takes more resources, but it's got so many features...

      the bicycle which would be Perl

      Perl? A bicycle? That must have stranger gears than I've ever seen.

    13. Re:Jeep is better than SUV by PissingInTheWind · · Score: 1

      Fly away on a fluffy, comfy cloud (use Lisp).

      --

      A message from the system administrator: 'I've upped my priority. Now up yours.'
    14. Re:Jeep is better than SUV by sinserve · · Score: 1
    15. Re:Jeep is better than SUV by zaffir · · Score: 1

      I would compare it to an F1 car. Very fast and powerful, but requires alot of work to get the full potential out of it.

      --
      "Upon attaching the waterblock to my penis, I began to notice that I know nothing about computers." -- JRockway
    16. Re:Jeep is better than SUV by fucksl4shd0t · · Score: 1

      Fly away on a fluffy, comfy cloud (use Lisp).

      Go pith up a three aththhole. Lithp thuckth.

      --
      Like what I said? You might like my music
    17. Re:Jeep is better than SUV by Master+Controll+Prog · · Score: 2, Funny
      no, you misunderstand asm. and seth is still a not-very-dark name, no matter what you say.

      mv drk sth
      nop
  14. Too much formalism by Vihai · · Score: 1


    As a language Java is simply too much formal.

    It is my opinion that formalism doesn't help too much in avoiding bugs, what really helps is a strong experience in designing software.

    Clueless Java programmers can and will write baldly designed software despite of any formalism enforcement.

    1. Re:Too much formalism by msgmonkey · · Score: 5, Insightful

      Bad programmers write bad programs regardless of the language.

    2. Re:Too much formalism by Anonymous Coward · · Score: 0

      Clueless Java programmers can and will write
      baldly designed software despite of any formalism
      enforcement.

      Hate to break this to you bub, but ANY clueless
      programmers can and will write badly
      designed software.

      And aren't languages built on that funny
      formalism called a grammer?

    3. Re:Too much formalism by SnowZero · · Score: 1

      Sure, but that's not the parent's point. It really takes too much formalism for people to write things baldly.

    4. Re:Too much formalism by arth1 · · Score: 1
      Bad programmers write bad programs regardless of the language.

      The challenge is to make a language that's really powerful, but so hard to understand that the bad programmers won't be able to use it.
      Of course, this approach only works until some well-meaning dolt produces tools to make the language easier to use...
      Forth was a good candidate, until helpful tools came along and ruined it. Just wait, you'll see a visual brainfuck sooner or later too...

      Regards,
      --
      *Art
  15. Java's not an SUV! by Steve+G+Swine · · Score: 5, Funny

    SUV's start up instantly!

    --
    "Consider yourself a member of a virtual corporation with Mr. Torvalds as your Chief Executive Officer." - Linux Advocac
    1. Re:Java's not an SUV! by metamatic · · Score: 1

      Enterprise Beans
      Good for the heart
      But make your web site
      Slow to start

      If Java is an SUV, EJB is a Winnebago.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  16. Like a SUV huh? by weave · · Score: 5, Funny
    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
    1. Re:Like a SUV huh? by wasabii · · Score: 1, Informative

      I would like to let you know I have a 9 inch penis and I LOVE Java.

      Owned.

    2. Re:Like a SUV huh? by superyooser · · Score: 1

      I couldn't read the article either, but I think Greenspun is probably trying to say that Java is so easy to code in that 50% of Americans are currently Java programmers. And a third of them are soccer moms. Then he probably points out, sadly, that Java's resource usage efficiency is roughly equivalent to the SUV's 40 rods to the hogshead (10.4 feet per gallon).

    3. Re:Like a SUV huh? by Anonymous Coward · · Score: 0

      You missed the "has become woefully underpowered since no-one ever goes off-road with them" comparison, too...

      Look at the H2 for proof of that ;)

    4. Re:Like a SUV huh? by Eric+Savage · · Score: 1

      Wow, how do you find the time to inspect the penises of not only a representative sample of SUV drivers, but Java programmers as well. Kudos!

      --

      This is not the greatest sig in the world, this is just a tribute.
    5. Re:Like a SUV huh? by EastCoastSurfer · · Score: 1

      I would like to let you know I have a 9 inch penis and I LOVE Java.

      You just proved the original posters point that Java is preferred by men with small penises.

    6. Re:Like a SUV huh? by Anonymous Coward · · Score: 0

      Preferred by men with small penises. Yes

      Actually, it's usually people with penis envy (insecure, homely-looking women) who drive SUVs.

    7. Re:Like a SUV huh? by Anonymous Coward · · Score: 0

      Penis envy is a male trait. People who say it is a female thing are projecting.

  17. its a bad comparison by linuxislandsucks · · Score: 1, Insightful

    Its a bad comparison from a non programmer..

    come on people hwo small is the java vm in phones.. java programs at 30-60 k in totla..an SUV?

    Now MS NET that is an SUV!!!!

    --
    Don't Tread on OpenSource
    1. Re:its a bad comparison by angle_slam · · Score: 4, Informative
      Its a bad comparison from a non programmer..

      Didn't even attempt to find out who Greenspun is, huh? Check out his resume. He is a Ph.D. in Comp Sci and teaches Comp Sci courses in MIT. Do you happen to teach Comp Sci at MIT?

    2. Re:its a bad comparison by Anonymous Coward · · Score: 0

      So he's a computer scientist, not a programmer. He probably doesn't understand the pressures - mostly around time and the need to maintain code - that lead to Java being an excellent choice for enterprise software development.

    3. Re:its a bad comparison by panurge · · Score: 1, Insightful

      In the past I've had to fire PhDs because they couldn't get the job done. PhDs tend to know a great deal about a very small subject - a very necessary thing in any difficult field, but it does tend to restrict their ability when it is necessary to have a big picture. And, unfortunately, good systems design needs a big picture appreciation. When it comes to assessing Java versus C++ versus the P languages, I'll listen to a guy who has developed a banking system or two, even if he never went near a university comp sci course.

      --
      Panurge has posted for the last time. Thanks for the positive moderations.
    4. Re:its a bad comparison by erlorad · · Score: 1

      He's showing a remarcable spectrum of subjects he misunderstands. Width is always a true sign of a Ph.D.

    5. Re:its a bad comparison by Anonymous Coward · · Score: 0

      Does the World Bank count?

      Check out his resume and the websites his company Arsdigita built back in the .com days.

      The Arsdigita Community System (ACS) is still alive in the open-source OpenACS project and runs sites like The New York Review of Books and Greenpeace.

    6. Re:its a bad comparison by Anonymous Coward · · Score: 0

      yes, he teaches computer science. the practice
      of programming is a much different thing that
      requires skill and talent, things unteachable.

    7. Re:its a bad comparison by Anonymous Coward · · Score: 0

      Again, read the resume. He may teach Comp Sci. But he was also in the private sector for a long time, building Ars Digita to a multi-million dollar corportation and actually designing and programming for a living.

    8. Re:its a bad comparison by Anonymous Coward · · Score: 0
      Does the World Bank count?

      No. Just because it has "Bank" in the name doesn't make it a bank.

    9. Re:its a bad comparison by Anonymous Coward · · Score: 0

      You're like the dude who bitched at me because I responded negatively to a user with a low usernumber.

      Just because he has a phd and teaches doesn't mean he's GOD, ass.

    10. Re:its a bad comparison by Anonymous Coward · · Score: 0

      > Width is always a true sign of a Ph.D.

      Is THAT why people get the degree?

    11. Re:its a bad comparison by sglane81 · · Score: 1

      Now MS NET that is an SUV!!!!

      .NET was created using the same concepts of Java. If you look at C# vs Java, you will notice few differences. Start the flames about how different they are below this line.

      --
      This is the Internet. You can say "fuck" here. - AC
    12. Re:its a bad comparison by Anonymous Coward · · Score: 0
      Spoken (and moderated by, apparently) like someone who still naively thinks being a professor of computer science at MIT somehow makes you a good programmer.


      Have you ever written an application with >1 million lines of code? I have. And with Java, it was easy. I've done them in mixed C/C++ as well and it took far longer and resulted in far more bugs.

    13. Re:its a bad comparison by Anonymous Coward · · Score: 0

      He is a Ph.D. in Comp Sci and teaches Comp Sci courses in MIT. Do you happen to teach Comp Sci at MIT?

      Greenspun is famous not for teaching Computer Science, but for lecturing to a bunch of college freshmen "HTML Programmers" and revealing to the them the wonderful secret that you can do server-side dynamic content with a database.

      Doesn't sound very impressive now, does it? Well it wasn't impressive when he was doing it 4 years ago either. Things like ASP or mod_perl had been on the market for years.

      (Maybe he's a great Computer Scientist too. I dunno. I got the impression he was doing this at some sort of night school @ MIT.)

      Anyway, being the "guru" of dynamic page development allowed him to become the figurehead of some failed dotcom consulting company. When his ass was finally ousted by the VC bosses, he garnered more attention for himself by bitching and moaning publically.

    14. Re:its a bad comparison by sdcharle · · Score: 1
      Eve Anderson's account of the implosion of Ars Digita (Greenspun's old company, as you mention) is interesting reading, btw.

      http://eveander.com/arsdigita-history

    15. Re:its a bad comparison by allenthelee · · Score: 0

      Obligatory dilbert dump:
      http://www.dilbert.com/comics/dilbert/archive/dilb ert-20030827.html

      Never underestimate one's ability to make a total ass of themselves in the heat of the moment, even despite multiple important looking pieces of paper at prestigious learning institutions.

  18. Re:Pascal is king by SMOC · · Score: 0

    Yeah, and who needs static or initialized local variables anyway. Oh you mean I should use assignable consts for that? Yeah that makes sense.

    --
    All errors in this comment are mine. Corrections are considered a derivative work, and punishable under copyright law.
  19. Hmmm... by Anonymous Coward · · Score: 0

    So you're 16X more likely to kill other developers when your Java program crashes?

  20. Java's Cover by nthomas · · Score: 5, Interesting
    The blog seems to be down, but in case anyone was interested in a similar story:

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

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

    Thomas

    1. Re:Java's Cover by GypC · · Score: 1

      To be fair, to a LISP guru like Graham, everything else sucks (except maybe C, and then it's only an evil of convenience). And rightly so... if you are an expert in a functional language with highly optimized implementations like LISP, everything else does suck.

      But many of us can't think like that (or at least, we don't have the discipline or desire to learn). It takes me a lot longer to develop an elegant solution to a real-world problem in a functional language than to just bang it out in Perl or BASIC.

    2. Re:Java's Cover by Avumede · · Score: 4, Interesting

      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 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.

    3. Re:Java's Cover by Sphere1952 · · Score: 2, Troll

      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.)

      --
      Big Brother Bush is doubleplus ungood.
    4. Re:Java's Cover by kisrael · · Score: 1

      But many of us can't think like that (or at least, we don't have the discipline or desire to learn). It takes me a lot longer to develop an elegant solution to a real-world problem in a functional language than to just bang it out in Perl or BASIC.

      I'm still a Lisp skeptic, after having a semester of it back in the day. (Same with Prolog.) It seems like, in the same way massively parallel processing only seems good for a small subset of tasks that seem custom made for it, Lisp is only good for specific applications, and all the ordinary stuff is difficult.

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    5. Re:Java's Cover by StormReaver · · Score: 0

      Paul Graham is largely on Crack about Java. Before I continue, let me get the required "I'm not defending a language because it's all I know.":

      I've done extensive programming in more dialects of BASIC than I can remember, C, C++, Java, several assembler languages, COBOL (ick, ick, ick!), PHP, and I few I'm sure I'm forgetting.

      1) Energetically hyped. I agree that the hype has gone too far, but enough of it has turned out to be true that dismissing it out of hand is doing yourself a disfavor.

      2) Easy to use. This is, according to Graham, supposed to be a fault. However, Java's general ease of use does not compromise much of importance. The garbage collector is the only exception. Watching a program halt for seconds at a time while the garbage collection goes about its job is extremely annoying. However, the pauses tend to level out after the application has settled into its main loop for a while.

      3) Java was originally designed to solve a particular problem (embedded devices). That is has expanded beyond its original role is not a bad thing. It expanded in this way because developers demanded it, not just to piss of Microsoft.

      4) This is where he takes the first large hit from his Crack pipe. Many people, myself included, love Java. The core language is wonderfully designed and easy to use, and the extensive library of prewritten classes make a LOT of jobs very easy. If you understand its strengths and weaknesses, and use it appropriately, it's a thing of beauty.

      5) I would hate any language I were forced to use. This is a red herring, and should never be included in a serious debate. It's complete nonsense to think that this is limited to Java. All corporate language mandates will be hated by most people.

      6) The nice thing about Java is that the core language and the core classes were designed and written by a few highly competent people. The rest may or may not have been done by committee, but you are not forced to use the rest. In fact, you can unzip all the library JAR files, remove the classes you don't like, zip the remainder, and have a much slimmer Java that only has the stuff you want.

      7) [sarcasm]Java provides a definition for accomplishing a wide variety of tasks. Shame on it....[/sarcasm]

      8) Complete brain damage. "It's popular, so it must suck."

      9) This argument is just insane. Java was designed to handle large problem domains, much of which characterizes large corporations. However, it's just as useable by we individuals who want to cleanly implement our own solutions to large (from our perspective) problem domains. He's just discarded the whole nature of OOP.

      10) More brain damage. "I don't like the people who like it, so it must suck." He reasons 9 and 10 trash any sense of respect to which he may or may not be entitled.

      11) This is pseudo relevant and somewhat justified. Java is controlled by SUN, a company with a history of abandoning products depending upon which way the wind blows. There is a certain risk in using Java, as SUN may at any time decide that Java is no longer a strategic product. However, gcc provides support for the core language and libraries. Only GUI applications run the risk of immediate obsolescence. Most others will merely turn into natively compiled applications, so the risk is mitigated.

      12) More brain damage like 9 and 10. Guilt by association.

      With the exception of 11 above, he is way out in left field. In fact, he is stationed in the parking lot of the ballfield in the next city. He has zero credibility in critiquing a language with which he has no experience, and this shows through glaringly.

      Java is a tool. If you use your tools where they are appropriate, and you understand how to deploy them, you'll have a good chance at good results.

    6. Re:Java's Cover by TheLink · · Score: 1

      Yeah. Lisp looks like it's for super smart hardworking people. The sort who when asked to interface with a DB, look at the DB, spit, and write a replacement DB in LISP in 3 days.

      I use perl, coz I'm lazy, not that smart and so prefer to reuse code written by much smarter and more hardworking people (see: www.cpan.org). That way I screw up less and get to do stuff at a higher level e.g. fetch web page, parse page, fetch and parse a record from an ldap server, do some processing, send the results to an RDBMS, do whatever WITHOUT having to write my own libraries/modules from scratch.

      LISP, Java were a bit too much work when I last checked. I don't know how to program safely in C. That said it seems like maybe only 10 people out of 6 billion can program in C safely, the rest only think they know ;).

      --
    7. Re:Java's Cover by telbij · · Score: 1

      No, but read his article. He doesn't think everything else sucks. In particular he thinks Perl, C and Python are great. His arguments aren't based in any kind of technical preference but rather his experience with how political factors affect language design. In the end he doesn't even claim that Java sucks, just that he is in no hurry to learn it based on the fact that it is built by a huge corporation in committee-fashion and the department of defense loves it :)

    8. Re:Java's Cover by telbij · · Score: 1

      He makes a big effort to communicate that he is not critiquing java itself but what he infers from the circumstances around its development and rise to popularity.

      While it's easy to interpret his observation that Java is backed by people he doesn't like as an irrational knee-jerk reaction. But I would argue that knowing how certain people make decisions gives you a valid reason to doubt their wisdom. It may not be 100% even-handed, but who is? We all use our past experience to help us make future decisions, and in the realm of programming languages I would be inclined to care more about the opinions of programmers than large organizations whose only knowledge comes from sales people.

    9. Re:Java's Cover by The+Muffin+Man · · Score: 1

      If I click on the Gosling link you provided I get a "400 Bad Request" return code. In fact, weblogs.java.net currently returns 400 for every request. I suppose it's written in Java...

    10. Re:Java's Cover by Glock27 · · Score: 1
      11) This is pseudo relevant and somewhat justified. Java is controlled by SUN, a company with a history of abandoning products depending upon which way the wind blows. There is a certain risk in using Java, as SUN may at any time decide that Java is no longer a strategic product. However, gcc provides support for the core language and libraries. Only GUI applications run the risk of immediate obsolescence. Most others will merely turn into natively compiled applications, so the risk is mitigated.

      I don't really see this risk. If Sun were to go away tomorrow, that would leave Java in the hands of it's biggest proponent - IBM. IBM has over 10 times the market capitalization that Sun does, and is vastly more profitable. IBM could very easily take over the JCP. Rumor also has it that Sun is finally ready to open-source JSE.

      There are also open alternatives that don't look too bad. gcj has always been interesting, although it won't run Java 2 apps completely yet. However, it will build SWT based apps including the Eclipse IDE. I still think natively compiled Java holds a lot of promise, especially coupled with the real time extensions.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    11. Re:Java's Cover by radish · · Score: 1

      OK, so just refer to everything as Object and don't use primitives - problem solved.

      Now IMNSHO you've just lost a big chunk of the expressive power of the language, not to mention pushed a huge number of bugs out from the nice "compiler will find these" category to the microsoft-esque "user will find these" category, but hey, it's your choice.

      --

      ---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"

    12. Re:Java's Cover by Anonymous Coward · · Score: 0

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

      Where? I'd love to hear Goslings side of this and that link is dead.

      3) It has ulterior motives. So what?

      Fair enough. GNOME started to undermine KDE, which was then viewed as a threat to FSF ideals and has turned into a pretty cool project.

      Still, ulterior motives don't "feel" right, and that was the point of the article.

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

      Saying something is the lesser of two evils and loving it are two very different things. When eating your favorite food do you say "Well, it tastes better than manure"? Loving something goes beyond preferring it to something you find really disagreeable. I'd rather get punched in the stomach than poked in the eye, but if it's quite all right with you, I'd rather not have either one!

      I also get really sick of how many Java guys there are that bash C++. I've been studying for a Java cert. (because I feel I need to as a fallback if I can't find Python work), and I'm having to repeatedly suppress my gag reflex every time the authors of the book bash C++.

      Give me a break. Java is dumbed-down C++... Gosling made it because he got aggravated at how difficult he found C++. He made something with less features to protect programmers from themselves. I don't understand why anyone can prefer being treated like they can't handle themselves.

      Also, I can't help but feel "Gosling couldn't hack C++, so he made Java instead." Though that's probably a tad unfair...

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

      That's the point. C-O-M-P-A-N-I-E-S are choosing it. Not hackers (or not so many).

      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.

      It's generally recognized among Java folks that JCP is too slow and is generally broken.

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

      Perl: "Makes easy things easy and hard things possible."
      Java: "Make everything equally hard so you can't tell the difference anymore."

      It's been pointed out how many classes you have to instantiate to open a file and read lines. The trouble is, all these operations are too complicated and thus take brain cycles away from the real problem you're trying to solve.

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

      There's no denying Java is buzz-wordy. I think it's like designer-brand clothes. You pay a lot for them, everyone thinks you're cool... (fast forward a few years)... they're in the closet (or garbage) you look at old pictures of how you looked back then and wonder "what was I thinking!?"

      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.

      Your previous link, again, is dead. Hopefully Gosling's argument is not.

      Large organizations have used Perl successfully, Python too. Large organizations have also (I'm sure) failed with Java. Success/failure is largely a matter of discipline. C does wonderful without name-spaces because sane naming conventions are adopted so that stuff in different libs doesn't clash (still, I like name-spaces better though).

      One Perl script, seems to run amazon.com pretty well: http://www.masonhq.com/about/sites.html

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

    13. Re:Java's Cover by fizbin · · Score: 1

      Actually, looking at the headers you get when you ask for / (using HTTP/1.0, so with no Host: header), the server claims to be an Apache 1.3.27 install running mod_perl and mod_gzip.

      My personal guess? They've got some sort of mod_perl-based request rewriting engine active on almost the entire site that has gone haywire, and is producing requests that Apache can't handle.

    14. Re:Java's Cover by naasking · · Score: 1

      For those worried about provable correctness of a language, strong typing is a necessity. Please check out OCaml and you'll find a language that guarantees that your program will not terminate with a type error. If you want casting between low-level types and bit manipulations, use C.

    15. Re:Java's Cover by Anonymous Coward · · Score: 0

      Ouch. Remind me never to hire you or Graham to write a critical application for my company.

    16. Re:Java's Cover by StormReaver · · Score: 1

      "He makes a big effort to communicate that he is not critiquing java itself but what he infers from the circumstances around its development and rise to popularity."

      He is trying to straddle the fence. In the beginning, he says that he doesn't like Java. At the end, he says that he isn't blaming Java itself. The end result, though, is the same. He is bashing Java not because of technical merits (or lack thereof), but because of circumstances that have nothing to do with the language, and that are largely irrelevant.

    17. Re:Java's Cover by Sphere1952 · · Score: 1

      I'm rather aware of the stopping problem. There is no such thing as provable correctness of a language -- at least not if the language has the power of a turing machine. There might be provable correctness of an algorithm if it is simple enough.

      I agree that strong typing can catch simple errors, but it does so at the expense of making the program more complicated -- introducing more opportunity for complex errors. There is no way of getting around the fact that programming is computationally difficult. If programming didn't have mathematically unsolvable problems computers would have become intellegent decades ago.

      --
      Big Brother Bush is doubleplus ungood.
    18. Re:Java's Cover by KrispyKringle · · Score: 2, Insightful
      "strong typing is stupid"

      I think that speaks well for your credibility. You've been at "this programming thing" for a long time, eh? I assume the only languages you've used have been scripting languages like Perl, PHP, and Python? Or perhaps you program enterprise-level applications entirely in assembly, eh? Cut me a break. Strong typing is a core requirement in any serious programming language (don't get me wrong; I'm a huge fan of Perl and PHP has its uses, but neither are meant for the sort of tasks you might use C, C++, or Java for--and vice versa; C, C++, and Java are hardly meant for quick-n-dirty scripting).

      And don't get so arrogant. "Study...and you'll understand," right? I understand a few things. In my experience, programmers--myself included--benefit greately from the checks and controls of strong typing. Without it, the compiler cannot make sure that you, the coder, aren't doing something stupid. And yes, you can say, "well, I don't do that sort of thing and don't need no stinkin' machine to help me out" but thats just ignorant. The entire process of programming is one of interpreting human ideas into machine instructions. That's a task people aren't particularly good at, and the more help we can get, the better. That's why you don't program entire apps in assembly, thats why we have compilers check for syntax errors, unreachable statements, and other stupid things, and thats why we have strongly typed languages to make sure we aren't doing something stupid.

      Oh, and you ever have to work on a legacy app someone programmed in PHP or Perl or some other weakly-typed language? It's pure hell.

    19. Re:Java's Cover by butane_bob2003 · · Score: 2, Interesting

      4. No one loves it. C, Perl, Python, Smalltalk, and Lisp programmers love their languages. I've never heard anyone say that they loved Java.

      What?
      I love Java. There I said it. Of course script kiddies love their languages. What else do they know? I think Paul Graham should try building an enterprise app in java before hes starts spouting mostly foundles criticisms. Most of the people who have nothing good to say about Java know fsck all about it. This holds true for most people's views on languages/technology. Ignorance is bliss, write an article!

      --


      TallGreen CMS hosting
    20. Re:Java's Cover by Avumede · · Score: 1

      I just tried the link and the link seems to be working (but a bit slow).

      Saying something is the lesser of two evils and loving it are two very different things. When eating your favorite food do you say "Well, it tastes better than manure"? Loving something goes beyond preferring it to something you find really disagreeable. I'd rather get punched in the stomach than poked in the eye, but if it's quite all right with you, I'd rather not have either one!

      I never said it was the lesser of two evils. I said it's appreciated for what it is, a nice environment to write serious sever-side apps in. I personally don't love any language, every language has points about it that drive me crazy. But enough people "love" it that the open-source community has tons of interesting Java projects.

      There's no denying Java is buzz-wordy. I think it's like designer-brand clothes. You pay a lot for them, everyone thinks you're cool... (fast forward a few years)... they're in the closet (or garbage) you look at old pictures of how you looked back then and wonder "what was I thinking!?"

      It's not a matter of buzz-words. When you code serious apps, doing what many other people are doing has serious, logical, tangible worth. I know if there is a problem with the JVM, it's likely someone would have discovered it before me, and Sun will (hopefully) fix the problem in the next point release. IN the meantime, people from all over the world suggests workarounds, etc. I know that the JVM is being used in a lot of different ways, in many different environments.

      Sure, my friend can invent the greatest programming language ever, and it could be initially great fun to write in. But if the garbage collector is buggy or doesn't perform well, or the language has performance issues in general or under load conditions, or it behaves extremely erratically under low-memory conditions, or it allows buffer overflow errors, or crashes sporadically for unknown reasons, I will be in hell trying to support this thing I wrote.


      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!

      Are you attacking the argument or the person that made it?

      The argument, if you can call it that. Not that it's any better than the collection of logical fallacies that make up that post. To Graham's credit, he admits that it's just his feelings and not supposed to be an informed look at Java. It's a shame people keep linking to it, as if it is actually a real argument, though.

    21. Re:Java's Cover by Procyon101 · · Score: 1

      For an enterprise app, java is the WORST choice.

      For a small, cross platform app it is perfect. Once you scale up the app to enterprise level complexity, the cross platform problems go through the roof, the performance impact slows you to a crawl, the memory leaks and/or memory fragmentation problems become unbearable as your real world usage of memory diverges from the GC's optimal model.... I would never attempt a large app in java, I will stick to C++ for that. For small apps, I think java is perfect (say for instance a database front end).

      I've never used it for server side stuff, but I doubt it is better than a more scripted language like PHP.

    22. Re:Java's Cover by Sphere1952 · · Score: 1

      For the record, I started in 1971 and while I used LISP, Fortran, and the like I did most of my programming in PDP-11 Assembler until 1984. I then moved over to mostly C; which is not a strongly typed language. I've done most of my programming in C++ from 1997 until now; which is a strongly typed language. My work has always involved commercial products with repeated release cycles. C is a better language than C++.

      --
      Big Brother Bush is doubleplus ungood.
    23. Re:Java's Cover by Bob+Uhl · · Score: 1
      Nice to see that you didn't RTFA, but merely skimmed it. Graham's not addressing Java, but `hacker radar'--that ability a hacker has to judge a language without actually using it, much like judging a book by its cover; contrary to popular belief this is very possible. To address your `points':
      1. Hype: the Graham's point is that good languages don't need hype or ad campaigns--hackers use them because they want to, not because a marketing exec sold them on it.
      2. You miss the point: Java is evolutionary, not revolutionary. It is afraid to be new: it uses syntax which is familiar and doesn't bother trying anything new.
      3. The point is that Java is not pushed because it's a Really Cool Programming Language, but because it's part of Sun's anti-Microsoft plan. A good language is big because it's good, not because of its side effects (although those can be quite salutary).
      4. No one loves Java; everyone prefers it to something else. A good language is loved because of what it is, not what it isn't.
      5. The point is that adoption is not driven from below but from above--and that most technical directions from above are likely to be incorrect.
      6. No good language has ever before been a product of a committee. Committees standardise; they cannot create. And regarding the `well-thought out APIs,' what's this I read about being easily able to get the number of columns but not the number of rows in a query? Plus, any language which has such bloody verbose libraries cannot be all good.
      7. Good lanuages don't force you to use their protocols; they let you think in the terms which make the most sense for your problem.
      8. The point is that Java's `hipness' is fake: it's not driven by hackers but by advertising.
      9. Large orgs want to hire morons, not hackers. A good language (like a good philosophy or book) doesn't lower itself to its users' level but raises them up to its. Java panders; good languages offer.
      10. When one's friends are bright people, and they dislike something or don't care about something, that is useful information. When something is liked by morons, that too is useful information.
      11. When a language's controller is in trouble, the language is in trouble. A language without a controller is free from this particular risk.
      12. The DoD is the uber-corporation; that it likes something is worrisome. It doesn't mean that the thing is bad, but that it could be bad.

      Again, that's another part of Graham's point: no single one of these items is necessarily a deal-breaker. Indeed, one might even argue that just as the best poetry is written knowing the rules, but unafraid to bend or even break them for effect, so too an excellent language might need to bend or break the rules for a particular reason. But Java has a lot of strikes against it, and really nothing in its favour. And so he's not spending any time learning it.

    24. Re:Java's Cover by naasking · · Score: 1

      There is no such thing as provable correctness of a language -- at least not if the language has the power of a turing machine.

      Right. I meant to type "provable correctness of the *program*".

      I agree that strong typing can catch simple errors, but it does so at the expense of making the program more complicated -- introducing more opportunity for complex errors.

      That is an unfounded assertion. I have seen no research to demonstrate this. Considering that most "show-stopping" problemsin complex programs are simple and trivial errors (like memory leaks, type errors, etc.), it seems useful to let the computer handle these easily solvable, but tedious issues. As you said, programming is computationally difficult or even impossible to automate, so the most complex problems must be handled by humans. Computers are good at repetitive simple tasks, humans are good at complex abstract problems.

      Keeping track of types is not a computationally difficult problem. If ones' algorithm or program depends on poorly defined input or ouput types, then it is a poorly defined algorithm. Generalization of algorithms is handled by polymorphism, not dynamic typing or (worse yet) weak typing.

    25. Re:Java's Cover by Anonymous Coward · · Score: 0

      "I think perl is very ugly and counter-intuitive"

      Isn't python just perl for retarded people? There is more than one way to do it in perl, but python tries to give you only one way to do it. And has anyone ever been on a project with dozens of Java people and one or two Perl-types? I have... two years later when the company went belly up (lack of funds), Perl was still running the show and none of the Java stuff worked yet. My theory: the entire colapse of the economy is because of companies selling Java solutions and then spending millions and millions trying to make something work that was already working in another language (usually perl with some awk thrown in).

      I think the real problem is a lack of a certification system to keep the dummies out that write verbose, crap code in all languages (java and python folks seem to be really big into this - and yes, i've developed in both... err, been forced to develope in both while the economy was down). But then, who would provide the certification? I imagine that it would be the same CEOs and CTOs that don't know anything about programming that are choosing Java in the first place thanks to a wonderful advertising campaign.

      Now - as far as Java being THE solution for enterprise development - and given the universal recognition that it takes longer to develope and in hogs lots of system resources - wouldn't it be cheaper and easier just to hire fewer people that actually know what they are doing rather than building some rediculously huge staff of hacks? Anyone ever heard of, "spinning your wheels"? This seems about as silly as saying that one programmer is better than another because they write more lines of code in a day. Granted, that same programmer thinks copy-and-paste is code reuse - but at least they look busy.

    26. Re:Java's Cover by Avumede · · Score: 1

      Nice to see that you didn't RTFA, but merely skimmed it. Graham's not addressing Java, but `hacker radar'--that ability a hacker has to judge a language without actually using it, much like judging a book by its cover; contrary to popular belief this is very possible. To address your `points':
      Actually I did read it many times, quite carefully. And I did point out that Graham didn't claim to have any experience to back him up. Besides, don't you think it's amusing to accuse me of trashing something I haven't read, and accusing me of not realizing that the article is just a trashing of something he hasn't used?

      # Hype: the Graham's point is that good languages don't need hype or ad campaigns--hackers use them because they want to, not because a marketing exec sold them on it.
      But Marketing execs don't decide on Java. At least in my company, the engineers decided on it, after making a Lisp prototype. What sane company would use Marketing to decide technical issues?

      # You miss the point: Java is evolutionary, not revolutionary. It is afraid to be new: it uses syntax which is familiar and doesn't bother trying anything new.

      You say that like it's a bad thing. ALmost all languages have familiar syntax, and for good reason. Graham likes Lisp, and that has an old, old syntax.
      # The point is that Java is not pushed because it's a Really Cool Programming Language, but because it's part of Sun's anti-Microsoft plan. A good language is big because it's good, not because of its side effects (although those can be quite salutary).
      Well, Java is not a "cool" programming language, at least not anymore. Cool is fleeting. Perl used to be cool. Then Python was cool. Now Ruby is cool. Or whatever, it's best to use the right tool for the job then worry about what Slashdotters think of your choice.
      # The point is that adoption is not driven from below but from above--and that most technical directions from above are likely to be incorrect.
      Okay, but the assumption that Java is widely popular because people who don't understand technology choose it, is an assumption that seems faulty.
      # The point is that Java's `hipness' is fake: it's not driven by hackers but by advertising.
      Is there any proof of this? What about all the open-source Java stuff out there?
      # Large orgs want to hire morons, not hackers. A good language (like a good philosophy or book) doesn't lower itself to its users' level but raises them up to its. Java panders; good languages offer.
      I think Java could do a better job in the power department, but it was NOT written to allow stupid people to code. It was written to more easily create solid code. See Gosling's blog entry in my original post.

    27. Re:Java's Cover by KrispyKringle · · Score: 1
      If you want to claim that assembly is the future of programming, I don't think we'll have a particularly useful discussion. Being able to understand and modify assembly is certainly worthwhile for optimization, but comparing assembly to Java is like comparing apples and crack-whores, if you'll pardon the expression.

      As for C being strongly or weakly typed, I suggest you check out this page. Certainly, C could be considered either in the proper context, and I don't want to debate it. Nonetheless, I think it's a bit dishonest to try to lump C in with PHP and Perl, which I would think was the implication of "weakly typed" in our context (or such was my assumption).

      You don't mention any PHP or Perl experience in there, so I'll try to fill you in. Working on other people's code in either of those two languages, unless very well documented, sucks. I use both PHP and Perl for small projects I need to whip up quickly, such as a simple web-application or dynamic content on a webpage. But for a large-scale project, it would be hell. I'd choose JSP.

    28. Re:Java's Cover by Sphere1952 · · Score: 1

      "Keeping track of types is not a computationally difficult problem. If ones' algorithm or program depends on poorly defined input or ouput types, then it is a poorly defined algorithm. Generalization of algorithms is handled by polymorphism, not dynamic typing or (worse yet) weak typing."

      Keeping track of types is a computationally impossible problem. The denoted type is not the connotated type. Have you ever tried to correctly splice a polymorphism into the middle of a heirarchy? It's easier to start over.

      You seem to have no concept of the fact that the problem domain tends to mutate over time. Spagetti code is bad enough. Spagetti types fail in unknowable ways.

      --
      Big Brother Bush is doubleplus ungood.
    29. Re:Java's Cover by Sphere1952 · · Score: 1

      "I think it's a bit dishonest to try to lump C in with PHP and Perl, which I would think was the implication of "weakly typed" in our context (or such was my assumption)."

      I learned to think in Lisp and then went on to program in PDP-11 Assembler (sort of the same as Lisp). I didn't lump them in with PHP and Perl -- although Perl is kind of neat. Rather than thinking in terms of weakly typed languages, think in terms of unbound types. You get better code by overlaying the type you need at the moment over the bits than by modifying the bits to fit the type.

      C++ does have some nice features, but strong typing isn't one of them. In fact, strong typing is the major reason I refused to program in Pascal and Ada.

      Objects are stupid too. They are almost the exact reverse of what they should be. An object should have no basic type and should have types added to it as necessary.

      --
      Big Brother Bush is doubleplus ungood.
    30. Re:Java's Cover by naasking · · Score: 1

      Keeping track of types is a computationally impossible problem.

      The type inference included in many modern compilers must be a figment of my imagination then (such as the aforementioned Ocaml).

      You seem to have no concept of the fact that the problem domain tends to mutate over time. Spagetti code is bad enough. Spagetti types fail in unknowable ways.

      Exactly, and this is precisely why static typing is safer. Dynamic typing gives you no guarantee that you have altered all the affected code. Statically typed languages fail predictably and immediately in such circumstances.

    31. Re:Java's Cover by KrispyKringle · · Score: 1

      So you remain resolute in a world filled with fans of Object Oriented programming? You must be really good or really stupid.

    32. Re:Java's Cover by dvdeug · · Score: 1

      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.)

      Great. You've just saved 4 nanoseconds over the standard method at the cost of mangling anything that's not English and making it a pain to port to EBCDIC or Unicode. (And, of course, making what you're doing confusing to the next guy, who doesn't think in the bit values of ASCII.) Wonderful example of 1960's programming - make it fast even if it's not right.

    33. Re:Java's Cover by Trinition · · Score: 1

      For an enterprise app, java is the WORST choice.

      I've never used it for server side stuff

      Need I say more?

    34. Re:Java's Cover by Sphere1952 · · Score: 1

      You sure made a lot of assumptions there. Why would I be using ASCII for message strings?

      --
      Big Brother Bush is doubleplus ungood.
    35. Re:Java's Cover by dvdeug · · Score: 1

      You sure made a lot of assumptions there. Why would I be using ASCII for message strings?

      That's the worst non-sequitor I've heard in a while. You said:

      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.)

      and all I did was point out that all studying the bit structure of ASCII will do is help you write code that mangles the non-ASCII that most of the world uses.

      It's really an absurd example. Treating anything as something at one point and a bucket of bits someplace else is a sign of too-cute programming, and is going to be a source of bugs the instant you port to a new platform or have to add a new flag or object to the structure. Adding a cast is the least you can do at that point to make it clear.

      But hey, no one expects PDP-11 assembler to be portable or modifiable. And there's something to be said for programming in the only language that has killed people accidently (the Therarad incident.)

  21. Wahhh !!! by Anonymous Coward · · Score: 0

    Java is not slow. I ran benchmark that called
    assembly language routines to do floating point
    calculations. It's 90% as fast as "C". Wahhh.
    Mommy!

    1. Re:Wahhh !!! by Anonymous Coward · · Score: 0

      Lets see, you actualy saying its slower then "C"?
      mm, so what about those statements that Java is faster then C? (Yes alot of people has said so).

      I beleave the question was "Is Java slower then C".
      and the answer is "-No, erh, yes, but no, not realy?"

    2. Re:Wahhh !!! by KDan · · Score: 1

      Java is slower than C you blockhead. How could it be any other way, given that Java is interpreted whereas C is compiled!?

      The only ways in which Java is faster than C is in the speed of development and the amount of time you have to spend to maintain and extend it (if it's been written properly of course).

      Daniel

      --
      Carpe Diem
    3. Re:Wahhh !!! by Anonymous Coward · · Score: 0

      Java is not interpreted.

    4. Re:Wahhh !!! by -brazil- · · Score: 2, Informative
      Java is slower than C you blockhead. How could it be any other way, given that Java is interpreted whereas C is compiled!?


      Java has not usually been "interpreted" for years. And in its JIT compilation, it can use optimizations based on data available only at runtime, which could in some cases make it faster than precompiled C code. Admittedly, that's rare and most of the time Java is slower.

      --

      The illegal we do immediately. The unconstitutional takes a little longer.
      --Henry Kissinger

    5. Re:Wahhh !!! by Anonymous Coward · · Score: 0

      How do you execute bytecode then?

    6. Re:Wahhh !!! by Anonymous Coward · · Score: 0

      It's JIT compiled. This is not the same as being interpreted at all.

    7. Re:Wahhh !!! by mobiGeek · · Score: 1
      Java is slower than C you blockhead.
      Define "slower".

      I can develop any non-trivial application in Java at a much faster rate than the equivalent C program.

      My time costs way too much for my customers to worry about squeezing a few miliseconds (or even a second or two) out of the average end-user's workflow.

      Don't get me wrong. I do understand that there are some niches where performance matters. However, it is much more oftener than not that people argue about performance before they even know what the performance requirements are. And no, "the fastest it can be" is not a valid requirement.

      --

      ...Beware the IDEs of Microsoft...

    8. Re:Wahhh !!! by Anonymous Coward · · Score: 0

      . And no, "the fastest it can be" is not a valid requirement.

      Exactly so. I'm old enough to remember similar arguments when C started to replace hand-coded assembly language.

      Sure, there are still a few areas where ASM is king, but not for 99% of the applications.

      It's all about programmer productivity and maintainability.

    9. Re:Wahhh !!! by KDan · · Score: 1

      Oh hey, don't misunderstand me - I love Java too. Hell, I write java code for a living (in between all the rest of the stuff they make me do - but officially I'm on the "Java skilltrack"...).

      I didn't know it was actually compiled before being run. So you mean if I write a monster project which results in 10 megabytes of bytecode, it will all have to be compiled to the local platform when I start it before it can start??

      Daniel

      --
      Carpe Diem
    10. Re:Wahhh !!! by StillNeedMoreCoffee · · Score: 2, Informative

      Well it is a matter of when compilations occurs. In C it has to happen all at once before you ever use it. With Java which is a much more dynamic language by design and with the new JIT compilers, compilation of the byte code (which you could think of as object code in the C envirionment) is turned into machine code segments that are cached by the JVM and run from there. This means that there is a little startup time for that delayed compilation but then the code runs close to C speeds. But then if you don't need to complile everything you don't.

      There is some overhead due to the dynamic message passing, but then you have that in C++ as well and is something that would slow both languages down compared to C. The expressibility and re-usablility of the OOPS paragim means that design, and maintenance can be much better with Java than a C program over the entire life a a project for a great savings in time and money for everyone concerned.

    11. Re:Wahhh !!! by bnenning · · Score: 1
      So you mean if I write a monster project which results in 10 megabytes of bytecode, it will all have to be compiled to the local platform when I start it before it can start??


      No; google for "HotSpot". The VM watches to see which code executes most frequently and dynamically determines what to compile.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    12. Re:Wahhh !!! by Anonymous Coward · · Score: 0
      I can develop any non-trivial application in Java at a much faster rate than the equivalent C program.
      Really, and how long would it take you to do it in OCaml, Haskell, Lisp, or Python? If developer productivity is such an important resource, I would imagine that all avenues to improve it would be investigated. Also, performance always matters, it is not just important in some niches, as you claim. The requirements are just not always that strict.
  22. makes me wonder by jr87 · · Score: 1

    what they would compare BASIC to model T?

  23. Thank You by JamesP · · Score: 4, Funny

    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);
    }

    --
    how long until /. fixes commenting on Chrome?
    1. Re:Thank You by Kytakh · · Score: 1, Offtopic

      i take it by your example that you failed java 101 at university?

    2. Re:Thank You by Anonymous Coward · · Score: 0

      I know which of those code snippets I'd prefer to be running if something went wrong. Java wins again!

    3. Re:Thank You by Anonymous Coward · · Score: 0

      That is so unbelievably /lame/.

    4. Re:Thank You by rjstanford · · Score: 4, Insightful

      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

      --
      You're special forces then? That's great! I just love your olympics!
    5. Re:Thank You by Bluelive · · Score: 1

      I just couldnt resist void cut(Bread theBread) throws Outch { new Knife(new KnifeHandle(), new KnifeBlade()) .cut(theBread); }

    6. Re:Thank You by Malc · · Score: 1

      What's wrong with strong typing?

    7. Re:Thank You by Petronius · · Score: 1

      You're supposed to lookup KnifeHandle and KnifeBlase with JNDI. Also, I'd recommend you perform bread(cut) within an XA-enabled transaction inside a Session Bean. This should multiply the number of LOC by 2 or 3.

      --
      there's no place like ~
    8. Re:Thank You by Xugumad · · Score: 1

      Which is fine in small scale projects. On the other hand, we re-wrote an application from Tcl/Tk to Java and about halved the code size (it was technically less than half, but bits got cut out in the rewrite, so I'm calling it not quiet half). This was because we could write a lot of reusable code, especially as our data model fitted objects quite well.

      Also, being able to catch exceptions is really useful. If a servlet in the system I work with throws an exception, it's caught, the input to the servlet analysed, and the result along with a stack trace e-mailed to the developers.

      Although waking up to 20 "Internal error" e-mails is always a nuisance...

    9. Re:Thank You by wayward_son · · Score: 1

      If you want it quick and dirty, use ASP or PHP.

      If you want some more robust error handling, use Java.

      Java is NOT designed for hackers, it's designed for industry. It can be slow, bloated, and awkward at times, but it is very powerful and cross platform.

      This is exteremely valuable in industry.

    10. Re:Thank You by RevMike · · Score: 1
      knifeh = new KnifeHandle
      knifeb = new KnifeBlade
      k = new Knife
      k.Attach(knifeh)
      k.Attach(knifeb)
      Actually, first you'd get an "Initital Context" - a connection to your directory service. Then, you'd use that initial context to look up an instance of KitchenToolAbstractFactory. Then using KitchenToolAbstractFactory, you'd get an instance of KnifeFactory. Using KnifeFactory, you'd get a knife.

      Yes, it "Puffs the Purple Dragon" when you are trying to rapidly develop a simple app. However, when you are trying to build a scalable, fault tolerant, secure, heterogeneous, distributed system that supports a high throughput, you'll find that these constructs have value.

      Perl is my favorite tool. I use it for all my one-off jobs, as well as proof of concepts, etc. But Java provides a framework that allows for resource pooling, security, fail-over, etc.

    11. Re:Thank You by bheerssen · · Score: 1

      It all comes down to the skill and thouroughness of the developer. I could certainly program PHP to call 911 in that example. It might even be easier to do it in ASP if I'm on an MS platform. However, if I wanted to be able to handle a situation where millions of users are cutting bread at the same time using many different cutting mechanisms, I would start to think about Java. It's not that PHP couldn't be written to handle that, but Java already has many well developed classes that can make such a thing easier.

      --
      (Score: -1, Stupid)
    12. Re:Thank You by Anonymous Coward · · Score: 0

      Could be worse. You could be writing in Cobol.

      identification division.
      program-id. hello-world.

      environment division.
      configuration section.
      source-computer. ibm-pc.
      object-computer. ibm-pc.

      input-output section.
      file-control.
      select file-out assign to printer, "con".

      data division.

      fd file-out label records are omitted.
      01 record-out pic x(80).

      working-storage section.
      01 line-out pic x(80)
      05 hello-world pic x(11) value 'Hello World'.
      05 filler pic x(69) value spaces.

      procedure division.
      100-main-module.
      open output file-out.
      write record-out from hello-world.
      stop run.

    13. Re:Thank You by a1englishman · · Score: 1

      not if you used exception handling in ASP.net:

      try
      breat.cut()
      catch ex as exception
      'appropriate action
      Log(ex)
      end try

    14. Re:Thank You by Anonymous Coward · · Score: 0

      Right, thats a big if. Just look at all the so-called "programmers" here decrying the various features of Java (like exception handling) as if they are "unnecessary bloat". If its an option in ASP, then it is effectively never used by naive programmers who think their bachelor in computer science and web cam device driver experience make them a brilliant programmer.

    15. Re:Thank You by arkane1234 · · Score: 1

      What's wrong with strong typing?

      It tends to wear your keyboard out after a while....

      --
      -- This space for lease, low setup fee, inquire within!
    16. Re:Thank You by Slime-dogg · · Score: 1

      Be truthful! The knife should attach it's own blade in the constructor. You'd call this a breadknife.

      Java:

      BreadKnife bKnife = new BreadKnife();
      _try()
      bKnife.cut(new Bread());
      catch(Outch)
      dial.dialNumber(911);

      ASP

      Dim knife
      Dim bread
      Set knife = Server.CreateObject("KnifeLib.ButterKnife")
      Set bread = Server.CreateObject("FoodLib.Bread")
      knife.cut bread
      Set bread = Nothing
      Set knife = Nothing

      ASP.NET

      BreadKnife bKnife = new BreadKnife();
      try{
      bKnife.cut(bread);
      }catch (CutException e){
      if (e.isBleeding == true)
      Phone.Dial(911);
      }

      There really isn't any advantage one way or the other, except that ASP sucks compared to both.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    17. Re:Thank You by erikdotla · · Score: 2, Funny

      #!perl
      $bread = qq(wheatwheatwheat);
      $bread =~ s/(\S{5})/$1 /g;

      # :)

      --
      # Erik
    18. Re:Thank You by Trinition · · Score: 1

      Wait, wait, wait...

      In PHP, how do you define the function cut? What is it that it is cutting? Can I pass in a String? If so, what happens. How about an int. If so, what happens? How do you specify the type of knife handle and blade you wish to cut with? Since you deifned it in Java, I assume it was one of your requiremnts that you conveniently skipped in PHP to try and skew the passive reader's mind towards your point-of-view.

      And in ASP, where did you get the bread object? I know of no standard Object types which behave like that. It must be a custom one. I once tried making a custom Object in-script in ASP. THen I Couldn't store it in a Session and it broke because the Obejct defition is repared every time. Then I tried VB and Windows Script Components to build an Objetc, but sticking such an Object in the Session starts binding up the threads in IIS. So then I found the only solution was to use VIsual C++ to develop an ActiveX comonent with the proper threading model. Again,. you coneventiently glossed over this as if you're hiding something.

      Then there's Java (I'll not lingeron your broken syntax). You use blatantly verbose syntax to try and make it look longer. Then you added error handling. There's a plus for Java. I assume your PHP and ASP would throw some sort of error that would end up as a HTTP 500 error confusing the poor user.

      Come back when you have a legitimate post.

    19. Re:Thank You by Bazouel · · Score: 1

      With ASP.Net, you can catch exceptions ......

      --
      Intelligence shared is intelligence squared.
    20. Re:Thank You by beamin · · Score: 1

      But Microsoft says that Java is not a reliable language in NT's EULA! They say not to use it for life-support or nuclear control equipment!

      It CAN'T be safe!

  24. non karma whore article text by Anonymous Coward · · Score: 2, Informative

    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.

    After researching how to do bind variables in Java (see the very end of http://philip.greenspun.com/internet-application-w orkbook/software-structure), which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases, I had an epiphany: Java is the SUV of programming tools.

    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). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. 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. This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can't handle a true off-road adventure for which a tracked vehicle is required.

    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. 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. With a dynamic language such as Lisp, PHP, Perl, Tcl, you could do bind variables by having the database interface look at local variables in the caller's environment. With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247", an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query).

  25. Exactly by BoomerSooner · · Score: 1

    If you want an over complicated project, use Java.

    I like JSP, JFC based apps are painful to code, use, implement and maintain (depreciation is my friend).

  26. Harvard: The 'SUV' of Higher Education? by hethatishere · · Score: 5, Funny

    Just a thought from a friendly MIT student.

    --
    Something intelligent here.
    1. Re:Harvard: The 'SUV' of Higher Education? by Anonymous Coward · · Score: 0

      Btw, Phil went to mit too.

    2. Re:Harvard: The 'SUV' of Higher Education? by ihistand · · Score: 1

      Actually, the author is a graduate and teacher at MIT. Not sure what he's doing over at Harvard, as his blog appears to have been slashdotted.

  27. Software Engineering for Internet Applications? by Manos+Batsis · · Score: 1

    What they are teaching them, as with any material used in education, has some distanse from production projects.
    Try throwing in LDAP servers, SMS/GPRS gateways with PHP or .NET and you'll see what I mean. BTW, this guy has his students playing with raw SQL and the like, while production developers use OO abstraction layers for persistense like Hibernate, JDO or EJBs as they see fit.
    These students are using Java like they would be using PHP in a small website project...

    1. Re:Software Engineering for Internet Applications? by jmccay · · Score: 1
      MIT seems to be more about concept than practicality. My favorie part:
      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.
      Something to complex for an MIT student! {Insert your favorite druggie comment here!}
      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
  28. Phillip Greenspun by Hard_Code · · Score: 4, Funny

    Phillip Greenspun == Hot air balloon of programming pundits

    --

    It's 10 PM. Do you know if you're un-American?
    1. Re:Phillip Greenspun by matresstester · · Score: 1

      Is it me or does he look like George from Steinfeld? What makes him so special that we want to listen to what he says?

    2. Re:Phillip Greenspun by kisrael · · Score: 3, Funny

      Phillip Greenspun == Hot air balloon of programming pundits

      Clearly your anagram generation routine is broken. Here's one:
      Phillip Greenspun = Gel slipper, hip nun
      or
      Phillip Greenspun = grep hep ills, unpin!

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    3. Re:Phillip Greenspun by Anonymous Coward · · Score: 0

      Just look at the success of Ars Digita.

      Oops. They went under. But he did manage to steal a shit load of money from the VCs.

      First time in my life I felt sorry for a VC.

    4. Re:Phillip Greenspun by Anonymous Coward · · Score: 0

      Phillip Greenspun == Hot air balloon of programming pundits

      Well I think you meant to say:
      Phillip Greenspun.equals(Hot air balloon of programming pundit)
      :0)

  29. Sorry, but J2EE is Javas killer app by Anonymous Coward · · Score: 1, Interesting

    Why is J2EE always forgotten about when it comes to Java? I dont know of anything that comes close to J2EE.
    Try to have transactional management across different operations on Solaris, Linux, Windows, etc., with Oracle, IBM Mainframes, etc. Now add a new database vendor, switch a few Windows boxes to Linux boxes, etc. J2EE makes all this much easier to manage and cope with.
    Seeing these elements run in 'containers' the objects are already started up and waiting to service...wrecking your 'java is slow' arguement.

    1. Re:Sorry, but J2EE is Javas killer app by BobGregg · · Score: 1

      >>I don't know of anything that comes close to J2EE.

      Um... CICS?

      Granted, not cross-platform, not nearly as functional, and on and on. Not saying CICS has the kind of functionality and flexibility of J2EE, or anything like that. But for some reason Java pundits always seem to think, hey, transaction managment environment - nobody's EVER done that before. It's actually been around for a long time...

      Just saying.

    2. Re:Sorry, but J2EE is Javas killer app by kisrael · · Score: 1

      "Sorry, but J2EE is Javas killer app"--yeah, I've seen it kill many otherwise promising projects.

      Too much overhead for too little benefit.

      Never very portable...hard enough to get working well on one platform! In particular, EJBs. (That's actually my main focus of loathing for Java right now.)

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    3. Re:Sorry, but J2EE is Javas killer app by afidel · · Score: 1

      Now I don't program stuff on this level, but isn't that kind of what IBM's MQ Series stuff is all about, making sure things talk nicely across platforms and between systems?

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    4. Re:Sorry, but J2EE is Javas killer app by clard11 · · Score: 1

      CICS can run EJBs in its latest versions.

      --
      catch (ModDownException mde) {post.modUp("Interesting")}
  30. Obligatory: ... then C++... by Anonymous Coward · · Score: 5, Interesting

    ...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.

    1. Re:Obligatory: ... then C++... by shamilton · · Score: 4, Insightful
      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.

      --
      "[A] high IQ is like a Jeep; you will still get stuck, just farther from help!" --Just d' FAQs, c.g.a
    2. Re:Obligatory: ... then C++... by z4ce · · Score: 1

      Aw come on, its not that bad in C:)

      #include
      #include
      int main(int argc, char **argv) {
      int i;
      for (i = argc; i argc; i--) {
      print(argv[i]);
      }
      }

      I also seriously doubt that scientific numerical operations would run that much slower in Perl. I could be disproved on this.. but I doubt it. Especially if whatever mathematically thing you're wanting to compute relies on hashes for data structures :)

      Ian

    3. Re:Obligatory: ... then C++... by 2short · · Score: 1

      "I got it done in time--about nine months. It was a beautiful candidate for rapid application development. "

      LOL! I'll let you know when I get a development cycle longer than 2 months. Until then, I guess I'll stick to C++.

    4. Re:Obligatory: ... then C++... by Joey+Vegetables · · Score: 1
      Not hundreds of lines of code - just 3.
      d = Split("This is a silly sentence chock full of words.")
      For i = UBound(d) To LBound(d) Step -1: oStr = oStr & d(i) & " ": Next
      MsgBox oStr
      It did take dozens of lines to do even simple text processing in the days before VB got decent string handling functions, regexes, and the Dictionary class, circa VB6. (All were of course inspired by Perl.)
    5. Re:Obligatory: ... then C++... by Anonymous Coward · · Score: 0
      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.


      I'm pretty sure Perl/Tk would let you write it in a minute or two.likewise wxPython for writing it in python. I think you seriously overstate here.

    6. Re:Obligatory: ... then C++... by shamilton · · Score: 1

      I said function, not program. If the words are already in an array, that's much of the trouble already out of the way. If you want to do as I indicated, then you either need to write your own string-splitting function, or use a strsep(3) loop. Much of the work is in memory allocation, which Perl takes care of. However, I now realise 100 lines was an overstatement. Reduce it to 25 -- still, that's 25 times as many lines as the Perl script.

      --
      "[A] high IQ is like a Jeep; you will still get stuck, just farther from help!" --Just d' FAQs, c.g.a
    7. Re:Obligatory: ... then C++... by Luke · · Score: 1

      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.

      Uh, you've never heard of Perl/Tk then.

    8. Re:Obligatory: ... then C++... by Anonymous Coward · · Score: 0

      Actually, your period gets screwed up there. But I get your point :)

    9. Re:Obligatory: ... then C++... by soft_guy · · Score: 1

      This is why I learned (at great effort) to *love* C++ and STL. First, I had to learn C++, then get good at it, then start to like it, then become a C++ snob.

      Now, I am a C++ snob and I make lots of money.

      If I hadn't been willing to do all that work to love C++, I'd be broke and programming in Dylan while riding the bus.

      --
      Avoid Missing Ball for High Score
    10. Re:Obligatory: ... then C++... by batkins · · Score: 1

      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.

      use Tk;
      $mw = MainWindow->new;

      $e1 = $mw->Entry->pack;
      $e2 = $mw->Entry->pack;
      $sum = $mw->Label->pack;

      $mw->Button(-text => 'Compute', -command => sub {
      $sum->configure(-text => ($e1->get() + $e2->get()));
      });

      MainLoop;

    11. Re:Obligatory: ... then C++... by z4ce · · Score: 1

      Alright, true. You did say function. I missed that.

      char * reverse(char *src) {
      char *dest = malloc(strlen(src));
      while(tok=strtok(src," ")) strcat(dest,tok);
      return dest;
      }

      Of course, it certainly is much more beautiful in Perl. sub &reverse { join(' ', reverse(split)); }

      Certainly, in the general case, I can easily see any program that does heavily text maniplation being at least 4 times as large in C.

      Ian

    12. Re:Obligatory: ... then C++... by Anonymous Coward · · Score: 0
      Nice, but you forgot to
      "->pack"
      the Button.
    13. Re:Obligatory: ... then C++... by z4ce · · Score: 1

      Eek. I should have thought before posting. That's the same order, without spaces. 10 lines now... can anyone else think of a more clever way to do this? (and not doing stuff like sticking the entire while block in the conditional statement or something) :)

      char * reverse(char *src) {
      char *dest = malloc(strlen(src));
      char *buf = malloc(strlen(src));
      while(tok=strtok(src," ")) {
      sprintf(dest, "%s %s",tok,buf);
      strcpy(buf,dest);
      }
      free(buf);
      return dest;
      }

  31. Re:Pascal is king by SMOC · · Score: 0

    I just wanted to say that I admire the stylish and capable manner in which you dealt with that situation.

    Thank you for making this world a little better.

    --
    All errors in this comment are mine. Corrections are considered a derivative work, and punishable under copyright law.
  32. Handling by Lord+Grey · · Score: 1

    While I don't agree with the article, in general, I do think that the phrase, "It doesn't corner very well" is strangely appropriate for both Java and SUVs.

    --
    // Beyond Here Lie Dragons
  33. Java is to Visual Basic is to.... by Anonymous Coward · · Score: 2, Insightful

    My opinion is that Java is a great language and has great portability. It is a good language to learn for the future. Visual Basic is the tool of Microsoft's own agenda. I know Visual Basic 6.0 great, but I was handed some code using VB.Net and I was unable to get the new structure down without significant time. Now if someone has only has .net, what will they do when they want to update my 6.0?

    Scroll ahead to java. The programs I wrote years ago are still applicable and can be updated by anyone with any good working knowledge of java. In addition, Java is not going to radically change its structure on a whim or for a business decision.

    Microsoft's quest to destroy other languages may render you redoing your applications every 2-3 years and even then, you may find that server functions suddenly stop functioning because of an autoupdate.

    For me, Java is the way to go for now. Others may go with VB. It doesn't matter as long as the job gets done and we can stop this arguement. BTW, look at the job openings for a java programmer vs. VB.

    -SenatorPerry
    http://www.newberrycollege.net

    1. Re:Java is to Visual Basic is to.... by silverbax · · Score: 1

      I would agree that Microsoft was adept at replacing the language of Visual Basic, but they really haven't "destroyed" their other languages...Visual J++ was never widely adopted, and Visual C++ hasn't changed radically.

      C#, VB.net and Java are much closer than ever. The major difference ( to me ) is the ease of use in the IDE for C# and VB.net. A lot of the things I used to use Java for I can now accomplish in .NET, and deployment is much better than the clunky interface of VB 6. Honestly, in a business environment, anytime I need more than VB.net or C#, I'm probably going to use C++, not Java. The advantages ( such as VB 6's inability to use variables smaller than bytes ) are pretty much gone.

  34. My ELF membership requires that I... by mattgreen · · Score: 0, Offtopic

    Delete that damn teddy bear icon! For the sake of the Earth do the same thing!

    1. Re:My ELF membership requires that I... by mattgreen · · Score: 1

      Obviously any form of subtle humor is lost on moderators.

  35. Re:Make Java Open Source! by jacksonyee · · Score: 4, Insightful

    You mean like Kaffe?

    The Java class library, the language standard, and even the bytecode itself has been pretty well documented in many sources across the web. There's nothing preventing you from making your own version should you wish to - it's just that most people have decided that one of the existing implementations are "good enough" for their uses, just like many people decided that Windows 98 was "good enough."

    I personally still don't buy this "Java is an SUV" argument. A programming language is a tool, and a bad programmer can write horrible code in any language or environment. I've said this before on ./, but knowing which tool to use and why you're using it is the most important thing to realize when you're programming.

  36. Proving a point by 192939495969798999 · · Score: 0, Offtopic

    I wrote this reply to prove a point. I took a positive case for JAVA only to see the number of people who were willing to present actual test cases where JAVA didn't work that well, and I got several. I will be using them in my talk today with Sun. Thanks for your help! :)

    --
    stuff |
  37. Ummm... RTFA? by sporkboy · · Score: 4, Insightful
    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.
    1. Re:Ummm... RTFA? by bert33 · · Score: 1

      So let me get this straight... there's plenty of experienced J2EE programmers who can't find a job, yet even simple jsp developement is too complicated for graduate level MIT CS majors?!? Something just isn't right with this picture.

      --
      These people look deep into my soul and assign me a number based on the order I joined.
    2. Re:Ummm... RTFA? by d3ut3r0n · · Score: 1

      JSP is part of J2EE. Furthermore, programming for the web and developing real applications is an entirely different set of skills. I'd call it a complete waste of $120K in school fees if MIT graduates ended up doing web development or if they couldn't adapt to either JSP or J2EE if so required by market forces.

    3. Re:Ummm... RTFA? by HappyClown · · Score: 1

      The only concrete complaint he seems to have is that Java is too difficult for his students because they are unable to count question marks in a prepared statement.

      Perhaps he should have specified a minimum of 6 months' pre-school education as a prerequisite for his course?

    4. Re:Ummm... RTFA? by owlstead · · Score: 1

      Right you are. JSP is mainly meant to be used for making it easyer for web builders to communicate with the underlying Java objects.

      Any person using a lot of Java in their .JSP pages is obviously badly mistaken. Most of the time defining tags and doing everything outside the view of the web based programmer is the way to go. Try to get your functionality in seperate classes, and use EJB's if you want scalability.

      And that's the other thing. A well written servlet is scalable. Obviously something they missed since the site is still down.

      Furthermore, how can you say that PERL is easier to maintain? Most people will not even be able to read PERL scripts due to the lovely syntax. Which is also the problem with the .NET languages by the way. As long as the API stays the same, there is little to worry about for Sun.

      My prediction: Java will stay put for the immediate future.

      Maarten

    5. Re:Ummm... RTFA? by wayward_son · · Score: 1

      MIT students don't know Java. I'm guessing that Java is not part of the standard curriculum

      Java is more difficult to learn on the fly than ASP.Net or PHP.

      The question is not why Java is so difficult, but why senior level comp. sci. students chose such a complicated solution when a simpler one would have worked. (Java/JSP + Linux + Oracle???)

      Thank you, Captain Obvious.

    6. Re:Ummm... RTFA? by mad_rc · · Score: 1

      If his students are failing at something, isn't that because they're not being taught properly? On top of that, it can't help things if they're told that the technology they've chosen is lame.

      I dunno, maybe Greenspun should think about his teaching methods failing, and not the technology.

    7. Re:Ummm... RTFA? by DoofusOfDeath · · Score: 1

      In the book by the hosts of Cartalk (cartalk.cars.com), the guys describe a real-life incident.

      There were a bunch of MIT EE grads in an apartment, agaonizing over whether or not it was safe to connect a ceiling light socket with a screwdriver in a certain situation.

      On of their neighbors, who shovels dirt for a living, visited them, saw their delema, and screwed in the light socket for them.

      Moral of the story? Some MIT folks are really smart (I work with some of them), but they're not all brilliant in all areas.

    8. Re:Ummm... RTFA? by Anonymous Coward · · Score: 0

      The students choose their own tools. MIT isn't in the business of making sure students are fluent in Java or any other language, merely in teaching them Computer Science. Since he hasn't and won't be teaching them Java, it's hardly because of his teaching methods.

  38. mmh by Anonymous Coward · · Score: 0

    Here is where I believe that conclusion came from: Java provides the best methods (that I know) to build very abstract code that can be reused in the best possible way. So, if you set out to print "hello world" and use java, you might just be tempted to build a dictionary class and a spellchecker so that the main class can have one line saying something like
    System.out.println( Spellchecker.correct( "helo werld" ) );
    and it will be corrected automatically to what is most likely meant by that. Ok, this example is possible in any language, but many such things are particularly well implementable in java, which is why the temptation to make something big out of a small task is higher and thus development time incresases at first. This is, however, a GOOD thing, if you actually reuse the code, which will (in theory) reduce the time needed later.

  39. SUV? by edstromp · · Score: 0, Redundant

    You mean Java is gas-guzzeling, oversized, hard-to-park, and basically pointless for 90% of the suburbanites that own them?

  40. copy und paste!!! by Anonymous Coward · · Score: 1, Informative

    Java is the SUV of programming tools
    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.

    After researching how to do bind variables in Java (see the very end of http://philip.greenspun.com/internet-application-w orkbook/software-structure), which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases, I had an epiphany: Java is the SUV of programming tools.

    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). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. 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. This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can't handle a true off-road adventure for which a tracked vehicle is required.

    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. 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. With a dynamic language such as Lisp, PHP, Perl, Tcl, you could do bind variables by having the database interface look at local variables in the caller's environment. With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247", an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query).

  41. Java is the language of outsourcing by duffbeer703 · · Score: 1

    Strictly enforced standards, naming conventions, etc make Java the ideal language to force "developers" in India or Romania to use.

    More structure == easier to figure out wtf is going on. Imagine the Perl code that would come from a $6/hr code monkey in Banglaore?

    --
    Conformity is the jailer of freedom and enemy of growth. -JFK
  42. Re:Pascal is king by Anonymous Coward · · Score: 0

    Dear Sir,
    and we at our organization thank you for taking the time to contribute to the content of the world wide web. Feel free to do so more often and we hope that you receive more interesting replies than this one.
    Sincerely,
    Mr Blinky

  43. Google cache by stienman · · Score: 2, Informative

    Google cache of the blog entry.

    Also below:
    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.

    After researching how to do bind variables in Java (see the very end of http://philip.greenspun.com/internet-application-w orkbook/software-structure), which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases, I had an epiphany: Java is the SUV of programming tools.

    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). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. 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. This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can't handle a true off-road adventure for which a tracked vehicle is required.

    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. 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. With a dynamic language such as Lisp, PHP, Perl, Tcl, you could do bind variables by having the database interface look at local variables in the caller's environment. With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247", an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query).

    -Adam

  44. Text of article by Anonymous Coward · · Score: 0, Redundant

    Can SUVs remain fashionable when only unfashionable people drive them?

    Speaking of SUVs... (see below), at a recent gathering in suburban New Jersey I noticed that nearly everyone else had arrived in an SUV. The drivers were overwhelmingly middle-aged married suburbanites with children. When one encounters a young, good-looking, city-dweller the chances are very high that he or she will be driving an inexpensive compact car of some sort. If you see an SUV in the distance but can't see the occupants because the glass is too heavily tinted, chances are that it is 35-year-old mom and two kids. A Suburu sedan, by contrast, is often occupied by a young single urbanite.

    How much longer can the popularity of SUVs continue? Many of the drivers are getting so old that their fragile bones really can't handle the stiff suspension and harsh ride over bumps (my 40th birthday is in a week and whenever I'm picked up from the airport in a BMW X5 or similar I can't believe how little isolation is provided from potholes, etc.; it is actually more jarring than landing the DA40 at 67 knots).

    So how is it that SUVs remain in fashion when 99% of the owners of SUVs are unfashionable?

    # Posted by Philip Greenspun on 9/20/03; 3:34:38 PM - Comments [14]
    Java is the SUV of programming tools

    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.

    After researching how to do bind variables in Java (see the very end of http://philip.greenspun.com/internet-application-w orkbook/software-structure), which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases, I had an epiphany: Java is the SUV of programming tools.

    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). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. 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. This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can't handle a true off-road adventure for which a tracked vehicle is required.

    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. 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. With a dynamic language such as Lisp, PHP, Perl, Tcl, you c

  45. Godling's Glossary for Java by SuperBanana · · Score: 2

    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

  46. This settles it by Anonymous Coward · · Score: 0

    Yes, it's now documented, the students at MIT can't even do a simple JSP page. Some even have problems with fundamental math, such as counting to seven or even eight!

  47. Why are Javahead moderators quick to mod down by Anonymous Coward · · Score: 0

    posts that portray Java in a bad light even when they are based on fact? Slashdot is supposed to be a discussion forum. If Java is truly great as its advocates suggest - post some facts!

  48. i'm sorry but.. by gl4ss · · Score: 2, Informative

    **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).

    --
    world was created 5 seconds before this post as it is.
    1. Re:i'm sorry but.. by Anonymous Coward · · Score: 0

      1) Senior level students should be able to program in Java to do whatever they need to do. It is a simple OO language that I picked up in 2 weekends.

      2) A sign of the piss poor education level of the students. They are repeating tasks but don't understand the concepts they are using. OO is OO is OO.

      3) A lack of willing to learn MANY languages to find the best for each situation.

      4) A good tight optimized java program can interact better with the AWT built GUI. I can't parse an 80,000 line entry and feed it into a textbox in VB. It literally burns up 80 megs of RAM. In java, the same program only used up 24 Megs.

    2. Re:i'm sorry but.. by dnoyeb · · Score: 1

      JSP existed before J2EE and can exist independently of J2EE. But J2EE includes JSP.

      This shows that the article writer probably only has a casual knowledge of Java and its various tools. Since he is the teacher, the trouble his students are having is likely taking queues from him...

  49. Modern PCs are more like SUVs by Junks+Jerzey · · Score: 2, Insightful

    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.

  50. Wow by Hard_Code · · Score: 2, Insightful

    "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. :(

    --

    It's 10 PM. Do you know if you're un-American?
  51. Slashdotted... by diesel66 · · Score: 1

    Hmm. The site was slashdotted before the great unwashed could see it. If the sites posted in articles get Slashed before anyone other than subscribers get to see it, then only subscribers will get the karma that inevitably goes with the posting of mirror to the slashdotted site, or posting content from the site. Not that that sort of Karma is ideal, but it does count the same. How about mirroring wimpy sites like this on slashdot itself? Or maybe doing something with the lameness filter?

    --



    eleven plus two / twelve plus one
  52. Binding Variables hard, so Java sucks???? by mabinogi · · Score: 1

    Aparently his whole argument is that Binding variables in JDBC is hard....

    what the FUCK is hard about it?...

    try using something like OCI, and then talk to me about hard.

    So it's not quite as easy as other database APIs, it's still pretty bloody easy....

    --
    Advanced users are users too!
    1. Re:Binding Variables hard, so Java sucks???? by kyoko21 · · Score: 1

      I have to agree with you on that one. Understanding and using OCI can be quite challenging even for the seasoned programmer.

  53. I think everyone is missing the point... by surfsalot · · Score: 5, Insightful

    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.

    1. Re:I think everyone is missing the point... by elwinc · · Score: 1
      Well, maybe not. The benefits of Java described in the parent apply equally well to C++ and maybe C# and their respective development environments. Greenspun says explicitly that the students who chose Java are having a harder time than those who chose C++ and C#. You (author of the parent) need to explain not just what Java is good for, but why you think it's superior to C++ and C#.

      That's why the comparison to SUVs is appropriate. On paved roads, in wet or dry weather, most any modern sedan will hold the road better than an SUV. And they're more efficient. In snowy weather, the all-wheel-drive sedans are still better than the SUV. The conditions that make an SUV shine are off-road conditions. It's the wrong tool for city and suburban driving. Greenspun's argument is that Java is inferior to C++ and C# (i.e. the wrong tool for) for database backed web services programming. You need to say where it 's better than the competition.

      --
      --- Often in error; never in doubt!
    2. Re:I think everyone is missing the point... by Anonymous Coward · · Score: 1, Informative

      The problem with Java is that it explicitly excludes a lot of powerful language features and forces the programmer to perform a lot of unnecessary work.

      C/C++ don't have closures (but do have first-class functions, unlike Java) because they can't work properly with manual memory management. What's Java's excuse?

      Java only supports subclass polymorphism, which makes things like collection classes very awkward to use (worst of both worlds of statically vs. dynamically typed languages), why? (Admittedly, this is being addressed by the upcoming generics)

      Not only does Java force an "OO-only" approach, but an unusually clunky and awkward OO approach compared to most other languages.

      The only reason why Java can be used to implement (some) programs efficiently is because it includes a huge library of pre-packaged functionality. The core language is probably the least expressive, least featureful language currently in use.

    3. Re:I think everyone is missing the point... by Zimm · · Score: 1

      Java is great for what it is supposed to be used for.

      Java was made as a replacement for C++. So it's not being used very much for what it was made for by your own words. It's found it's way onto the server as glue code around c++ code such as databases, in place of scripting languages. Out side of J2EE where is the success of java? Wouldn't J2EE be better if you could code it with say python? Java has not become a replacement for C++. And it sucks as a scripting language.

    4. Re:I think everyone is missing the point... by Jerf · · Score: 1

      Managed properly (I say managed as in development code, concept usage, and production) it can be a valuable tool.

      Really, that's not the point. First, "managed properly" assembly is a valuable tool; that's a useless metric.

      But secondly, and more importantly, the question is not "Is Java a valuable tool?" That implies that Java just sort of exists in the void, alone, our sole choice for programming. The real question is "Is Java the best tool?"

      I have to say the only reason I see to choose Java is if it has the libraries you need... and the reason it has those libraries is because large companies shoved Java down our throats until even the academics are doing "research" that involve trying to retrofit more powerful languages on top of Java. (AOP, anyone? AOP wouldn't have become a "paradigm" if we were all programming in Python, where "AOP" is so easy and natural you have to work to avoid it once you get to a certain level of sophistication!)

      This is my root problem with Java; the whole thing seems foisted on us in a huge way. That doesn't make it bad. It might even be "good". But I vastly prefer languages that are thriving on their own merits, and competing without the virtues of a large corporation pushing them. You have to ask yourself how "wonderful" Java is if even with its vast resources it has not managed to corner the market. Maybe it's because there's something better out there? And how well would Java have done on its own merits? (My guess is that we'd still never have heard of it on Slashdot.)

      (Hey, maybe not. But I still think the question should be asked.)

    5. Re:I think everyone is missing the point... by Anonymous Coward · · Score: 0

      Hello. Allow me to introduce you to the "Enter" key.

      Please use it more frequently.

    6. Re:I think everyone is missing the point... by shostiru · · Score: 1
      bug tracking is easy... its either there and you fix it, or its sun/ibm's fault and you wait or work around it

      As far as I know (and if I'm wrong please correct me), the Java toolchain is still closed source. I've certainly never found the source code for the Java interpreter or libraries, and the license makes it clear that Java is owned by Sun, not by the community. When Microsoft does this, everyone in the linux community (rightfully) declares the evils of closed-source applictions; why are we so willing to forgive the same behaviour from Sun?

      I've used several Java apps where problems have been traced to Java itself. There's no solution, except to wait for Sun to get around to fixing the problem; in at least one case Sun admitted to the bug, but declared it a low priority item that would not be fixed in the near future. Were this a problem with the Perl interpreter, or gcc, we could have patched the code and submitted the patch ourselves.

      Please note that I'm not complaining about the Java language itself. I wouldn't use Java for all applications, but neither would I use any other language for all applications. But I'm disinclined to use it at all so long as the toolchain and the language are controlled by a single vendor.

  54. Mirror? by smithmc · · Score: 1

    Anyone got a mirror? Damn thing's /.ed already.

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  55. Google cache of the article here by Angostura · · Score: 0, Redundant
    Or rather, here

    Summary: Like an SUV Java code may run anywhere, but it is over-engineered for smooth roads^H^H^H^H^H^H^H simple programing problems

  56. Java is like Windows XP, can anybody say bloatware by node159 · · Score: 5, Insightful

    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.

    --
    GPLv2: I want my rights, I want my phone call! DRM: What use is a phone call, if you are unable to speak?
  57. Rubbish by CrazyTalk · · Score: 1

    This article almost sounds like it was written by someone who really doesn't understand programming, like all those (currently unemployed) folks who bought a "Learn VB in 24 minutes" book in the late 90s and decided to call themselves programmers. A complex enterprise system requires a tool (not necessarily Java) that can handle the needs of the project at hand. To extend their analogy, there actually are people who need SUVs for towing boats and going on mountain climbing expeditions, although they are in the minority.

    1. Re:Rubbish by crazyphilman · · Score: 1

      Of course, an SUV isn't even the best thing for towing a boat, or going camping: that would be a pickup truck. Pickup trucks generally have more power, a lower center of gravity, a wider stance, and get better gas mileage (because all those SUV windows and the frame for them add up to around 1500 pounds of dead weight). An additional bonus is that pickup trucks are safer: while SUV's use unibody construction, most pickups use the stiffer, more durable ladder frame.

      I think it's more like:

      Scripting languages = inexpensive little coupe, maybe a saturn. Quick, fuel efficient, pleasant to drive and low maintenance. People who drive them tend to be happy and relaxed.

      VB.Net and similar .Net type languages = luxury sedan, pricy and full of features, but faster and more stable than the SUV's. Softer ride, too. Still fairly easy to drive, but require a little more up-front manual-reading.

      Java = SUV; Big, slow, difficult to drive without rolling the car, guzzles gas and takes up most of the road. People buy it because they fantasize about going "off road" but they mostly do the same thing as the sedan and economy car drivers, only less pleasantly. Sedan and economy car drivers are vaguely annoyed by SUV drivers.

      C/C++ = Ford F-350 with duallies and four wheel drive, faster, stronger, more stable than SUVs but still requires more skill to drive than a sedan. Gets about the same gas mileage as the sedan, but can be used for much more demanding tasks (e.g. construction, wilderness rescue). Mostly used for work, not really a pleasure vehicle. "rides like a truck". Ignored by most other drivers, who don't often venture onto construction sites or off-road.

      Assembly: A McLaren race car. Fast as hell, not street legal, rarely seen up close, and not just anyone can drive one. Special training required, drivers occasionally make an error and kill themselves in a fiery crash. Not used as often as it used to be.

      Lisp and similar languages: captured alien hovercar. Runs on weird green glowing rocks, flies fast and silent, can't be taken out on the road because it inspires conspiracy theories and tends to get shot at by the Barney Fifes of the world. Rumored to be used in academic environments by nefarious researcher types. Rarely seen by the public, could be fictional or part of a government coverup.

      --
      Farewell! It's been a fine buncha years!
  58. JSP type 1 applications by tgreiner · · Score: 5, Informative
    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.
    1. Re:JSP type 1 applications by consumer · · Score: 1

      You know, if you do all the work required to make JSP manageable with JavaBeans and such, you end up writing a lot of code for a simple application. Writing a maintainable MVC-pattern application in a scripting language typically takes less work, even with things like Struts available.

  59. Greenspun == Wrong by MaestroSartori · · Score: 1

    He must know how trollish he is being here...

    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.

    I suspect there are projects which wouldn't, you know. How about a nice web applet with 3D rotating thingies in it?

    But seriously, even if his example about database interaction is correct (I don't know if he's really going about it in a way that works to Java's advantage, or if he's stuck in his scripting language ways), we must all know that there are situations in which Java's nature will mean it is the best tool for a job.

  60. Bloat by Anonymous Coward · · Score: 1, Interesting

    I've never seen anything as bloated as Java apps like NetBeans, Forte or WebSphere Studio. I've seen NetBeans use 200-300 MB of RAM and WebSphere Studio use over 600 MB of RAM on my machine. They had to upgrade all the machines in our group from 833 MHz with 512 MB to 2.4 GHz with 1 GB and WebSphere is still the slowest launching app and biggest memory hog I've ever seen.

    Quite a contrast from previously editing PHP code in EditPlus.

  61. My language comparison by Jugalator · · Score: 3, Funny
    IMHO...
    • Visual Basic -- is a comment really necessary?
    • Java -- does what it's supposed to do
    • C# -- tries to be more advanced than Java, and is, but is rather similar in the end...
    • C / C++ -- now we're getting somewhere... does the job efficiently, but be sure you can handle it
    • Assembler -- it's cool, it's efficient, it's deadly if handled wrong
    --
    Beware: In C++, your friends can see your privates!
  62. Discredited by dnoyeb · · Score: 5, Insightful

    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.

    1. Re:Discredited by RedStapler · · Score: 0

      Amen. Amen. Speak on brother!

    2. Re:Discredited by RexRuther · · Score: 2, Insightful

      I will not say that VB is better than Java, but in certain situations VB works well. It is relatively fast and makes simple programs simple.

      Please don't dis VB. There is a large comunity of developers who use it, and generalizing that they are all idiots is, well, stupid.

      --
      -"The early bird catches the worm, but the late bird sleeps the most"
    3. Re:Discredited by Capt_Troy · · Score: 1

      I'm a firm maintainer that one should use the right tool for the job. In many cases, expensive java application servers and over-engineered applications are built when a simple and sturdy PHP app running on Apache would do the job. I've seen this first hand. But that's not to say that sometimes Java is the right tool.

      In this case, he says all projects in java could be done cheaper with PHP or Perl and that just because the Genome Project used VB that VB is an adequate replacement for Java. This may be true in cases, but not always.

    4. Re:Discredited by Pfhreakaz0id · · Score: 4, Insightful

      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.

    5. Re:Discredited by SatanicPuppy · · Score: 2, 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.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    6. Re:Discredited by poot_rootbeer · · Score: 2, Funny

      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.

    7. Re:Discredited by Pfhreakaz0id · · Score: 1

      ummm, see the "UI" comment? What server app needs a UI? Oh, do you mean the server side components? If you are talking database, use whatever you want. Every database worth considering has an ODBC driver. Hell, most of them have the newer OLE DB driver. If you mean actual server side code. Well, write those in whatever you want.

    8. Re:Discredited by Yosho · · Score: 1

      VB needs too much server

      "server" is not a quantity. This phrase doesn't make any sense at alll; VB applications don't require a server to run, they'll run on any Windows operating system.

      Faster? Maybe against Java running on windows, under IIS.

      Well, yes. You can't run VB applications anywhere other than Windows, so it doesn't matter how Java performs on other platforms, if VB is faster than Java for Windows. Besides, VB applications don't run "under IIS"; are you thinking of ASP?

      Faster to code? Could be. Point and Drool is hard to beat...for time.

      You say that like it's a bad thing. If a certain language is easier to use and you can develop more quickly in it, how is that a bad quality?

      --
      Karma: Terrifying (mostly affected by atrocities you've committed)
    9. Re:Discredited by TimTheFoolMan · · Score: 1

      For those UI apps, you're far better off using Delphi, or if Object Pascal throws you off, C++Builder. Delphi brings all of the ease-of-use and UI facilities that VB brags about, and adds to it all the benefits of OOP, and a more easily extensible library.

      Come to think of it, you could go on and use Delphi/C++Builder for the server-side as well.

      Tim

    10. Re:Discredited by Pfhreakaz0id · · Score: 1

      Delphi isn't bad. We used it at a company I used to work at (although I didn't do much programming in it).

      As a manager (I'm not, btw), I would have two problems with it:

      2: Programmers. I can find VB programmers easy. Hell, they aren't even that expensive (although the good ones are a little more). In this market, our previous company had trouble finding a decent delphi programmer.

      2: Support. Borland? How long are they gonna be around, probably quite a while, but they aren't microsoft. This would be a point for Java, but I would slit my butt-cheeks with a razor-blade and sit in a bowl of rum before I would recommend using it for UI app (note: This is probably because I'm forced to use Oracle JDeveloper as an IDE and it's a slow, POS written in Java.)

    11. Re:Discredited by clard11 · · Score: 1

      But Eclipse is written in Java and is a useful app with a good UI. With SWT you wouldn't need to know it's Java based at all.

      --
      catch (ModDownException mde) {post.modUp("Interesting")}
    12. Re:Discredited by Uerige · · Score: 1
      Please don't dis VB. There is a large comunity of developers who use it, and generalizing that they are all idiots is, well, stupid.
      Please, dont't dis people who dis VB. There is a large community of develpers who know that VB sucks, and saying that they are all idiots is, well, dumb.
    13. Re:Discredited by SatanicPuppy · · Score: 1

      Hmmm. Well, no, "Server" isn't an exact term. I worked on an app in visual basic, with a MS SQL server backend. We upped the server, we upped the memory, that damn app would take whatever was available and still run like crap. Far more than was justified, in my mind, considering the size of the database, and the load on the system. Hence the phrase, "Too much server" which, in my mind, means, "More processing power than can be justified by performance."

      To be fair to VB, the compiled code in the application was never designed to be efficient, but again, I blame this on the so called "Ease of use" associated with VB. Yea, its easy, but I don't think coding OUGHT to be super easy, not out in the real world. I think people should have to know what the hell they're doing before they start letting their design tools write 60% of the code for them. It results in sloppy, bloated applications.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    14. Re:Discredited by Trinition · · Score: 1

      Yeah, ha ha! That is funny.

      I remember how long it took me to throw together some VB code to parse the command line arguments in a reliable wway (i.e. handles quotes, etc. consistently).

      No, it didn't take long. But the fact that I even had to do it is the problem. C, C++, Java, etc. all give you pre-parsed command line arguments. VB just doesnn't.

      VB.NET does, but it's just a syntax variant of other .NET languages.

  63. Thanks by 192939495969798999 · · Score: 1

    Thank you. I replied mostly out of interest to see what kind of responses I would get, to use for my talk, but also because of the more advanced thread you picked up on :)

    --
    stuff |
  64. PARENT IS REDUNDANT MOD DOWN by Anonymous Coward · · Score: 1, Funny

    there already is an anon non karma whore post of the article... mod it up instead of this whore!

    1. Re:PARENT IS REDUNDANT MOD DOWN by stienman · · Score: 0, Offtopic

      there already is an anon non karma whore post of the article... mod it up instead of this whore!

      Ah, another which values karma so much that he feels everyone else must also believe it to be of great value.

      Logically, however, posting it as myself makes sense. I post it started off as 2 points, and it only requires 3 more votes to make it visible to all. The average anonymous post, however, requires 4 votes, thus wasting a vote which could be used more appropiately for an on topic comment.

      I was at the cap when they showed you the actual number of points. If there's still a cap I probably have it. I don't care either way - mod me up, mod me down, when I post I feel it's important to do so. People apparently agree with me as I have very few posts which are modded down, and many are modded up. Check out my comments page if you want to get a flavor of my rapier (sp?) wit, and insightful commentary. Then make me your enemy if it pleases you.

      Sorry to have offended you by doing something that is bad with your assumed motive, but good with my intent.

      -Adam

  65. Warning: Knucklehead by Get+Behind+the+Mule · · Score: 3, Insightful
    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.
    1. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0

      And of course he's a complete wanker.

      No, seriously. Spend five minutes with the guy spewing this pompous, self-aggrandizing shit at you, and you'll want to kill him. Or yourself.

    2. Re:Warning: Knucklehead by jbrayton · · Score: 1

      The parent article hit on most of what I was thinking, but I will add a couple more points:

      The article says:

      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.

      This is an absurd generalization. Yes, many web applications are not much more than web interfaces to viewing or updating information in a database. But very many have complex business rules or interact with a variety of backend systems (not just SQL databases).

      The article also says:

      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.

      Three problems with this statement:

      First, he is basing this claim on college students who, very likely, are working environments in which they are not familiar. It might very well be that it takes a first-timer much longer to finish a project in PHP than in Java due to a higher learning curve. But I doubt this is true for more experienced developers.

      Second, these estimates do not take into account code maintenance. Even if it does take a little longer to build a UI in Java, but if the result is readable and maintainable code, that upfront investment may quickly pay for itself in subsequent revisions.

      Finally, in most projects, the development time is by far the most expensive part of a project. So, it is unclear to me how a project that takes twice as long will cost five times as much.

    3. Re:Warning: Knucklehead by dtrent · · Score: 2, Insightful

      I wish I had the year back I spent drinking the Java coolaid only to find out what I already knew (to turn a phrase from Louis Armstring): If it *feels* slow, it *is* slow.

    4. Re:Warning: Knucklehead by Junks+Jerzey · · Score: 1

      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

      Of course, Greenspun is right. For what Visual Basic was designed for--writing GUI front ends to other appplications--is is absolutely brilliant. You'd be crazy to use Java or C++ or MFC (or whatever) instead.

    5. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0
      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.


      You say "no further comment" and then provide a further comment. :-P

      Although I don't agree with you that "no one" uses Lisp (It's used all the time in Artificial Intelligence, whose commercial applications you seem to simply not be familiar with), I will say that it is silly for the blog author to reference it. It is a much more powerful language than Java (first order functions and eval), but I sincerely doubt that any web services would need that extra power. Considering that he's already complaining that Java has more power than needed for web services, I don't see why he brings up a still more powerful language.
    6. Re:Warning: Knucklehead by 11223 · · Score: 4, Informative
      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/. 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 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. 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.

    7. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0
      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.

      Ummm. No offense buddy, but did you know that Yahoo! Stores is written in Lisp? Sure, who's heard of those guys? I'm sorry for the very obscure example. :)

      Yes, he is talking about the language you probably spent a long time studying. I don't know if you've been exposed to other tools available for web development, however, as you come across as rather obtuse my guess would be that you have not. How about checking out PHP? How about Perl? Ruby? Python? I've used JSP's before and must admit that by the end of the ordeal I informed my boss if we ever go that route again, I will quit. As a programmer, on my scale of programming languages I consider development in Java to be like running up a 60 degree incline with an anchored chain wrapped around my waste. As for Lisp, I actually snuck it into a few projects where it was the right tool for the job.

      P.S. I like Perl's regex capabilities. Java's implmentation as well as VB's both suck some ass.

    8. Re:Warning: Knucklehead by 16K+Ram+Pack · · Score: 1
      Good post.

      Java is very structured to have sets of classes for all kinds of uses. You can use it for micro programming, web services, applets, applications, web sites. I don't think that PHP or VB covers all those bases.

      Any developer should be very turned on by such an idea - that you can be developing a website and reskill yourself to another form of development with less of a learning curve than another language.

      I'm also curious how he equates VB with web programming, as there's almost no fit there.

    9. Re: Warning: Knucklehead by Anonymous Coward · · Score: 1, Interesting

      " 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?"

      ACL2 is a theorem prover written in LISP. They're using it for processor correctness verification. They approached J Moore about that when the notorious Pentium bug blew up in Intel's face, and they didn't want to repeat the episode themselves.

    10. Re: Warning: Knucklehead by hding · · Score: 1

      And to amplify, plenty of companies use Lisp internally and don't talk about it too much. The customer lists at:

      Franz

      and

      Digitool

      should be ample evidence of that.

    11. Re:Warning: Knucklehead by muonzoo · · Score: 1
      Hmm.
      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.

      I don't know about trimphantly, but there are plenty of people using LISP in business computing. Our company included. We manufacture network appliances for the VoIP sector and there are applications where LISP's type system and ease of implementation gives us a huge advantage in time-to-market.

      The right tool for the right job. I don't always agree with Phil Greenspun, but over the years, I've grown to respect his opinions and consider them carefully. He is an excellent community member, and, hosts a large community of developers, photographers and lately, aviation enthusiasts at his personal web presence. Phil's insights have often proven themselves to be accurate and well considered.

      As a software developer with 15+ years experience, a photographer and a pilot, I think that Phil often has an interesting and emphatic way of giving people something to think about.
    12. Re:Warning: Knucklehead by samf · · Score: 1
      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.)

      Disclaimer: I like Lisp. But I'm not going to advocate it, defend it, or give exceptions here.

      I just wanted to thank you for providing me with what has to be the best debating technique I've seen all day!

      All apples, and I mean all apples, are always red! And if some smartass comes up with some exception, it only prooves that I'm right!

      Thanks, knucklehead; er, I mean "get behind the mule!"

    13. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0

      > but did you know that Yahoo! Stores is written in Lisp

      It's not written in Lisp anymore -- apparently they rewrote it in C++ to make it easier to find maintenance programmers.

      Yahoo Stores is a great example of the "Can't Win" destiny of Lisp. Here it is, one of the first fully dynamic e-comm sites, written well ahead of the dotcom bubble. But they keep the fact that it's written in Lisp top secret for "competitive" reasons.

      Then everyone spends billions of dollars of Java dotcom development because it's the "language of the Internet". Only after the bubble bursts and Lisp is completely excluded from a new market segment do the Lisp Advocates find out that they were actually 5 years ahead everyone else.

      Maybe if Yahoo had told people they were using Lisp in the first place, they wouldn't have had problems hiring Lisp programmers.

    14. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0

      apparently they rewrote it in C++ to make it easier to find maintenance programmers.

      And it will soon be rewritten in PHP, along with most of the rest of Yahoo!.

    15. Re:Warning: Knucklehead by nous · · Score: 1
      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.

      people like Greenspun have their own preferred and well-internalized linguistic choices and practices that will not permit an easy entry to the best practices of any language. It is not particularly surprising, though unfortunate that he joins the peanut gallery of axe grinding commentators, alongside Paul Graham. (where is erik naggum when we need him?)

      a fresh point of view is a very rare thing. It is more often found in the thoughts of (say) a bright first year student, than in the missives of opinionated old farts who have enough mastery of rhetoric to eloquently piss on anything that does not sit in the middle of their field of vision.

      nous

    16. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0

      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.

      I'm assuming you didin't know that Yahoo was originally coded in Lisp. In fact, the choice of Lisp was credited with Yahoo's (essentially) first-to-market success.

      I'm glad we have such insightful trolls here at /. that can so hipocritically complain about somebody's lack of lack of research, misunderstandings, and incorrect conclusions.

      If this isn't a troll, you should go back and re-read the post. You're critisisms are mostly about things he didn't even really say. You're not understanding what he's saying. (although he can be pretentious).

      -Tim, the Troll-baited AC Poster Child

    17. Re:Warning: Knucklehead by Anonymous Coward · · Score: 0
      It is a much more powerful language than Java (first order functions and eval), but I sincerely doubt that any web services would need that extra power.


      Is this power excess why first-class continuations are becoming popular for said web services?
  66. Java is like by Anonymous Coward · · Score: 0

    Java is like a Boeing 777. You come into the cockpit thinking "Great. My car has a wheel, three pedals and a stick and that is all I need to get to the store. What are all these 1000000 buttons and switches and panels here?" Then you find out it can fly. You will then know what it is good for, and will want to use it as well.

  67. And after all that... by Anonymous Coward · · Score: 0

    You still forgot to create the dial object...;-P

  68. Not distant from production projects by brlewis · · Score: 1

    I'm writing this from work. We have lots of production projects, and none of them use LDAP yet. At my company, SQL is considered the right level of abstraction; using "raw" SQL is not considered a problem. Also, people want a variety of reports off the data. If you look at the database as merely an "object persistence layer" you won't slice and dice reports nicely. Embrace SQL. It has value.

    1. Re:Not distant from production projects by Anonymous Coward · · Score: 0

      You won't slice and dice reports nicely without SQL?

      WTF?!

    2. Re:Not distant from production projects by dshannon · · Score: 1

      Of course you're right - but no IT department just produces reports. If it's just cutting reports, pure SQL is just dandy. If you want to actually model the way your data works around the way the business wants to work, then OO, Java (and a O-R mapping tool like Hibernate) can let you forget the SQL and get on with writing business processes. One thing I will say is that many people out here in the real world are still pushing the idea of shoving all your business logic into J2EE - that really *does* take 5 times as long - especially when, like where I work, there's several core apps that were built on mainframe over the last 15+ years in COBOL, and contain a shed-load of working business logic. Don't bother - build the connectors and re-use the code you've already built - it's only when you want to connect your web app to the fax servers and the COBOL app and the workflow system and the G/L app and the mail and the email and the, well, everything else, that J2EE integration starts to look kinda useful... LDAP's good because you don't need to 'roll your own' security solution for every new app. Any road up, that's enough from me :)

  69. Missed points by Marc2k · · Score: 2, Interesting

    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 are widely used because they're not as verbose in such situations, and a more powerful language is NOT needed at the presentation layer, and Java _is_ infamous for its boiler plate requirements.

    This, and this alone, is why he likens Java to SUVs, because of the metaphorical holier-than-thou driver, who buys into a $100k Hummer because supposedly it can handle hardcore 4x4ing, but in reality knows it's only driving to Bed, Bath, and Beyond and back. Personally, I'm not often a detractor of Java, but I have worked a good deal with Perl for such things, and in this respect: I agree with him.

    --
    --- What
    1. Re:Missed points by EastCoastSurfer · · Score: 1

      $100k Hummer

      I think fully loaded they go for about ~$50k

      As a side note, Hummers are actually one place where people buy them for a real reason...a TAX break. Because the Hummer is so heavy it falls under the rules for farm equipment. I believe that with a little creativity you can write off the entire purchase price of a Hummer. Of course you must be paying 50k in taxes to begin with for it to become useful ;)

    2. Re:Missed points by CrayzyJ · · Score: 1

      "I think fully loaded they go for about ~$50k"

      NO. I just priced an H1 fully loaded at hummer.com. The price: $123,537. Took me 1.5 minutes. You could have done the same before posting.

      --
      Holy s-, it's Jesus!
    3. Re:Missed points by EastCoastSurfer · · Score: 1

      You could have thought before posting and realized that Hummer makes two models, the H1 and H2. The H2 is the most popular consumer Hummer which is why I based my price on it. If you look the H2 does come in ~$50k.

    4. Re:Missed points by fucksl4shd0t · · Score: 1

      This, and this alone, is why he likens Java to SUVs, because of the metaphorical holier-than-thou driver, who buys into a $100k Hummer because supposedly it can handle hardcore 4x4ing, but in reality knows it's only driving to Bed, Bath, and Beyond and back. Personally, I'm not often a detractor of Java, but I have worked a good deal with Perl for such things, and in this respect: I agree with him.

      This is the only reason to code in Java.

      --
      Like what I said? You might like my music
    5. Re:Missed points by CrayzyJ · · Score: 1

      " You could have thought before posting and realized that Hummer makes two models"

      I did. The H1 is typically referred to as just 'the Hummer' because it was the first one. If you wanted to be specific, you should have been specific.

      --
      Holy s-, it's Jesus!
  70. he *is* a troll by Anonymous Coward · · Score: 0

    thanks for the google link BTW

    He lost me at Visual Basic.
    The problem I see that he doesn't address is that most webapps I see start out as a paved road, then turn into dirt roads, then get really steep, then the road runs out. So whaddaya do then? Re-engineer the entire application in a different language?

  71. Ummm??? by ayjay29 · · Score: 2, Funny

    How can "Java == SUV". it does not support operator overloads?

    Maybe Java.equals (SUV).

    --
    Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated up.
    1. Re:Ummm??? by WebMasterJoe · · Score: 1
      How can "Java == SUV". it does not support operator overloads?
      The article was written in C++. Unfortunately, it doesn't look like he added any of those pesky deconstructor functions, and the article has runout of memory and stopped responding. Java has automatic garbage collection. :)
      --
      I really hate signatures, but go to my website.
  72. Who is the instructor by brian6string · · Score: 0

    I suggest that if his students are struggling to use JSP, then they should blame the instructor. Oh, wait, he IS the instructor.

  73. I'm no SUV fan, but... by Anonymous Coward · · Score: 0

    ...I found his followup comment on SUVs to be not only wearyingly trite but a little misogynist and racist. SUV drivers are "unfashionable"? What the fuck does that even mean coming from an ubergeek? Caucasian mother or people living in suburbia are somehow awful? You have to live packed in the middle of some annoying, smelly city full of assholes to be acceptable?

  74. Marketing by DavidNWelton · · Score: 1

    It would be more obvious if Sun didn't spend millions of dollars marketing Java as the answer to everything. That clouds people's perceptions. *Especially* management types that don't have the experience to tell the hype from the reality.

  75. My Java Problem. by Anonymous Coward · · Score: 1, Interesting

    I don't want to start a holy war here, but what IS up with you java fanatics. I have been waiting here on my Spark Station Ultra 5000 for 20 minutes as my java database attempts to replicate a 17 million row table. 20 minutes! At home, on my AMD athlon 2000+ running Mandrake linux with postsql the same operation would take 2 minutes, if that.

    Also, while this is happening, Oracle won't work, and evertyhing else screeches to a halt. Even jmacs (JavaEmacs) is struggling to keep up as I type this.

    I won't go on into the laundry basket of other problems with this machine. My packard bell 450 running slackware and Mysql lite runs faster than this machine at times.

    Java Addicts, flame me if you like, but I'd rather hear some intelligent reasons why I should use Java over faster, cheaper databases.

    1. Re:My Java Problem. by jjohnson · · Score: 2, Insightful

      Allow me to translate the parent: "Java sucks hairy donkey balls. Convince me otherwise."

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    2. Re:My Java Problem. by Anonymous Coward · · Score: 0

      Let me translate the parent:"Java doesn't suck hairy bawls. But I can't convince you."

    3. Re:My Java Problem. by Anonymous Coward · · Score: 0

      Where did you get the idea that Java was a database???

  76. Not surprising at M$IT by amightywind · · Score: 1
    One third has chosen to use Microsoft .NET, building pages in C#/ASP.NET connecting to SQL Server.

    I would expect students with an M$IT pedigree to have better taste. It proves that any sampling of programmers, even at an elite institution, will have some percentage of lamers.

    --
    an ill wind that blows no good
  77. It bears reminding... by redtail1 · · Score: 1

    This was posted in a blog. So why are people paying attention again?

  78. Reason to buy a Hummer? by Anonymous Coward · · Score: 0
    Well, buying one and putting a "FUELHOG" license on it would give the envirowhackos a stroke.

    (No, I don't think we should waste the Earth's resources, but how much would you like to bet that the whack job that set the Hummers in SoCal on fire a few weeks ago drove a car to those dealerships, and once you're into driving thousands of pounds of fossil-fueled steel around it's just a matter of degree....)

  79. Just Curious... by Anonymous Coward · · Score: 0

    I'm curious if any of you filthy hippies:

    1. Realize that a SUV is necessary in the city because of the shitty condition of the roads. Try driving a normal car in Boston, and then tell me how much you spend on flat tires and wheel alignment.

    2. Live where something called snow falls in the winter. It's a white icy powder that makes driving anything without 4WD very difficult.

    3. Have children. The SUV is merely the station wagon of today. Get over it.

    4. Own a business where you must transport clients and equipment frequently. It's easy to say everyone should drive a Honda Insight or a bicycle when you DONT HAVE A JOB AND LIVE IN YOUR PARENT'S BASEMENT.

    5. Realize how much more pollution is caused by city buses and older cars. It's not just us rich people who cause major pollution, but you poor people too!

    1. Re:Just Curious... by Anonymous Coward · · Score: 0

      1. Realize that a SUV is necessary in the city because of the shitty condition of the roads.

      I drive a Suzuki Swift, I live in Quebec (Montreal) and never had a flat tire. (For those who never saw our roads, let's just say the only place I saw worse roads was in Guyana).

      2. Live where something called snow falls in the winter.

      I never had a problem with snow and I live in QUEBEC!!!

      3. Have children. The SUV is merely the station wagon of today.

      How fat are you children to need a SUV???

      4. Own a business where you must transport clients and equipment frequently.

      Personally I only choose clients who have enough money to buy a car. Sure I don't impress them with my Suzuki Swift but guess what they think when I tell them having a small car lower my cost (so I can charge less for my services).

      5. Realize how much more pollution is caused by city buses

      This is a joke right? I mean you can't be that stupid!

      Admit it... You have a small penis.

  80. Write your code and STFU by Eisenfaust · · Score: 2, Insightful

    I am getting quite tired of these silly comparision between programming languages. Obviously, depending on the requirements of the task you need to complete a certain programming language may prove to be more useful than another. Obviously you aren't going to want to write an interrupt service routine or other such time critical platform dependant piece of code in java. But for something that needs to be platform independant java may be a viable solution.

    So... pick a language, then do your job. repeat.

    Obviously you aren't going to drive an SUV in a Formula 1 race, but maybe if you need to transport 7 people and tow a 20 foot long boat up to the mountains, it might be a good choice.

    --
    Grrrrr... don't bother me, I'm thinking.
  81. Greenspun is way out of his field of expertise by Qbertino · · Score: 1

    While the man may bew a nice and educated guy and a readable Blogger, he's gotten way into serious bullshitting territory here. Shure the Java Overhead has lot's of SUV characteristics and is nearly pointless when you're doing projects on the scale of those he mentions for example, everybody knows that. But he obviously hasn't gone beyond anything more that larger content management with his thoughts. In big business, with 20+ *real* developers and serious OOP on a single project you'd get laughed at if you bring up this article.

    --
    We suffer more in our imagination than in reality. - Seneca
  82. We now know what *not* to use for a web site by Anonymous Coward · · Score: 0
    Well, really, we don't.

    No one can tell what that site is running! ...trying to run. ...failing miserably to run.

  83. Java portability by whereiswaldo · · Score: 1


    Right now, Java is the easiest way for me, as a developer, to get off of Windows and onto Linux full time for software development purposes.

    While Java's cross-platform compatibility isn't perfect, it's the best option out there.

  84. Cars vs Programming languages by James+007+Bond · · Score: 0, Redundant
    A really old joke (definitely before the 90's) was doing the analogies between programming languages and cars.

    [Digging through 14 years of archived emails...]

    Here ya go. Somebody should find good descriptions for the C#, Java, Perl, VB and [insert your favorite language here] of the day.
    • Assembler A Formula I race car. Very fast, but difficult to drive and expensive to maintain.
    • FORTRAN II A Model T Ford. Once it was king of the road.
    • FORTRAN IV A Model A Ford.
    • FORTRAN 77 A six-cylinder Ford Fairlane with standard transmission and no seat belts.
    • COBOL A delivery van. It's bulky and ugly, but it does the work.
    • BASIC A second-hand Rambler with a rebuilt engine and patched upholstry. Your dad bought it for you to learn to drive. You'll ditch the car as soon as you can afford a new one.
    • PL/I A Cadillac convertible with automatic transmission, a two-tone paint job, white-wall tires, chrome exhaust pipes, and fuzzy dice hanging in the windshield
    • C A black Firebird, the all-macho car. Comes with optional seat belts (lint) and optional fuzz buster (escape to assembler).
    • ALGOL 60 An Austin Mini. Boy, that's a small car.
    • Pascal A Volkswagen Beetle. It's small but sturdy. Was once popular with intellectuals.
    • Modula II A Volkswagon Rabbit with a trailer hitch.
    • ALGOL 68 An Aston Martin. An impressive car, but not just anyone can drive it.
    • LISP An electric car. It's simple but slow. Seat belts are not available.
    • PROLOG/LUCID Prototype concept-cars.
    • Maple/MACSYMA All-terrain vehicles.
    • FORTH A go-cart.
    • LOGO A kiddie's replica of a Rolls Royce. Comes with a real engine and a working horn.
    • APL A double-decker bus. Its takes rows and columns of passengers to the same place all at the same time. But, it drives only in reverse gear, and is instrumented in Greek.
    • Ada An army-green Mercedes-Benz staff car. Power steering, power brakes and automatic transmission are all standard. No other colors or options are available. If it's good enough for the generals, it's good enough for you. Manufacturing delays due to difficulties reading the design specification are starting to clear up.
    1. Re:Cars vs Programming languages by James+007+Bond · · Score: 1
      Diggin through more of my email, I found some more definitions which came in far later:
      • Visual Basic Hmm... looks like that Rambler is all you'll ever be able to afford.
      • Ada 95 An army-green Mercedes-Benz staff car forcibly retrofitted into the form of an amphibious dune buggy. ABS and power locks are standard. The transmission's gear ratios can be adjusted with two extra pedals on the passenger side.
      • Perl A souped-up Subaru Impreza outfitted with an on-the-fly adjustable turbocharger, roof rack, trailer hitch, power take-off, GPS, and two-tone suspension. This 4WD machine is still surprisingly fast in spite of it and suited for road racing. It is also surprisingly forgiving (once you learn how you're supposed to make mistakes with it.)
      • Java A minivan. Every yuppie with a spouse and two and a half kids drives one. Good for picking up the kids from soccer and grocery shopping. Some manufacturers insist on delivering a design which is a foot wider than normal, causing more than a few traffic problems. Warning:those vehicules have a high center of gravity and a tendency to roll in sharp corners: not recommended for racing!
    2. Re:Cars vs Programming languages by Anonymous Coward · · Score: 0

      Python: the flying car you've been waiting for

  85. d.i. Jim, I'm an artist, not a computer scientist! by 192939495969798999 · · Score: 1

    For those of you who are old enough to remember that line... (SIGH)... Yeah, my degree's in Fine Art, hence the website. I use whatever language is at hand to do my online art apps... usually the one with the least amount of actual coding required before I get what I want out of it. JAVA's graphics stuff is a little hmm.. hard?

    --
    stuff |
  86. there's a shocker by cygnus · · Score: 0

    students of a teacher that hates Java are struggling with Java. story at 11.

    --
    Just raise the taxes on crack.
  87. Flawed argument by Anonymous Coward · · Score: 0
    While I have (or had up to now) a great deal of respect for Phil Greenspun, I have to say that his "argument" is somewhat flawed, to the point of being silly. To summarize, what he says is something like this:
    1. Some students are bad at writing JSP pages, which mix Java and HTML in a complex and hard to maintain way (which, as he acknowledges, is not recommended by Sun, because looking at long term effects it's not such a terribly good idea; may be OK for a term project though).
    2. ???
    3. Therefore, Java is the SUV of programming languages. Mind you, programming languages. At most, this is a library issue, with a specific set of libraries, most of which aren't even part of the core Java library.
    Yes, if you just want to hack something together in one semester or less and immediately throw it away after the course is over, then by all means use PHP. No, use Zope. Heck, you might even try using the Ars Digita Tcl thingy, see if that measures up. Just keep in mind that you can't code the same way in JSP/J2EE, as that requires more careful planning and a different approach (like another poster already mentioned, don't hard code your SQL queries).

    So the students didn't know how to do this. Fine. Why didn't Phil teach them how to do it properly? It's not like JSP is a library explicitly designed for a different task that will make it hard to do dynamic HTML pages -- that's it sole purpose and use, but you got to use it properly. Enough of this rant now.

  88. Java includes all the libraries/C/C++ use Unixs by acomj · · Score: 3, Insightful

    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.

  89. On Java and SUVs by Anonymous Coward · · Score: 0

    Two or three years ago I made some posts to comp.lang.java.programmer ('too much cream in the coffee' amongst several). Since then I have not had any reason to reconsider my feelings, which at the time were (amongst others):-

    1. Java memory management is unacceptably weak. Classes loaded into two separate executable processes consume code memory in both processes, which equated at the time to some 24M per process just to load the Swing library. To say 'memory is cheap' is nonsense. The primary objection is that when a second instance is loaded, all the classes get laboriously loaded back in from disk. This means Java is only really useful as a single server-bound process using multiple threads to handle client requests, and not as a general-purpose language for writing front-end client applications (unless you want to make everything a single big monolithic app).

    2. The designers of Java claim that property syntax (i.e property accessors get/let) are 'syntactic sugar' and dismiss them but see no problem with the syntactic sugar of inner classes - this kind of arrogance is simply unacceptable. cf: also iterator support

    3. JDBC is simply far too low-level to be a standard DBMS support layer (cf: Perl/DBI and ADO) and its performance is simply appalling.

    4. Support for dynamic expression evaluation and runtime type determination is very weak and/or awkward - in the case of dynamic expression evaluation, the Java compiler would be required to be on the target machine!.

    5. At this stage C# appears to be a far more pragmatically designed language. I posted in some depth on this topic and despite dozens of flames at the time, one poster summed up the argument by pointing out that no other poster had been able to successfully refute my criticisms.

    6. Of the scripting languages, Javascript, ironically, is by far the most orthogonal and for the complexity of the language, in my opinion offers the most power and predictability. Of the other scripting languages, I can only speak for Perl and Python. Perl I love but I also hate the metacharacters for variable declarations and the 'strange' (or 'magic' if you like) way filehandles behave when stored in a variable. As for Python, any language in which whitespace has syntactical meaning should have been strangled at birth. Sorry, but whatever Guido thinks this is a very very bad idea.

    And SUVs are a great analogy. Big but underpowered, roll easily in an accident, block other people's view of the road, look tougher than they are and finally, driving one is definitely telling the world you have a small penis.

  90. Tcl is good by DavidNWelton · · Score: 3, Informative
    Tcl has a lot going for it. It has a very nice C API, is simple to work with, is extendable to deal with more complex problems (namespaces, OO), and is easy to read 6 months down the road.


    The "problem", if there is one, with Tcl is that it is not fashionable. Instead, lots of people just use it to get their jobs done quickly without lots of chest thumping, willy waving, and enterprise enabling.

    1. Re:Tcl is good by Lazy+Bastard · · Score: 1

      Tcl can be useful for VERY simple applications, but it is very difficult to read for anything else. Scoping, evaulation, and parameter passing are a mess. --- I am sigless.

    2. Re:Tcl is good by DavidNWelton · · Score: 1

      Not really. The rules are clear and simple. Use namespaces to keep things distinct. Split code up into small, reusable pieces. Evaluation is evaluation. You can shoot yourself in the foot with it in any language. Tcl is pretty easy to parse or create from Tcl, so sometimes people get too clever, but there is a good culture of writing clear, clean, well documented code, so I find that it doesn't happen too often.

    3. Re:Tcl is good by Directrix1 · · Score: 2, Informative

      I personally don't see Mr. Greenspun's point. Most kids straight out of college don't know jack about shit. I find java to be quite easy to use, and very intuitive. And it has an available toolset the size of Montanna, if one thing doesn't work then another will. With java you know you can get anything done. Its like the swiss army knife of programming languages. Granted .Net has most of these features except the availability of tools. But comparing it to a scripting language, bah humbug.

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    4. Re:Tcl is good by TheCrazyFinn · · Score: 1

      Note that these aren't first year students at some State U.

      These are Seniors at frikkin MIT. If they're having issues, there's a problem. Especially if the groups using .NET or PHP/Perl aren't.

      --
      "You've got an invalid haircut" -Warren Zevon - Life'll Kill Ya
    5. Re:Tcl is good by Directrix1 · · Score: 1

      Yeah, a problem with the teaching staff obviously. And a undergrad degree from MIT ain't gold.

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    6. Re:Tcl is good by GenSolo · · Score: 2, Insightful

      With java you know you can get anything done. Its like the swiss army knife of programming languages.
      Well, it is a Turing-complete language afterall. The fact of the matter is, you can't do anything in Java you can't do in C++ or C or assembly language or raw machine language for that matter. The only difference is time/space efficiency, in both execution and code-writing.

    7. Re:Tcl is good by The+Troll+Catcher · · Score: 1

      While I agree that PHP/Perl may be a little easier to use at first, my experiences have been that it is a pain in the ass to do anything very complex with them, mainly because it just doesn't scale well - and the fact that with PHP you have code embedded in the HTML.

      Servlet programming really is the bomb. I can't tell you how much time and effort I've saved by writing a few simple intelligent classes (corresponding roughly with DB tables) that know how to save and load their state. Using JUnit I can write unit tests for every piece of code - which is not so easy to do with PHP or Perl.

    8. Re:Tcl is good by blibbleblobble · · Score: 2, Funny

      "The fact of the matter is, you can't do anything in Java you can't do in C++ or C or assembly language or raw machine language for that matter."

      You can write an arbitrarily complex program in any language... you just have to use that language to write a Lisp interpreter first...

    9. Re:Tcl is good by Directrix1 · · Score: 1

      Yes, that is true. But while we are at why don't we just write everything for a Turing machine. I'll get the tape. Efficiency is everything.

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    10. Re:Tcl is good by johnnyb · · Score: 1

      Because lambda calculus is much more fun :)

    11. Re:Tcl is good by Slime-dogg · · Score: 2, Insightful

      The main point of the blog was a discussion of web based pages. It is interesting to note that he talks about the difficulty of students grasping enterprise Java concepts when they've only had one semester of Java programming. This semester was most likely an intro course. This is similar to letting a 12 year old drive a car, some will get it and drive fast, others will crash into a light post five feet away.

      He also discusses the need for redeclarations of items in these pages, which is a design problem at worst. If his students planned properly, they'd use inheritance to take care of the common things connections and queries. There's no reason for common repitition.

      The .Net environment is a bit more forgiving for beginners. Building pages is as easy as using a forms designer. This would explain his lack of complaint for that product. In most cases, however, I'd say that programming C# and programming Java are more similar than not.

      As for scripting... I would tend to agree that they are better for hammering out applications quickly. The issue here is the decision to have an interpreted language versus a compiled language. I, for one, would rather have my html output code fully compiled, for the best use of the machine. It just makes more sense. :shrug:

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    12. Re:Tcl is good by KILNA · · Score: 1, Interesting

      Java is just a knife. Perl is the Swiss Army Chainsaw.

      --
      Error: PANTS NOT FOUND. Press <F1> to continue.
    13. Re:Tcl is good by Anonymous Coward · · Score: 0

      His Java-using seniors probably aren't having any more trouble than the others (and even if they are, correlation is not causation). Having worked for Philip Greenspun, I wouldn't trust his judgement on any technical issue. The man knows how to write quickly and at length while sounding confident and knowledgable. He has little real ability.

    14. Re:Tcl is good by GenSolo · · Score: 1

      Hey, I never said assembler was a good way to do it. I just wanted to remind my original post's parent that Java isn't the only language that can do anything.

    15. Re:Tcl is good by Directrix1 · · Score: 1

      OK, point taken.

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    16. Re:Tcl is good by Anonymous Coward · · Score: 0

      Well "simple" programs is a very broad stroke - the average piece of consumer software is by it's nature simple - so if Tcl can do that I'm nodding in agreement!
      My counter to the "Tcl is for toys" is that the EDA guys - i.e. VHDL/HDL compilers, synth., debuggers/simulators use Tcl EXTENSIVELY - mostly for glue, and to "drive" their own proprietary systems but man it's pretty tough glue! Stands up so well to abuse that Tcl is almost the language of choice - by default!

    17. Re:Tcl is good by pmz · · Score: 1

      The "problem", if there is one, with Tcl is that it is not fashionable.

      I thought the problem was Tcl's lack of error reporting and tendancy to make large scripts a hair-pulling exersize of futility.

    18. Re:Tcl is good by Anonymous Coward · · Score: 0

      I know that alot /.ers fetishize and practically cream their pants whenever MIT is mentioned, but let me clue you in. There are some people at MIT who can't program worth shit and don't spend 24/7 in front of a computer. If they were using Java, then chances are they are students who only know java (the language currently in fashion in beginning programming courses) and haven't taken the time to learn other programming languages. If that's the case, then I would surmise that they aren't all that into programming and are probably not as good at it.

    19. Re:Tcl is good by benh999 · · Score: 1

      You don't have to embed HTML in PHP. Most decent PHP projects don't. Just as how you don't have to write perl code that looks like shit, but many people do it anyway.

    20. Re:Tcl is good by pyrrho · · Score: 1

      >With java you know you can get anything done.

      ok, I'd like some objects to use memory allocated from a memory mapped file. Also, I'd like to optimize the VM to pare down the--- oh... not everything?

      C/C++ is the swiss army knife of computing. Java is more like the swiss cheese of computing, which everyone knows is the best chhese for a ham sandwich.

      VMs work best when they are custom built to a problem domain.

      --

      -pyrrho

    21. Re:Tcl is good by Anonymous Coward · · Score: 0

      My friend, you must have gone mad, mad! Tcl is good for quick and dirty prototypes, nothing else. At my company we had a 20000 lines Tcl program which became basically impossible to maintain:

      1) typical scenario. Run the 20000 line program, after editing it for a while, and get "mismatched parentheses" error (no line number). Lots of fun with cvs diff ensues.

      2) like all script languages Tcl has no strong typing: it's impossible to handle large programs without strong typing because you can't catch bugs unless you actually execute the code in which the bug is.

      3) "Easy to ready 6 months after"? Did you actually ever work on a real-world large project in Tcl? Something tells me you didn't.

      So we switched to Java and everything was fine and dandy since then.

    22. Re:Tcl is good by ttfkam · · Score: 1

      You mean like this?

      Or did you mean pared down VMs like this or maybe this? How about scaling up to this?

      I ask you this about C and C++ (which are distinct languages and should not be associated closely with one another like "C/C++"): where are the cross-platform, universal database APIs? If you answer ODBC, you obviously haven't ever programmed to ODBC for more than one database. How about those universal threading libraries? GUI? XML APIs? Math libraries? RPC? Authentication and authorization? I18n? L10n? How about the fact that there's more to Unicode than a type like wchar_t? Accessibility? Audio? Cryptography? Image handling and manipulation? Printing?

      C and C++ is a Swiss Army Knife? Only if you like the Swiss Army Knife model with two blades and a flathead screwdriver.

      Is Java the end-all be-all language? Of course not. Nothing is. Does it have limitations? Sure. Everything does. Just don't presume to suggest that C and C++ are some overlooked white knights. Hell, even the creator of C++ thinks there should be a garbage collector in C++.

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    23. Re:Tcl is good by Anonymous Coward · · Score: 0

      Tcl can't be considered a general purpose programming language, unlike many other "scripting" languages (Python and Ruby especially).

      Lack of lexical scoping and the lack of a type system are really fairly limiting.

    24. Re:Tcl is good by jorleif · · Score: 1

      and the fact that with PHP you have code embedded in the HTML
      Just because you can does not mean you do, or do you embedd all Java code in the .jsps?

      There's absolutely no reason why you could not write the same "simple intelligent classes" in PHP, just a different syntax mainly. And testing those with PHPUnit should also work quite well.

      The issues I have with PHP are more the stupid scoping rules, its messy OO support and total lack of static checking. That said PHP can be powerful for lots of things.

  91. Get a grip people.... by werdy · · Score: 1

    I regularly recoomend PHP to people for web applicaitons - a huge amount of the work that is needed on most web sites is best suited to something like PHP - a scripting language. I am a Java devleoper though, and was an early adopter of the technology. Use the tool that suits your problem. If you are looking to hack something together for a web site - use a scripting language. If you are building something that will be reusable and extensible, have an actual architecture, and warrants the design and implementations complexities that are simply not well suited to scripting languages, then use a language like Java. I don't personally recommend VB for anything really, though I realize it has a fanatic following as well. As for .Net, well, let's see if it is still the big "MS-thing" when it has been around long enough for anyone to actually have the experience to claim to be a .Net archiitect. Right now, there simply hasn't been enough time to achieve that. As far as the article - the guy is an idiot, and his view on software development is clearly limited to a very narrow scope of the problems. The real worlld is far more complex that he apparently realizes.

    --
    The heights of genius are only measurable by the depths of stupidity
  92. Even Sun hates Java by Anonymous Coward · · Score: 0
  93. quick and easy VS. stable and secure by TTL0 · · Score: 1

    from the article: "People who are serious about getting the job done on time and under budget will use tools such as Visual Basic"

    VB development can be quick and easy, but its a tradeoff for the price you will pay later when you want to put your app on the web. After you consider the costs for win2k server, SQL server, and maintaining the servers (patch,reboot,what memory full ?!?! reboot again) you will regret not using a *nix based solution. sure *nix might take more time to program and deploy but once it is up it's easier to maintain.

    Also what is the point of the class ? to teach students to slap up code on the web ? or how to develop stable, robust and secure apps if the purpose is the former, then he is right, but if the latter i would stay away from VB

    --
    Sanity is the trademark of a weak mind. -- Mark Harrold
  94. Maybe JSP for a Student Project by querencia · · Score: 1

    This guy is using JSP for a simple database access app. OF COURSE it's overkill. OF COURSE people using scripting languages are having an easier time.

    Maybe you could say that JSP is like an SUV, compared to scripting languages when you're trying to do a simple web app that accesses a database. That's taking a Hummer to 7-11.

    But when I code, I'm going into battle. I need a military humvee with this frigging thing mounted on it.

  95. DumbAss by BiteMeFanboy · · Score: 1
    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.

    So what this jackass is really saying is that the quality of the students and teachers at MIT is currently pretty piss poor.
    Java is not my favorite language (and Web Programming is about the most boring thing in the world AFAIC) but I have to use it. I picked up JSP in less than a week, greenhorns we've hired need less than a month.
    Sounds to me like they should be investigating the professors for not being able to convey a simple concept even when they have months to do it.

  96. Bad analogy by KMAPSRULE · · Score: 1

    I think that this is a bad analogy, as I have seen hard core Java apps that are less than 70k in size (Think Embeded cell phone/PDA apps) thats not an SUV. This guy hates SUV's and he Hates Java so he has equated them. Automatically makes this a bad analogy and more of a rant. In fact In my experience there is not a lot in this life that makes a good analogy to software engineering

    Personally I dislike Java, Mainly for its unpredictable garbage collection and all the issues listed in the other comments above dealing with incompatable JVM's,deprecation etc, etc, etc. And I have had some rough experiences in mixing Java with Reused Legacy Code in Other Languages(Situations where Management,Customer and 3'rd Party Vendors don't give a lot of choice as to waht languages you can use)

    What really scares me is that there is a big push for a real-time Java for the military in hopes that Ada can be replaced with Java:
    Java in Mil Article
    J-Consortium
    JCP

    --

    --Im an oven mitt, not an engineer! (SLArbys Radio Commercial)
  97. Eat your own dog food? by pamar · · Score: 1

    Correct me if I am mistaken, but didn't ArsDigita move everything to Java for its ACS framework? Or was this blamed to the evil VCs, too, in the revisionist phase of Greenspun history?

    1. Re:Eat your own dog food? by Anonymous Coward · · Score: 0

      Greenspun didn't really have a lot to do with the move to Java at AD. He wasn't really vocally against it, though. It was only after the fact when he began his shrill "See! The company was profitable when I ran it!" drumbeat that Java became a Bad Programming Language.

  98. No, Thank You! by CausticPuppy · · Score: 3, Funny

    For providing examples of invalid syntax in PHP, ASP, and java!

    --
    -CausticPuppy "Of all the people I know, you're certainly one of them." -Somebody I don't know
    1. Re:No, Thank You! by Inda · · Score: 1

      Made me chuckle. =)

      Since when has ASP been a language anyway?

      Who says the code behind an ASP page has to be VBS? Or even JavaScript for that matter?

      ASP is lovely. I learned the majority of it in an afternoon. The day after I learned VBS.

      --
      This post contains benzene, nitrosamines, formaldehyde and hydrogen cyanide.
  99. Grain of salt by LDoggg_ · · Score: 2, Insightful

    This guy's article is utter crap. Phillip Greenspun is either a moron or nothing more than a common troll.

    JSP is fantastically simpler than "J2EE"

    J2EE is a collection of java techonologies which includes JSP, not a single development paradigm. JSP can be used in a model-view-controller as a view or used to write simple stand-alone applications.

    After researching how to do bind variables in Java (see the very end of http://philip.greenspun.com/internet-application-w orkbook/software-structure), which turns out to be much harder and more error-prone than in 20-year-old C interfaces to relational databases

    Riiiight... Because there is only one way to do this in Java.
    First off this is not an inherent problem to Java, but a problem of developer implementation.
    Prepared statements are only one way to communicate with databases. You can create your SQL any way you'd like and even bind parameters yourself an then execute a regular Statement.

    This is all moot anyways if you plan on teaching students what the real power of using an Object-Oriented language. Most people that have to do this sort of thing for a living would have a bstracted the database layer into objects that thier view is using. The actual method of database connectiving is not irrevelant, but certainly not a hindrance to productivity.

    A project done in Java will cost 5 times as much

    Good thing he provided research to back that up... Oh wait a minute, he was just trolling again.
    5 times more expensive? Hmmm.. apache/tomcat is free. Eclipse is free. You can pull down an SDK from Sun for free.
    Well maybe he meant that it will take 5 times a long and of course time=money. Nope. He said that it will "take twice as long ". Confusing logic to say the least.

    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.

    Sure buddy, tell that to Oracle. Oracle happens to use Java for its business applications.
    Applications based on Relational databases is where Java excels. The java language isn't the reason, its what is being done with Java in the real world that matters.
    There are plenty of tools some free some not, that take databases with referential integrity constraints to build objects (JavaBeans, EJBs, JDO, Torque, whatever) with child-parent releation ships and automatic persistence.


    Its really a shame that this guy is allowed to teach at MIT.
    Here's an idea: how about teaching students to use the right tool for the job? He should leave the zealotry at home unless he could back it up something more than an uninformed tirade or a ridiculous apples-to-oranges comparison with an even more idiotic analogy.

    --

    "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
  100. Quick!!! Alert ELF! by Kokanee · · Score: 1

    It's time they take action against this wasteful, polluting dinosaur.

  101. Java isn't just a language by Anonymous Coward · · Score: 0

    How can anyone compete with Microsoft and Intel, when Windows is the standard platform that software is written for? How can Sun get anyone to write anything but niche-market software for Solaris and Sparc? Java is the answer. It's the alternative platform; in effect it's an operating system to rival Windows. Its virtual machine approach has advantages of portability and security.

    Microsoft sees the threat; .NET is its answer.

  102. java sql question marks characters by evil_one666 · · Score: 2, Insightful
    With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247", an action that will introduce a bug into the program as soon as the SQL query is modified (since now the 7th question mark has been moved to become the 8th question mark in the query).
    Although I am a fan of java I have to agree on the above criticism. Surely there must be possible to build an SQL statement without all those question marks. You dont need them in clean SQL so why do you REALLY need them when calling a statement from java. (I know, I know, you need to delineate fields- well lets make a more elegant field delineator)

    Its always a bug waiting to happen

    1. Re:java sql question marks characters by iapetus · · Score: 1

      As is pointed out in the comments to the blog, you can always use SQLJ.

      --
      ++ Say to Elrond "Hello.".
      Elrond says "No.". Elrond gives you some lunch.
  103. Go argue with by Anonymous Coward · · Score: 0

    this paper it's "objective" >>

  104. Java bashing by MoronGames · · Score: 1

    Why is it that every time we have to hear about Java, it's something negative? I, for one, think Java is a great language. It's quick and easy to develop, multiplatform, and, hey, it's fun! Why not post something positive about Java?

    --
    hey!
  105. I used to think Greenspun was a pompous ass by *weasel · · Score: 4, Insightful

    ... 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.

    --
    // "Can't clowns and pirates just -try- to get along?"
    1. Re:I used to think Greenspun was a pompous ass by 16K+Ram+Pack · · Score: 2, Insightful
      did you miss the symbol out here?

      I'm happy to hear someone make a clear argument and provide case studies or statistics to back it up (or parallels). I know I can often get defensive for my position.

      But in the case of what he wrote, it seemed sloppy and badly done. Java takes 5 times as long as PHP? On what? A few examples of individual programmers working solo on a non-enterprise project. Bear in mind that I like PHP and I have little knowledge of Java.

      Students have totally different priorities to a manager in a computer department. What they build doesn't have to be easily maintainable or allow other developers to easily extend it.

  106. Anybody got a mirror? by DrSkwid · · Score: 1

    Sure I do. How else do you think I keep my hair is such fine condition?

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    1. Re:Anybody got a mirror? by Anonymous Coward · · Score: 0

      I'm guessing the hat does the trick.
      http://www.hardlight.couk.com/photos/genie /matjoe. jpg

  107. business computing with Lisp by brlewis · · Score: 2, Informative

    Who do you think keeps Franz and Digitool in business? Hobbyists? I don't think so; they'd be using one of the free implementations. Your "no one in business computing considers using Lisp" comment shows you don't know what you're talking about.

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

    1. Re:business computing with Lisp by zanderredux · · Score: 1
      Another example of business computing in Lisp is in the area of Systems Integration -- I've worked on the implementation of Seebeyond's e*Gate tool for an automaker, coding almost 300 interfaces to link AS/300, SAP, Siebel, web apps, DOS - you name it.

      Granted, it was a Lisp dialect, but all the features were there.

      Sad thing is that Seebeyond moved into Java for the new version of their product. The tool relies on heavy text processing and Java is not really great at that.

      If only Java could do regexps....

  108. You're kidding, right? by Anonymous Coward · · Score: 0

    "For a database driven application, how do you propose not to have hardcoded SQL statements?"

    The SQL statements should be parameterized and built as needed. I don't do code reviews any more, but I always failed code that had hard-coded SQL. Its bad programming; it adds to cost of maintenance, and doesn't allow it to be easily built so that you have RDBMS independance.

    This is Basic DB Programming 102 stuff, and shouldn't be revolutionary.

    1. Re:You're kidding, right? by karlanka · · Score: 1

      Any idea what's happening with dynamic SQL ewhen it executes in the DB-server? Ever heard of hard-parsing/soft-parsing/no-parsing. You want to scale? Right => The only way to go is static SQL with binds. (Stored procedures even better) I can't belive how little people know about how the DB-server works.

  109. Close but wildly inaccurate... by Anonymous Coward · · Score: 0

    Yes Philip is correct in SOME sense... Java can be "bulky" for small tasks however I would recommend using Python for procedural software communication/implementation (database calls, file transfers, communication, OS hooks) and extending with/to JPython (calling any libraries/classes you REALLY need for any business logic) finalizing with hooks into a highly structured full blown Java class or J2EE application.

    Perl is an ugly beast with all the ad-hoc modules and the capacity of forgeting what you scripted 6 months later. Even Larry Wall admits it has grown and grown (but no parent would ever call their baby ugly..) Perl is good for algorithims and reg exp but sucks for anything over 300 lines unless that what you are maintaining on a daily basis.

    If it's just "web page stuff" as Philip one would do best with pyxhtml, Spyce, and pyblosxom....

    Philip does not define the criteria for success in any part of his post or what he is trying to accomplish... All the functions that he "mentions" have already been written before.

  110. Background by Ed+Avis · · Score: 3, Interesting

    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 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 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.

    --
    -- Ed Avis ed@membled.com
    1. Re:Background by Anonymous Coward · · Score: 0

      ArsDigita was a big scam. It was the typical dot.com embarrassment. Phil Greenspun has a lot of balls to show is face in public (or on the net) after the fall of ArsDigita. My company paid him hundreds of thousands of dollars to make a simple server based on his Tcl based ACS. ArsDigita did not deliver anything and took the money. Turned out we weren't the only customers to get screwed and class action suits followed. Phil Greenspun was ousted. But he got away with the money. Now he can brag about his DA40.

      I will always remember visiting one of the ArsDigita branches and was shocked to see the rampant spending (40 boxes of $3000 sun flat panels) and the completely inept employees....not to mention their main focus was to recruit more employees, not deliver servers. The employees assigned to our server project were less than concerned about doing work and very concerned about getting rich. Arrogant as they were, they described their leader, phil greenspun, as a "megalomaniac".

      Incidentally, the friend with the hummer to which Phil refers, is weapons collector, Rob Silvers (also inventor of photomosaic.). The same employees described him as "insane".

    2. Re:Background by Ed+Avis · · Score: 1

      The management of the company, both before and after philg got booted out, had a lot of faults. But it's not in doubt that from a technical point of view the switch to Java was a mistake.

      --
      -- Ed Avis ed@membled.com
    3. Re:Background by the_womble · · Score: 1

      Arsdigita (when it was run by Phil Greenspun) made much faster progress on my former employers website then the previous developers. They had the key functionality up (albeit internally and untested) within weeks wheras the previous developers (Icon Medialab) had got almost nothing working after about six months.

  111. Because, prudence by Anonymous Coward · · Score: 0

    " Pray tell what is the problem with hardcoded SQL statements?"

    Because SQL is not really a standard; every RDBMS has special ways of doing things via unique SQL verbs that are non-portable.

    Therefore, given the ability to hardcode SQL, programmers will choose the path of least resistance making it difficult, if not impossible to provide any degree of RDBMS independance. That means if you want to switch from DB2OracleSQL Server, the cost is non-trivial.

    This is bad for ISV's, and can be costly for companies wanting to switch RDBMS's to avoid vendor lock-in.

    Its why you hire people like me with 20 years of experience, even though we make 6 figures, because decisions like you want to make will eventually cost companies millions of dollars because its done without the benefit of experience.

    Yes, I've been doing this stuff before anyone had *invented* DB. I'm not smarter than you, I've just seen stuff that you've only heard rumors about.

    1. Re:Because, prudence by Ed+Avis · · Score: 4, Insightful

      I think we gave different interpretations to 'hardcoding SQL statements'. I don't have any objection to keeping the SQL separated out and making it easy to switch from one dialect to another - although usually it is better just to code to the ANSI SQL standard, with some allowance for common deviations like Oracle's ''-as-null. What I have a problem with is deciding that any form of SQL is evil, and treating the database like a glorified (and rather slow) one-row-at-a-time object store, in order to avoid 'hardcoding' such heinously non-portable constructs as 'select name where age > 50'. And yes, this is based on experience.

      One point - the 'nonportable SQL verbs' you mention can in some cases be the only way to tweak the best performance out of an RDBMS. Using a nonstandard extension to SQL is not a decision to be taken lightly, but it's good to at least have the option.

      --
      -- Ed Avis ed@membled.com
    2. Re:Because, prudence by Tablizer · · Score: 1

      " Pray tell what is the problem with hardcoded SQL statements?" Because SQL is not really a standard; every RDBMS has special ways of doing things via unique SQL verbs that are non-portable.

      Well, wrapping them in something else will NOT solve that except for trivial SQL. There is no decent API for that existing. And, different DB vendors support different things. Thus, either you use the lowest common denominator, or have an unportable API, putting us back to square one.

      I also agree that SQL stinks as a relational language, but it beats implemented alternatives: navigational databases and OODBMS.

      Besides, companies don't switch database vendors that often. I don't think it is economical to increase development time and code size by about 30 percent for that 10 percent case where you switch. The probability-cost math is against it.

  112. Java has issues, but not the ones mentioned here by Headius · · Score: 4, Insightful

    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.

  113. Too bad I can't actually read the thing... by Anonymous Coward · · Score: 1, Insightful
    due to the Slashdot effect. However, I would like to make a point of my own, in that Java is not the be-all and end-all of programming languages. It has its uses - and so does COBOL, like it or not. The problem is that too many programmers get good (or think they are good) in one language, and use that for everything - it's like a carpenter who only knows how to use a saw, not a hammer or screwdriver or plane...

    A lot of people here jump very quickly to defend Java, and the same people jump to slay Pascal or Ada. But each language has its purpose, and if you use it for that purpose, it shines like a diamond.

    I use Java - when I need some cross-platform web-based code or whatever. But if I'm running a quick script, I'll write it in Perl. If I'm doing some quick Windoze jobbie I'll write in VB. I use the correct tool for the job, rather than adapting the job to fit the tool. And if a few more of you stupid "college graduates" would learn to do that then just maybe the software industry wouldn't be quite so screwed up.

  114. Plug Microsoft, get $$? by Anonymous Coward · · Score: 0
    So, is this just another case of a college profesor mentioning Microsoft products in their course, and collecting $$ from Microsoft?

    disclaimer: I'm currently working on an Oracle/.asp project. I code Java at home (not very well, yet!)

  115. Re:Programming lehttp://developers.slashdosson 101 by kpharmer · · Score: 1

    SQL Generator? And it handles subselects, inline views, grouping, multiple outer joins, and functions?

    Or - is that too difficult to generate, forcing you to make up for this thru additional application code and reduced application functionality?

    If it's anything like any other sql generator, then it's the latter. That's great for trivial applications by amateur or otherwise junior programmers. However, robust and powerful applications typically require SQL is that requires the above capabilities. Time to take a SQL 101 class.

  116. This guy has no idea what he's talking about. by Dr.+Bent · · Score: 5, Funny

    JSP is fantastically simpler than "J2EE", which is the recommended-by-Sun way of building applications

    JSP is a component of J2EE. 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.

    1. Re:This guy has no idea what he's talking about. by consumer · · Score: 1

      Oh please, of course he knows that JSP is a part of J2EE. The point is obviously that straight JSP is quite different from using the whole deal with EJBs, etc. as recommended by Sun in their samples apps and publications.

    2. Re:This guy has no idea what he's talking about. by Dr.+Bent · · Score: 1

      Oh please, of course he knows that JSP is a part of J2EE.

      Does he? Maybe so, but I doubt very seriously that he understands what J2EE really is if he's using the term in this way. It's like saying "The Internet is broken." His resume doesn't seem to mention any Java or J2EE experience. And the fact that he's having his students put Java code in their JSPs speaks volumes about his level of expertise with J2EE (which seems to be on the level of your average Visual Basic code monkey).

      Improper use of terminology is the first sign that you don't really know what you're talking about. If he wanted to say that using EJBs and Servlets is too complicated, he should have just said it. The way he phrased it makes it seem like JSPs are an alternative to J2EE, which is like saying that drinking Evian is an alternative to water.

    3. Re:This guy has no idea what he's talking about. by holzp · · Score: 1

      Obviously this is your first Greenspun experience.

    4. Re:This guy has no idea what he's talking about. by Anonymous Coward · · Score: 0

      It's good that you're ignorant. Really.

  117. Minivan by beggarstune · · Score: 1

    What's wrong with being the SUV of programming languages? I like SUVs. But if he called Java the Minivan of programming languages I'd be offended.

    --
    (S+C) x (B+F)/T = V
  118. Nah... by hding · · Score: 2, Funny

    For example,

    http://www.cliki.net/Database

    I personally use Pg most of the time now, but I used to use CommonSQL (that comes with Lispworks), on which UncommonSQL is based. That really makes database access dead easy in Lisp.

    1. Re:Nah... by TheLink · · Score: 1

      Uh huh.

      1) Which to use.
      2) How to use?

      e.g. No examples from:
      http://www.pmsf.de/resources/lisp/MaiSQL.ht ml
      http://clisp.alma.com/
      etc

      If I were a smart kick ass Lisp programmer I might end up writing the DB interface myself in the time it takes to figure out how the stuff you pointed to worked and which one to use. Or download it and understand it immediately.

      Point is I'm not smart enough. And so- I do this:

      http://search.cpan.org/modlist/Database_Interfac es

      Click around, find the one that looks easy or defacto standard and use it.

      Like I said, I'm lazy.

      BTW y'know the thing about Java I noticed was a fair number of methods seemed to be there because someone was told to write one by someone who was told by someone to put something there.

      For instance you can easily find out the number of COLUMNS returned from a DB query. But you can't easily do that for the number of ROWs! Doh.

      Not sure if you'd agree with me, but look at the Java API, docs, etc. It's like some planning committee drew out the top level, and it got split and sent out to various Project Managers who speced it out, and everything got outsourced to India or something who fulfilled the letter of the law.

      Sure 95% work as documented. But if I keep having to write my own libraries what's the point?

      Whereas many of the perl modules appear to be written by people to actually make their programming easier and/or more fun.

      http://search.cpan.org/author/DCONWAY/Acme-Bleac h- 1.12/lib/Acme/Bleach.pm

      Sure Latin is more logical than English.
      Perhaps Lojban and Esperanto are technically better and cleaner. But hey...

      --
    2. Re:Nah... by hding · · Score: 1

      You almost answer your own question. You're plugged into the Perl community, so you know what is the right thing to use. If you were plugged into the Lisp community, you'd either have a decent idea which of these to use and how to use it, or at least how to find out. CPAN is probably the only reason that I continue to use Perl myself, and I agree that it's a good one. I don't necessarily think that it's so easy to know what the good modules are without being connected to the community, nor do I find Perl modules from CPAN necessarily easier to use than libraries I might find from CLiki.

      In my case, I originally did as you mentioned - I wrote an interface to MySQL through the Lispworks FFI that wasn't terribly sophisticated, but had the functionality that I needed and mimicked the Perl DBI interface that I was already familiar with. Later I got the better version of Lispworks with their built in (and quite well documented) SQL interface and used that for a while. Now that I'm using PostgreSQL on Linux I use the Pg package and found little problem in getting accustomed to it.

    3. Re:Nah... by Anonymous Coward · · Score: 0

      For instance you can easily find out the number of COLUMNS returned from a DB query. But you can't easily do that for the number of ROWs! Doh

      This is due to how Java handles database cursors. You don't know the number of rows because the query hasn't necessarily completed execution.

      Unfortunately Java lacks something like a "Disconnected Recordset" in the MSoft world -- at least last time I checked. Then one can easily get the rowcount becaus all the data is cached on the client. (Fortunately you can build your own pretty easily with the built-in datastructures.)

      But it does say something about Java's approach that they would come up with something like entity beans before building a full-featured db access layer.

    4. Re:Nah... by TheLink · · Score: 1

      I'm not plugged in to the Python community at all and just a minute of looking and it seems like if I wanted to talk to DBs the standard is Python DB-API 2.0.

      And here would be what I'd get:
      http://www.python.org/topics/database/module s.html
      And from there there's plenty of info.

      My guess is Ruby is a step or two behind, but Lisp? It seems like so many Lisp programmers are so elite they prefer writing their own stuff, and heck some seem to refuse to interface with other programs.

      With Lisp you get to manipulate stuff at the atom or molecule level all the way up to transmogrifying a whole entity with just a few nifty changes (macros etc), but it still feels like a lot of work for dumb ppl like me :).

      Don't get me wrong, I'm not against Lisp. I really wish there were more Lisp programs in use (esp free ones ;) ). Then we'd probably have far fewer friggin' remote root security problems. OpenSSH, lshd, you name it.

      --
  119. Amen by Anonymous Coward · · Score: 0

    His rant sounds like a programmer with 3-5 years of experience who wonders why all those "old guys" "just don't get it".

    Meanwhile the old guys are laughing and figuring out ways to make code run for generations, not until he leaves after 6 months of his "coding".

    He's a nightmare because he's smart (smarter than me in most ways), but he doesn't have the experience to understand, *really understand* the implications of his choices. He thinks 18 months is a long time, and I architect systems that take 18 months to build, and I want a 12 year lifecycle out of this code *minimum*.

    He's building the Golden Arches, and Java is buildign Pyramids.

    1. Re:Amen by Anonymous+Brave+Guy · · Score: 1
      His rant sounds like a programmer with 3-5 years of experience who wonders why all those "old guys" "just don't get it".

      How does it go? "Young men think old men to be fools, but old men know young men to be fools"? :-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  120. Sorta on-topic about other languages... by Anonymous Coward · · Score: 0
    GBTM wrote

    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.

    We are seriously thinking of using a Prolog rules engine to handle the connectivity issues in a real-live commercial project. A pilot has shown we can replace several thousand lines of Java with a hundred or so lines of prolog, plus change the rules in the field. So we may actually deploy this, Honest!

    Luckily there are several Prolog implementations (as well as several rules engines like JES(S?)E) available for Java.

    So there is some use of those acedemic-type languages in the real world.

    -- ac at work

  121. So I guess that makes Fortran... by Manhigh · · Score: 1

    A bare chassis with a 500hp engine.

    --
    "Open the pod by doors, Hal" > "I'm afraid I can't do that, Dave" sudo "Open the pod bay doors, Hal" > alright
  122. So... by Anonymous Coward · · Score: 0

    So, does this mean that Java is helping to finance terrorism now?

  123. Amen by tkrotchko · · Score: 1

    "If someone were to say to you "I'll just write this little script, it won't take me long" I'd advise that you either (a) fire them or (b) run for the hills. They have no idea what they're doing. In the long run, all you get is grief. "

    Clearly, you have way too much experience on your hands .

    --
    You were mistaken. Which is odd, since memory shouldn't be a problem for you
  124. C++ vs Ada by Latent+Heat · · Score: 1
    Is it fair to say that Ada was a "software engineering" language before Java came on the scene. You know what I mean: the features of the language are supposed to prevent common bugs from happening and foster readability and maintainability. While there are "software engineering" aspects to C++, is it fair to say that C++ targets the same "large project" market but takes a very different approach?

    The "published metrics" I have seen suggest that Ada and C++ are neck-and-neck with each other -- development speed, bug rates, and such. Ada may have a slight edge, but it is nothing to write home about. This supports the notion that tool-based security is a weak one.

    The old notion of car safety was to put the burden on the driver while the Ralph Nader approach was to build safer cars. As it turns out, the biggest safety factor remains the "nut behind the wheel" -- go to the IIHS Web site and look at the relative safety of the different car makes, and the pattern follows driver demographics more than anything else (a Toyota Corolla is a lot safer than a Geo Prizm -- they both come off the same assembly line in California).

    Along the same lines, the biggest factor in software bugs is "the loose screw behind the keyboard" rather than issues of language design.

  125. Which Human Genome would that be... by Anonymous Coward · · Score: 0


    That's a pretty interesting quote, considering that Celera Genomics (the human genome folks) uses Java for both their annotation processing and end client for viewing the genes.

    Writing a controller app for manipulating serial ports isn't nearly as demanding as handling 3d modeling. I'm not impressed.

  126. No! by Anonymous Coward · · Score: 1, Funny

    "Do you happen to teach Comp Sci at MIT?"

    No, I work for a living.

    Also, I have to live with the results of my technical choice for a decade, unlike some trendy professor from Boston who, in two years, will be promoting some other new technology trend.

    That's not a flame, that's just the truth.

    1. Re:No! by Anonymous Coward · · Score: 0

      No, it's not the truth. You apparently don't know about his history and all of the production web sites he's personally put together.

  127. Re:Programming lehttp://developers.slashdosson 101 by wasabii · · Score: 2, Interesting

    Depends on the application. Check out JDO (Java Data Objects), Hibernate, and Castor. They are all OO->DB frameworks. Your app works with objects, and all the various things objects have, properties that return scalars, properties that return other objects (relationships), properties that return lists of other objects. They map those onto DB statements, which may be generated at application start in a fraction of a second. Usually you build your object model, and then an XML file or two describing the relationships between your objects, and it Just Works. The XML can be autogenerated from the classes themselves if needed.

    You would be suprised how many "robust and power applications" do not in fact require much out of SQL at all. Hence the various pushes/ideas with object databases.

    Now, if your app is a large reporting app, doing massive SUMs and GROUPings, sure. This doesn't cut it. But it's amazing how the majority of apps just manipulate a set object model.

  128. read his Internet Application Workbook by spectrum32k · · Score: 1

    and laugh. This is what they teach at MIT???? Even here in Spain there are better university textbooks about web development.

  129. Phil Greenspun is not anti-Java by Alethes · · Score: 2, Interesting

    In about 1997, Phil Greenspun wrote in his How to be a Web Whore Just like Me book in Chapter 8:
    "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 like a single guy who does nothing with his SUV except do a one hour commute to work and home -- it works, but there are more practical solutions.

  130. Who gives a crap about Philip Greenspun? by zaqattack911 · · Score: 1

    I don't mean to sound like a complete troll, but why on earth do we give a rats ass about what Philip Greenspun thinks.

    After reading through his "website", I can only conclude he's a nobody...

    Are we going to start picking are "blog celebrities" with particular reasoning?

    He comes a across as nothing more than CHEAP with blindingly genious statements such as "java is the suv of programming"

  131. language, express yourself by cel-ed · · Score: 1

    I use different kind of languages to express myself, I just like argueing like 'french' is better then 'dutch'. That just depends in what enviroment/country you are, the more knowledge you have about different languages, the better.

  132. JSP is OK by Baki · · Score: 3, Insightful

    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).

    1. Re:JSP is OK by Lordrashmi · · Score: 2, Interesting

      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.

  133. Huh???? PHP -Good, Java-Bad? by theolein · · Score: 2, Informative

    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.

  134. wow it IS an SUV by Anonymous Coward · · Score: 0

    So its an overly expnecive, resource guzzeling, enviornment destroying, and is used by by inconsiderate americans who want to feel bigger then themselves. wow, that does sound like Java.

  135. Re:Java is like Windows XP, can anybody say bloatw by grioghar · · Score: 0

    Explain to me where again is the "bloatware" in the most stable version of Windows yet?

    --
    Can you ping me now? Gooood! | Manhappenin.Net - Things to do
  136. Could you tell me where you work? by Anonymous Coward · · Score: 0

    Because I want to avoid any company's product/service LIKE THE PLAGUE that would hire a moron like you.

    Here's your programming lesson. I'll "speak" slowly so that even you can understand.

    Stooored - Prooo - ceed- uuures. Now can you say that?

    1. Re:Could you tell me where you work? by phoebusQ · · Score: 1

      Could you tell me where you work? Because I don't want to apply for a job at a company with assholes like you that are unwilling to answer someone's question without belittling them.

    2. Re:Could you tell me where you work? by PierceLabs · · Score: 1

      You call this guy a moron and you have business logic sitting it stored procedures which are more than likely not portable between databases at best and require architecture changes when the schema changes at worst?

      Hmmm....

    3. Re:Could you tell me where you work? by Anonymous Coward · · Score: 0

      Stooored - Prooo - ceed- uuures. Now can you say that?

      Can you say "noooot - supported - in - mySQL"?

      Oh, that's right. No one should even THINK about creating a website unless they can afford Oracle.

      Dipshit.

    4. Re:Could you tell me where you work? by jargoone · · Score: 1

      Can you say "noooot - supported - in - mySQL"?

      No, but I can say "aaaaare supported in Postgres." The price is the same as mySQL, and it's a real RDMBS.

    5. Re:Could you tell me where you work? by karlanka · · Score: 1

      So you think a simple select statement will always bring back the same data in 2 different DB:s. DB:s are too different you can't write one code that fits all.

  137. Arrogance by batkid · · Score: 1

    Just because MIT students who had one Java course previous to his software engineering class could not understand how to use Java properly to build webapges, doesn't mean Java is bad for web applications.

    I also teach a second year software engineering course using Java to write web applications. My approach, however, is very much different to MIT. I actually took the time to run tutorials on how to write a proper application using servlets and jsps IN CLASS! That's the only way, imo, to teach these "beginners" how to write programs properly.

    The MIT approach (as well as most large universities) is to let the students learn the tools themselves while they cover the theory in class. This sounds all good on paper since theory is the "essence" of computer science while being able to compile and run a program is more of an "accident". I believe, however, that since the "accidents" are what is keeping eveyone employed, we have to teach the proper way to code using CLASS time. Espeically in an introductory SOFTWARE ENGINEERING class.

    Anyway, with support from the right IDE, programming web applications using servlets and jsps (a subset of J2EE) is pretty easy even for second year students. BTW, our students also had only one other course in Java.

    I have written a paper on my experience and it is here

    Cheers

  138. Ok, rant for rant by varjag · · Score: 1

    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.

    Well, the guy indeed was a founder of a (profitable) enterprise. Please adjust your buzzwords.

    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.

    If you look at a typical Java source file, you'll see that this is quite true. Excess of boilerplate code is quite usual for Java applications.

    Again, no further comment, except to note that no one, I mean no one in business computing considers using Lisp.

    Lisp is indeed considered, used, and deployed by businesses. Go and see it in action.

    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.

    *moan*

    I hear people using that argument to justify clumsy tools since the days when C++ became fashionable. Yes, you got to learn a lot to be a good developer, but when one tool takes eons longer to master (compared to existing alternatives) without any visible productivity boost in return, I say it is a poor tool.

    --
    Lisp is the Tengwar of programming languages.
    1. Re:Ok, rant for rant by Troll_Kamikaze · · Score: 1

      Well, the guy indeed was a founder of a (profitable) enterprise. Please adjust your buzzwords.

      Not a profitable enterprise, but a well capitalized enterprise (during the bubble). Now it's bankrupt.

  139. Bind variables and SQL by Stu+Charlton · · Score: 4, Interesting

    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.

    --
    -Stu
    1. Re:Bind variables and SQL by Tablizer · · Score: 1

      This is more cultural than technological......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...

      I agree that OO and relational are at philosophical odds.

      First off, OO tends to use behavior (methods) as the primary communications conduit between system/application parts. But a RDBMS-centric system will use data as the primary communications conduit.

      Second, relational requires a certain "shape" to information to be qualified as "relational" (or at least close enough). OO does not have to follow those rules, but the flip-side is a lack of math-like rigor and math-like notation for groking, querying, and processing data.

      Relational is a square peg to OO's round whole. Nobody has found an easy way to make them get along. OO-Relational mapping tools either result in tangled messes, or encourage your OO to be "shaped" like relational. In otherwords, a compromise of one or both paradigms.

      One or the other must go, or at least be toned way down, if we want to solve this mismatch short of a breakthru idea.

      I personally prefer relational, and would like to see more languages that are "relational friendly" and more experiments with relational languages and tools. We have a dozen popular procedural and OO programming languages, but no common relational languages to compete with SQL, for example. SQL has plenty of rough areas as a relational language.

  140. Look what it's competeing against. by SatanicPuppy · · Score: 0

    People bring up Php, but Php and Java aren't even the same kind of programming language. Php is pretty much web only, whereas Java can be used to create all the same types of apps that C can (Not saying this is a good idea, just that it can be done.), though C cannot be used in all the apps Java can (i.e Web.)

    As for perl, the fact that it has to be compiled every time it is run kinds of takes away from any speed advantage over Java.

    The only language in common use that does everything Java does is fricking Visual Basic, and if java is an SUV, then Visual Basic is what? A jumbo jet that can't fly, but has to taxi everywhere? A 1800 Wheeler with an engine by yugo?

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Look what it's competeing against. by mobiGeek · · Score: 5, Informative
      ... but Php and Java aren't even the same kind of programming language

      Agreed.

      Java can be used to create all the same types of apps that C can

      Well...no. C is used for system development (i.e. hardware banging). Java cannot be used in that environment without direct support of the libraries and the JVM (or by JNI calls to libraries written in C/C++).

      ...though C cannot be used in all the apps Java can (i.e Web.)

      Well...no. C can be used anywhere that Java can be. On the server side, most servers (including web and proxy servers) are written in C. There's nothing stopping people from writing "app servers" in C...in fact there may even be a few of those too.

      On the client side, "applets" are not a valid use of Java. Applets was a marketing ploy that grew wildly out of hand. Besides, there are ActiveX controls written in C/C++ that perform the same basic functionality of applets.

      One thing that Java has over C/C++ is its cross-platform capabilities. With C, if you want cross-platform you have to work to code it that way. With Java, if you want to break cross-platform, you have to work to code it that way (use non-standard libs, use JNI, etc...)

      As for perl, the fact that it has to be compiled every time it is run kinds of takes away from any speed advantage over Java.

      Yes and no. Perl is slower to start up than a C/C++ native application of similar functionality. Java too is very slow to start up (usually *much* slower than Perl for very small scripts).

      However, long running apps written in Perl and Java both perform very well when compared to similar C/C++. By long-running, I mean "long enough that the startup time becomes a wash". I've written web crawlers in Perl and Java that run for weeks at a time. Comparing their performance to existing crawlers written in C/C++, the performances are equivalent (though the Java and Perl bots suck up more memory).

      Development time for those bots was significantly less in Java and Perl than for equivalent C-based bots. (BTW: the Perl bots were written back before LWP was stable/available)

      The only language in common use that does everything Java does is fricking Visual Basic

      Well...no. VB is stuck on one platform (well, two if you consider MS-Java...though VB.NET is NOT VB).

      --

      ...Beware the IDEs of Microsoft...

    2. Re:Look what it's competeing against. by aled · · Score: 1

      Besides, there are ActiveX controls written in C/C++ that perform the same basic functionality of applets.

      ActiveX have their own problems that make them suck, for different reasons than java applets.

      --

      "I think this line is mostly filler"
    3. Re:Look what it's competeing against. by mobiGeek · · Score: 1
      ActiveX have their own problems that make them suck, for different reasons than java applets.
      I don't disagree, however this doesn't refute that C can be used for "the Web" which the O.P. originally denied.
      --

      ...Beware the IDEs of Microsoft...

    4. Re:Look what it's competeing against. by aled · · Score: 1

      C/C++ can be used to make web pages (like CGI) but I wouldn't use it for that purpose. Too much trouble, difficult to program, to debug and to secure.

      --

      "I think this line is mostly filler"
    5. Re:Look what it's competeing against. by metamatic · · Score: 1

      Well, it kinda depends whether you think "Internet Explorer + Windows" = the web. Personally, I think that's rather too narrow a definition.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    6. Re:Look what it's competeing against. by natet · · Score: 1
      I had to correct this statement...

      Besides, there are ActiveX controls written in C/C++ that perform the same basic functionality of applets.

      ActiveX controls only work on Windows (and possibly Mac OSX, but I don't have a Mac so I can't test that). Java Applets will work anywhere you have a java plugin, and many browsers even include a VM, so if you only write AWT applets, you don't even need the plugin.

      --
      IANAL... But I play one on /.
    7. Re:Look what it's competeing against. by sammy+baby · · Score: 1
      On the client side, "applets" are not a valid use of Java. Applets was a marketing ploy that grew wildly out of hand. Besides, there are ActiveX controls written in C/C++ that perform the same basic functionality of applets.

      Meh... close. Applets weren't a marketing ploy. "Marketing ploy" implies that the designers knew full well it wasn't going to work, and pushed it anyway. I suspect that a lot of the applet evangelists, so to speak, really believed that they were going to deliver full fledged apps (okay - maybe a bit stripped down, but still full fledged applications) via applets. In other words, rather than a marketing ploy, it was just a bad idea. Sun, with Java, would provide the application environment, and Netscape would provide the delivery method.

      Of course, it didn't happen that way, but it was a credible enough threat to scare the living piss out of Microsoft, who proceeded to make "crush Netscape and Java" mission number one. As long as either Netscape or Java failed, they won: as it turned out, they managed to badly wound both, and that was good enough.
    8. Re:Look what it's competeing against. by cakoose · · Score: 1
      I've written web crawlers in Perl and Java that run for weeks at a time. Comparing their performance to existing crawlers written in C/C++, the performances are equivalent (though the Java and Perl bots suck up more memory).

      This is because a web crawler isn't very computationally intensive. You're probably be waiting for I/O most of the time. It's because of this, and not because it's "long-running", that the performances are comparable.

    9. Re:Look what it's competeing against. by mobiGeek · · Score: 1
      Personally, I think that's rather too narrow a definition.
      Though I completely agree with your statement, I can't overlook the fact that 99.87% of webmasters believe that 85-95% of the client market is the web.

      Yes, ActiveX only runs on one platform. No, it is not the entire web. However, I realize that many people don't respect that my view is Right :-)

      BTW: I've never even read the "spec" for ActiveX, so I'm just talking out my ass-umptions on how it works...I never have (and never expect to be asked to) develop an ActiveX control.

      --

      ...Beware the IDEs of Microsoft...

    10. Re:Look what it's competeing against. by drakaan · · Score: 2, Insightful
      This is because a web crawler isn't very computationally intensive. You're probably be waiting for I/O most of the time. It's because of this, and not because it's "long-running", that the performances are comparable.

      Not really. Write a few text parsers in Perl and Java and you'll see that the "computationally intensive" advantage for Java doesn't exist. Different languages are there for several reasons:

      • Programming style
      • purpose
      • ease-of-use
      • cost

      Java is cheap (free), multipurpose, and difficult to learn to use well, but suitable for large applications.

      Perl is cheap (free), multipurpose, and easy to learn to use, but difficult to create large, maintainable apps with (subject to change with Perl 6?)

      As far as how a program performs, unless you're doing a lot of FP math, most small programs of similar function written by programmers of similar skill in a given language will be fairly even, performance-wise.

      If you *are* doing a lot of FP math, you're probably using FORTRAN, and nobody really understands FORTRAN, anyway...do they?

      --
      "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
    11. Re:Look what it's competeing against. by Mad+Marlin · · Score: 2, Insightful
      C/C++ can be used to make web pages (like CGI) but I wouldn't use it for that purpose. Too much trouble, difficult to program, to debug and to secure.

      Actually it isn't that hard. At my last job I wrote all of my programs in C, including CGI's. I normally would use Python for CGI's, but the other people there only knew C++ and Perl. I don't like Perl, and didn't want to program in it again, so I wrote it all in C, since then all I really needed to explain was printf().

      If you actually understand how to use pointers, it is easy. But then, that is generally true for C in general. The only reason why people generally have trouble with C is because they don't really understand how to use pointers, and you can't easily write anything at all in C without them, except for useless crap that could be done in GW-BASIC. The only real security issue with C (that isn't inherent to all CGI's, whether in C or Python or Perl) are things like buffer overflows, which again is just a need to better understand how to use pointers.

    12. Re:Look what it's competeing against. by Anonymous Coward · · Score: 0

      You are right that network latencies make this a bad test.

      However I would not go as far as to say that a bad test means that java dose not have good performance for "long-running" computationally intensive applications.

    13. Re:Look what it's competeing against. by cakoose · · Score: 1
      However I would not go as far as to say that a bad test means that java dose not have good performance for "long-running" computationally intensive applications.

      I didn't.

    14. Re:Look what it's competeing against. by Glock27 · · Score: 1
      Well...no. C is used for system development (i.e. hardware banging). Java cannot be used in that environment without direct support of the libraries and the JVM (or by JNI calls to libraries written in C/C++).

      This depends on which flavor of Java you use. Your statement is correct for J2SE. There has been quite a bit of work done on embedded/realtime Java, the whole point of which is touching the hardware.

      There is also gcj, which provides CNI, a much thinner calling layer for C and C++ code.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    15. Re:Look what it's competeing against. by cakoose · · Score: 3, Insightful
      Java is cheap (free), multipurpose, and difficult to learn to use well, but suitable for large applications.
      Perl is cheap (free), multipurpose, and easy to learn to use, but difficult to create large, maintainable apps with (subject to change with Perl 6?)

      First of all, your "easy to learn" comparison is asymmetric: you didn't include the term "well" in the Perl version. Secondly, I, personally, think that Java is easier to learn than Perl. I also don't think I'm the only one who thinks so.

      As far as how a program performs, unless you're doing a lot of FP math, most small programs of similar function written by programmers of similar skill in a given language will be fairly even, performance-wise.

      Though I'm not sure what you mean by "small programs", but the "Great Computer Language Shootout" suggests a high amount of variation between languages (language implementations, actually) for very small programs.

    16. Re:Look what it's competeing against. by Anonymous Coward · · Score: 0
      I can't overlook the fact that 99.87% of webmasters believe that 85-95% of the client market is the web.

      They'd be off by 5-15%. 100% of webmasters' client market is the web. That's what webmasters are, people who supply product to the web market.

    17. Re:Look what it's competeing against. by aled · · Score: 1

      I disagree. If you have to do more things than in language X it means more effort. I understand pointers all right, but almost any other language makes it easier to process text strings than C.
      I wrote a few small CGI some time ago, but when coming to large, complex sites C isn't the right tool.

      --

      "I think this line is mostly filler"
    18. Re:Look what it's competeing against. by Mad+Marlin · · Score: 1
      I understand pointers all right, but almost any other language makes it easier to process text strings than C.

      If you stop trying to think of them as text strings, and start thinking of them as arrays of characters, which is what they really are, a lot of things that you think are missing from C, various special functions for strings that languages such as Perl and Python have, are actually only a line or two of C if you use pointers correctly. It is not hard, just different.

    19. Re:Look what it's competeing against. by drakaan · · Score: 1
      First of all, your "easy to learn" comparison is asymmetric: you didn't include the term "well" in the Perl version. Secondly, I, personally, think that Java is easier to learn than Perl. I also don't think I'm the only one who thinks so.

      You're right...I forgot to delete the word "well" from the first of those statements. I think it'd be a lot easier to teach the average person to write a "hello world" in Perl than Java. Just my opinion, as you have your own.

      Though I'm not sure what you mean by "small programs", but the "Great Computer Language Shootout" suggests a high amount of variation between languages (language implementations, actually) for very small programs.

      I haven't see this shootout article (and apparently won't be able to at that link...look for yourself), but based on personal experience, trivial programs tend to benchmark similarly (count to a billion, stop.).

      --
      "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
    20. Re:Look what it's competeing against. by appleLaserWriter · · Score: 1

      ActiveX controls only work on Windows (and possibly Mac OSX, but I don't have a Mac so I can't test that). Java Applets will work anywhere you have a java plugin, and many browsers even include a VM, so if you only write AWT applets, you don't even need the plugin.

      ActiveX controls do not work on Mac OS X. They are notoriously hard to develop for Windows because there is no ActiveX spec.

    21. Re:Look what it's competeing against. by mobiGeek · · Score: 1
      He (oh, that would be me!) meant that 99.87% of webmasters only care about IE users (85-95% of the client market).

      Try emailing most webmasters (of non-technical sites) and telling them there stuff doesn't render correctly in Moz. You'll get back a "we only support IE".

      Their perception is that 100% is IE.

      --

      ...Beware the IDEs of Microsoft...

    22. Re:Look what it's competeing against. by aled · · Score: 1

      I work with C and C++ a lot and know more of C than Perl. Python I know a lot less. Yes, you can do the same things, but C IS more complicated with strings. Memory handling issues, pointers, etc. This complexity sums to overall complexity, and for most applications you don't need so fined grain control over the bytes.
      Now look at the other side, larger proyects, with distributed transactions, sql to different databases, separate code from presentation. Java is there, C isn't.

      --

      "I think this line is mostly filler"
    23. Re:Look what it's competeing against. by cakoose · · Score: 1
      I haven't see this shootout article (and apparently won't be able to at that link...look for yourself), but based on personal experience, trivial programs tend to benchmark similarly (count to a billion, stop.).

      Yeah...forgot that the dude redirects you if you're coming from Slashdot. Copy and paste the link manually and it should work.

      First you said "small programs" and now you're talking about "trivial programs". When you're comparing languages, you'd probably want to compare how they perform the things you need them to perform. You originally said something about text-parsing and are now down to a useless loop.

      By the way, Perl's regex libraries are written in C. Not that there's anything wrong with that, but it's clear that Perl is probably not the language you'd choose when implementing something that's computationally intensive.

    24. Re:Look what it's competeing against. by laird · · Score: 1

      And of course, ActiveX has no security model, and runs only on some versions of Windows. ;-)

    25. Re:Look what it's competeing against. by drakaan · · Score: 1
      Allright...pick my nits. Yes, I said small, then trivial. (sigh)

      When I'm comparing languages, I tend to compare how well suited they are to the task at hand, which was the whole point of my saying the stuff about "blah...Perl...Java...parser...computationally intensive". The useless loop is a fairly trivial example, but certainly not the only one I can think of. Other trivial examples are left as an exercise to the reader.

      I'm familiar with perlguts, and a little bit familiar with C (not much, I admit). Why would I not use Perl for doing "intensive" text parsing? From what I've seen, lots of programmers seem to think it performs pretty well... I will definitely try ^C ^V'ing the link.

      --
      "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
  141. It's pitty that MIT students cannot do this by Anonymous Coward · · Score: 0

    I wanted to post in /., then I stop because there are so many posts already, but then, I read a while and did not see someone point this out.

    The database problem with ? in the sql statement is a blessing. If students cannot count it, he/she doesnot deserve to program. I remember the old SQL style by appending sql pieces together. Tons of problem because special charaters and spaces, and security problem. The ? the author talks about is the prepared statement. How pity.

    To get to fields in the database, you actually can just use name or index such as:
    recordset.getString("Mycolumn");
    or recordset.getString(3);

    No difference than other API. I know one VB programmers who learn JSP and JDBC in no time.

    I myself did not go to MIT, I don't even major in computer science, and JSP is just a pickup in a day for me.

    I think this article is an insult to MIT students and community versus Java. My proof? Just go and ask some MIT computer science students about how long it would take them to use JSP and JDBC?

  142. Greenspun somewhat misguided by flakac · · Score: 5, Informative

    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.

    1. Re:Greenspun somewhat misguided by Anonymous Coward · · Score: 0

      Somewhat misguided ?

      'Note that JDBC, the Java database connectivity library, uses "?" as a bind variable. It is up to the programmer to count the Nth occurence of the ? in a SQL string and bind a value to that. As you can imagine this process becomes error-prone if the SQL statement contains 15 or more variables, a very common situation in real applications.'

      Spoken like a true university professor who has never written a 'real application'.

      If I had programmers working for me that wrote a 15 parameter SQL statement they would be out on their arse.

    2. Re:Greenspun somewhat misguided by Anonymous Coward · · Score: 0

      If I had programmers working for me that wrote a 15 parameter SQL statement they would be out on their arse.

      Or if I had programmers working for me that changed the number or order of parameters on a function without renaming it, I'd fire them in a heartbeat.

    3. Re:Greenspun somewhat misguided by Anonymous Coward · · Score: 0

      You're both fired!

  143. SUV? by Transcendent · · Score: 1

    Java is the SUV of programming languages.

    You mean big, slow, and gas guzzling?

  144. Gimme by dosius · · Score: 1

    GIJ.

    I wish it was more complete... DroidQuest doesn't work on it (RH8).

    -uso.

    --
    What you hear in the ear, preach from the rooftop Matthew 10.27b
  145. Inappropriate? by HeyLaughingBoy · · Score: 1

    His observation boils down to "Java is not useful for database backed websites," not that the language is inherently bad.

    It should hardly be a revelation that languages like PHP that were explicity designed for web development are much better suited to it than a language whose origins are as a cross-platform embedded systems (TV set-top boxes) language.
    Use the appropriate tool for the job at hand.

    The whole SUV-bashing thing is childish. Does anyone complain that a Corvette owner isn't trying to corner at 0.98g or whatever the current spec is?

    1. Re:Inappropriate? by AYEq · · Score: 1


      The whole SUV-bashing thing is childish. Does anyone complain that a Corvette owner isn't trying to corner at 0.98g or whatever the current spec is?



      actually, people did. It was just the silly balding midlife-crisis male that was the main target. The public is fairly fickle with their ire, next we will probably be bashing the compact car drivers mentioned in the article. :)

  146. Dont forget J2ME by Anonymous Coward · · Score: 0

    You forget to mention something else Java is good for: potentially hostile embedded environments. e.g. smart cards (Javacard) and mobile phones (J2ME and CLDC).

    Notice how most of the fancy phones coming out have Java games and stuff on them? Motorolla is running a JVM on top of Linux for their phone software. There are lots of hardware accelerators for J2ME out there as well (aJile, zucotto, etc, etc).

    The problem with Java is more the API's on top and the class file format, IMO. Too much deep inheritence is used, overloading methods, etc... and that is quite taxing on the JVM. Calling a method in Java is very expensive as it requires searching a table up the superclass hierarchy in order to find the appropriate method (matching the name and descriptor). (this can be cached but must take into account polymorphic call sites).

    I'd like to keep the high level language syntax, but redesign the JVM with speed AND security in mind.

    Disclaimer: I am doing a PhD that relates to Java.

  147. not the language itself by drbart · · Score: 1

    Java itself is quite a nice language, and the amazing speed it can be compiled (as opposed to C) is testament to that.

    The libraries, however, are huge and often not well-designed, and it's depressing how much baggage you need to carry.

    JSP, well, it's quite a pig. Three different ways of writing web pages, huge config, and even more monstrous packages (like Struts) whose config alone dwarfs what you would think your web app size should be.

    There are alternatives, enabled by Java even. Wouldn't be right to plug mine here tho.

  148. Yikes! by Anonymous Coward · · Score: 0
    Use stored procedures!

    1) Your table structure isn't exposed to your client app - ie., you can more easily change it;

    2) Performance is better because the procedures are precompiled and optimized;

    3) Security is better. Your table structure is really hidden instead of just obfuscated, you can limit the client's permission to execute a particular set of procedures, and you don't have to worry about SQL insertion attacks.

    Use any reasonable database API to get columns out by name instead of by position, and it works out nicely, particularly considering that if you change the column name in the table you can alias it in your stored procedure query.

    1. Re:Yikes! by flab007 · · Score: 2

      now, there you go! You just circumvent these ugly SQL strings in your code by using .. stored procedures. Plain and simple!

    2. Re:Yikes! by Choobius+Gothicus · · Score: 1
      No privileges in my infrastructure to create stored procedures. DBAs lock out the creation of procs in the development area. Several client sites I've been exposed to involve too much politics in the migration process of procs as a result of DBA laziness. Now, in smaller infrastructures, developers are responsible for creation/management of procs. Not here.

      Concerning a solution, create some facades to construct SQL statements relating to more straightforward INSERTs and UPDATEs through a Map (Hash/Tree). Takes about half hour to code the API, it's the first thing I do on any new project, and the results are simpler to read INSERT and UPDATE statement construction. SELECTs are certainly more difficult, as the other respondents' points are duly noted (outer joins, subselects, aggregates, etc).

    3. Re:Yikes! by PierceLabs · · Score: 1

      Yes, moving business logic into the database is always the way to go ? Hmmm.....

    4. Re:Yikes! by Anonymous Coward · · Score: 0
      I understand the party line that the database should be just dumb storage in a 3-tier system, but neither of you have addressed my points. In particular, trusting developers to adequately filter against SQL insertion in all cases strikes me as risky.

      Then again, I mainly work on apps that are exposed outside my company, and we generally pick a DBMS and stick with it...if you have more than one DBMS or might change it, I can see why you might want to put the logic in the middle tier. But my default behavior would be to use stored procedures, unless there's a really good reason to do otherwise.

    5. Re:Yikes! by karlanka · · Score: 1

      You mean the filesystem right? Or don't you have any clue why you need a database in the first place?

  149. Re:teaches Comp Sci courses in MIT by ShieldW0lf · · Score: 1

    Those who can, do Those who can't...

    --
    -1 Uncomfortable Truth
  150. Okay, then I agree by Anonymous Coward · · Score: 0

    I agree with what you're saying, but I think the original poster was talking about the ODBC/JDBC "Sql passthru" ability where you just build the string, and then pass the entire SQL string through.

    Completely horrible and unmaintainable, and I have programmers still tell me "its the best way to do it".

  151. instances vs. classes by shemnon · · Score: 3, Funny

    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!

    --
    --Shemnon
  152. Professors are NOT Programmers! by netsavior · · Score: 1

    did you go to College? did you take ANY programming class that was taught by someone that you would gladly recommend to be part of your Development team today? PHD in Compsci != programmer Sure they taught you to make a hello world program in fortran using a mini-frame 25 years after those were the industry standard, but they could not program their way out of a paper bag. Sure I did not go to MIT, but I never met a Compsci professor that was also a programmer I learn more in as week on Google Groups than I learned in 4 years for $50k

    1. Re:Professors are NOT Programmers! by Anonymous Coward · · Score: 0

      Well I have to say that my profs in computer science were not trying to teach me programming but programming practices, theory of computation, and algorithms. The department pretty much said "Programming language is a tool, and one can use many tools. However, usually there is very few ways to get a job done right." I am happy to say that after learning QuickSort and MergeSort and various other algorithms, it put me at a great advantage over people who did not go to college and get a degree in compsci. I am able to write programs that take up less space and are quicker, all of that in much less time, just because some prof took the time to teach me good programming practices. I was able to reduce a three page printout of code to one page just by implementing quick sort when rewriting a sorting function.

    2. Re:Professors are NOT Programmers! by Anonymous Coward · · Score: 0

      your crowning glory is rewriting some sorting code? whered you get this 'degree', devry?

    3. Re:Professors are NOT Programmers! by Anonymous Coward · · Score: 0

      If you are writing your own quicksort you are doing something wrong, since I've graduated CS I have always used a library quicksort or somebody's else quicksort rather than re-invent the wheel.

  153. comparing languages to cars.. by Suppafly · · Score: 1

    Comparing languages to car types is just plain stupid.. I don't care if you are Philip Greenspun, you lose a lot of credibility in my book for saying something dumbass like that.

    Saying java is like an suv doesn't make any sense, especially if you don't provide any other comparable metaphores for other languages.

    If you mean that java is big and has a lot of features, just come out and say it.

  154. Sorry, No! by schmaltz · · Score: 1

    Bloated code, shared JVM... this isn't a JSP or Java problem, it's yours, d'oh! JSP scales very nicely, and unlike Perl or PHP, you have lots of control over scheduling, load balancing, distributedness, etc.

    If you thought you could just mosey on over to JSP and employ your existing Perl/PHP skillset? Sorry, no! Unlike weakly object-oriented / typed languages such as Perl/PHP, Java requires that you know what you're doing.

    Approaching a rich API such as Java through JSP, from a Perl/PHP orientation, is a recipe for disaster. It would be like going to perform knee surgery on a patient after having been a bikini waxer.

    That said, to whoever's working the backend of your JSP website, they probably need to get a clue about tag libraries, JSTL, Struts etc. Go find a good book on those subjects, for example
    Java for the Web With Servlets, Jsp, and Ejb : A Developer's Guide to Scalable Solutions by Kurniawan.

    --
    Big Daddy, Johnny, Burp, Aunt Zelda, Scott, Slurp, Big Momma ... where's Siggy?
    1. Re:Sorry, No! by (trb001) · · Score: 1

      You've worked on systems with preset requirements and budget, right? We didn't choose problems, we acquired them. I mentioned everything you're saying from the get go, but the client wanted it her way. I adhered pretty closely to a 'good' Java OOP model, but when you include a certain number of objects, you will eventually blow your heap, if set low enough. Again, a product of our hosting provider and client's budget. We did eventually convince the client to let us increase the heap size, and as soon as we did the site came right back up.

      --trb

    2. Re:Sorry, No! by Master+Controll+Prog · · Score: 1

      typical liberal response. the interskjorsk is full of you.

  155. Java is the UBT by lardbottom · · Score: 2, Funny
    Urban Battle Tank

    Where else can you feel so safe, but completely fuel inefficient? Plus, if you run into someone else's code, you'll be just fine.

    --
    Give me a fish, I shall eat well for a day. Teach me to fish, and I will eat well until some idiot patents it.
  156. MIT is disgraced by MSCSdude · · Score: 0

    If this is really true, MIT and its CS professors should reexamine the program. If CS students cant write JSP and ASP.Net etc. at the top ranked school then "Lord have Mercy".. Forget about learning LISP and all this crap and teach the students how to code.

    I think the problem is no matter how many companies that have million dollars revenues that someone starts, they are not doing their job if they are not fulfilling the students needs.

    It is f'ing piteful that MIT students cant learn Java. Especially if they know C or Lisp. Get with the program!

  157. Javanut slogan by Anonymous Coward · · Score: 0

    Languages don't write bad programs - people write bad programs

  158. Re:Programming lehttp://developers.slashdosson 101 by kpharmer · · Score: 2, Insightful

    In my experience the result of this approach limits the database queries to simple selects of lists or individual objects, updates, and inserts. That's fine for many prototypes of simple applications (with very simple data models).

    But it breaks down as you add more functionality to the application. For example (keeping it very general) lets say that you want users to select a category to drill-down into for further work. You might start out with just a category name being selected and presented to the user. However, the next step is usability will be to add additional attributes to the name - so that the user has a sense of which categories have the most activity, most pending 'requests', or whatever. So you then need to also select attributes for each category like:
    * number of orders/requests/etc performed in last 24 hours
    * total number of articles/orders/etc
    * number of orders/requests/etc in a critical status

    How do you generate the SQL for those attributes. Now, if you are writing your own SQL - you could just join the category names with an inline view of your orders table (grouped) to pull all attributes in a single query. Beats running two separate queries.

    So whether it's developed as one or two queries - how would a sql generator build that last query? And if it can't - do you generate 90% of your queries, and then do just 10% by hand. Does that sound useful?

  159. You're all missing the point... by iapetus · · Score: 1

    The interesting bit isn't what he has to say about Java. It's the fact that he's the last person on earth who thinks 'if programming languages were cars' is a novel and useful analogy.

    --
    ++ Say to Elrond "Hello.".
    Elrond says "No.". Elrond gives you some lunch.
  160. Lisp, Java and C++ by dsplat · · Score: 1

    There's a pair of books that make interesting reading together. One is Paul Graham's On Lisp. Whatever you may think of his statements against other languages, he knows Lisp and he does an excellent job of explaining how to use it well. I didn't understand how to use Lisp macros effectively until I read it, or why to use them.

    Shortly after reading it, I read Modern C++ Design by Andrei Alexandrescu. Reading that, I started to understand some of the power of generic programming. If you understand when these two books are explaining two very different implementations of the same things, then you have grasped the essence of some very powerful techniques.

    Frankly, generic programming is one place where Java is still definitely lagging. Fortunately, there is currently an effort to fix that.

    Lisp's greatest strength is also its greatest weakness. The language eschews nearly all syntax. All structure within a program that would be expressed syntactically in other languages consists of levels of parentheses and order of arguments to various functions, macros and special forms. There is great power in this. It means that what you add to the language fits in seemlessly. That is the point of Graham's title for his book. Read the first chapter for his explanation.

    Unfortunately, this very scarcity of imposed syntax puts a burden on the programmer to format for clarity and to learn to read in a language where some of the familiar signposts simply are not present. That task is certainly possible, but it puts many people off.

    --
    The net will not be what we demand, but what we make it. Build it well.
  161. Don't go to a law school to learn programming by cparisi · · Score: 2, Interesting

    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 probably says more about the poor teaching than the Java language itself.

  162. Re:d.i. Jim, I'm an artist, not a computer scienti by mobiGeek · · Score: 1
    For those of you who are old enough to remember that line...
    Old enough? It was on T.V. just the other night...
    --

    ...Beware the IDEs of Microsoft...

  163. 3 Words by Anonymous Coward · · Score: 0

    Null Pointer Exception

  164. Re:Java has issues, but not the ones mentioned her by Anonymous Coward · · Score: 0

    Bad practice is bad practice, irregardless of where it occurs.

    So then it does matter where it occurs?

    Sorry, I was agreeing with you up until you hit one of my major pet peeves.

  165. Way to go! by dentar · · Score: 1

    the site is slashdotted. way to knock over that!

    --
    -- I am. Therefore, I think!
  166. Phil's not a troll by abe+ferlman · · Score: 3, Funny

    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 :)

    --
    microsoftword.mp3 - it doesn't care that they're not words...
  167. A Language must "resonate" with developers by xeo_at_thermopylae · · Score: 1
    To be popular, a language must "resonate" in some way with the great unwashed masses of programmers who are neither MIT graduates nor hopeless script kiddies. Occasionally this happens: IBM JCL, the original interpretive BASIC, FORTRAN, COBOL, Visual Basic. But for most languages there is no "resonance" and they eventually dwindle to occupy a small niche.

    If someone can characterise that "resonance", they might make a great deal of money.

    AFAIK no language has ever been designed on the basis of known programmer preferences. Instead language designers usually have some agenda they wish to promote with their language. This is the "tail wagging the dog" IMO. If you want a language to be popular, then poll developers to find what they want and then implement it.

    1. Re:A Language must "resonate" with developers by Anonymous Coward · · Score: 0

      Designing a language based on known programmer preferences gets you C# and Java.

  168. Re:Java IS the perfect language for web. by Anonymous Coward · · Score: 0

    I tried PHP/perl for web applications, and both of them suck donkey's ass. Lame or none OOP, lame or none OOD, no strong types, performance sucks (yes, java is FASTER for web applications if done right). Also- impossible to understand code (esp. perl), lack of propper IDE (for java- try eclipse or netbeans). In PHP- most of syntax/elemental errors pop up only when running the page, no compile time checking, as there is no compiling. Also in PHP, lame database abstraction layer last time I checked. What about connection pooling? I don't know about MVC frameworks for PHP/perl, but either they are lame, or rarely used. What about object persistency or Object-relational mappers? Never got that far in scripting languages. Take a look at jakarta.apache.org if you don't believe me- tons of projects aimed at making java even more suitable for coding web applications than it already is. Java is WAY BIGGER on server side/web applications, than it is in GUI/desktop applications. A few things- JSP sucks, use Apache Velocity or other template engine with java. If you need extreme performance, get Resin (www.caucho.com) instead of Tomcat, it can run 2x-4x faster depending on situation (maybe more if you use JSP+custom tags extensively). Learn some MVC web application framework and use it- otherwise you'll get an ugly application. Well, I think that's enough for now.

    P.S. I code web applications for living with java, and I enjoy it.

    --Coder

  169. Re:Programming lehttp://developers.slashdosson 101 by SatanicPuppy · · Score: 1

    Those things sound like stuff you'd write for those useless reports the bosses always want, comparing apples to porcupines. Most database apps I've seen use pretty simple queries; it keeps your memory overhead down, and makes your app run more smoothly.

    If you're using multiple outer joins for anything other than reports, your schema's probably screwy. Subselects? Talk about memory usage.

    All that stuffs fine if you're working for the government, and they can buy you a billion dollars worth of hardware, but if you're putting together an app for accounting and inventory control for a relatively small company, and you're using those types of queries, you're going to make their hardware scream for mercy, and them very unhappy with the speed of your fancy new app.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  170. Help me out here... by objectboy · · Score: 1

    'record time with minimal resources', and you got it done in 'about nine months using VB.

    Hmmmm, that doesn't seem like 'record time' to me. record time to me is something like 'we need this done in two weeks' or some such.

    --

    You are in a maze of twisty little pasages all alike.
  171. Man he got that right by inteller · · Score: 1

    .....just like an SUV, it is big, bloated, and only used by soccer moms (which in turn frequently crashes)

  172. Torque, ORB, Hibernate by Anonymous Coward · · Score: 0

    http://db.apache.org/torque/
    http://db.apache.org /ojb/
    http://www.hibernate.org/

  173. I'm glad I'm not a Java programmer... by n6kuy · · Score: 0

    ...otherwise Arianna Huffington would be telling me that I'm supporting terrorists...

    --
    If you disagree with me on social issues, then it's pretty clear that you are a narrow-minded bigot.
  174. BadDesign is still BadDesign by knobboy2004 · · Score: 1

    Yep, you have to agree with the guy: if you don't understand a tool, it probably will be harder to use. You then might not do as efficient a job, which means the end result most likely will be unsatisfactory. Duh. Futhermore, if you're not sure what you're doing, your design may be less than optimum. And of course bad design has not impact on performance. Double duh.

    1. Re:BadDesign is still BadDesign by knobboy2004 · · Score: 1

      It also has no impact, neither.

  175. I htink YOU miss the point by Anonymous Coward · · Score: 0

    You say that Java is great for what it's supposed to be used for. Tell me, exactly how many times has Java's purpose changed?

    Seriously, I can think of at LEAST two or three times where Sun has just up and announced that Java really wasn't intended for a market that they spent huge amounts of resources trying (and failing) to court.

    First, it was intended for occasional applications and then mostly to create better interactivity in web browsers via applets. Java was the best way to make interactive websites and do stupid things like Slime Volleyball. And that was where the focus was.

    Then, when Sun realized that applets were stupid (Flash is a much better tool, though only slightly less annoying), they shifted to desktop applications. In the future, everything will run on a JVM and it will not matter if you're running Windows, MacOS, or Unix! All hail the portability ideal!

    Of course, when THIS concept failed miserably (at the hands of evil, evil Microsoft, of course-- couldn't be Sun's own crap-ups that caused Java to fail), they decided that maybe the embedded market was where they were meant to be. All that work on Swing, AWT, and the like? Oh, that's only for niche app developers who don't represent Java's REAL potential-- all along, the REAL focus of Java has been the embedded app!

    And now that they're finding that Java "enabled" mobile phones and devices tend to have horrible speed, interfaces like molasses, and don't really do much of anything more than their non-"enabled" counterparts, they're shifting gears again. It's the SERVER market, and dammit, it HAS BEEN the server market all along! Those embedded people-- what buffoons! Those apps people-- didn't they KNOW?

    I have had friends who did extensive work with Java in all of these fields: applets/web, applications, embedded, and server-side. With the exception of my server-side friend, each of my buddies has been left out in the cold by Sun when their market suddenly stopped being "hot". Sun just dumped support for entire segments of the industry (how much work is going into their formwer darling, SWING?). Each one of them was, at one point, using Java for what it was "supposed to be used for" at the time.

    So, tell me, surfsalot, exactly why the hell I should believe that Java is good for "what it is supposed to be used for" when Sun hasn't even figured out what its target market is? You can bet your ass that when Java is KILLED on the server side by Perl, Python, and their ilk, Sun will find some other niche market in which Java has finally found its "real purpose".

    Maybe then, you'll come around to what Java and Sun really are.

  176. Don't forget XML. by Mybrid · · Score: 4, Insightful

    Absolutely, Give me PERL/CGI over WebSphere anyday. In fact, compiling code for an interpreter is laughable. Java should be a scripting language. Compiling millions of lines of Java is such a joke it is no longer realistic with Makefiles. You have to use ANT which doesn't support any other platform. The benefits of a scripting langauge far outweigh the benefits of byte code in my opinion. My experience with the WebSphere is that the web application claims over CGI are exaggerated especially with regards to performance. Furhtermore, the expenses of porting from WebSphere 2.0, 3.0 to 4.0 are far greater than any other C porting expense I've had to date. Java may be write once, run anywhere, but Java/XML/JSP/XSL/XSLT code written for application servers is not. The switch to EAR, WAR and J2EE was expensive with no discernable payoff. Web application servers are a waste of time because the standards change so fast.
    However, 1/2 million lines of C/CGI scripts written 7 years ago compile on Solaris, AIX, and Linux with only one person spending two-weeks porting code that is still run in production today. Because ANSI C is a mature standard it is far closer to "write once, run anywhere" than Java is if the authors of the C code know it needs to run on multiple platforms and stay within the ANSI C/ POSIX universe.

    1. Re:Don't forget XML. by DenverJuggler · · Score: 1


      You have to use ANT which doesn't support any other platform.

      OK, I'll bite. Was this just flame bait or what?

      Ant was written in Java and runs on any platform Java runs on. Why was this insightful?

      I agree that some people can code J2EE projects that are not portable across multiple vendor's - BEA, Websphere, JBoss, et. al. but that doesn't make J2EE bad. It's like saying C is a bad language because inexperience programmers can write bad code.

      I don't see why if you want to be cross-platform C would be a better choice. Yes, I agree you can write C to be cross platform, but I think it's harder for inexperienced programmers to do that than to have them write cross-platform code in Java.

    2. Re:Don't forget XML. by Anonymous Coward · · Score: 0

      You have obviously never worked on any really large applicaitons like financial systems that support many thousands of transactions and individual users per day. Try that with CGI moron.

    3. Re:Don't forget XML. by Trejkaz · · Score: 1

      Ummmm... I don't know if you've heard, but the new Perl is going to use bytecode.

      What are you going to preach when Perl6 comes out? Shell script?

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    4. Re:Don't forget XML. by Mybrid · · Score: 1

      Apologies. Unfortunately the language of computer science is imprecise and platform has different meanings in different communities. In this case by platform I meant software platform: C/Unix vs. Java/Unix, software platforms. Because Java/Unix took literally hours to compile with Makefiles we could no longer build cross software platform code only with make. Ant was introduced. Ant does not support any languate/OS platform but Java (on any OS). It does not support C.

    5. Re:Don't forget XML. by DenverJuggler · · Score: 1

      I understand - when I reviewed my post again (after it was posted) I saw this and I thought that might be what you meant.
      Did you know about Nant? There is a .NET version of Ant on SourceForge. Erik Hatcher's Ant book Java Development with Ant talks about the CC task for compiling C code. Erik is a contributor to Ant and his book is terrific.
      You could also have Ant kick-off the make or have a script file kick off the Ant and Make builds.
      There are also tools like CruiseControl to automate the builds so you could have continous integration every night.

      My point is the same as a lot of people have been saying here. Every language has its' strengths and weaknesses. Pick the right tool for the job. I'm certainly not going to say C is better than Java, VB is better than Python, LISP is better than than C#.

      Everything depends on context.

      When I do string parsing I used to use Perl, lately I've been using Python. For some things I create Java Apps, for some a J2EE solution works best. My Java User Group had James Duncan Davidson come talk and he said he's looking for the next Ant killer. Java or Ant won't be forever - but they are parts of a decent solution for some problems.

      Do you know if some of the things like Aspect Oriented Programming (AspectJ) or tools like Struts, JavaServer Faces, et. al. have an equivalent in C? Is there a way to create a security model in C like the Java Security Model through some sort of existing class library?
      Is there a tool that mixes Python and C? The way Jython allows you to put a Java interface on your Python code.
      These are not trolls - just questions. I haven't written anything in C for about 8 years so I don't know what's out there.

    6. Re:Don't forget XML. by Mybrid · · Score: 1

      Hi! Happy Tuesday! I truly appreciate your genuine thoughts and hopefully you find my response here in accord.

      I think what myself, Phillip and many others have discovered through practice is that Java does not live up to its claims. I also argue that Web applications servers don't live up to their claims. In both cases I mean claims as better tools then existing tools and thus justifying the need for them at all.

      "Erik Hatcher's Ant book Java Development with Ant talks about the CC task for compiling C code."

      Thanks for the pointer. However, I was aware of this and my analysis is that Ant for C is still very immature and certainly not ready for a large company to trust over a period of years.

      "You could also have Ant kick-off the make or have a script file kick off the Ant and Make builds."

      True, actually, we have legacy Makefiles kick of Ant builds. However, the real issue for someone like me is that Ant is not necessary except for a limitation with java compilation performance. Given how entrenched Make is in the build community, I believe the onus is on the Java community to make their product work with Make. Now all our build engineers (who are not developers) have to come to grips with XML and Ant just to overcome the compilation performance problem with Java.

      I think any established company is going to have a mix of languages and platforms to support. God help us if every language/OS flavor requires a new build tool like Ant. Make works for everything else we build?

      "There are also tools like CruiseControl to automate the builds so you could have continous integration every night."

      It's expensive for well established companies to move to new tools. You have to convince business why they need to part with the money. Our build engineers have spent years customizing scripts and are going to resist. They are not going to move to a new tool cheaply or easily. Build engineers and developers have a management wall at the SVP level.

      "My point is the same as a lot of people have been saying here. Every language has its' strengths and weaknesses. Pick the right tool for the job. I'm certainly not going to say C is better than Java, VB is better than Python, LISP is better than than C#."
      I agree. My only beef with Java and Web Application servers is that my experience in a large company is that they fail their claims as a better tool.

      "Do you know if some of the things like Aspect Oriented Programming (AspectJ) or tools like Struts, JavaServer Faces, et. al. have an equivalent in C? Is there a way to create a security model in C like the Java Security Model through some sort of existing class library"

      Sorry, no I don't. C++ is a better comparison to Java. Off the top of my head I don't know of direct correlations.
      Where I work they use a homegrown Java framework. I'm not impressed. I'm not a fan of frameworks for the same reason I'm a skeptic of OO in general. I think a lot of people believe that OO and framework designs can simplify development such that below average or average developers will produce better code that is easier and less costly to maintain because of the "stricter" impositions of the framework, etc. I have never seen this in practice. The only path to better code is discipline and training. Developers I know who are disciplined and trained write good code in any language because training includes good abstraction and modeling techniques. Untrained and undisciplened developers are just that.

      For my money? I would invest in human code review and software tools that monitor souce code before spending money on design and modeling. However, discipline and rigor are not as sexy as Struts and AspectJ so our industry is literally out of discipline control in my opinion. Developers have no problem spending company money on new software, but have real issues with performance reviews based upon quality of work and code reviews. I think this is exactly why our industry is moving offshore because management erronousely

  177. javac on a prod box?!?!? by Lysol · · Score: 1

    While I agree that if you use Linux in your environment, then there's probably no reason to use anything else the PHP. I've done a ton of Java development - some really big projects - and for home, I pretty much use PHP. So, I agree up to that point.

    But there's a few issues I have with the parent:

    I just want to get the little database app that should be done in 2 hours done in 2 hours. Java has lots of type-checking, etc. that's usually unnecessary for my simple reporting/collection of database data.

    Sure, for collecting info from a db, that might be ok. But 2 things:

    1. Type-checking??? I don't find getting an Integer from a Number column too tough. I will say tho, that if your using Text/CLOBS, then that can be a pain, depending on your db.

    2. As long as it's just reporting/collecting your fine. But get an app that needs calculations and stuff done and a strongly typed language becomes an asset.

    Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on.

    Well, if anyone ever puts a compiler of any kind on a production server they should be shot. There are plenty of ways to precompile Java webapp JSPs and then deploy the WAR out to Tomcat with only a JRE installed. That will bypass any kind of need for any compilation. This is why your production boxen are different from staging/build boxen.

    I'm not trying to bash the guy, but it's clear than many notions about why something sux or doesn't is due to lack of experience. I'm definitely of the mindset that there is a right tool for the right job. No way in hell would I ever try to do a enterprise scale app in PHP or Perl. However, for proof of concepts and small sites, PHP/Perl is great.

    I dunno, this is kinda the typical stuff you get with people who haven't used Java very much and don't really understand how to apply it and what it is really meant to do and not to do.

    1. Re:javac on a prod box?!?!? by capnjack41 · · Score: 1
      I was just complaining that for the relatively simple applications that I do (i.e. not so much calculation and computation, just straightforward database SELECTing and INSERTing), I'm forced to use Tomcat (and making actual HTTP servlets, not simple throw-some-JSP-in-a-page stuff).

      I'm not trying to say "lol java suxx"; it's a great language that's portable, object-oriented, strongly typed -- a language that's good if you want to do intensive stuff. And for the intensive stuff, I use it very frequently.

      For my stupid not-so-critical stuff, using something that's weakly typed, doesn't require compiling, worrying about exceptions, etc. is good for just getting the shit done quickly.

      My complaint isn't about Java. It's the fact our 'standard' dictates that I'm forced to use Tomcat servlets when there's something easier out there that's good enough for my project, that's all. Jesus jumping Christ, the shit you catch for submitting a poorly-worded post. (not directed at you, Lysol)

  178. Bzzzzt by EnglishTim · · Score: 1

    He said reverse the order of the *words*, not the letters.

    1. Re:Bzzzzt by Oscillatory · · Score: 1

      You do know how argv works, right? Reversing the letters would take a lot more work since you'd have to find the end of the string..

  179. Most Ph.D's I know are idiots by Anonymous Coward · · Score: 0

    Those who can do, those who can't teach.
    His analogy was bad, his understanding of Java is poor and he blames the language. JSP is a completely different language from Java, and yet he assumes that the students "experience" (as if anything in college can count as "experience" [other than drinking yourself silly]) in Java prepares them for writing a web application...
    Hey 1000 monkeys with MSDN can write Windows ;)

  180. After C++ and Asm - Java is good by axxackall · · Score: 1
    No one loves it? Well, those of us who used to use C++ appreciate it a hell of a lot.

    The other list of languages which former users appreciate Java:

    • Asm
    • Cobol
    • PL/1
    • Paskal
    • Ada
    The rest of us, who already know Lisp, Python, Haskell, ML and Perl, have a real problem to love Java - nobody wants to move from a better language to a bad one.
    --

    Less is more !
    1. Re:After C++ and Asm - Java is good by Avumede · · Score: 1

      I know C, C++, Python, Perl (as much as I can stand knowing it), Common Lisp, Emacs Lisp, and a few other languages besides Java. Yes, I sometimes miss Lisp's power when I program in Java, but I more frequently miss Java's great APIs, sane package structure, modern features (many free Lisps don't even have threading!), and portability (see the defsystem lisp package to see how much unreadable bloat you get when trying to make something run across different lisps) when I program in Lisp. So please don't assume I must not know what I'm talking about.

    2. Re:After C++ and Asm - Java is good by Tiny+Elvis · · Score: 1

      see the defsystem lisp package to see how much unreadable bloat you get when trying to make something run across different lisps

      I have a few Common Lisp web apps I have developed that run under ACL (Windows) and CMUCL (Linux) with only small 'portability' differences. I am doing DB access and PDF creation. I use external C libs for PDF output, and for DB access under Linux. (though there is now a PDF output package in CL that wasn't available when I started.) I compile under both environments using the same defsystem files. I don't understand your objection here.. the defsystem files are very terse and understandable.

      The portability differences are in the foreign function interface, and in the multiprocessing (aka threading) interface.

      Despite not having native thread support, CMUCL does include the MP system and performs comparably to ACL (which does support native threads).

    3. Re:After C++ and Asm - Java is good by Avumede · · Score: 1

      The portability differences are in the foreign function interface, and in the multiprocessing (aka threading) interface.

      Also in filesystem type things, networking type things (IIRC), and basically anything not specified in the ANSI CL spec. This is why XEmacs, who names ever release after some oxymoron, called one of their releases "Common Lisp".

    4. Re:After C++ and Asm - Java is good by axxackall · · Score: 1
      API and threading are features of an implementation (VM, interpreter, compiler), not of a language itself. For example, SBCL has threading.

      Complains about APIs in Lisp were true some years ago, but not today - you can find libraries for LISP for any area, including opengl, gtk and databases.

      I disagree to call Java's pakage structure as "sane". IMHO it's "insane" - it disturbs more than it helps. It proves that the knowledge become a primitive data when it fails to a tree-like structure, instead it must be described based on more general rules.

      Apart of Lisp, many other FP languages have excelent support for concurrent programming, either emebedded to the language (Erlang, Mozart, Mercury) or as an extensions (Haskell, ML). For example, after doing concurrent programming in Erlang you would certainly complain of being forced to go back to Java.

      --

      Less is more !
    5. Re:After C++ and Asm - Java is good by Avumede · · Score: 1

      API and threading are features of an implementation (VM, interpreter, compiler), not of a language itself. For example, SBCL has threading [sbcl.org].
      Somewhat, but that difference is fast disappearing. Both Java and Python come with a large library by default. Perl has one standard location for your library needs. C++ has the STL. The difference between language and library is blurred. IIRC, STL is part of the C++ spec, for instance. String manipulations are implemented as a library in many languages, but most people would think of that as a core language feature. Etc, etc.

      Lisp libraries are getting better, but it's sort of a lost cause. For example, I tried to use UncommonSQL, but it didn't work on my Lisp of choice, OpenMCL. Other Lisp libraries depend on one package system or another. It gets very complicated to consider using a package and thinking "okay, what packaging system does it use. Does it support my particuar Lisp?", etc.

      Apart of Lisp, many other FP languages have excelent support for concurrent programming, either emebedded to the language (Erlang, Mozart, Mercury) or as an extensions (Haskell, ML). For example, after doing concurrent programming in Erlang you would certainly complain of being forced to go back to Java.

      I've never used Erlang, but no doubt there are languages that do many things better then Java. It can, and should be improved. The nice thing about Java, though, is that there isn't really anything major it doesn't do a good job on.

  181. Re:Quarentine the SQL by StillNeedMoreCoffee · · Score: 1

    Well SQL is a good abstraction level to work if for no other reason than most DB used today talk in it (but not all). If you use JDBC then you need to talk in SQL. But what you can do is:

    Have a separate set of classes that coral the SQL into a DB service ancestor class.

    User Prepared statements (minimizes sql injection problems), where possible.

    Subclass the basic DB service class to provide wrapper classes to specific DB tables. Have mneumonic java style access to the table and accessof and modifier methods for all fields.
    I have a field defintion class and the subclass for a table craates an array of these defintions which are used to automatically create the prepared statements for select, update and create, (when needed)

    Any DB service class that accepts any SQL text like a where clause, have as a private method which can only be called directly from one of your wrapper classes.

    Filter all parameters in for nasty characters to shield against sql injection issues.

    What you end up with is applications that no longer have hard coded SQL in the business logic but have SQL in a controlled and central place. With a place you can put "adhoc" code where needed but still out of the business logic and under central control.

    It is a very bad idea to embed SQL thoughout your business logic. We had a case where that happened then the DB data supplier changed and the table defintions and field names changed and hundreds of embedded SQL statements had to be changed. A real nightmare senario. The centralized pattern described here allows you to solve the SQL construction problem once in the DB service class, which although one might argue is 'hardcoded' still. It is no more harcoded than your Java statements. You have to have the code for talking to the DB in some form and SQL if carefully used and controlled is a good, expressive way to do it.

    I don't like stored proceedures because your applicaton is now out of your control, and out of view, like say all those cells with formulas in an Excel spreadsheet. While things work, they can be very hard to debug and coordinate, often times between different teams in an organization.

  182. Enter ColdFusion MX by Winjer2k · · Score: 1

    The ease of scripting with the power of java. You can include any Java component and interface it with the most intuitive web scripting language around. Oh yeah, it's cross platform, too (runs as Java app).

    --
    I sig for world peace
  183. Untrue!!! by Anonymous Coward · · Score: 0

    Java doesn't cost a thing if you don't use a specific feature!
    JIT optimizations have a cost and the VM startup time has a cost but Java was never meant to compete in startup time, however it will beat the pants off of Perl/PHP in any "real" performance evaluation (that actually tests perl/php code and not C++ calls from perl/php). And it can beat C++ in long running applications, I have been a C++ programmer for 7 years before using Java and while back then it was slower it is definetly as fast today.

  184. C is the dirtbike of programming by naasking · · Score: 1

    Actually, C is the dirtbike of the progamming world. Small & fast, but don't try doing long distances.

  185. He's talking about J2EE... by mattypants · · Score: 1

    ...in case you hadn't noticed.

  186. This is why... by shralpmeister · · Score: 1

    Discerning programmers should check out WebObjects. Seriously, I'm a huge PHP fan but WebObjects has spoiled me. For those projects that need a little more panache (ie. medium to large web applications) WebObjects is da bomb.

  187. Java much superior by Anonymous Coward · · Score: 0

    I hate to say this if people cannot code in oop or Java they should not take programming languages but stick to scripting like VB maybe Philips students should just do VB scripting.

  188. Java is like ASSEMBLER for web pages by thasmudyan · · Score: 1

    I develop with JSP and PHP, too. In my experience, PHP is vastly superior to JSP when it comes to web applications. PHP let's me do what must be done in a very straightforward way. Because PHP is a scripting language, it comes with certain advantages in dynamicity (?) that Java can never offer. In the web-world it's all templates and stuff that includes other stuff which in turn includes other stuff. With PHP you can build a very non-redundant web application that is highly dynamic.

    Java was not designed to handle the string-laden environment of the WWW. The fact that Sun simply wants everything on earth to run on Java doesn't mean that it's actually productive to do so. And trust me, we had a fair share of web-based Java projects.

    The only thing that bothers me in PHP is, it's ugly-ass object paradigm - if there even is such a thing. I have been hoping PHP would advance more towards namespaces and stuff like that - but hey you never know what the future holds!
    But it makes up for it with it's really fun function library. With some skills you can write very high level code to attack some pretty high level problems.

    just try switching from MySQL to Oracle, and you'll see what I mean
    That's really not a problem if you're using an extra DB layer that can be maintained separately - just like you should when using *any* language. And as someone who has written DB layers in Java and PHP I can attest that writing it in PHP was much easier than with Java, leading to more stability too.

    Oh, and PHP's speed is absolutely horrible compared to Java, I guess it's slower by a factor of 10 or more (because it compiles pages every time from scratch - duh).

  189. No, more like a disney rollercoaster. by iamacat · · Score: 1

    You can go faster, but only where Microsoft wants you to go today.

    C++ could be compared to a train. Once built, the train runs only on a particular railroad. To travel to another country, with different width between rails, you need a mechanic to do manual adjustments (ever travelled to Russia?).

    But I wouldn't want to drive this train, because it crashes if you make the slightest mistake. Laborious effort must be taken to remove CO2 from each component of the engine, otherwise it will displace all the oxygen and the train will grind to a halt.

    Java, I think is more like a tank. It doesn't crash much and can go anywhere you want, but much slower than a train or rollercoaster, and only with a batallion of support trucks who bring along its framework.
    -

  190. Are those two thoughts connected? by sweatyboatman · · Score: 1

    The first paragraph says Java's "useless for large scope projects" and the second paragraph says "run on Commodor 128" and "unfortunately it required 256k of memory".

    Tell me. Now that it's the 21st century what large scope projects are designed around the Commodore 128 or any other machine with less than 256 Megs of memory?

    Java is a language like any other. If you've been programming since the 70s you might not like the structure of the language. It's not what you're used to, but that doesn't mean it's useless. A cliche about old dogs comes to mind. Fortunately for you there are many options when it comes to programming languages.

    -sweatyb

    --
    It breaks my pluginses, my precious!
    1. Re:Are those two thoughts connected? by recursiv · · Score: 1

      Sweet merciful Jesus. As a hint, go look up the year Java was created.

      YHBT. HAND.

      --
      I used to bulls-eye womp-rats in my pants
  191. At last by BigBadBri · · Score: 1
    Someone, however anonymous, who knows that the only VB used in code sequencing was for controlling the machines that put x drops of solution y into cell z.

    The implication of the delusional Greenspun is that VB is fit for anything more than noddy applications - this needs laughing at long and hard.

    --
    oh brave new world, that has such people in it!
  192. Re:Programming lehttp://developers.slashdosson 101 by kpharmer · · Score: 4, Insightful

    > Those things sound like stuff you'd write for
    > those useless reports the bosses always want
    > comparing apples to porcupines. Most database apps
    > I've seen use pretty simple queries;
    > it keeps your memory overhead down, and makes your
    > app run more smoothly.

    A few thoughts:

    1. If you think reports are useless, then you probably put tape over the guages on the dashboard of your car as well. I can't help you there.

    2. And you deliver customer portal, don't you want to show info about sales they've made in the past, credits they've accumulated, savings they've made via your 'preferred customer program', etc? if not, then you're behind the curve on portal design. if you do - are you going to send them a separate application? Or are you going to run some of these queries from your portal. Hint: pick the last option.

    3. Most database apps only do simple queries. You're right. That's because the average developer wants to keep the job simple, can only write basic SQL, and doesn't have experience with usability.

    4. Yep, it can take more memory. Then again, memory's cheap.

    > If you're using multiple outer joins for
    > anything other than reports, your schema's
    > probably screwy.

    5. The schema shouldn't be limited by your inability to code multiple outer joins or deal with optional data.

    6. See #2 above. The concept of a 'report' being something that somehow is done in other applications is antiquated. Transactional apps have a choice: deliver only transactional views of the data - and force the user to guess what the heck's going on or go to another app, or encompass some basic reporting in the transactional app.

    > All that stuffs fine if you're working for the
    > government, and they can buy you a billion
    > dollars worth of hardware,
    > but if you're putting together an app for
    > accounting and inventory control for a
    > relatively small company, and you're
    > using those types of queries, you're going to
    > make their hardware scream for mercy, and them
    > very unhappy with the speed of your fancy new
    > app.

    Don't know where to start, but here's a try:

    1. Use a real database

    2. Tune it right

    3. Put it on reasonable hardware

    4. Identify the performance needs (based on usability objectives) for each step in each use case. Some queries will have to be lightning-fast, others won't. Learn the difference.

    5. Redundancy in the database is your friend, just got to manage it right. It will allow you to take queries you would have thought would be very slow, and run them at blazing speeds. This is also best-practice.

    I do this all the time and it always results in fast applications that users *love*. There's no need to limit your use of the database to trivial queries unless you're just prototyping, aren't being paid enough to finish the work, or are using ISAM files.

  193. ACL2 by Animats · · Score: 2, Interesting
    Wow, somebody's still using that thing. 20 years ago I headed a group to develop a proof-of-correctness system that used the original Boyer-Moore theorem prover, along with a Nelson-Oppen type prover. (See "Practical Program Verification" in POPL '83) "ACL" stands for "A Computational Logic". Boyer and Moore went to considerable trouble to formalize mathematics in a completely constructive form, with a theorem prover to prove the theorems. It can build up number theory from something close to the Peano axioms in a few minutes.

    It's a very elegant formalization. There's no "forall" or "exists", which eliminates many philosophical tangles. Induction is done by recursion, and you have to prove that the recursion terminates by showing that a nonnegative integer metric decreases on each recursion.

    Years later, after object oriented programming came out, it became clear to me how to merge Boyer-Moore theory with object theory. Boyer-Moore theory doesn't have "hiding", and it needs it. Shells should have private and public functions, and if an object cannot be distinguished via the public functions, it should be considered equal for proofs that use only the public functions. This allows fixing up the mess with constructive set theory without adding more axioms.

  194. Academic freedom? Not when it comes to policy. by Anonymous Coward · · Score: 0

    Microsoft has sponsored Universities, and gives out Awards to good students. It's important for the University people to keep good relations with their masters so that the money keeps coming. Philip Greenspun knows this very well, so bashing Java (which doesn't bring in the $$$ to the University) and favoring .NET ($$$ to the University) is in line with the policy of keeping the donors happy.

  195. Quotey! by Grendel+Drago · · Score: 1

    I would slit my butt-cheeks with a razor-blade and sit in a bowl of rum before I would recommend using it for UI app

    Thank you. That's going in my quotefile.

    --grendel drago

    --
    Laws do not persuade just because they threaten. --Seneca
  196. Sometimes when you jump to conclusions... by natet · · Score: 1

    You jump the wrong way.

    I think it is possible that the problems seen in the class that Greenspun mentions says less about Java as a language and more about MIT Computer Science Students. It is possible that the average MIT Computer Science student is just as inept as cs students all over the country.

    First, it is a fallacy to think that one semester of Java is going to qualify a person to make a DB backed website in that language. I think it safe to assume that the group using PHP has at least one person in the group that has done just that using PHP. That person is likely doing all the DB coding. I can't vouch for the group doing C#, but since the whole .net infrastructure is directed very strongly towards web applications, I would assume that doing such things would also be fairly simple.

    One major problem that the Java group may be facing is that they rejected J2EE as being too hard. On the contrary, it is meant for exactly the type of applications they are trying to develop. I think they would have saved themselves a lot of headaches by using J2EE instead of JSP and JDBC.

    I think that before rejecting Java as a valid platform, Mr. Greenspun should first look at the experiences of the students involved in the course, and realize that the route chosen by the Java folks is actually harder than using J2EE.

    --
    IANAL... But I play one on /.
  197. Libraries are king.. by Jeppe+Salvesen · · Score: 1

    Really, unless the language really sucks, library availability, quality and pricing are all crucial in choosing what language to use.

    Bias : Coming from Perl, I absolutely love CPAN. Readymade libraries that do a lot of the heavy hauling makes sure many hard tasks become manageable.

    In the web development world, a good templating engine will gain your productivity. Make sure its caching design and capabilities are good - a proxy server will not save you in all scenarios. At work, we use Mason. I haven't tried the competition, but Mason does the job and those who've tried the competition have seemed pleased.

    --

    Stop the brainwash

  198. bizarro world by demian031 · · Score: 1

    so a prof is saying that because it is more difficult for his beginning students to use java as opposed to other web offerings, java is not a good choice for building enterprise web applications?

    what insight does this give into real-world development? ...i think none.

  199. Java SUV by Ravi_K · · Score: 1

    I thought the only School that sucks was the school in which I studied.Even harvard is in this list.

    How can they compare PHP with Java.
    Java is Slow compared to C++:: Remember no NFL, If you want Garbage collection, Buffer Over flow protection, fine grained security in language then Java.

    I agree there is better database interactions in .NET but that is because of Visual studio not because of C# or any other .NET language. .NET and Java "technologies" are almost identical.

    Comparing Java and PHP is like comparing Oracle and MSAccess.Oracle is tough to use and complicated, it does not mean it is useless.

  200. A more functional description by Anonymous+Brave+Guy · · Score: 1

    No, no, you've got it all wrong.

    Java is the programming tool of choice for discriminating wanna-be hackers.

    }:-)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  201. Conventions by Anonymous+Brave+Guy · · Score: 1
    Sometimes conventions pay off big time.

    Sure, and sometimes they result in a 5x or 10x increase in the number of lines required to do something, for no measurable benefits whatsoever.

    I guess it just depends on whether your conventions suck because they try to be too clever, or whether they're well thought out and designed from the programmer's perspective.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Conventions by StillNeedMoreCoffee · · Score: 1

      I'm curious about what conventions you think that Java enforces that take 5x to 10x the amount of lines of code.

    2. Re:Conventions by Anonymous+Brave+Guy · · Score: 1
      I'm curious about what conventions you think that Java enforces that take 5x to 10x the amount of lines of code.

      It doesn't enforce them; they're conventions. However, try these.

      • Some of the overhead for exception handling sucks.
      • The decorator pattern used with the stream classes is cumbersome.
      • Did I mention listeners and event handling?
      • Not Everything Is An Object.
      • Hello, world!
      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Conventions by StillNeedMoreCoffee · · Score: 1

      well I dont think the overheads are anything like your claim.

      For exceptions what type of overhead are you talking about? Run time execution? or time to code? or lines of code. If it is lines of code well that is the price for a structure that lets you remove endless complicated test conditions from code if you try and handle all the exceptions in another way. In some cases a slight change in error condition can cause a massive re-structuring of code to handle a condtion that wasn't handled but has been found to have been needed.

      Especially if the condition should kill your code and the place to handle that rundown is 5 levels up. It is trivial to include the throws clause on the call on the 5 levels and add a try catch block at the top level. The alternative is massive coding. Especially if you have follow structured coding conventions. So that one feature alone, built into the language can save your butt.

      I/O is always wierd in any language.

      Listeners is a wonderful idea and if you have programmed with it and without it for complex things the structuring and hand waving you have to do to trap and route events in a complex application just disappears with listeners. You are actually coding an event network which I believe is actually similar to the way the windows systems operate anyway. So here is a facility to closely match their behaviour. A good impedance match.

      Actually everything is an object in a sense. What you think an integer is not an object. The system just implements the common behaviour for all integers in terms of the functions you can provide and the instance of it (the int variable) holds the data. The compiler just knows to call on the integer class of math functions when the request is made to add or multiply the number. This general pattern is true for an value. The difference may be that some data types are built in and optimized already. Some classes like the given primative types are not subclassable. Well in Smalltalk they are but who's counting.

      So the question is then what cant be thought of an abstract data type? for that is what objects are. The OOP's languages just give support for your adding more of them to the language extending it out to meet your application. That is the process of writting programs, extending given languages out to implement an application.

      public class Test
      {
      public static void main(String[] args)
      {System.out.println("Hello, world!");}
      }

      as opposed to what

      #include

      void main()
      {
      printf("Hello, world!\n");
      }

      The C version has one less line.. we are talking about a big overhead here.

  202. Java sucks by Anonymous Coward · · Score: 0

    Hey, I have been saying this since the beginning of Java. I looked at it, tried to get excited about it. Tried to force myself to use it, but found that I was wasting time learning Java instead of getting constructive work done. I couldn't care less what technology comes from whom. I only care about productivity ... getting the job done quickly and easily and easily maintainable. None of which can be done with java.

  203. 45 degree dirt roads by eGabriel · · Score: 1

    Maybe you only need an SUV for a 45 degree dirt road, but it would be a mistake to say that the web is a nicely paved horizontal highway. Sometimes you need that SUV (I drive a little Volkswagen, so I wish I didn't need to mention gas-guzzling SUVs to support my argument, but...)

    I recently finished (well, is anything really ever finished) a large project using Ruby. I developed my own object persistence and a simple MVC mechanism. It works great, and we got it done MUCH faster than I could have in Java. Now I am going to rewrite in Java, though. I can get Struts and Hibernate for free and they take away much of the effort I spent in Ruby. I get multiple scopes to pass variables around, connection pooling, and other goodies for free.

    Sure, ok, I can now get a lot of these things with Perl, PHP, or Ruby now. But I can't easily take my PHP objects out of my web app and use them in a standalone GUI. In mod_perl and mod_ruby, it isn't safe to run multiple versions of the same library, or really multiple applications in the same Apache instance. I could set up jails, but my servlet container already sandboxes my apps for me.

    Trust me, I don't love Java. I think it is huge, bloated, overarchitected, sometimes slow, but like I say, sometimes you need an SUV.

    (but for your real car get a Volkswagen)

  204. Comment removed by account_deleted · · Score: 2, Funny

    Comment removed based on user account deletion

  205. Type checking and javac-ing by metamatic · · Score: 2, Interesting
    Java has lots of type-checking, etc. that's usually unnecessary for my simple reporting/collection of database data.

    Thanks, I needed a good chuckle. I look forward to reading about your projects in future issues of RISKS digest.

    Plus imho Tomcat is a pain in the ass to configure, and you gotta keep javac'ing, and so on.

    Yes, Tomcat sucks. Use JBoss. (Or even JBoss with tomcat pre-embedded.) Also, learn how to use Ant. I type three letters and hit return and the system works out all the dependencies, compiles any files necessary, syntax-checks XML descriptors, bundles everything into jar, war and ear files as appropriate (building the jar descriptors for me), and deploys the final single archive file onto my web server. Then it prints out the URL to click to test the result, in case I've forgotten it.

    C programming is kind of a bitch if you don't use make, too.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  206. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  207. if ( Java == SUV) CPP = F18_Hornet; by cabazorro · · Score: 1, Funny

    Enough Said.

    --
    - these are not the droids you are looking for -
  208. This was a school project! by Bubblehead · · Score: 1

    School projects do not have to be maintainable, scalable, reliable, documented, etc. Real world project have requirements these kids have no idea about (yet).

    When the time comes to design a little corporate web site, MySQL and PHP may just be fine. But if the problem involves millions of hits, and back-end connectivity to a legacy system through CORBA, another tool may be appropriate. I find it quite ignorant that Greenspan condems Java without even looking at the project requirements.

    --
    Under capitalism man exploits man. Under communism it's the other way around.
  209. Lisp zealots = Holocaust deniers by pgreenspun · · Score: 3, Interesting

    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.

    1. Re:Lisp zealots = Holocaust deniers by Anonymous Coward · · Score: 0
      Unprompted she said "What I think would be best is Common Lisp Object System with a modern type system". I was stunned.

      She was hitting on you, Phil! And what a tired old pickup line, tsk.

    2. Re:Lisp zealots = Holocaust deniers by randolfe · · Score: 1

      Thank you, Mr. Greenspun, for [yet again] confirming my decision so many years ago in which I elected to respectfully decline an invitation to MIT. As a contemporary, I am appalled at what seems to pass for academic discourse in our vaunted institutions today. You obviously have, at best, a naive, neophyte's understanding of Java's higher design principles. Of course, no object-based language is flawless, however, Java strikes a reasonable balance between the theoretical and the pragmatic. Further, every single specific point you raise about Java's shortcomings further reveals your 'real-world' ignorance.

      I take Mr. Greenspun's utterances as the best unpaid advertising for this nation's many great public state universities and their oft superior computer science education.

    3. Re:Lisp zealots = Holocaust deniers by Anonymous Coward · · Score: 0

      You sure went through a lot of effort with that troll shill.

    4. Re:Lisp zealots = Holocaust deniers by randolfe · · Score: 1

      ...and his subject header is not? I am guilty of being hooked by a troll, as all of Mr. Greenspun's articles ultimately are, not starting one.

    5. Re:Lisp zealots = Holocaust deniers by Anonymous Coward · · Score: 0

      Do you also teach a 101 on faux-controversial attention grabbing headlines for articles?

  210. Inline SQL + Prepared Statements by eples · · Score: 1

    With Java the programmer is counting question marks in the SQL query and saying "Associate the 7th question mark with the number 4247", an action that will introduce a bug into the program as soon as the SQL query is modified

    Hey man, why don't you advise your students not to use inline SQL? As much of a speed improvement as you'd get with Prepared Statements in Java (all those "?"s), why not advise them to use a stored procedure instead?

    (Instead of blindly griping about Java.)

    --
    I'm a 2000 man.
  211. Re:Java has issues, but not the ones mentioned her by Headius · · Score: 1

    I still waffle between the two (regardless/irregardless) but I see the latter so often it starts to sink it. I still dislike it and pause for a good minute every time I have to choose.

    At any rate, WordNet defines it, although somewhat dubiously. They're certainly not Webster, but are often indicative of general language trends:

    irregardless
    adv : in spite of everything; without regard to drawbacks; "he
    carried on regardless of the difficulties" [syn: regardless,
    irrespective, disregardless, no matter, disregarding]

    Perhaps it's a flammable/inflammable duality? Perhaps irregardless is "regardlessly regardless"?

    Gotta love language.

  212. more stuff by Anonymous Coward · · Score: 0

    Sorry to do this to you man, but I can't come through on you this time. :( I couldn't get the extra 5 into my friend in time.
    So, maybe we'll run into each other this weekend; if I'm around after the show, I'll give you a call.

    1. Re:more stuff by Anonymous Coward · · Score: 0

      couldn't get any? s'all good. gimme a call this weekend. we'll talk p2p about what's goin' down.

  213. Greenspun needs to give up tech and pick up golf. by Crazen · · Score: 1

    Another stupid narrow argument presented by a narrow minded blowhard. Yeah, starting from scratch for a project for an 8 week class, you want to develop some trash code you're going to throw away. However if you want your system to scale, run on a huge cluster without resorting to running to the database for every piece of data, and build up a readable codebase to allow for more than the intial programmer to navigate through the garbage easily then Java is the better way to go. perhaps Java == SUV because it can handle a hell of a lot more load? BillyBobs Fruit Stand e-commerence site might be appropriate for Perl, but Charles Schwab and eBay aren't.

  214. Actually, us old guys by Anonymous Coward · · Score: 0

    I'm not that old, but in programming, 43 is now ancient.

    But I don't think young men fools, because being a young man, I understand that I share the same foolishness.

    The primary difference is I *know* I'm a fool; these guys don't understand they are.

  215. Java has done fine on large projects by sacrilicious · · Score: 1
    Java has a lot of inherent faults that render it useless for large scope projects.

    I work on a project that has five thousand classes and executes on windows, linux, aix, and solaris. The project has stringent security and performance requirements, and meets all of them. I've worked on large projects in C++, consider myself an expert in C++, and even have a deep appreciation for C++ and acknowledge its superiority in various realms, but I am confident in saying that if my current project had been written in C++ then it would have taken at least twice as long and would still have many more bugs.

    --
    - First they ignore you, then they laugh at you, then ???, then profit.
  216. In partial defense of Paul Graham by metamatic · · Score: 1

    Well, I disagree.

    1. Java has been hyped. Undeniably. LISP has not been hyped--it has been advocated by individuals. There's an important difference. When I see multi-million-dollar ad campaigns telling me how great Common LISP is, you'll have a point here.

    2. Graham's wrong here, but his argument makes sense coming from a non-programmer's perspective. In fact, Java has managed to get millions of programmers using proper exception handling and automatic memory management--two major revolutions that should have happened decades ago, but no other language or technology managed to make it happen (outside of narrow contexts like the LISP community, of course). That was a high aim. It's just not something a non-programmer would notice when comparing C and Java code.

    3. Ulterior motives are generally a problem because compromises are introduced, and resources redirected, to serve the hidden agenda. Unfortunately, a lot of Java APIs have the feel of something thrown together in a real hurry to counter something Microsoft announced. Plenty of Java APIs are such a botch in their 1.0 incarnations that they get completely abandoned and replaced with a ground-up respecification in 2.0. Even core classes turn out to be fundamentally flawed, and are replaced. Sorry, Vector sucked, we're using ArrayList this month. SAX 1.0 was a mistake, rewrite your code for SAX 2.0. Hashtable didn't work out, we've got something new called HashMap.

    4. Sure, people who used to have to use C++ love Java. And people who had to use MS-DOS loved Windows when that was introduced.

    5. Maybe you're using Java for the sheer love of it. I'm using it because it seems to be the only viable career path for me right now that doesn't involve whoring myself out to Bill Gates.

    6. Java APIs well thought out? Ha! See #3 above. Then look at EJB, where you can't even run the same code on a different container on the same machine! And I just love having no unsigned integers and no integer overflow exceptions.

    7. See #3 and #6. Then try using Java to generate the current date & time in the current time zone in RFC2822 format, something which damn well ought to be a one-liner in any Internet programming language.

    8. Fact is, Java is just as rigidly controlled as .NET, and Sun are just as ruthless about extracting value--read up on the JBoss/Sun issues, or the similar arguments between IBM and Sun over J2EE. Yet for some reason, Java gets used by programmers who would never consider .NET.

    9. I'm an atypical programmer: I want my code to be fast, compact and bug-free, and I feel ashamed when it isn't. However, I'm aware that I'm very unusual in this regard, and I think that in general, Paul Graham is right--Java isn't aimed at solo hackers. Of course, that isn't necessarily a bad thing.

    10. Yeah, this is kind of a weak argument. I could write off countless technologies on the grounds that 'dozers and .NET programmers like them... like Web Services for starters.

    11. Plenty of people in the Java community who like the language are nevertheless concerned about what might happen to the language if Sun gets into serious difficulties.

    I avoided Java for a long time, precisely because of the stink Paul Graham identifies. When I eventually started using it, I discovered that it did have some advantages. Yes, it's often painful and tedious compared to Perl, and there are a few really boneheaded aspects to it, but it's still a big improvement over C++. For that, at least, I am grateful.

    Actually, the big mystery to me isn't the widespread use of Java, it's the widespread use of C++ when Objective-C is available...

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    1. Re:In partial defense of Paul Graham by Trinition · · Score: 1

      1. Java has been hyped.



      Man, you people are so black & white. Who cares if Java has been hyped? Has linux stopped being cool since it has been hyped? Did you turn away from Slashdot because every half-nerd talks about it as if its worth some cool points?

      Just because alnaguage has been hyped DOES NOT mean its bad just as an unhyped language isn't necessarily good.

      I'm sorry, it's just not a cause-and-effect, black-and-white relationship.

    2. Re:In partial defense of Paul Graham by Anonymous Coward · · Score: 0

      Because C++ has strong static typing, parametric polymorphism, efficient method dispatch, operator overloading, namespaces, references, multiple inheritance, and efficient compilers. Why anyone would want to ugly up Smalltalk by making it look like C, or replace C++ with such a bastard offspring, is beyong me.

  217. Wow, cool! by metamatic · · Score: 1

    So "Jak and Daxter", "Ratchet and Clank" and "Sly Cooper" are all implemented in Lisp? I'm impressed, as they're easily the best 3D platform games available for PlayStation 2. In particular, Jak and Daxter's total lack of between-level loading screens is a beautiful piece of work.

    --
    GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  218. Re:DisAgreed! by Anonymous Coward · · Score: 0

    Yes its much more clean for 3 honda civics to drive in tandem than for everyone to pile into a SUV.

    Last time I looked SUV has emissions inspections just like other cars....

  219. Re:Java IS the perfect language for web. by Anonymous Coward · · Score: 0

    Sigh. This isn't that complicated. If you're coding enterprise-level web sites (and by enterprise level, I mean you're coding Ebay, not Mom's Apple Pie Recipe Sales) Java is certainly worth the extra effort. You're doing heavy hauling; you NEED an SUV. But you don't need advanced OOP, OOD, strong types or any of the rest of the stuff you mentioned for the typical web site just as you don't need 300HP to haul a trunk full of groceries. Use the right tool for the job. If you're coding small web apps for a living and you're using Java, you're wasting your time and ripping off your customers.

  220. Where is python? by Anonymous Coward · · Score: 0

    I wonder if Python is not there because
    Zope has won the space that greenspun was trying to conquer with his now defunct ars-digita product/company.

    I think it is rather sad also that Python is
    not available to be used in the google programming contest. Google uses python heavily throughout their development process. Yet they do not promote it in their contest. ;-(

  221. TERRORISM by Anonymous Coward · · Score: 0

    If you use java you are supporting terrorism :)

  222. Editors... by PurplePhase · · Score: 1

    Maybe title was supposed to be:

    Phillip Greenspun, Phd == SUV

    8-PP

  223. Who is this Philip Greenspun? by tungwaiyip · · Score: 2, Insightful
    Why do we care about his opinion? Did he build any large scale scalable web application? Was he involved in maintaining and supporting any commerical projects? Did he make any critical insight of the strength and weakness of these development tools? Sounds like he draw his conclusion mostly from some student project. In that case I would say Microsoft wins hands down. Microsoft is very good at making and packaging complete development tools and is relative easy for novice to learn and use. Does it make VB the best programming language over other alternatives? I won't make that conclusion.

    Funny that he claim a project done in Java would be harder to maintain that PHP or Perl. Some example of his opinion with little fact to support.

  224. FYI: Python is not weakly typed. by rk · · Score: 2, Insightful

    In fact, one could make an argument that it is more strongly typed than Java.

    Python, however, is dynamically typed. It has its advantages and disadvantages with a statically typed language such as Java.

    There are good arguments for using a dynamically typed language in conjunction with doing unit testing which serves to demonstrate program correctness, rather than mere syntactical correctness. Relying on your compiler to save you from a stupid moment (and let's be honest, we all have them) can get you burnt just as easily.

    With that said, a strong static typed language does relieve you from many simple coding mistakes, but you should be unit testing in a large system anyway. Let's be hnoest: those sorts of bugs are the easiest to fix in a complicated system. Much more difficult is finding and removing flaws in encoded business logic. No compiler or code analyzer is going to help you there. Unit tests will.

    Partisan bickering about typing mechanisms doesn't address the larger issues of software validation and correctness.

    1. Re:FYI: Python is not weakly typed. by KrispyKringle · · Score: 1
      My apologies, I've never done more with Python than just look at it a few times. I made an incorrect assumption.

      That said, I think you are probably right about coding mistakes, but I think my point is still valid. Strong typing does not relieve you from mistakes, for sure, but it does help prevent some of them. While this is certainly up to the coder, I consider that worth the minimal extra trouble of casting variables.

      And to be clear, no, I'm not trying to be partisan. My post was merely a reaction to one I saw as arrogant and unwilling to admit even the clear advantages of certain systems; claiming that strongly typed languages are universally, inherently inferior is simply silly. I never tried to claim that PHP or Perl were themselves inferior for being weakly typed. Each language serves a purpose; C++ happens to serve its purpose, as does Java, far better than PHP, Perl or, for that matter, assembly.

  225. vb by Anonymous Coward · · Score: 0

    no wonder decoding the human genome took so freakin' long!

  226. should'nt that be... by Anonymous Coward · · Score: 0

    that Phillip "Greenspun: Java == SUV" is the same as

    PhillipGreenspun.says(Java.equals("SUV") == true);

  227. Wow, people STILL don't get it. by aurumaeus · · Score: 1, Informative

    I cut my teath in web programming writing perl and javascript. I then moved on to PHP, and led development of an e-commerce app in PHP (with a little C here and there). Then got thrust into some ASP (ech), before becoming diving headlong into Java. I've never looked back.

    Java has drawbacks, but the difference between paradigms such as OO Perl and PHP are so misrepresented it makes me want to cry. As someone who spends a fair amount of time mentoring people in Java programming, I'd like to first support the assertion that nobody learns how to program in college. They learn how to solve algorithmic problems, and maybe know a little about OO.

    The strong typing, file-system coupling, and general stickiness and complexity of Java are all _features_ of a language that was developed in response to a concrete need. I love PHP (do my dev for personal projects in it still), but it doesn't cut it for big-iron app development, and neither does (any form of) Perl. I'm in charge of architecture for an online banking system, and I think I know a few things about application complexity and code maintenance- and I'll tell you that nothing beats PROPERLY WRITTEN Java in these categories.

    1) You can certainly write working applications more quickly in PHP/Perl if you're a novice. The interfaces are easier to learn, the simple stuff is pushed to the top SO THAT YOU CAN do things quickly and easily.

    2) You can do things 'More Than One Way' more easily in Perl / PHP without strong typing and hard-locked OO hierarchies. This is a strength for lightweight development, and an increasing pain in long-term, distributed and enterprise development.

    3) Java APIs for simple things ARE often difficult, because they're designed to do more than your casual user needs. Take a look at SAX (interestingly named 'Simple API for XML') if you want an example of an extremely difficult-to-use interface to a common technology. The spend a few years developing and tuning XML applications, and you'll begin to understand why the guys at Sun did it that way.

    4) Don't confuse Java development with EJB / JSP development, which is the misguided attempt by Sun to provide a MS-like solution for people who don't know enough to be allowed near the good stuff. THAT is a guzzling SUV, and you don't get nearly enough for the price you pay to run those applications.

    5) Anyone wanna compare performance benchmarks? On servers these days where it costs $1000 to get a box with a 2GHz proc & 1BG of RAM? Sure, Java users more of that glut of resources than other languages... because you're paying for two things: platform independence, and JVM-managed garbage collection.

    PHP & Perl will always be the kings of prototyping and lightweight application development, but will never be able to compete with Java-style frameworks for long-term maintainability, complexity management, and scalable & distributed architecture.

    1. Re:Wow, people STILL don't get it. by Mybrid · · Score: 1

      Anyone wanna compare performance benchmarks? On servers these days where it costs $1000 to get a box with a 2GHz proc & 1BG of RAM? Sure, Java users more of that glut of resources than other languages... because you're paying for two things: platform independence, and JVM-managed garbage collection.

      Sorry, performance does matter.

      but will never be able to compete with Java-style frameworks for long-term maintainability, complexity management, and scalable & distributed architecture

      I completely disagree with that statement and have empirical evidence to back that up. I've seen C/CGI code ported to a Java Framework and it took 20% more lines of code to do it.

      Java-style frameworks are NOT good in my experience and my opinion. I find they are extremely immature. Maybe in ten years.

  228. uh huh. by Anonymous Coward · · Score: 0

    Sounds like you need to learn when to use === in PHP.

  229. tcl! by figa · · Score: 2, Insightful
    Did you notice how Greenspun snuck tcl in there:

    With a dynamic language such as Lisp, PHP, Perl, Tcl, ...

    After all these years, he's still miffed that tcl was displaced by Java in his AOLServer. I noticed that none of his students were using tcl either, which must have displeased him greatly.

    Binding variables are trivial in Java if you prepare a statement. Here's what Greenspun himself has to say about it:

    Note that JDBC, the Java database connectivity library, uses "?" as a bind variable. It is up to the programmer to count the Nth occurence of the ? in a SQL string and bind a value to that. As you can imagine this process becomes error-prone if the SQL statement contains 15 or more variables, a very common situation in real applications. You can also imagine the possibilities for introducing subtle bugs if the SQL query is changed and the bind variable sequence numbers are not properly updated.

    So what he's saying then, is that his students are having a hard time counting!

  230. What's the batmobile then? by brian0x00FF · · Score: 1

    And what's language is the little red tricyle with the bell and the flowery basket?

  231. JSP sucks? by Bodrius · · Score: 2, Insightful

    It would be more accurate to say that it did suck a lot.

    JSP was a copy of ASP, created to keep Java as "the web language" and stop the VBScript insanity.

    Of course, in the process it copied most of the insanity in ASP, moved a lot of ASP developers with bad habits to JSP, and trained a lot of Java developers into the really bad habits of that type of development.

    However, to the merit of JSP, the Java zealots were the first ones to try to fix the mess:

    After the first batch of books advocating bad practices, it became common advocated wisdom that application code belongs in Beans and Servlets, and JSPs should be dealt with as cleaner, glorified print-out statements.

    Obsessive use of JavaBeans and extensible, Custom Tag Libraries can easily remove most, and often all, of the need for Java code from any JSP application. It looks and feels more like Coldfusion development, which is very nice for HTML interfaces.

    And now the Expression Language is essentially a template engine with a scripting language that is not very different from Freemaker et al. The main advantage I see on this is to let you deal with Java code in JSPs not as an aesthetic preference, but as a capital sin (validate the code and refuse anything that has <% or %>).

    Now ASP.NET copied most of the improvements and added a few of its own. And the same people who hated ASP find it very appealing now in its new shape.

    Perhaps you still would prefer your own TemplateEngine+Servlets combination, perhaps not. But the hacks have changed a lot. They might be worth revisiting.

    --
    Freedom is the freedom to say 2+2=4, everything else follows...
  232. Re:Tcl is good (vs. Efficiency is everything) by foobsr · · Score: 1

    Then why use Java (see also post of blibbleblobble).

    Perhaps read Lisp as an Alternative to Java to find out that JAVA is not in a position to outdo a programming language with its roots in the 50ties.
    CC.

    --
    TaijiQuan (Huang, 5 loosenings)
  233. Hey Phillip, complain about the right thing... by DunbarTheInept · · Score: 1

    ...you dishonest prick! Your article cited problems with Java's interface to databases and the web, and then drew a conclusion about the language itself from that. Nope. Doesn't fly. Does JDBC suck compared to embedded SQL? Yes. Do servlets suck compared to PHP? Yes. Does Java suck compared to C++ or Perl? No. C++ and Perl have had better interfaces written for them, but this has nothing to do with anything inherent in the language.

    --

    Don't label something "offtopic" unless you know the topic well enough to tell what's on topic.

  234. No, I'm New Here by New+Here · · Score: 1

    No, I'm New Here

  235. Better.. by Inoshiro · · Score: 1

    The space shuttle!

    --
    --
    Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
  236. virtual +1 interesting point to you -- any more? by GCP · · Score: 1

    You're the first post I've seen here to actually describe a PHP weakness explicitly. I'd be interested in seeing more examples if you have them.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
  237. heh by Anonymous Coward · · Score: 0

    Sorry! There was an error: Can't find a sub-table named "E:\Program Files\UserLand Frontier\Guest Databases\ops\datafiles\aggregatorData.root".

    The error was detected by Frontier 9.0 in mainResponder.respond. Webmaster: weblogmaster@cyber.law.harvard.edu. Time: Mon, 22 Sep 2003 20:25:32 GMT.

  238. Re:Programming lehttp://developers.slashdosson 101 by SatanicPuppy · · Score: 1

    If you'd read the line about reports, you'd know that I wasn't knocking reports in general, only reports that only show W in terms of a completely unrelated Z, using outer joins on X and Y in order to relate two unrelated sets. Apples, not to oranges, but porcupines.

    Second, I can show all kinds of history without resorting to huge, bloated SQL queries. Simple is elegant, and if you think bad developers prefer simple queries, you're living in a dream world. I've seen sixty-line queries that could shut down 50 node cluster. Most times hugely complex queries are the result of a schema that wasn't thought out correctly.

    And memory is only cheap if you're running a few complex queries at a time. If you're running 50 or a hundred, it's not cheap, and if you're running a thousand, it's fricking expensive.

    I don't know. I guess my point is that, yea, sometimes you have to use a complex query, but most times you can get by without, and making the extra effort to go without usually has positive performance benefits.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  239. C# and ASP.Net by GCP · · Score: 1

    I think Greenspun wrote something similar regarding his Ars Digita University web app class. I don't have the link, but at that time he let people choose either C#/ASP.Net or Java, and his comment was that all the people who chose .Net finished the assignment on time, while few of those who chose Java did.

    I've heard similar comments from the software demo guys at a major software company (NOT MS).

    Having done client-side apps with C# (not web apps, no ASP.Net, just .Net), I'll have to say that it seems to be both more powerful (in returning some of the C++ features that Java took out) and easier to use than Java, mainly because it feels like it has been reconsidered based on what has worked well and what hasn't in Java.

    Unfortunately, I really don't want to use Windows for servers (clients are okay), so I'm not likely to be able to take advantage of this unless Mono (go-mono.org) succeeds, but I think that C#/ASP.Net is probably a better TECHNOLOGY (though not necessarily better CHOICE yet) for serious web apps than either Java or PHP.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
  240. Re:Programming lehttp://developers.slashdosson 101 by Darren_Duncan · · Score: 1

    SQL Generator? And it handles subselects, inline views, grouping, multiple outer joins, and functions?

    Yes, a SQL Generator can handle all of those things, and do so elegantly, and be quick running and easy to use.

    I am making such a thing myself. Initially in Perl, followed by a C version. Go to http://search.cpan.org/dist/Rosetta to see it (you may want to wait for r0.18). My time frame is to be mostly done within a few months.

    Or - is that too difficult to generate, forcing you to make up for this thru additional application code and reduced application functionality?

    All of the other generators I know of have this problem, hence my making of a better one that does not.

    -- Darren Duncan

  241. Misusing J2EE by dewdrops · · Score: 2, Insightful


    With all due respect, Greenspun's students don't know what they're doing and Greenspun's as clueless about J2EE development as they are (and his ignorance has cost them much extra development time). He writes:

    [JSP] still 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.

    First off, I bet 6.170 never covered JSPs, so the students are newbies to this and having to pick it up.

    Secondly, JSP is for building the presentation layer only and should contain only custom tags and no business logic. As any J2EE developer knows, business logic should be kept in Java and exposed to JSPs via custom tags and servlets. Trying to do it all in JSPs is asking for trouble (as his poor students have found).

    I think before he makes any more grand statements about J2EE, Greenspun should learn how to use it.

  242. What does that make .NET? by commonloon · · Score: 0

    The Hummer H2....

  243. Java has increased problems by randall_burns · · Score: 1

    I foudn this on The blog and thought is was worth
    reposting here:
    -------
    I read with interest the findings of a recent Standish Group report aptly named 'Chaos 2003', which regularly diagnoses the health of IT projects in the US. I was flabbergasted by what I read. Project overruns have increased from a 'low' of 63% in 2000 to a staggering 82% in 2003. Over 51% of these projects are in serious trouble with 15% of them failing outright. And of those that complete, only 52% deliver on customer feature expectations.
    Jean-Georges Schwartz

  244. Re: writing web apps since late 70s? by Anonymous Coward · · Score: 0

    " I've been writing web applications since the late 70s (initially for the NSA before we made it public)"

    The "WEB" came into being with the development of HTML. This in turn came out of the CERN physics lab in 1991. But you were developing web apps over a decade earlier? I don't think so!

  245. Broken analogy by fondue · · Score: 1

    This analogy would only work if the similarities between 'Java' and 'SUVs' are meaningful, and lead to comparable conclusions. Instead, Greenspun focusses on one aspect of Java, and pulls figures (5 times the expense) out of his ass.

    As it stands it's a nice soundbite, but that's all.

    --

    Preferences > Homepage > Customize stories on homepage > Authors > Zonk > Uncheck

  246. Yeah, yeah, me too! by IDigUNIX · · Score: 1

    Yeah Java sucks, but my l33t programming skillz let me code scripts in php/perl/python/basic++/z80 assembler much faster!
    Compiling is foolish, interpreters are much better. Let compiling happen at startup time, I just distribute the source code to my applications.
    And variable typing == evil. Only weak minded foolz typecast their variables. I like all of the pretty failure messages my app displays!

    Sigh. Is it possible that people can write CRAP code in any language? Should some people just be kept away from source code period?
    There are a great many people who think that because they can understand a PHP hello world example, they are programmers. You know the type. They're closely related to those who think that because they can install Windoze and establish a network connection they are immediately "systems administrators". There are also a great number of people who rate the quality of their project based upon how many acronyms it involved. "How could it be bad code! I mean I used JAAS, and EJB, and JSP, and JMS, and J2EE, and JCA, and OJB!"
    Java is NOT perfect, and I'm not defending Sun. But it stands as what it is: an attempt at a post C++ OO language, with cross platform as a fundamental requirement.

  247. Big Point Greenspun missed here by randall_burns · · Score: 1

    A big chunk of the reason for Java's momentum is that it appears to be a "standard". The introduction of C#/.Net seriously muddies the waters here. Personally, I think C# and Java will beat each other bloody in the world of perception/marketing. The winner? Scripting languages.

    Sun has already acknowledged that Java's lack of scripting capability is a major deficit in their current offering and plan to correct that. A while back, Ted Hseih did an analysis of the language market. What was obvious in his results:
    Java gained market entirely at the expense of C++
    : the market for various scripting languages never budged.

    The war between Java/C# means that scripting languages have a chance to improve their standardization. Personally, I think the leading candidates for a new king of scripting languages include Python and Jscript/Javascript. Python is mature and can co-exist with every major development environment out there(Java/JVM(Jython), C#/.NET(still a little weak, but getting there) and Unix/C). JavaScript is a true multi-vendor standard(ECMA) that even Microsoft supports, can be compiled, is assured longevity due to its use in browers-and with stuff like TIBET(www.technicalpursuit.com) is getting some real programming functionality.

  248. Since when is a "web app" just JSPs and HTML by Anonymous Coward · · Score: 0

    Spin me a flash trading app, talking tcp/ip to a trading system which interfaces with an exchange. I love PHP as much as the next guy and yes for alot of its applications java is way OTT, but it allows me to build a system, from infrastructure backward which covers all the system components in a manageable, homogenous way. So if I ask one of my developers to get into a section of it, there tends to be, more visibility as to how something works. C'mon guys, whatever happend to thinking out of the box?

    1. Re:Since when is a "web app" just JSPs and HTML by Trejkaz · · Score: 1

      The lack of exceptions in PHP is another way to waste time.

      The PEAR library did its best to work around this by inventing PEAR_Error (and subclasses thereof) and that returning a PEAR_Error means an error occurred.

      The problem is, for every method where you have the possibility of one of these things being returned, you have to do an if statement to check for the value, and if it was there, return it to the next level out, or create your own error and return that, or handle it.

      Now, forget to do this, and if the next line is something like if ($result != 0) (which is true for an error, right?) you've just broken the program.

      Meanwhile Java's exception handling would throw the error out regardless, and even if it was an unchecked exception it would be caught at the top level, be reported as an error and result in an HTTP 500.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  249. What?? by spirality · · Score: 1

    How could this drivel make it on to Slashdot?

  250. Hacking vs. Engineering by Anonymous Coward · · Score: 0

    A typical article from an old-school hacker not willing to put in the effort to develop reusable components.

    To extend the SUV analogy further (not that it's necessary, but I really can't resist), it takes more gas to take off from the red light, but once on the highway you set the cruise control and ride easy.

    I might never use Java for something quick-and-dirty, but even Greenspun's example of the difficulty binding prepared statement variables has been solved repeatedly (OR mapping with XML, anyone, anyone?)

  251. visibly clueless. by valmont · · Score: 1

    I'll start by agreeing that Java is not *the* solution to *any* web application. However it *is* a very good framework for complex applications that need to make efficient use of hardware and system resources, and that need to be developped and run on heterogenous systems. The problem is that 99.9% of all programmers, and visibly Mr Greenspun, don't have a fucking clue about what it is i'm talking about, and really ... why should they? 99.9999% of all web applications will never sustain more than a couple of hits a day, will never live past a year or two, or will never do anything complex. What matters is "how fast can we get this thing out the door". I should know, i've been there. With all this in mind, who cares if your database and filesystem get hit on each HTTP request? Who cares if you can only run your application on microsoft windows while shelling out license fees for each CPU? Who cares if you can only develop your application on microsoft windows, using microsoft software after shelling out developer license fees? Who cares if your application runtime that listens to port 80 is occasionally vulnerable to a remote buffer overflow exploit or two.Those issues are virtually non-existent for most developers. So that's all good. PHP is your guy. Be my guest, use .NET.

    So for the remaining few web applications out there that may sustain, say, 5 million unique dynamic page views a day, how do you make efficient use of hardware and network resources? the basic answer is custom caching layers, shared data resources. Use that RAM to its fullest capacity. reduce I/O. reduce filesystem access. reduce database queries. pool those database connections (PHP and most other frameworks do offer built-in DB connection pooling, but it stops here, this is not caching). If something only needs to be looked-up once, or read once, it should stay in memory. period. The Java Servlet container specification which is a *small* part of the J2EE framework lets you do just that: A Java servlet container can run on a single Java Virtual Machine while listening to port 80 for incoming requests. Each request is processed in a new thread. Your caching layer would live in various singleton class instances inside the Java VM, each request-processing thread can interact with the same in-memory caching layer: read data from it, put data into it. Your caching layer can be simple or complex and anything inbetween. You can write yourself, use someone else's or buy a 3rd-party's caching framework. The point is, you absolutely *cannot* do that within a PHP or Perl framework. Because the scope of your runtime in those frameworks lives within a single request. Subsequent and concurrent requests have no way of efficiently sharing in-memory data without going thru the database or the filesystem on *each request*. Again, this is moot for most developers. But a strong in-memory caching layer as part of your web application run-time can go a long way to build applications that scale better.

    Building an application "on-time" and "under-budget" as touted by Greenspun must consider many many MANY factors. If you need an application for which you are 100% sure you won't need to scale it beyond its original user load, then taking a bit of extra development time ahead of time to build a more efficient application is prolly a bit overkill.

    The other thing people forget about Java is the fact that its run-time runs in a "virtual machine". Provided you have a Java Servlet container implemented in Java that directly listens on port 80 ( tomcat, jboss, etc.), that is, without going thru apache and mod_jk, there is just *NO WAY*, some script kiddie will ever crack your server thru port 80. Why? because in the worst case yeah, they might crash the Virtual Machine. But they ain't going to exploit some remote buffer-overflow vulnerability that'll allow them to instantiate a shell as root. *that* is a latent, potential problem with any unix daemon written in C that runs directly out of the operating sy

    1. Re:visibly clueless. by Anonymous Coward · · Score: 0

      Agreed.

      It amazes me the number of programmers on /. who give no thought at all to the cost of maintentance of complex code. The only thing they seem to care about is how quickly you can throw the code together.

      Maintaining a very large system in Java is much easier than C, C++ or Perl.

      It is definitely true that Java is not a language for quick hacks - this is why python might be a better choice for little hacked up solutions to administrator's problems, but Java really comes into it's own in large, complex systems.

  252. Yawn by kaffiene · · Score: 1

    I see /. is having it's weekly "Real hackers don't like Java" rant.

    Give it a fucking rest. Seriously. A lot of people use Java because it is the best tool for their tasks. Likewise, there are many other languages I have used (C, C++, LISP) which are fantastic for different kinds of tasks.

    In general I prefer Java because it is quick and painless for solving the kind of problems I'm coding for. Your milage may vary, but stow the continual JAVA IS EVIL crap - it is dull, boring, wrong and monotonous.

    There would not be so many Java programmers if the language sucked.

    I come from a C,C++ background. I used to do a lot of graphics hacking where C was my weapon of choice for speed concerns. I know about making things go fast. These days, Java and OpenGL meets all my speed concerns, so that's what I use.

    If you don't like JSP, don't use it. Note that JSP IS NOT Java, it is a set of libraries you can use - like servlets or J2EE, it is only one of many ways to crack the Web-App nut. But if you find that one way of doing things does not suit you, don't trash the whole damn language.

    You /. language bigots make me sick.

  253. exceptions by pyrrho · · Score: 1

    ... just a guess.

    --

    -pyrrho

    1. Re:exceptions by ttfkam · · Score: 1
      Contrived, but bear with me; C doesn't have a real, cross-platform database interface. And please refrain from mentioning ODBC. Show me three different database engines that have a compatible C interface through ODBC and I'll eat my shoe.
      db_results *dbr;
      db_handle *dbh = open_db_connection();
      if (!dbh) {
      error("database error: could not connect");
      }
      dbr = db_execute_query("SELECT bar FROM foo");
      if (!dbr) {
      error("database error: could not query");
      }
      while (nextrow(dbr)) {
      printf("Bar is %s", get_value(dbr, "bar"));
      }
      free(dbr);
      close_db_connection(dbh);
      -------------

      Now, let's compare with Java -- which incidentally has the same API on far more than three databases engines.
      Connection conn;
      try {
      conn = datasource.getConnection();
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT bar FROM foo;");
      while (rs.next()) {
      System.out.println("Bar is " + rs.getString("bar"));
      }
      } catch (SQLException sqle) {
      error("database error" + sqle);
      } finally {
      conn.close();
      }
      How exactly are the exceptions adding too many lines of code? It looks to me like the C code has two extra if-statements. A try-catch block that throws no exceptions (think: exceptional or errored behavior) has next to no overhead even though it provides proper error checking and handling. You are checking your result codes in C for possible errors, aren't you? Aren't you?
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    2. Re:exceptions by pyrrho · · Score: 1

      ok, I see what you meant about the database API, not across hardware, accross database vendors. Surely someone abstracts that, otherwise you write your own classes in such a way as to be able to add support for other DBs.

      I think you are onto something, this is a niche of Java, it's a product built to fit the business integration crowd, a big crowd to be sure, and it's better than COBOL, and it's VB-done-right and it's a good thing.

      We agree actually about the no-language-is-perfect idea.

      And also, I think exceptions are quite good things, and they can save lines of code. I really was just guessing as to what the grandparent might have meant about the extra lines of code. I can't really think of anything else.

      --

      -pyrrho

    3. Re:exceptions by ttfkam · · Score: 1
      Surely someone abstracts that, otherwise you write your own classes in such a way as to be able to add support for other DBs.

      Do you see how this is only one-removed from the common pre-1998 practice in C++ to write your own string implementation? It's a solved problem. It's an oft-solved problem. I'm actually flabbergasted that C++ hasn't made universal interfaces for relational databases, threads (POSIX is only really an option on *nix), regexes, etc. If you don't want to use them, you can always call the implementation classes directly (just like in Java), but the advantages to using the interface (virtual class) are so great, almost no one avoids the interface. I can't think of any db abstraction in C++ that wouldn't use function pointers. Once you have function pointers, you are at the efficiency of vtables but with greater complexity.

      By the way, I'm not arguing. Only sharing ideas.
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    4. Re:exceptions by pyrrho · · Score: 1

      well, one, I bet you someone does have a class system to abstract differences between Oracle, Sybase, MySQL, etc. etc. Without checking, I would still bet that.

      One reason there are not standard solutions integrated into the language is it's not necessarry, right, the solutions provided by third parties integrate just fine. Yes, it's nice to have a standard library everyone can learn and commit to memory, that is going to be available on every platform the language is available on.

      However, one reason that doesn't happen is because there is no perfect solution. Garbage Collection is an example. There is no compelling single solution for that, and having a company like Sun just choose one is not the problem. The problem is there are multiple competing solutions. Sun choosing Swing for me is NOT BETTER than me getting to choose my own control system.

      I WANT to think about what is the appropriate algorithm, library, or class. I'm supposed to learn these things to be a software engineer. If you chose for me, you need to make sure you have something with real staying power, thus the STL is now a part of C++, but no GUI toolkit is. The STL will always be useful, from now on. Who can say what GUI approach will win in the end yet?

      The idea with C++ is not to have everything in the standard library, really, though I think stream IO is a big exception, it's only for very common things any program does. Very useful things like regex parsing is supposed to be in libraries. It's not hard to find good candidates. And if you don't care to look too deeply and judge the alternatives on low level merits, it's not to hard to find out the most commonly used, or best supported library, and use that.

      It does make C++ complex. That is, a Java book covers really everything you need (but not in detail, of course), but it can point you in the direction, it can say, "use AWT or SWING". A C++ book can't do that. It is telling you about a language, and you still need to find the classes and toolkits you will rely on for a lot of parts.

      To me that's fine, that's C++ matching the real (not ideal) world, with the real (and ideal) chaos of the practical world.

      One last metaphor: A multiple-choice test is easier to write, easier to take, and easier to grade, but it's not a "better test" than an essay based test. The chaos of essay answers, their unpredicability, their potential to give a valid answer the author of the test didn't anticipate, these all make the essay test the "better" type of test.

      PS: I think this has been a very interesting conversation, thank you for sharing your ideas. I hope you understand my comments in the same vien.
      I am sure of myself, but I am sure I might be wrong too. And there is a great deal of room for Java to mature and me to become convinced it's all I need anymore. But by then it will have operator overload.

      --

      -pyrrho

    5. Re:exceptions by ttfkam · · Score: 1
      well, one, I bet you someone does have a class system to abstract differences between Oracle, Sybase, MySQL, etc. etc. Without checking, I would still bet that.

      A good bet. A lot of shops have one of some quality or another. That's the point: all this time spent reinventing something that looks like what everyone else has been writing. Unless you work for a database vendor or database tools supplier, what does this have to do with the job at hand? Wouldn't it be better to defer this job to folks that are actually concentrating on the problem? This way, you and I can concentrate on our own problem sets. Division of labor at its finest!

      Now please don't misunderstand. I am most certainly not advocating one particular implementation take over and be forced down everyone's collective throat. While I have to admit sheepishly that I actually like Swing's API, I think the fact that it was done in an all or nothing manner was a mistake. FYI: There are folks that have API-identical GUI libraries that compete with Swing. I've forgotten the URLs, but they basically only require that you instantiate their own version of JFrame and work from there.

      But I digress. JDBC is great precisely because it has no single implementation. It is only the interface. RDBMS1 vs. RDBMS2: who cares? Same interface. There is power there. Power in training. Power in end-developer implementation. Power in availability. Power in cross-platform uniformity. The mistake of Swing (and AWT) wasn't the implementation any more than JDBC is flawed because of the JDBC-ODBC bridge. AWT should have been interfaces as well with competing GUI toolkit implementations underneath one-upping one another for your patronage.

      However, Swing has an advantage over C++: at least there is a common API. There is little reason to make multiple toolkits with gtk_button structs vs. qt_button (or whatever the hell it is). Have a different paradigm for GUI? Great! Make an interface for it and write your implementation to it. But the common mode of "add button to panel, set event listener, and manipulate table" encompasses >90% of all the GUI toolkits out there.

      Unfortunately, it makes economic sense (in a sick way) to make things less interoperable. But never confuse this with some form of technical advantage. All it does is lock the code to a particular toolkit.

      My rankings are as follows from best to worst:
      1. Clean, cross-platform, language-specified interface with execution-time toolkit selection
      2. Clean, cross-platform, language-specified interface with compile-time toolkit selection
      3. Clean, cross-platform, language-specified API toolkit
      4. Cross-platform API toolkit
      5. Clean API for few or one platform
      6. Original MFC (Sorry, couldn't resist)

      As you can see, Swing is not my first choice. Unfortunately, no language has given me my first choice to my knowledge. (I'd love to hear differently!) But this is why C++ ends up further down my totem pole. And this is where JDBC shines. I want to talk to databases. I don't want to write cross-database abstraction layers. I don't want to wrestle with ODBC driver incompatibilities. And if I switch from SAP DB to PostgreSQL to MS SQL Server to Oracle, I don't want to have to deal with differences in how a result set is iterated. It's a result set for pete's sake! The datatypes are defined by SQL92 (among others). It's a solved problem. It's like all of those people who keep writing their own linked list implementations in C++. Why? Don't you have better things to do?

      Linked lists. Databases. Threads. GUIs. Same problem, just further up the chain.

      You're right about the fact that the chaos of the real world can be a great thing. Diversity is strength. I say diversify that implementation to your heart's content behind that nice, clean, consistent interface.
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    6. Re:exceptions by pyrrho · · Score: 1

      I think I see where you are coming from. I have a disposition to cross platform myself. And I admit C++ GUI stuff can trap you platform independence. C++ as a standard changes more slowly than a Java can, driven by Sun. C++ is at the WORA stage for console applications!

      But C++ developers themselves are not stuck, because the design is open to a lot of different add ons, things that can almost redefine the language itself, like the Standard Template Library. The most efficient and fastest systems are pretty much still C/C++ applications. The generic programming and the way it compiles is really exceptional.

      The linked list example has long ago been changed to, "you can't touch the collection in C++".

      STL, the Standard Template Library from HP has been absorbed into the C++ Standard Library. There is nothing like generic programming for some good list linking. I admit, I had been one of the list-linkers you allude to, linking lists and writing special collections all the time, casting my void pointer, much to the scorn of other programmers who had gone in from the jungle. But no more!

      The STL handles lists, maps, hashes, deques, vectors, even strings! Much of the indirection compiles away with templates.

      Java now has generic programming syntax, but I do not believe it compiles away because the type system in Java, but I could be mistaken as I have not use Java generic programming. I do think that is a good addition to Java anyway as it's a powerful idiom.

      In fact, I think C++ and Java can really share a big space, I'm fine with Java tying business servers together (many written in C++, probably). But C++ is not going to stay out of GUI's because speed will always matter in GUIs.

      --

      -pyrrho

  254. I've never used websphere but by TheLastUser · · Score: 2, Interesting

    I have been running a multi server site with resin for a few years now. I haven't seen any of the versioning issues that you mention, even when I converted from Apache/JServ jdk1.1 to resin jdk 1.3.

    I do think that the full 3 tier setup is probably a pain in the ass. Maybe a lot of people are resorting to this complexity without reason.

    Moving to a war deployment was the best thing we ever did. We have an ant script that checks out the entire web app from cvs, tags the tree, compiles the app, tests and deploys the war to our staging server.

    I have found that Java web apps can be more fragile than say perl/CGI so you have to take care , but the advantages for complex sites outweigh the problems.

  255. Well... that's what happens by jadavis · · Score: 1

    Well... that's what happens when you have a high-end hardware company write a programming language: They're drumming up some business!

    --
    Social scientists are inspired by theories; scientists are humbled by facts.
  256. Languages don't write bad programs... by pyrrho · · Score: 1

    ...people do. Stupid people.

    --

    -pyrrho

  257. java just plain sucks by pigscanfly.ca · · Score: 1, Troll

    Java sucks. Its slow , its all touted "cross platform compatability" is a bunch of hogwash . Sure if everyone is running the same JVM fine , it works . But people dont and Sun doesnt even properly test there different JVMs . They tend to all be incompatability and require little workarounds (hello porting C to different languages) . Java imposes guadafual OO require menets ; sure OO makes sense , but they take it way to far . Then java load times are just plain horrible , and quite often can lead to users just saying "fuck it ; lets try competitor XYZs app" .
    Anyone who uses java does so because they are lazy . Java is for and by lazy programmers who dont even bother to properly make sure things work from one release to the next.
    Sun distributed (use google to find it) an internal memo telling its staff not to write important programs in java because it was inherently unreable and unstable .
    Plain and simple ; Java sucks .

  258. Good point by GunFodder · · Score: 1

    Why waste all this money on processors? Instead let's spend five times as much on development by doing projects in assembly. That way we can spend more on the development CPU power required as well as the office space for more programmers. Don't forget the HVAC costs for those offices. And then add up the increased costs of supporting code that is more difficult to troubleshoot and add enhancements to.

  259. Re:Programming lehttp://developers.slashdosson 101 by wasabii · · Score: 2, Interesting

    myCategory.getOrders().size();
    myCategory.getRequ ests().size();
    myCategory.getCriticalOrders().siz e();
    myCategory.getCriticalRequests().size();
    my Category.getOrdersByState(state);

    Or various other ways. The idea is to map the logical functions into the object model so that the code does not have to be concerned with the underlying data model.

    getOrders() returns an object that implements List. size() runs a COUNT query. .get() runs a select. This can be lazily cached very very easily (most object persistance frameworks support caching and lazy objects).

    This instantly allows the object model to fit into your existing programming methods. This means that getOrder() returns a real Java list, just one that happens to transparent run SQL queries on access. It would have all the common functions a List does, size(), iterator(), etc. Depending on the type of relationship.

    Yes, this is overhead. However, it's amazing how fast it actually does perform, thanks to intellegent caching which you do not get for free writing raw SQL statements. Caching of course depends on your implemention. Would be hard to cache if you were running a cluster of boxes. You get the point.

    Part of your mapping defination is weither or not the getOrders() list should fill on creation of the category, or weither it should fill on access, or weither it should fill in blocks of 10 or 20.

  260. Heartily agreed - SUV in all its glory by BigGerman · · Score: 0, Flamebait

    It is big - my family and I are protected
    It has a lot of utility in it
    If some kid cannot handle / afford one - not my problem
    If some asshole thinks of Java as way to script web pages and does not care / understand J2EE and Objects - he just made big unemployable ass of himself.
    Java makes my objects sing.

  261. MIT Grad Students vs. Ga Tech Sophomores by Chris-S · · Score: 1

    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.


    \begin{humor}
    That's funny. I had a couple of sophomore co-ops down here at Georgia Tech build a significant J2EE app with JSPs, servlets, and an Oracle back end in a semester. They had only one semester of prior Java experience. Perhaps you should beef up your CS curriculum up there at the "Georgia Tech of the North!"
    \end{humor}

    In all seriousness, I enjoyed your article. I thought you were too hard on Java, but Java's honor has been amply defended in other posts.

    I think you're too critical of your affinity for Lisp. After starting out with Pascal and the C languages (C, C++, Java) and discovering functional programming later in life, I find myself drawn to Lisp (and ML, and ...) - especially for AI. Paul Graham has a pretty good article about the timeliness of Lisp that may make you feel a little better about your "Lisp zealotry."

    Happy Hacking!
    Chris
  262. Re:Java is like Windows XP, can anybody say bloatw by Trejkaz · · Score: 1

    Well web stuff is a server app. When was the last time you saw an entire PHP web site running on the client side?

    --
    Karma: It's all a bunch of tree-huggin' hippy crap!
  263. Who are the REAL Knuckleheads here? by alexcampbell · · Score: 1
    Comments such as
    This to me is a sure sign of a guy stuck in academia.
    indicate that the knucklehead around here is not Philip Greenspun. Greenspun may be a smartass, and possibly an egomaniac, but his technical credentials are first rate. Let's have a look at his achievements over the last decade:
    • Teaching Computer Science at MIT. How many of you would be asked to teach Computer Science at the most prestigious tech school on Earth?
    • Founded ArsDigita, and wrote large tracts of the ArsDigita Community System in TCL. That company and product became the foundation for many Fortune 500 companies' websites.
    • Through his evangelism, course developments at MIT, and the ArsDigita University, helped to bring web courses like MIT's 6.171 to mainstream university teaching.
    • Wrote two of the best technical books I have ever read, and put them up for free in HTML on his website: Internet Application Workbook and Philip and Alex's Guide to Web Publishing
    • Created and developed Photo.net, which averages 6 million hits/day. See more statistics here.
    The above are why I question the intelligence of people who post comments like:
    Why do we care about his opinion? Did he build any large scale scalable web application? Was he involved in maintaining and supporting any commerical projects? Did he make any critical insight of the strength and weakness of these development tools? Sounds like he draw his conclusion mostly from some student project. In that case I would say Microsoft wins hands down. Microsoft is very good at making and packaging complete development tools and is relative easy for novice to learn and use. Does it make VB the best programming language over other alternatives? I won't make that conclusion.
    So to answer these supposedly rhetorical questions: We do care about his opinion. He has built more large scale scalable web applications the many of us will in a life time. He was CEO of a company that developed and supported commercial projects for Fortune 500 clients. He has spent the last decade making critical insights into everything. Let's make our own conclusions then.
  264. Re:Quarentine the SQL by karlanka · · Score: 1

    So do you really believe you use Prepared statements to minimizes sql injection. Ever given a thought what's actually happening on the DB-server? Heard about hard-parsing/soft-parsing/no-parsing? I wouldn't like to have you near a real DB.

  265. Re:Java is like Windows XP, can anybody say bloatw by Anonymous Coward · · Score: 0
    Its slow as fuck (all that crap about JIT optimization looks good on paper, but its CRAP)

    People seem to say this a lot. I can only assume you're using Java 1.1 on a Pentium-75. Or worse, using Microsoft's diseased mutation of Java 1.1.

    I wrote a MUD client in Swing (because I wanted something simple but with my favorite features, and because it was a way to teach myself Channels and StyledDocuments), and it runs perfect on a P2-400 in Win98. I repeat: perfect. No slowdowns. No slow drawing. On a Pentium II.

    As usual, most programmers suck and therefore most programs suck. Learn to program well and your Java programs perform well. It really is that easy.

  266. Java = training wheels by Anonymous Coward · · Score: 0

    Solution: don't hire inexperienced (err, bad choice of words) -- I mean weak -- coders. Forcing everyone to use a child's language like Java and enforcing getFoo() setFoo() crap anywhere is like forcing me to use training wheels on my mountain bike.

    1. Re:Java = training wheels by ttfkam · · Score: 2, Insightful

      Uh hunh. And how many buffer overflow errors have you seen in Java apps? Not just failures. Bugs that open up holes to the server.

      So how many of your apps have been security audited?

      Read securityfocus.com and BugTraq for a month and then try tellig me with a straight face that a whole hell of a lot of C and C++ coders need training wheels.

      Java and other languages (especially scripting languages) are getting faster and smaller in memory footprint quicker than C programs are reducing the number of security related bugs.

      Use the right tool for the job and, more often than not, C is not the right tool.

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
  267. Swiss Knife, Eh? by f0rt0r · · Score: 1

    Cool. Show me ( in Java, no JNI allowed ), how to retrieve the free space on a hard drive partition. Let's say the Java app is running under Windows 2000, just to make it more specific.

    --
    I can't afford a sig!
    1. Re:Swiss Knife, Eh? by dup_account · · Score: 1

      Sure, right after I get this .NET thing running on my HP-UX machine

    2. Re:Swiss Knife, Eh? by Directrix1 · · Score: 2, Informative

      Cool. Show me (in C, no libraries allowed), how to retrieve the free space on a hard drive partition. Let's say the C app is running under Windows 2000, just to make it more specific. You know at some point java does have to bind to native methods. JNI is necessary at some point because this is a Virtual Machine. Also, in all the programs I've written, I haven't had a single problem with a user needing to look at the free disk space in their program (albeit, I haven't written any installers, jars rule all). Sure it can be kind of neat and all to see a number, but Exceptions work wonders. Although, I do agree, a Disk class or something similar would seem pretty logical.

      --
      Occam's razor is the blind faith in the natural selection of least resistance and in universal oversimplification. -- EF
    3. Re:Swiss Knife, Eh? by f0rt0r · · Score: 1

      Heh, yeah, I knew the answer before I asked. I was really bullish on Java until I hit that snag. After searching the java developer boards at sun.com and posting the question after I did not find an answer that did not include my having to use JNI and learn another language just for that small part of my application, I decided Java did not mean my needs.

      Being a hobby programmer, I don't have time to learn
      multiple languages ( well, I am acquainted with C/C++/Java, but I don't count that as "know" ). I write my applications carefully, with the assumption that the user is clueless, so in the case of the queued file transfer feature of my application, I needed to ensure the target hard drive had enough room for the queued files, and would give the user the option to override my "not enough room on target" error and try and transfer the files anyway. This would handle the case where the user wanted to start the transfer the files right away, and knew he would have cleared enough space for them before the drive filled up.

      You are correct in that I could just wait for a write to fail and then handle the error from there, but I like I said, I tried to protect users
      from themselves, and make them have to force my application to do something that appears stupid.

      oh, giving Java access to the partition information was reportedly on the "wish list" for the next release of Java ( the language spec or JRE, I don't know which ), but that doesn't help me now. I figure if I am going to have to learn C/C++ just for one part of my application, I might as well use it for the entire application with reduces the number of languages I have to learn to get the job done. That said, I will have to adapt
      any non ANSI code for each target platform, but I would rather do that than learn multiple languages.

      Am making things more difficult than I have to? I will find out the answer to that question after I finally get my application done. :-)

      --
      I can't afford a sig!
  268. .Net sucks by Anonymous Coward · · Score: 0

    We have been trying .Not for 4 months and it sucks bad ...we just wrote the whole app in a month in Java

  269. M$ paying to spread fud on Java by Anonymous Coward · · Score: 0

    Seems like this another paid M$ fud on Java like they are doing in Linux

  270. general versus specific by ttfkam · · Score: 1

    So you don't use the general case malloc() and free()? You have your own case-specific versions? Or didn't you know that malloc and free are tailored toward a general case of memory allocation and alternative version could be much more efficient if the size of the chunks were known ahead of time?

    --

    - I don't need to go outside, my CRT tan'll do me just fine.
    1. Re:general versus specific by Mr.+McGibby · · Score: 1

      So you don't use the general case malloc() and free()?

      No bonehead, I use the standard malloc() and free() like most do. The original posters point was that using GC is just as fast as not using one. My point was that he was wrong, not that my way is the fastest way. Of course it isn't. By your logic, I should write everything in assembly since that would be faster. Hell, I should just design custom hardware for everything I do.

      --
      Mad Software: Rantings on Developing So
    2. Re:general versus specific by ttfkam · · Score: 1
      The original posters point was that using GC is just as fast as not using one. My point was that he was wrong, not that my way is the fastest way.

      It can be. Citing Hans Boehm:

      "Performance of the nonincremental collector is typically competitive with malloc/free implementations. Both space and time overhead are likely to be only slightly higher for programs written for malloc/free (see Detlefs, Dosser and Zorn's Memory Allocation Costs in Large C and C++ Programs.) For programs allocating primarily very small objects, the collector may be faster; for programs allocating primarily large objects it will be slower. We expect that in many cases the additional overhead will be more than compensated for by decreased copying etc. if programs are written and tuned for garbage collection."

      Now I admit that Dr. Boehm may be biased since he wrote and maintains a garbage collector. However the link listed has actual analyses of both methods: explicit deallocation and garbage collection.

      If you can accept that computers (through compilers) can generate code that rivals or exceeds most human abilities in many cases, why is it so hard to see that memory management may be reduced to a set of algorithms as well?
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
  271. JAVA CAN DO EVERYTHING by Anonymous Coward · · Score: 1, Interesting

    Ok, that was just so you would look at my post (Java was never designed to do EVERYTHING.. one day this may be different though..)

    If people want scripting languages.. Java does that too.. Look into things like WebMacro..

    Introspection is one feature that Java/WebMacro handles nicely..

    #set $user = $DB.Users.fetchOne("where ID = '7777'")
    Name: $user.firstname $user.surname
    Email: $user.email

    We developed a multiplatform system (originally Linux, now Solaris) that is the equivalent of having a c backend and a php frontend that has no hardcoded SQL queries in its scripting or core levels and handles server high server load on a single machine. This system was written in under 4 weeks, and supports LDAP, JDBC (Any Database). It has connection pools, content management / access control, reporting, threaded handling, caching of data (the list continues)... We did it!

    WebMacro, there is nothing it can't do!

  272. Object-functional by be-fan · · Score: 1

    In his latest post to his blog, he mentions that what he would like is a Lisp with a more modern type system. I believe this type of language is often called an "object-functional" language. There are some nifty languages out that kind of fit this model, Dylan probably being the most complete one so far. However, it doesn't have a mathematically formal type system like ML, and is missing some new type system features like parameterized types. MIT's Goo system is nowhere near as far along in development, but looks like a logical progression of Dylan (returning to the more traditional prefix syntax) with an infusion of some modern type theory.

    --
    A deep unwavering belief is a sure sign you're missing something...
  273. Use Hibernate, JDO, Castor, EJB CMP instead! by Anonymous Coward · · Score: 0

    Widespread use of object persistence layer is one key difference of J2EE from other web development languages.

    Using these technologies eliminates the famous 'impedence mismatch problem' between OO paradigm and ER schema and you may even develop the whole enterprise ready applications w/o writing a single SQL query.

    In addition to MVC frameworks like Struts, WebObject , and etc it's where the strength of J2EE lies IMO.

  274. Those're faults of PHP, not dynamic typing in genr by Tablizer · · Score: 1

    I prefer the Perl-like approach of having different operators for string or numbers. It reduces confusion, at least for me. Except, that in Perl you keep accidently using the number comparison out of habit. Thus, whatever is chosen for the operators, it should not too closely resemble the current common languages. When using PHP, I tend to make my own comparison functions. Besides, usually I want to trim spaces from the edges before comparing anyhow, so the functions serve 2 purposes. And, you can control type mismatch crash messages better.

    As far as the merits of strong typing versus "scripting" (dynamic typing), I think it is personal thing. What F's up person A may not F up person B nearly as much. I myself prefer dynamic typing, for static typing results in too much code. The errors caused by slogging through more code and formalism are greater than the errors caused by dynamic typing for me.

    More on my dynamic typing opinions can be found here

  275. If Java is a SUV, what is C# by Azethoth666 · · Score: 1

    Let me preface this by saying I like Java because I am lazy, but I hate it because like a weird programmer's crack it has rotted my skillz and made me functionally unemployable.

    As a former Adobe employee who spent quality time making web applications using: 1) Apple's Web Objects 2) JSP / Tomcat 3) JSP with JBoss / Struts / Tiles / etc. 4) Perl I have to say that I preferred 3. Especially Struts & Tiles which finally got rid of the crap we had to put up with before.

    As for database we used Oracle, but we were switching away to SQLServer because of usurous Oracle licensing fees.

    What I want to know though, is C# a better glue than Java? Feature wise I really liked it, our Architect liked it, but politically we could not use C# because "ooh, Microsoft made it". Yes that is a stupid attitude but such is life in a big company.

    PS: similarly, politics dictated the use of Webobjects. Steve told John: "we _should_ use Webobjects [for our project]". Ugh.

    For the curious the project (Adobe Studio) got cancelled, but was live for a year or so to underwhelming user demand (all 25 regulars, hehe, bless ya!).

  276. Re:Quarentine the SQL by StillNeedMoreCoffee · · Score: 1

    Well all I can say is I use Oracle for my DB and I have tried with their prepared statements to do SQL injection. Haven't been able to break in yet.

    Maybe you have never used prepared statements. You set up the statement before hand, usually hard coded in your code so not a problem. You have established the template for the query ahead of time and it is cached typically in the DB server saving the optimization compilation time.

    When you do get around to using the statement then you fill in the fields individually. The usual injection schemes take advantage of the fact that you are concatinating text to build the SQL. In this case you have broken that process and there is not string concatination process, so most if all injection problems disappear.

    So what DB did you think was a real DB?

    Have you every done SQL injection with a prepared statement that the prepared statement part was not a concatination.

    I dont know but other DB's might not do it the same way on the server side. If they don't than that is a problem. But does not seem to be one with Oracle.

  277. Didn't Micro$oft give large funding to the MIT? by Anonymous Coward · · Score: 0

    That would explain this incredibly crappy troll.

  278. Checkout WebObjects! by MrHatken · · Score: 1


    I agree the Java platform currently (in its "standard" form) lacsk entry to mid-level ease-of-use that PHP and other scripting based platforms allow, and also .Net allows.

    However, check out WebObjects (Apple's Java SE based Web development and deployment environment). It blows away PHP and the others, and .Net, and Java2 EE for everything but high-end enterprise apps.

    If it doesn't blow your mind (particularly the DirectToWeb and DirectToJavaClient frameworks) then you're probably dead already :-) It gets MVC right, persistence right, ease-of-use right etc.

    Seriously, check it out (in fact, run don't walk to get a copy). It enables development on Windows and MacOSX and deployment on any Java 1.3.1+ environment (pretty much).

    Cheers,
    Ashley.

    PS I am not an Apple employee although I have done some WebObjects training for them and received educational grants (ie Macs to use in research etc).

  279. Re:Programming lehttp://developers.slashdosson 101 by Tablizer · · Score: 1

    Those things sound like stuff you'd write for those useless reports the bosses always want

    I don't think you would survive very long in the business world. "Why boss, this report idea is stupid. You don't need it. Here, I will make you a trivariate politronic inventory system instead."

  280. Um, no by autopr0n · · Score: 1

    If you have two UI windows and 40k lines of code, Visual basic is not better. Yeah, doing UI stuff in java isn't all that fun, but if you have a large amount of actual code that needs to be written, or any kind of complex algorithm then you'll probably want to do the UI in VB and the actual 'code' in C#

    --
    autopr0n is like, down and stuff.
    1. Re:Um, no by Pfhreakaz0id · · Score: 1

      How 'bout a UI app with 25 or 30 UI windows? That's the one I wrote. By myself. In two months (I could write it in one month today) Still in production today.

  281. ok by pyrrho · · Score: 1

    No, I meant a couple years ago, but it's wonderful I can map memory in Java now. I suppose I serialize my object in there if I want to use it to store an object's properties?

    The C/C++ thing, thanks for asking, I say that C/C++ is a single language which is distinct from C and this is because C/C++ is a multiparadigmed language. One of the paradigms is traditional C.

    C++ alone is another question. I go by what I see in language benchmarks and note that C++ apps invariably use streamio, I don't. I've used C++ since 1994 and always felt that stream classes were sort of an example of how to make something object oriented, and to make the example succinct, simultaneously acting as an example of how NOT to make one.

    I don't like using stream classes to do IO, therefore I must be talking not about C but C/C++. Indeed, you cannot know what kind of language I really use until you know the paradigm I prefer. Do you doubt there is an excellent paradigm in C++? There are paradigms in C++ where you do not use pointers!

    This is the scary thing about C++, isn't it? The unknown, it immediately implies that it will be hard to understand, doesn't it? Any ole paradigm he wants!?! Scary.

    universal database API: well, I have not worked very much with databases, my work with Sybase gave me the impression that they had libraries for any platform, at least they did the platforms I needed.

    Posix threads? GUI? There is a lot of GUI toolkit--- OH. UNIVERSAL!!!! I get it. Show me all the choices Sun has made for me in C++? No they havn't. IBM made XML/XSLT parsers though, except they merged it with Xerces/Xalan now.

    RPC? Well, the
    was
    CORBA... and there
    will be
    CORBA in the future. But I'm not advocating it. Frankly, I think RPC is not a great thing. Why exactly do you want to impose a function call idiom on a message send, exactly? I mean, messages and function calls can be handled differently with great success, because they are very different things... basically can be well handled asynchronously, messages are by their nature asynchronous. I had to work on a Java application which was using RPC (CORBA actually) and it had a dead lock. It took a while to find it. It was a totally different program with an infinite loop. Because the programmer liked thinking about the message as a function call, ther program had no way to react to a non-responsive application that did not reply to a message. Modern RPC now generally provides a timeout mechanism. So you can handle the call as a message. See, after the time out, what if the application answers... well, the function is over, I'm sorry, too late! But it's really just a message. Handle messages, it's fun. That's my advice.

    I do like RPC for desktop plugin type functionality. It's good then because the idea is you are designing for local calling (LPC), and the use of RPC just means that you can actually have plugins remotely located. Cool.

    Like a desktop clock that really is the same clock for the whole company ---no, the whole WORLD! Yes, that's it! But if you are designing something meant to be distributed and not provide a single experience like a desktop with remote parts, then it's actually easier to handle communication as communication rather than as a function call.

    C/C++ is a Swiss Army Knife because it's multiparadigmed. You therefore have multiple blades, they all work differently.

    There are libraries for everything and class libraries for everything you care to name.
    Furthermore, these days there is probably an OSS solution that is free as in decently-done, or possibly done by IBM.

    Hell, even the creator of C++ thinks there should be a garbage collector in C++.

    No he doesn't.

    he says:

    I'd like to see the C++ standards committee explicitly acknowledge that garbage collection is a valid implementation technique for C++, but I don't want to make the C++ semantics dependent on a garbage coll

    --

    -pyrrho

    1. Re:ok by ttfkam · · Score: 1

      C++ is a Swiss Army Knife. Java is a set of power tools. For the tight spots, the Java power tools get a bit cramped and can't quite line up with the problem. In these situations, you need C++. In cases where you just want to cut a big board with a smooth curve, Java works out.

      Fair enough? By the way, you're right. We do tend to agree more than disagree.

      Sorry for misrepresenting myself with the note about Strousrup. I actually didn't mean to imply that he advocated the mandating of GC. That would certainly be a change of tactics for him to diverge from his long-standing position of not paying for what you don't use.

      --

      - I don't need to go outside, my CRT tan'll do me just fine.
  282. WARNING by turgid · · Score: 0, Offtopic

    Evil, wicked, twisted porn link in the above! And a vaguely amusing picture of the back of a bare-naked lady including her bare bottom!

  283. Actually, you just illustrate my point by Moraelin · · Score: 1

    Thanks for illustrating my point perfectly. When you get to that kind of a code size, you start needing to actually know what's in a variable. Whether by strict coding standards, or by using a standard language feature, but you do need to make sure which one is a string and which one is an int and which one is neither.

    _You_ obviously already understood this. At which point, yeah, I don't doubt that you can write a good program in PHP or any other language. (If not necessarily with the same ammount of effort.)

    However, half the blogging monkeys out there who go on a "Java sucks, PHP rules" rant, _don't_ understand this. Their rants are based precisely on "PHP rules because it lets me never declare variables, use them uninitialized, and won't complain when I alternate assigning ints, strings and arrays to the same variable."

    Unlike you, they're _not_ using any clever coding standards to overcome limitations. Au contraire, they're happy and proud that they can throw together an unstructured code disaster, without any design work or even without any basic forethought. _That_ is what they like about script languages.

    _Your_ programs may well still work correctly at 600,000 lines of code. But try getting one of those monkeys to write a similarly sized program, with their unstructured weak-typed approach, that they're so proud of. I can guarantee that it won't work anywhere near correctly any more. In fact, chances are it won't even work at all.

    _That_ is my problem with such blogs/rants. That in the end they're not even about Java vs PHP, they're really just about prototyping vs writing maintainable code. They're judging whole languages and paradigms based on little more experience than throwing together a 10,000 line unstructured spaghetti-code prototype. Out of which 6000..7000 lines are just HTML, anyway. And then extrapolate that experience as, "hey, look how quickly I threw those 5 pages together! This must be the One True Way to program anything. All that structured programming and type checking is just a sucky waste of time."

    Which, as you discovered yourself, is just no longer true when you get in the hundreds of thousands of lines range.

    --
    A polar bear is a cartesian bear after a coordinate transform.
  284. Re:Quarentine the SQL by karlanka · · Score: 1

    You don't use prepared statement to avoid SQL-injection. You use it to avoid server-side parsing. Make sure you only call prepared statement once per unique SQL in each physical DB-connection? Quit hard to do if you have a connection pool. But this is the way to go for max scalibility.

    To avoid parsing is the number one thing here.
    (using bind variables).
    Avoiding SQL-injection is just some thing extra you get for free. But this can be achived with
    statement aswell.

  285. Bzzzzt myself by EnglishTim · · Score: 1

    Doh.
    Didn't even read the code...

    I feel not unlike a fool.

  286. Use Stored Procs by Anonymous Coward · · Score: 0

    Stored procs are compiled and optimized at the SQL database level. They offer a public interface to your data. Never send direct SQL code. It is unmaitainable as there is no decoupling between the data and business logic.

    The above is so obvious to me I feel that I must have missed why you'd think SQL inside the code is a good idea. Beside using a SQL engine which doesn't have stored procs of course...

    If you use Java then you should know a little about using design patterns and using public interfaces. Then you should also know that you should probably prefer PostgreSQL instead of MySQL. Stored procs are simply a must if your application is to grow to any length.

  287. Java's an SUV--QB is a Vespa by johnshirley · · Score: 1

    Yeah, so Java's the SUV of languages. No argument there. We've got a big contingent of (Swing) Java developers in the company I work for (MCI... rub it in). It takes them months... years even to put out updates to existing programs.

    I, on the other hand (I'm gonna get flamed for this, I just know it) have been using QBasic to build scripts and basic programs and have been accomplishing the same thing in only hours or days.

    Yeah, it's antiquated. Yeah, it's sluggish and akward. But it's free and works on the limited machines the company allows us to use.

    So, if I were to continue the analogy, QB would be the Vespa of languages; it's slow, doesn't have many upgrade options, doesn't have a big following, and ultra-economical... but it'll do exactly what you tell it to and hardly complains about it.

  288. Observed first hand at Sun... by bigusputicus · · Score: 1

    Last year I was on a project that required 17 Java programmers to complete a 3 month project that could have been completed by 1 PHP programmer and 1 systems programmer in 30 days... why would the company proceed in this manner. 1) its like a new tool-toy, its used for everything even when it should not be. 2) its politically correct. 3) its all part of the marketing campaign that must be one of the most successful in hi-tech...

    1. Re:Observed first hand at Sun... by Anonymous Coward · · Score: 0

      4) They don't know PHP/Perl/Python

      5) Some managers like to build empires of
      indentured servents more than they like
      making sharholders money.

    2. Re:Observed first hand at Sun... by bigusputicus · · Score: 1

      Hey... you are not far off target with #4... The two most popular scripting languages at Sun used by the Solaris operating system organization is bourne shell and ksh... when I attempted to write to tools using perl I was told to use either sh or ksh... the computing environment at Sun in the solaris organization is based on 1980's technologies and tools... its really sad... basically they've built so much on-top of bad processes that everyone that wants to make a change, makes the change on top of the existing mess using outdated tools... And don't even get me going on the Java organization... its so confuscated people can't get their work done...

  289. maybe SUN should read Greenspun's discussion :-) by robin147 · · Score: 1

    http://tinyurl.com/odo9 http://blogs.law.harvard.edu/philg/comments?u=phil g&p=1762&link=http%3A%2F%2Fblogs.law.harvard.edu%2 Fphilg%2F2003%2F09%2F20%23a1762

    --
    --robin
    ...Boycott Disney
  290. Java == (SUV || car || tank || ... ) by rpmichel · · Score: 1

    I have a very good book on my shelf by Greenspun that taught me a lot about web programming, but from a very theoretical view.

    At first glance, the SUV analogy seems to make sense, but there are a number of key differences. One thing going for the analogy is the idea that if you're going to get a cup of milk at the street corner, a Hummer is overkill when a motorscooter will do. If his students' project was the equivalent of getting a cup of milk than they were probably in over their head with Java.

    Where the analogy falls apart is in the idea that SUVs are loaded with features that aren't really used. True for SUVs, not true for Java. Also, SUVs (particularly the big, fancy ones like Hummer's) are typically for people with lots of dough who don't care that they're not getting their money's worth. (Profit on a Saturn is $300 a car, profit on a high-end SUV can exceed $15,000.) Unlike SUVs, Java can be downloaded and used free of charge. It's available to the masses and, not only that, virtually all of the feature are used to great effect.

    I think Greenspun uses an SUV as a comparison because he's (possibly unconsciously) taking a dig at Java. People already have a fairly negative worldview of SUVs. He mentions that his friend with a Hummer got stuck in the desert, indirectly suggesting that this is what happens with Java. The truth of the matter, of course, is that if Java was an SUV, it would not get stuck offroading. It's the one vehicle I'd want to have if I were stuck in the mud.

    Maybe Greenspun's rant should be ignored entirely, though, because he says things like:

    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.

    JSP is obviously part of J2EE so the sentence fails to make sense. I think he means JSP vs Servlets (or vs. EJBs). He seems unaware that Sun's actual recommendation for web sites is JSP Model 2 (not used in his test.) What distresses me most about this sentence is that MIT CS students have gotten this far and are not using MVC. Something's wrong in their curriculum.

    His side rant on binding database variables is also flawed. He's upset about the Java's SQL "PreparedStatements" using question marks for variable binding. Even if he's using JSP Model 1, he still shouldn't be dropping that kind of code in the middle of his JSPs. He should be centering his criticism at the JSTL's SQL tags, where the SQL code should really go.

    I think the bottom line is that Sun has spent little effort concentrating on JSP Model 1 and as a result, there is little support from Sun for inlining business objects and database code directly into JSP files. However, they did create a framework that allows programmers to build their own tag libraries. And the tag libraries out there are pretty impressive. Shortly after JSP was released, a vendor rewrote all of Allaire's ColdFusion tags as Java tags. When I read that, I immediately realized that Java was a much better investment of my time than most commerical off-the-shelf solutions.

  291. Re:visibly clueless-Question by randall_burns · · Score: 1

    At what point would you switch from say Jython to Java in your experience?

    Thanks!

  292. Re:Quarentine the SQL by StillNeedMoreCoffee · · Score: 1

    I'll check into that. Thanks for the info

  293. metaphor by pyrrho · · Score: 1

    Ok, I love a good metaphor--- wait, I mean, I even love bad metaphor... but I just don't see Java as the power tools to C++ swiss army knife. I see Java as the kind of quick construction mechanism. Like staple guns, where C++ would be the nail gun.

    Regardless, that's probably pushing the metaphor too far. Basically, Java is great if it really is faster to develop or deploy. I have not seen that yet. I've inherited Java programs with bad memory management problems. The code is very C++ like in that I don't see how it's quicker to write than C++. It needs to be compiled. I just don't see the advantage. For me to believe in a VM type solution or scripting language, I need to see the programming metaphor change or at least to see it handle a special problem domain.

    I see that java is getting the kind of support needed to support the B2B problem frame. I see how it has things making it nice to develop custom business systems. Not because of Java, mind you, but because of it's standard class system and the support of Sun, IBM, HP, etc. to make it fully featured in that area.

    Judging as a language, I don't see the benefits. As a platform... of course I see the massive support and some working solutions which is all it takes to convince me Java is worthwhile.

    Where we really disagree is C++ inappropriateness for high level work. I don't believe that. You can have automatic garbage collection if you want, in C++, you can use pointer-free paradigms (though I think that's overkill, best to limit pointer handling, but allow it), you can get as high level as you like.

    The only wrench in the works there is that there are too many choices, there are messy and even bad paradigms available in C++. Perhaps it's personal, but I don't mind the jungle. I think it's possible and worthwhile to have a lot of options and have to learn the meaning of each option before attempting to use it.

    e.g. if it's a big problem that the C++ stdlib does not have a GUI library... then I'd say, standardize one, you dont' need a whole new language for that, imho.

    --

    -pyrrho

    1. Re:metaphor by ttfkam · · Score: 1
      ...but because of it's standard class system...
      Judging as a language, I don't see the benefits. As a platform... of course I see the massive support and some working solutions which is all it takes to convince me Java is worthwhile.

      Exactly.

      Where we really disagree is C++ inappropriateness for high level work.

      These statements are more at odds with one another than I think you want to acknowledge. C++ is many time inappropriate precisely because it lacks a standard class system as complete as Java's. High-level mean abstraction. Abstraction requires libraries. You don't have to explain C++'s benefits to me. I know them well. I'm actually one of those sick bastards who likes template metaprogramming. But POSIX only takes you so far and I'm tired of researching the cryptic API of some thread library that really only offers start(), suspend(), stop(), join(), and minor variations of that theme. Yes, I know about the dangers of suspend() and stop(), but those problems have been solved (or at least managed) for some time as well. Implementation1 one day and implementation2 the next, but I want "thread" now.

      And of course, the final note that trumps all of our language advocacy: algorithm is more important than language.
      --

      - I don't need to go outside, my CRT tan'll do me just fine.
    2. Re:metaphor by pyrrho · · Score: 1

      you bring up a lot of interesting issues but some of them are more important to address than others.

      C++ is many time inappropriate precisely because it lacks a standard class system as complete as Java's. High-level mean abstraction. Abstraction requires libraries.

      I think you are saying that no standard library means the libraries that are available are not high level. No, if you can't find sufficient libraries, then fine, no argument, the Java one is better. I do not believe 100% of them are better.

      I did read about a Java debugger that will go backwards... that's cool. Algorithm is more important. A lot of the optimizations for Java are just arranging things the same way you would have to to optimize in C++.

      --

      -pyrrho

  294. Greenspun + ArsDigita was a SCAM by Anonymous Coward · · Score: 0

    ArsDigita was a big scam. It was the typical dot.com embarrassment. Phil Greenspun has a lot of balls to show his face in public (or on the net) after the fall of ArsDigita. My company paid him hundreds of thousands of dollars to make a simple server based on his Tcl based ACS. ArsDigita did not deliver anything and took the money. Turned out we weren't the only customers to get screwed and class action suits followed. Phil Greenspun was ousted. But he got away with the money. Now he can brag about his DA40.

    I will always remember visiting one of the ArsDigita branches and was shocked to see the rampant spending (40 boxes of $3000 sun flat panels) and the completely inept employees....not to mention their main focus was to recruit more employees, not deliver servers. The employees assigned to our server project were less than concerned about doing work and very concerned about getting rich. Arrogant as they were, they described their leader, phil greenspun, as a "megalomaniac".

    Incidentally, the friend with the hummer to which Phil refers, is weapons collector, Rob Silvers (also inventor of photomosaic.). The same employees described him as "insane".

  295. Oh Goody - "my language is better than yours" by JavaIsCool · · Score: 1

    First - the premise is that it is the fault of the SUV that idiots buy them who have *never* driven further off of the pavement than the sholder of the road. Secondly - as one who has programmed professionaly in Asm, Fortram, Basic (not VB), Pascal, C, C++ *and* Java, IMO Java fills a nitch and does so quite well. That is an OO language that is not tied to the past/hardware/os. I am sure that all of the other various languages mentioned in this thread are *very* cool. But come on folks - they are tools. Get a little perspective! Anyway - Java *is* Cool!