Fallout from the Java == SUV posting

Discussions

News: Fallout from the Java == SUV posting

  1. Fallout from the Java == SUV posting (135 messages)

    Philip Greenspun created quite a stir when he discussed one of his Computer Science classes. Students were required to complete a project, and they choose different technologies to do so. Based on watching these groups, Philip felt that Java was like an SUV: Overkill for how it is used, and can't even REALLY handle offroading. Java programmers pummeled him on his blog, email, and slashdot.

    His latest blog revisits the topic, hitting out at Java again by saying:

    "Lots of professional Java programmers emailed to say "If only those students had used Libraries X and Y, they would have done okay." Sadly X and Y were never the same in any two emails so it is easy to understand how the students went wrong (i.e., it is not obvious how one is supposed to choose among the 100 different ways to get something done in the world of Java tools)."

    Read: Fallout from the Java = SUV posting

    Original blog on: Java is the SUV of programming tools

    Slashdot posting on original blog entry

    I somewhat lost this guy when he started saying that to do anything tough you have to drop down to Lisp!

    Threaded Messages (135)

  2. Hah![ Go to top ]

    Java's just a fad... like the internet and the internal combustion engine.
  3. Freedom of choice[ Go to top ]

    freedom is never a problem for smart people.......
  4. Freedom of choice[ Go to top ]

    Not only that, but his students had a problem with JSPs and JDBC compared to PHP and .net, and extrapolated it to all of Java. Maybe saying that JDBC is fiddly just isn't controversial enough to get all the publicity he now has?
  5. SQL directly into content page ![ Go to top ]

    his students had a problem with JSPs and JDBC compared


    I think they wrote SQL directly in JSP pages.

    that speaks for itself.

    I have had Java/XML classes at university, too. Somehow we didnt run
    into similar problems.

    Maris
  6. SQL directly into content page ![ Go to top ]

    his students had a problem with JSPs and JDBC compared

    >
    > I think they wrote SQL directly in JSP pages.
    >
    > that speaks for itself.

    I worked on a large content management project, where the used CM product more or less FORCED you to write SQL directly into the jsp-page (so much for "content management" abstracting those details..), on top of that: there was no way to get to core functionality of the product elsewhere than in the jsp-pages through jsp-tags unless you wanted to try your skills at guessing what did what in extremely obfuscated code..
    Do I need to say that the provider of the unnamed CM product went into chapter 11 this spring?..
  7. Fallout from the Java == SUV posting[ Go to top ]

    Amazing, an opinion from a University professor with no basis in reality (neither the professor nor the opinion). As soon as I saw Lisp mentioned (without sarcasm) as an alternative, I felt comfortable ignoring him.

    I'm more interested in why the C#/ASP.NET group did just fine, yet the Java/JSP group stumbled. While I'm mainly a Java guy, I've seen enough C# to know that the API's (and certainly the language constructs) are very similar. Did web forms save the .NET folks? Was JDBC too hard? The author is too busy bashing Java and singing the praises of PHP (urg) to really explain why the Java group failed.
  8. What happened to MIT?[ Go to top ]

    This is the place where the internet and unix the swiss army knife of operating systems were born?

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

    This would be akin to naming your variables after the chip registers to make them easier to load :)

    Seriously, in some ways I agree that using PHP and other interpreted languages is easier than Java, but there are plenty of tools out there that are much easier to use than writing code in any language. When I want that level of simplicity I just use a tool like CodeCharge - it's language nuetral and ideal for generating applications from databases.

    Reminds me of when I stopped writing assembler and started using C ;)

    Rob
  9. Fallout from the Java == SUV posting[ Go to top ]

    Well, productivity is a java issue.
  10. Productivity[ Go to top ]

    You know, I see this sort of comment a lot, and I just don't understand it. Yes, it may initially take a little longer to create a Java-based program than a PHP or Perl-based program. But, that "upfront" cost is tiny compared to maintaining the application. I've had to support enough Perl programs to know that maintance on a script longer than 100 lines is horrific. Give me Java (or any other OO-based language) any day.
  11. Productivity[ Go to top ]

    Java can learn a lot from other languages like Perl, Ruby etc. Even simple functions like split, join, regular expressions are missing from the Java Core. Other features in my wish list are double dispatch, overloaded numeric operators, a more powerful select statement, internal iterators etc. Many of these are so simple to do and yet have not been introduced. If Java went open-source, I can bet that features will be introduced in a jiffy.
  12. Productivity[ Go to top ]

    Java can learn a lot from other languages like Perl, Ruby etc. Even simple functions like split, join, regular expressions are missing from the Java Core. Other features in my wish list are double dispatch, overloaded numeric operators, a more powerful select statement, internal iterators etc. Many of these are so simple to do and yet have not been introduced. If Java went open-source, I can bet that features will be introduced in a jiffy.

    Not to mention out/ref parameters. I find almost insulting that i must pass an array as a parameter to a method if I want to return from the method more than one thing.
  13. If Java went open-source, I can bet that features will be introduced in a jiffy.


    Well, dare I say as long as you sit back and wait nothing will happen.

    Why not help put pressure on Sun to open-source the Java core and secure the future of Java as an open royality-free standard?

    Join the Free Java Now Campaign and take action now. Yes, you can make a difference.

    Viva The Java Republic!

     - Gerald
  14. Productivity[ Go to top ]

    Not to mention out/ref parameters. I find almost insulting that i must pass

    > an array as a parameter to a method if I want to return from the method more
    > than one thing.

    Really? There are several good ways of dealing with the fact that java passes method arguments by value - including references, and wrapping your argument in an array is not one of them. Lets fix your design - not the language.

    Br - J
  15. Productivity[ Go to top ]

    Not to mention out/ref parameters. I find almost insulting that i must pass

    > > an array as a parameter to a method if I want to return from the method more
    > > than one thing.
    >
    > Really? There are several good ways of dealing with the fact that java passes method arguments by value - including references, and wrapping your argument in an array is not one of them. Lets fix your design - not the language.
    >
    > Br - J

    String f(String a, String b)
    {
    a = capitalize(a);
    b = capitalize(b);
    return a+b;
    }
    Let's say I want this, and I want a and b to retain their new values. How would you do that without an array/collection?
    And please don't tell me to fix the design, this is not design this is pain to make up for the language. Design is something else.
  16. Huh?[ Go to top ]

    String f(String a, String b)

    > {
    > a = capitalize(a);
    > b = capitalize(b);
    > return a+b;
    > }
    > Let's say I want this, and I want a and b to retain their new values. How > > > would you do that without an array/collection?
    > And please don't tell me to fix the design, this is not design this is pain > > to make up for the language. Design is something else.

    Strings are objects... Whatever changes you make to them in your "f" method will retain their new values.

    What's the problem?
  17. nevermind[ Go to top ]

    Strings are immutable.
  18. Huh?[ Go to top ]

    String f(String a, String b)

    > > {
    > > a = capitalize(a);
    > > b = capitalize(b);
    > > return a+b;
    > > }
    > > Let's say I want this, and I want a and b to retain their new values. How > > > would you do that without an array/collection?
    > > And please don't tell me to fix the design, this is not design this is pain > > to make up for the language. Design is something else.
    >
    > Strings are objects... Whatever changes you make to them in your "f" method will retain their new values.
    >
    > What's the problem?

    String are immutable. a = capitalize(a) is not changing a, is assigning a new object to the reference, a change that won't get out of f();
  19. in this case...[ Go to top ]

    Yes, Strings are immutable. But other "normal" objects aren't. If you're writing a String handling library, this is an issue.

    Someone had referred to a design issue before. Good design involves passing around objects as compared to Strings. Good design also involves not having long parameter lists.

    So, in your case, it's an unfortinate side effect of Java that Strings are immutable. But in general, most OO design doesn't revolve around Strings.
  20. in this case...[ Go to top ]

    Yes, Strings are immutable. But other "normal" objects aren't. If you're writing a String handling library, this is an issue.

    Strings are immutable for a number of good reasons. Java wasn't designed to replace Perl ... it has other things to worry about like threading. A mutable String type would have to synchronize all its methods or be thread-unsafe ... how fun is that?

    If you have to build an application around String manipulation, you may be better off to do all or part of it in a different language, or minimally avoid using the java.lang.String class. Java's not great at everything, and when anything tries to be all things to all people, the result generally sucks. Java is no exception to that rule. (To see what I mean about "all things to all people" ends up sucking, do some .NET development with multiple languages, like half C# and half J#.)

    With regards to other Java classes being mutable, there are a number that are mutable and should not have been. I consider java.util.Date (and its java.sql offspring) to be just giant collections of bugs, for example, because they should have been immutable.

    On the other hand, a standard set of holder objects for the intrinsic types (mutable int, long, float, double, byte, char, boolean, short, as well as one for java.lang.Object itself) and a nice string processing library would have been (would still be) very nice, and it would still be possible to add multiple return values to the language without breaking anything (or even being too ugly). While we're at it, add an intrinsic decimal type, and replace the Big* atrocities with some leaner implementations. I think most of these are covered by JSR-666 anyway ....

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Clustered JCache for Grid Computing!
  21. surprising LACK of vision[ Go to top ]

    Isn't this guy from MIT?
    well, it doesn't matter if it's Harvard or MIT, his principal problem (and the problem with some the people who posted in his weblog) is their inherent lack of vision.

    You can't pretend that the arcane use of funtional Perl or PHP is more productive than a good architected Java App, not in a million years.

    As far as I can see, the future is integration, just take a look at PHP 5, it's well, basically Java with Perl like syntax.

    I would've expected more from someone studying in MIT.
    Good thing I got my CS in Ecuador.
  22. in this case...[ Go to top ]

    java.util.Date IS a collection of bugs and hacks and hopefully one day Sun will either deprecate the entire thing :)

    On the other thread - I'm exceedingly surprised to find that something as simple as getting to a database from a JSP is giving MIT students trouble. Heck you can get the required code to fit onto one screen if you just wanted to go about it the quick and dirty way, and even if you decided to be 'correct' and put in a Database Manager with Connection Pooling it should take no longer than 1 day for any competent student project to come up with.

    I've actually lost a little bit of respect for the MIT program if something so 'entry level' can't be handled by what I would normally consider an accomplished Computer Science program. I think this experience speaks more about their own level of competence with Java than it does with Java itself (as is sadly more often the case).
  23. in this case...[ Go to top ]

    Correction on that - that should be Harvard... my apologies to the MIT students I insulted :)
  24. StringBuffer[ Go to top ]

    Give a try to StringBuffer. is at least 10x faster then basic String concatenation.
  25. Productivity[ Go to top ]

    If you have a problem returning something from a method and you see it as multiple values, there is a good chance that you are not thinking of things as "objects" enough. You are right, you can only return one "thing" from a method. A Collection is a thing made up of similarly-typed things that have some reason to be grouped together. Multi-value returns would probably mess up a good OO design. Java sort of forces you to adopt a better OO design than you might otherwise do.
  26. Productivity[ Go to top ]

    Not to mention out/ref parameters. I find almost insulting that i must pass

    > > > an array as a parameter to a method if I want to return from the method more
    > > > than one thing.
    > >
    > > Really? There are several good ways of dealing with the fact that java passes method arguments by value - including references, and wrapping your argument in an array is not one of them. Lets fix your design - not the language.
    > >
    > > Br - J
    >
    > String f(String a, String b)
    > {
    > a = capitalize(a);
    > b = capitalize(b);
    > return a+b;
    > }
    > Let's say I want this, and I want a and b to retain their new values. How would you do that without an array/collection?
    > And please don't tell me to fix the design, this is not design this is pain to make up for the language. Design is something else.

    When I moved from C++ to Java in college, I didn't know what I'd do without this sort of functionality. But, to my surprise, it's never been a problem. If I want multiple values returned, I create an object that encapsulates those values.

    I'm with the first poster, fix your design. If you fight against the tool you're using, it will never work for you.
  27. is it useful to notice ?[ Go to top ]

    It's just sad. In Harvard ? I'm so happy that I studied IT in France.
  28. Productivity[ Go to top ]

    String f(String a, String b)

    > {
    > a = capitalize(a);
    > b = capitalize(b);
    > return a+b;
    > }
    > Let's say I want this, and I want a and b to retain their new values. How would you do that without an array/collection?

    Yes, but the central question is why do you want that? In reality there is some real requirement behind this, and you have chosen to implement it like this, I would choose a different route, but I cant tell you which one untill I know the real requirement.
  29. In/Out parameters[ Go to top ]

    String f(String a, String b)

    > {
    > a = capitalize(a);
    > b = capitalize(b);
    > return a+b;
    > }
    > Let's say I want this, and I want a and b to retain their new values.

    How about this?

    Triple<String,String,String> f( String a, String b ) {
      return Triple.make( a.toUpperCase(), b.toUpperCase(), a.toUpperCase() + b.toUpperCase() );
    }

    Triple<String,String,String> result = f( "a", "b" );
    String a = result.first();
    String b = result.second();
    String cat = result.third();

    This is much preferable to passing parameters by ref. Now, what would be even nicer is if the Java language had built in support for N-tuples. Then we could turn that into something like

    (String,String,String) f( String a, String b ) {
      return (a.toUpperCase(), b.toUpperCase(), a.toUpperCase() + b.toUpperCase());
    }

    God bless,
    -Toby Reyelts
  30. swap[ Go to top ]

    <Johan Abrandt>
    Really? There are several good ways of dealing with the fact that java passes method arguments by value - including references, and wrapping your argument in an array is not one of them. Lets fix your design - not the language.
    </Johan Abrandt>

    Ah..Lets talk about writing a "swap" function using call-by-value.
  31. swap[ Go to top ]

    <Johan Abrandt>

    > Really? There are several good ways of dealing with the fact that java passes method arguments by value - including references, and wrapping your argument in an array is not one of them. Lets fix your design - not the language.
    > </Johan Abrandt>
    >
    > Ah..Lets talk about writing a "swap" function using call-by-value.

    Yes, lets tal about that then. The last swap I implemented was for a quicksort, and it worked just fine. Naturally one can not translate some idioms straight from say C to Java, but then, if that was the goal, why are you using Java and not C? Fix the design, not the language...
  32. Productivity[ Go to top ]

    Java can learn a lot from other languages like Perl, Ruby etc. Even simple functions like split, join, regular expressions are missing from the Java Core. Other features in my wish list are double dispatch, overloaded numeric operators, a more powerful select statement, internal iterators etc. Many of these are so simple to do and yet have not been introduced. If Java went open-source, I can bet that features will be introduced in a jiffy.

    > Not to mention out/ref parameters. I find almost insulting that i must pass an array as a parameter to a method if I want to return from the method more than one thing.

    you also seem to lack a broader view of the OOP and C++ in particular. did you wonder yourself by any chance WHY java is constructed that way? do you really think that the java creators were so dumb? think again pal. study more, maybe you'll get something afterall.
  33. Productivity[ Go to top ]

    Not to mention out/ref parameters. I find almost insulting that i must pass an array as a parameter to a method if I want to return from the method more than one thing.

    >
    > you also seem to lack a broader view of the OOP and C++ in particular. did you wonder yourself by any chance WHY java is constructed that way? do you really think that the java creators were so dumb? think again pal. study more, maybe you'll get something afterall.

    I studied and compared. I developed in both C# and Java. Did you do that?

    And to return your challenge, how do you think out/ref parameters would hurt the master plan behind java?

    And please stop drawing general conclusions about my knowledge. If I make specific affirmations that doesn't mean i lack the broader vision. If you put your money where your mouth is and you find a way, I'll go up against you on “broader view of the OOP” any day.
  34. Productivity[ Go to top ]

    not to mention that ever so useless string multiplication function
    that everyone uses on an everyday basis that Python has to offer :)

    for the most part I would rather code in a language that has industry
    support from the big players and not some language that is mostly used
    in todays world for hacking together functionality with 40% less code,
    hey why don't we just start using vb shell scripting to write enterprise apps
    and while we are at it lets just throw away years of experience in developing
    best practices for writing applications.

    Python is useful I agree but has its place, and that being mostly for shell
    scripting from what I have seen thus far. But when I start looking at the
    language construct, in particular tabs for grouping code, I get a bit worried,
    I for one would hate to maintain code that looks like this:

    if blablabla:
      do stuff
      do more stuff
      do even more stuff

    than:

    if (blablabla)
    {
      do stuff;
      do more stuff;
      do even more stuff;
    }

    So probably a language preference on the one hand and a paradigm preference
    on the other.
  35. Productivity[ Go to top ]

    and while we are at it lets just throw away years of experience in developing

    > best practices for writing applications.

    IMHO that is just what the EJB community has done. The principles of OO are more or less dead (in typical j2ee application). The problem with this just might be that it is an unconscious act - the whole model could be simplified if the community admitted to itself that what it does is just data-flow and functional design. The problem might also be that the community focuses to much on application architecture and not enterprise architecture.
  36. Productivity[ Go to top ]

    JDK1.4 has regular expressions

    java.util.regex
  37. Productivity[ Go to top ]

    Don't worry about php, I wasn't even thinking about that. I'm talking about C#/.NET. Right now I'm messing my brains with a huge ant build.xml and that's pissing me of. Since when the hell is building a project supposed to be more than than a key combination in the IDE? All this sick appetite for xml's and ugly configurations is what's killing the productivity. If you get to writing java code, you're pretty well of, but even than there's a lot of verbosity when using ejb's and stuff.
    Things should be much more leaner ! Maybe the java camp can't see this through all the xmls, but it's not supposed to be like this. I like java almost as much as C#, but let me tell you, .NET is a much tighter package. And don't give the freedom is not a problem for smart people quote. I don't have problems in fining java related tools, I'm having problems in making things that should be convenience run without an xml!
  38. Productivity[ Go to top ]

    <q>
     I like java almost as much as C#, but let me tell you, .NET is a much tighter package. And don't give the freedom is not a problem for smart people quote. I don't have problems in fining java related tools, I'm having problems in making things that should be convenience run without an xml!
    </q>

    Get an equiv Java IDE like WSAD. Then it will be "as tight" if not tighter. Oh, then try doing COM+ in C# and call it from a ASP.Net all within the IDE. Use Windows 2003 Server. Let me know how easy it is. And productive.
  39. Productivity[ Go to top ]

    Since when the hell is building a project supposed to be more than than a

    > key combination in the IDE?

    Real programmers don't need IDEs. They need powerful tools, as ANT (and NANT for .NET). How can you mantain the building scripts if they are created automatically with a wizard?

    > .. .NET is a much tighter package. And don't give the freedom is not a
    > problem for smart people quote.

    Right. If Microsoft does not provide it, you cannot do it. I will tell my boss that I cannot do the new requirements because it is not yet in the Java specs...

    > I'm having problems in making things that should be convenience run without
    > an xml!

    Just an advice. Take your time to create powerful building scripts for your applications, set up good versioning and configuration management procedures, and then relax...
  40. No need ;-)[ Go to top ]

    <quote>
    Just an advice. Take your time to create powerful building scripts for your applications, set up good versioning and configuration management procedures, and then relax...
    <quote>

    very true! But you don't need to do this from scratch -> EJOSA (Enterprise Java Open Source Architecture) Template helps you. Execution and Build Management by Ant!

    See this article:
    http://prdownloads.sourceforge.net/ejosa/ejosa1.3.5-doc.pdf?download

    Lofi.
  41. Productivity[ Go to top ]

    Don't worry about php, I wasn't even thinking about that. I'm talking about C#/.NET. Right now I'm messing my brains with a huge ant build.xml and that's pissing me of. Since when the hell is building a project supposed to be more than than a key combination in the IDE? All this sick appetite for xml's and ugly configurations is what's killing the productivity. If you get to writing java code, you're pretty well of, but even than there's a lot of verbosity when using ejb's and stuff.

    > Things should be much more leaner ! Maybe the java camp can't see this through all the xmls, but it's not supposed to be like this. I like java almost as much as C#, but let me tell you, .NET is a much tighter package. And don't give the freedom is not a problem for smart people quote. I don't have problems in fining java related tools, I'm having problems in making things that should be convenience run without an xml!

    you really don't get what ant is really about aren't you
    it seems to me that you also don't get java in general.
  42. Productivity[ Go to top ]

    you really don't get what ant is really about aren't you

    > it seems to me that you also don't get java in general.
    Don't patronize me, please. Ant is for IDE/deployment/etc independence, but that's NOT much! Any decent IDE has an 'import directory to project' function or something that works just fine. There are project converters (Eclipse to IDEA, etc.) all over the place.
    Ant is mania for independence where that independence doesn't count.
  43. Productivity[ Go to top ]

    Edward: Don't patronize me, please. Ant is for IDE/deployment/etc independence, but that's NOT much! Any decent IDE has an 'import directory to project' function or something that works just fine. There are project converters (Eclipse to IDEA, etc.) all over the place. Ant is mania for independence where that independence doesn't count.

    I would over-generalize and say that IDEs are developer-centric and ANT is project-centic. There is a difference. For throwing together a Windows GUI, the VS.NET IDE can manage it just fine. For building a couple of EJBs, JBuilder is OK. For larger projects, in my experience, the IDE as a concept doesn't match the requirement, and thus becomes cumbersome. Ant, among others, tries to address the project issue specifically, and generally does a good job.

    There's no "one size fits all" solution. Even Java with its near-universal acceptance, from embeddeds to servers to handhelds to supercomputers to real time systems to PCs, only is applicable to a subset of "software problems".

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Clustered JCache for Grid Computing!
  44. Productivity[ Go to top ]

    \Edward Vrajmasu\
    Don't patronize me, please. Ant is for IDE/deployment/etc independence, but that's NOT much! Any decent IDE has an 'import directory to project' function or something that works just fine. There are project converters (Eclipse to IDEA, etc.) all over the place.
    Ant is mania for independence where that independence doesn't count.
    \Edward Vrajmasu\

    The true value of Ant is, IMHO, that it lets you build _automated_ scripts in a manner that's platform-neutral, and which hooks into Java constructs rather nicely. For developers, you get some nice constructs but it's not, as you indicate, all that big of a deal. For an _organization_, however, it's a different story. My own Ant scripts are used not just for project building, but for creating releases, running automated tests, and for setup in various logical corporate environments (development labs --> various QA labs --> pre-production --> production). As a plus I can freely alternate between our HP-UX servers, various Linux client boxen, and do development work at home on my PC, all with pretty simple Ant scripts. The key is that portability and adaptabilty to different environments is easy to achieve - we have a "global" ant build file here and individual ant build files range 20-100 lines tops. Compare this to shell scripting, IDE capabilities, Makefiles, iMake, and similar utilities, and Ant is a clear winner.

    If you're one guy working on a certain code base, you may not think all that much of Ant. If you're part of an organization that needs to deploy code in multiple environments, and you want build-consistency across multiple operating systems, then Ant starts to distinguish itself. This is especially true since release-candidate builds and deployment obviously cannot use an IDE - but I can use Ant either from an IDE or in RC builds or various deployments, and this gives me a commonality that sharply reduces surprises as you move from development out into the larger world.

        -Mike
  45. Ant == Productivity![ Go to top ]

    I tend to agree with Cameron.

    If you have a big project with a lot of components (sub-systems), how can you handle the dependencies between each components? Will you always build your application with every single components from one "src"? I don't think so. If you want to make a test of your application everyday on 12:00 O'Clock, like:
    -> Checkout from CVS
    -> Clean
    -> Build
    -> Test,
    you surely need something like Ant. What is if you have to work with a lot of people and everyone want to use their own IDE? Will you always have to import the project each time?

    Thanks to many Java Open Source libraries and changing work from Win to Linux to whatever, I also use Ant to execute my applications, instead of building those script files (.bat or .sh). So, if you add a new library you just need to change one XML file instead of 2 files (bat and sh).

    If you're using NetBeans, you will never need to make the bat and sh files. This is very easy:
    - Mount your directory.
    - Click your Ant script and push F6, that's it!

    Check this whitepaper to see how this works:
    http://sourceforge.net/project/showfiles.php?group_id=69075&release_id=177766

    Lofi.
    http://ejosa.sourceforge.net
  46. Ant == Productivity![ Go to top ]

    Cameron, Mike, Lofi, I stand corrected. What you said makes sense. I was thinking developer-centric.
  47. Ant == Productivity![ Go to top ]

    Cameron, Mike, Lofi, I stand corrected. What you said makes sense. I was thinking developer-centric.


    good. one thing I learned the hard way: before you swear at a technology/tool/whatever, try to understand it first. this way, you won't make a fool of yourself.
  48. Productivity == Ant[ Go to top ]

    If you need an Open Source example for how you can use Ant in a big project (with many components), you can check out the code from OpenUSS CVS:
    http://sourceforge.net/projects/openuss.

    Here you can see that each component runs a stand-alone component. You can develop, build, test, run, etc. each component (dev-xxx) totally seperated from the whole application (Remember the idea of component-based software development is to reuse, so be careful of dependencies). At the end you can build the whole application (dev-all), which consists all other components, and run it. Without Ant you can never do something like this easily.

    Regards,
    Lofi.
    http://openuss.sourceforge.net
  49. Productivity[ Go to top ]

    "I've had to support enough Perl programs to know that maintance on a script longer than 100 lines is horrific."

    Maintenance on a good Perl program is no worse than any other language. I've had to maintain some horrible Java code, and it was no picnic. This is a programmer issue, not a language issue.
  50. Productivity[ Go to top ]

    We used to say (in the good old days):
    Ada makes you write understandable/maintainable code (before Ada95)
    C allows you to do it and
    Fortran prevents you from doing it (old Fortran)

    Perl (my opinion) would be largely like C here; it allows you to write maintenable code (but you can easily write "spagetti") while Java is somewhere between C and Ada (closer to Ada but stills allows for "spagetti").
  51. ...just a thought. Yes, Java is an OO-based language, but the community is trying to free itself from this legacy. Stateless EJBs are no more than a remote API, and Value Objects are just like the stucts/record of the old days... Maybe it is time for a simpler language that is good for shuffling data from back-end to the front end? The complexity of Java is not need in a typical enterprise application....or...?
  52. Harvard??[ Go to top ]

    Is this the quality of students who go to Harvard?

    My, my...both the professors and students suck.
  53. Groovy - Jazzing Up Plain Old Java[ Go to top ]

    Dare I say it's obvious to anyone (except some Sun J2EE Junkies) that Java is way too complex and a massive overkill for most tasks. Remember C++? Remember C? Remember Assembler? How history repeats itself, eh?

    Anyway, allow me to quote from the Java Republic story titled "Groovy - Jazzing Up Plain Old Java":

    James Strachan (of Geronimo, Jelly, dom4j and more fame) and Bob McWhirter (of Jaxen, dom4j, codehaus and more fame) band together to build a new dynamic scripting language code-named Groovy for the Java runtime that lets you do more with less.

    The Duo writes in the Groovy Wiki:

    * Java is getting way too verbose when you look at languages like Python or Ruby - we can do much better. e.g. we want simple, clean and great syntax for tuples, lists, and maps and closures.

    * We need a new concise language for writing unit tests and scripting Java objects.

    * In TDD (Test Driven Development) worlds we spend much more time writing tests than actually writing the code. The actual code could stay Java but for writing all that test glue we could do with a simpler, more dynamic, powerful and concise language for writing all those test.

    * Python and Ruby are pretty cool. Though neither feel quite right as the dynamically typed high level language for Java developers to use with Java code. (Though Jython is close).

    and so on and so forth
  54. Here's why he's wrong...[ Go to top ]

    "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."
    <BR><BR>
    Holy Cow!? Ever heard of MVC? Ever heard of abstraction? This guy is stuck in the 80's. The problem with this prof is he has no concept of the possibility of the existence of the idea of a single design pattern.
    <BR><BR>I'm glad I'm not a CS student at Harvard. I'd have to unlearn all that ancient crap when I got out.
  55. Fallout from the Java == SUV posting[ Go to top ]

    I suppose you can build a large ERP application in PHP/Perl five times faster than Java too.
     
    This guy has a serious fascination with weakly typed languages, Maybe he should rewrite SAP using TCL.

    This guy is just like any University Teacher who has never worked in the IT Trenches, he can only see IT's happy path and a very small angle of it.

    I keep thinking about why Gosling wrote Java the way he did and why Anders Heljsberg didn't throw Java's design completely out the window. The answer is simple: they got burned in the real world, burned really hard.

    I say: Let this guy call Java an SUV, let those students go into the real world, let them build distributed systems using distributed transactions using PHP, let them burn a bit and then show them the true power of Java.
  56. Fallout from the Java == SUV posting[ Go to top ]

    Excellent points.

    Yeah maybe PHP is better for some Mickey Mouse assignment, but for enterprise level stuff there's just no comparison.

    I suppose I could make the argument that Java i18n would double the development time for a website...until you had to add 5 languages.

    Or using JNDI to look up objects is too hard and adds to much to development time...until you have to cluster your servers, provide dynamic load balancing, failover protection, etc.

    Or JDBC is the SUV of DB queries compared to executing straight SQL...until you change DB vendors or the schema.

    ...and on and on...

    I think this prof is just afraid that technology has passed him by and he can't keep up. So now he tries to prove why you shouldn't use it. We should go back to pushing and pulling things back on the stack.
  57. Persistence[ Go to top ]

    I especially enjoyed the part where he alluded to persistence layers as "hiding the SQL" from the developer, like it's a negative thing.

    I rely heavily on Castor for all of my webapps, large and small, and it saves me bundles of time. I suppose if I had mission critical queries that needed to be REAL fast, I could write a Castor passthru or even use the apparent abomination, known as JDBC.

    What about application level caching? Oh wait, what's an application in PHP anyway?....
  58. application-level caching in PHP[ Go to top ]

    You mean high-performance clustered caching like memcached? There are undoubtedly many other solutions as well, like BerkeleyDB, shared memory, etc. Don't assume that PHP has no paralleles for features like this. Yahoo uses PHP, and they get a lot more hits than your website.
  59. Yeah maybe PHP is better for some Mickey Mouse assignment, but for enterprise level stuff there's just no comparison.


             Very very valid point.For an enterprise level stuff i dont know how php can be compared.
  60. Fallout from the Java == SUV posting[ Go to top ]

    Totally Agree. if you wrote a page that list the contents of a simple query, almost every system works for the job. But try a big portal with security, a integratde shop, a Content Managed System.... With perl or PHP.

    I Worked 3 years with Perl, and is perfect for make little tasks, read logs... But for complex systems is a nightmare.
  61. "I Worked 3 years with Perl, and is perfect for make little tasks, read logs... But for complex systems is a nightmare."

    I can only assume you weren't making much of an effort then. Perl has all the same tools and abstractions available that Java does: object-relational persistence tools, MVC web frameworks, configuration systems, templating systems, XML tools, testing suites, and a large repository of reusable components. A good Perl programmer knows about these things and uses them to write solid, maintainable code.
  62. I can only assume you weren't making much of an effort then. Perl has all the same tools and abstractions available that Java does: object-relational persistence tools, MVC web frameworks, configuration systems, templating systems, XML tools, testing suites, and a large repository of reusable components. A good Perl programmer knows about these things and uses them to write solid, maintainable code.

    <
    Hm.. Perl is quite powerfull, but, IMHO OOP in perl is ridiculous, yes all framework can exists, but the disccussion about maintain costs, not about power of the language.
  63. "IMHO OOP in perl is ridiculous"

    You're entitles to your opinion, but I know many people who use it with great success.

    "yes all framework can exists, but the disccussion about maintain costs, not about power of the language"

    The tools I mentioned are largely about lowering maintenance costs through separation of concerns, regression tests, etc. Well-written Perl is no harder to maintain than well-written Java.
  64. Fallout from the Java == SUV posting[ Go to top ]

    I say: Let this guy call Java an SUV, let those students go into the real world, let them build distributed systems using distributed transactions using PHP, let them burn a bit and then show them the true power of Java.


    That is already happening. I personally know a couple of companies that went all-free-php-perl-god-knows-what, hit scalability and stability issues and ended up rewriting everything to J2EE (WebLogic).

    Slava
  65. Fallout from the Java == SUV posting[ Go to top ]

    "This guy is just like any University Teacher who has never worked in the IT Trenches"

    Maybe you should find out something about him before you say things like that. He has far more experience as a working IT developer than as a teacher.

    "let those students go into the real world, let them build distributed systems using distributed transactions using PHP, let them burn a bit and then show them the true power of Java"

    Yeah, because no one could build a useful website without distributed transactions... Why do people always fall back on this as a justification for J2EE? Nearly all database-powered sites use the database to handle their transactions, not the application code.
  66. Fallout from the Java == SUV posting[ Go to top ]

    Listen Dude, I know guys with 30 years plus experience who still that Cobol/ISAM files is better than Java/Com/SQL at making it easy to build Applications.

    These same guys feel that FTP and flat files are the most reliable method for doind E-Commerce transactions
  67. I finally read Professor Greenspun's weblog. One of his statement claimed JSPs too hard for MIT CS Seniors and Grad students. I really hope this is not true. How complex can JSPs be? I would think as a CS student at MIT who has background in Java and hopefully HTML, JSPs would be a breeze. I can't believe they actually have a professor in existence at Harvard. I also can not believe all the people that are agreeing with him on slashdot. These people must not have worked on a "REAL" J2EE project before. I guess there just isn't enough J2EE developers out there. All these people favoring PHP, and Perl in place of Java. It's like comparing apples to oranges. I've worked with PHP and Perl before, but for an enterprise application it's much easier to use J2EE with all the things that's provided for you already.
  68. No news here...[ Go to top ]

    This is no news to me. A few years ago I read Philip's Philip and Alex's Guide to Web Publishing which features the immortal line Java is generally a bad language for server-side software development.

    So we'll have to accept that TSS is an oxymoron.

    When I found out that he considered Tcl superior to Java for server-side development I wrote him down as an old fart who had done things one way and could not accept that a new way came along.

    I see nothing has changed...

    Joost
  69. Java = stick-shift kit car[ Go to top ]

    The issue is that Java has evolved into a system level language, and it is becoming increasingly complex to use at the application level. It's not so much the Geek Hummer as a stick-shift kit car...though it is possible to find some relief by installing a Jython transmission.

    Personally I'd classify .NET as the de facto Suburban Assault Wagon of choice for the indolent and fat arsed.
  70. Java = stick-shift kit car[ Go to top ]

    Us Non-American types like stick shifts for several reasons...

    - Sure it has a longer learning curve but the payoff is that driving is more fun.
    - you don't kill your poor car with bad gear ratios
    - You "understand" the car better and can do something with it besides driving to the store and back
    - You can take a 1.6 VW Golf and drive circles around some poor sad soul stuck in an automatic V8.
    - Stick shifts are less complicated, cheaper and far easier to maintain.

    The Europeans and Japanese have understood this for a long time, and last time I looked they ruled that car roost.

    So by calling it java a stick shift car you are giving it several complements.
  71. The emporer has no clothes[ Go to top ]

    I think many people who are using J2EE are having the epiphany that the emperor has no clothes. Frankly, JSP is a pain, and EJB is a solution to a problem that most of us don't need solved in our apps, namely distributed transactions.

    That's not to say that M$ has something better.

    Finally we are seeing some light at the end of the tunnel, and the promise of some java technologies to actually make database programming simple. But that light is not coming from J2EE! It just seems staggering that it has taken so long for technologies like JDO, Hibernate, Tapestry, and Echo to take root in the java community. Apple has had WebObjects, which grew out of Next, and was originally written in Objective C. WebObjects has been doing JDO-ish and Tapestry-ish things for YEARS.

    Unless somebody calls the BS when he smells it, we'll just keep scratching along with our JSP's and hand coded SQL. I appreciate Greenspun's observations, even if he over generalized them.

    -geoff
  72. The emporer has no clothes[ Go to top ]

    Philip Greenspun talks about problems wee all have. I dislike some conclusions but he points on REAL problems like that:

    'Lots of professional Java programmers emailed to say "If only those students had used Libraries X and Y, they would have done okay." Sadly X and Y were never the same in any two emails so it is easy to understand how the students went wrong (i.e., it is not obvious how one is supposed to choose among the 100 different ways to get something done in the world of Java tools).'

    I have done many project in Java for lat 3 years, but I steel haven't found final answer to simpe question: What is a good way to do a small Java database oriented project?

    I have the answer, but this answer is diferent then the last month answer. I use hibernate for a new project, but I am disapointed with JSTL and Struts, looking for JSF, but I am not sure I will like it, Sun will force ResultSet with JSF in Rave, not OR mapper.

    Nebojsa
  73. Innovation[ Go to top ]

    I have the answer, but this answer is diferent then the last month answer.


    This is called "innovation". Java has flourished, because THERE ARE 100 ways to do things. No two projects are the same. If all projects were similar, then we would all be using Visual Basic and running Windows.
  74. Innovation[ Go to top ]

    I have the answer, but this answer is diferent then the last month answer.

    >
    > This is called "innovation". Java has flourished, because THERE ARE 100
    > ways to do things. No two projects are the same. If all projects were
    > similar, then we would all be using Visual Basic and running Windows.

    THERE ARE Visual Basic friendly projects, but I don't like to introduse VB in my company and don't want to say: "Go to a Microsoft partner they will do this project better". Sun & others have to focus on some problems VB can handle better then Java. Those are neither so hard solutions nor solutions that will ruin other fine things in Java like innovation. I can't stand to program in a semantic hell language like PHP or VB, but I am paying too mach for this.

    Nebojsa
  75. in/out parameter[ Go to top ]

    String f(String a, String b)
    > {
    > a = capitalize(a);
    > b = capitalize(b);
    > return a+b;
    > }
    > Let's say I want this, and I want a and b to retain their new values.
    I may be wrong but I think what the original author was trying to say is this:

    void f(MyMutableClass a)
    {
      a.setMutapleProperty(x);
    }
    now the mutable object a will retain its new value.
    To get the same behavior in C++ you need
    void f(MyMutableClass& a)
    {
      a.setMutapleProperty(x);
    }
  76. Java/J2EE for Teaching[ Go to top ]

    Indeed, this is quite interesting ;-)

    At University of Muenster (Department of Business Informatics and Controlling, Germany) I teach and conduct graduate students for doing their software projects. Yes, they have to make a practical software development project to finish their study. Most of them have heard some lectures about Software Engineering and Java. Some of them are already working in companies as Java developers (plain Java, without J2EE). All the projects I conduct are about building real world J2EE applications and most of them don't have any experience with J2EE.

    For this purpose I build the so called EJOSA Template (Enterprise Java Open Source Architecture), which offers a fully-fledged template based Open Source J2EE development environment with Ant. Important principles in EJOSA Template:
    - KISS (Keep It Short and Simple). Install JDK, install NetBeans and unzip the ejosa.zip and you have everything you need with you.
    - No wizards, understand the process. At the end we want to have capable students, which do not only understand wizards and drag&drop but really understand the underlying development process.
    - Fast prototyping but the code must be maintainable and scalable. This is important because we want to reuse the code for our university's projects. Therefore we need to have a good structure.

    I choose following Open Source products because of KISS principle:
    - EJOSA Template is fully independent of IDE but I always tell them to use NetBeans. Mount your project directory and use F6 to run every ant scripts (build app and execute app).
    - JOnAS for EJB container because of its very good documentation.
    - Enhydra + XMLC, because easy to handle: Normal HTML files + id => Flow of the application.

    EJOSA Template also integrates many other OS-Java libs (XDoclet, Velocity, etc.), but it's not a must to use every single libs.

    So, with EJOSA Template + NetBeans I can offer them a ready to use Development Environment. Without this, you are lost in Java space! ;-) For more info about EJOSA Template (LGPL):
    http://prdownloads.sourceforge.net/ejosa/ejosa1.3.5-doc.pdf?download

    I tend to see 2 different groups of students:
    1) Students with very minimal Java knowledge. With this type of students, it's very easy to handle the project. Introduction to UML, introduction to general J2EE, introduction to EJOSA Template (NetBeans, CVS, examples), that's it, the project can begin. We discuss many things just through the project mailinglist. This type of students tend to follow the process, concentrate on the application problem and can finish the project successfully on time.

    2) Students with good until very good Java knowledge (with some J2EE knowhow). They tend to work in their own way. So, they try to make some improvements into EJOSA Template like:
    - I want to use Eclipse instead of NetBeans...
    - I want to use JBoss instead of JOnAS, etc...
    So, they are sometimes stuck into the Java technology details and forget what the real problem is. Surely they also finish the project at the end, but they sometimes need more time. On the other side this is good for EJOSA Template, because it will be improved by them ;-)

    IMO, the success of such a student project depends also on you as tutor. Just saying: allright, you should use J2EE and Hibernate to implement your J2EE application will not help them (yes, I've done this and had a bad experience with this).

    Anyway, creativity and freedom are important but you should show them the way...

    Lofi.
    http://www.openuss.org
  77. Is that the students' productivity is proportional in many ways to the professor's ability to teach.
  78. Is this the quality of Harvard?![ Go to top ]

    This professor must have spent his lifetime just giving CS assignments to students, he has no foot in the real world!
    And for a professor, its quite unprofessional to make statements that sound more like opinions than facts, but say nothing to back them up:
    "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."

    Maybe if it is "Hello World!", but I wouldnt want to be there for the maintainance part, especially if its an application that needs to interface with other applications and systems(it happens in the real world, you know..).
    The slight overhead of doing things in Java and doing things right pales in comparison to the overhead of maintaining, extending and further developing apps in say Perl, PHP or VB.. And, as the dear Prof should know: thats where the costs of a system are during its lifetime.

    But, what can you expect from a person who has probably spent 30 years at a university, giving assignments and solving thought out problems given a clean buffer (wouldnt we all love to start from scratch all the time?)? I had professors like that during my university years, no clue about the real world..

    As someone said: I would be more interesting in the comparison to C#, thats a relevant one. The scripting language comparison is just laughable, sure, they have their areas of use, but they are not the same as Java/J2EE..
  79. More than an academic?[ Go to top ]

    The guy is actually more than just an academic it looks like...I pummeled him early on this but someone mentioned he had a history in open source.

    http://www.freeroller.net/page/kalimantan/20030921#java_the_suv_of_programming

    In the end though, he still has no idea what he's talking about.
  80. This "person who has probably spent 30 years at a university" actually built a start-up web development company from scratch into a large multi-million dollar business. He also published books and code about how he did it. You may not agree with him, but he certainly has more "real-world IT experience" than most of the people criticizing him.
  81. "You may not agree with him, but he certainly has more "real-world IT experience" than most of the people criticizing him."

    That may be true, but on the other hand, experience doesnt always count for much. I´ve seen my share of narrow-minded zealots with 20 odd years of experience, citing either open source or MS solutions as the salvation for the world (is either? I think not), not bothering to listen to counter-arguments..

    I would suspect this goes down in the book as publicity seeking, a bit like hes HBS collegue who wrote the "IT doesnt matter" bit, but thats a different discussion altogether..
  82. Doing small web sites is not exactly Rocket Science, This is what PHP and Perl are best at doing.
  83. "Small websites"? Perl and PHP are used at Amazon, Yahoo, TicketMaster, etc. We're talking about the biggest sites on the web. The company that Greenspun founded built sites for The World Bank and Siemens, among others. So, again, he probably has more experience building large sites for serious companies than you do. If you want to disagree with him, you need to base your argument on something more solid than "this guy is just a professor with no real experience."
  84. rofl[ Go to top ]

    Perrin: The company that Greenspun founded built sites for The World Bank and Siemens, among others.

    Maybe "The World Siemens Bank"?

    (I really couldn't resist ;-)

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Clustered JCache for Grid Computing!
  85. What do you define as a big web site, In fact I'm not even talking web sites, Most web sites (even for large companies) are little more than content sites, the more sophisticated ones will have a shopping basket and a payment portal, if you don't believe me go take a look,

    What I'm talking about are IS (Information systems), that is HR Systems, Medical Systems, Payroll Systems, Ordering Systems etc. etc., these are your meat and potatoes systems that every company needs and generally have to do a little more than capture details and display data.
  86. "In fact I'm not even talking web sites"

    I'm not sure why you're talking then. The article was about building web sites. That's what Greenspun teaches.

    "Most web sites (even for large companies) are little more than content sites"

    Right, so people should feel free to build them in whatever tools they find most efficient. That is more or less the point I think Greenspun was making.

    There's really no need to defend Java from me. I use it and like it, along with various other tools. I just thought it was absurd to see people accusing someone with years of "in the trenches" experience of being a cloistered academic.
  87. Great

    if all he teaches are the building of web sites then why on earth does he have the audacity to equate Java to an SUV or does he think that web sites are be all and end all of all systems.
  88. "if all he teaches are the building of web sites then why on earth does he have the audacity to equate Java to an SUV or does he think that web sites are be all and end all of all systems"

    Did you read the article? The analogy was that building most web sites with Java/J2EE is like driving an SUV to the corner store, i.e. it's overkill, and makes things harder than they would be with something simpler, but people feel good about knowing that they can go off-road if they want to. He doesn't hate Java either, by the way. I fear that many people have missed that point.
  89. I think everybody understand what the professor is saying.

    "Did you read the article? The analogy was that building most web sites with Java/J2EE is like driving an SUV to the corner store, i.e. it's overkill, and makes things harder than they would be with something simpler, but people feel good about knowing that they can go off-road if they want to."

    Could not be more wrong. There are frameworks (like Struts) that make website development in Java a breeze. Is there anything easier than duming a war file into the webapps directory? and that too, without consideration for the platform?
  90. "There are frameworks (like Struts) that make website development in Java a breeze. Is there anything easier than duming a war file into the webapps directory?"

    Yes. Simple things like PHP are much easier than that. Rather than learning about Struts, learning about war files, learning about what a webapps directory is, etc. a PHP coder can just stick some code in the middle of an HTML page and it runs. I'm not a fan of the in-line code development model (in JSP/ASP either) since I consider it messy, but it's obvious that beginners find it much easier to get started with.
  91. Is this the quality of Harvard?![ Go to top ]

    if so, why do they wonder about IT jobs being moved off-shore??? Isn't it a thing to be ashamed of?
  92. Thanks for wasting my time.[ Go to top ]

    Can't believe the buzz around this. So a college teacher thinks Java's an SUV and LISP is just swell. Who gives a shit. How did this get slash-dotted (let alone posted on TSS) to begin with.
  93. Thanks for wasting my time.[ Go to top ]

    Can't believe the buzz around this. So a college teacher thinks Java's an SUV and LISP is just swell. Who gives a shit. How did this get slash-dotted (let alone posted on TSS) to begin with.


    Simple, because it's fun. And because lots of us had some ignorants like him as CS profs. Looking down at you, you insignificant student/bug. The guy is stupid enough to put a TARGET sign on his forehead/a..(pick one).
  94. Thanks for wasting my time.[ Go to top ]

    "And because lots of us had some ignorants like him as CS profs"

    One of my CS professors told me (this was about 1992) to forget about PCs. They were toys and learning to develop for them would lead you nowhere.

    Fortunately for me I didn't heed this piece of advice.
  95. Fallout from the Java == SUV posting[ Go to top ]

    J2EE as sold by vendors can be expensive, complex (blueprints) and slow (EJB).
    So that is a valid point!

    However, users do DAO (iBatis/Hibrenate), Struts, DisplayTag, Tomcat/Resin/Eclipse for high performance and low costs.

    In any lang., it depends on your architect. I urge the profseor to teach his students to like/love low cost and high performance in any lang.

    .V
  96. 1. I think this article is little partial - it doesnt talk abt scalability , security , etc - just talks abt simple fast ( stupid ?) development using procedural languages / procedural style languages. for a college project ( althoguh not MIT) i would also use any stupid asp, vb to get it done faster - who looks at efficieny of code in schools / coe review etc - Prof just wants to see the results .. so thats fine ..

    2. The bigger issue is that people who learn java dont really understand the OO concepts - if they did then they wont be writing 10, 000 lines of code

    3. EJBs to a great extent are a overkill - most of the dot coms went belly up because they just coulndt finish "EJB" apps in time and monney - forget abt maintaining. I would think 10,0000 times before choosing EJB route.

    Learning java is to do more with clear OO concepts - if thats clear u have best language on ur hand to do wonders
  97. EJBs and dot com bust[ Go to top ]

    3. EJBs to a great extent are a overkill - most of the dot coms went belly up because they just coulndt finish "EJB" apps in time and monney - forget abt maintaining. I would think 10,0000 times before choosing EJB route.


    That is quite a statement. While there are certainly applications for which EJBs are overkill I don't see how they can be blamed for dot coms going belly up. Can you name one example?
  98. SUN should add supporting inheritance to EJB[ Go to top ]

    I think the most inconvenient in EJB programming is that EJB currently does not support inheritance. This make so many duplicate codes.

    Sun should consider this. I think all the EJB developer also wish this.
  99. I think the most inconvenient in EJB programming is that EJB currently does not support inheritance. This make so many duplicate codes.

    >
    > Sun should consider this. I think all the EJB developer also wish this.

    I understand the problem, but for the more simple cases of just duplicate code: why dont you let the bean implementation inherit from a base-class? There is nothing stopping you from doing this..
  100. I tried it before.

    But it is also difficult to implement inheritance EJB(CMP).

    The Container can't control the Database table architecture for inherited EJB(Entity Bean, CMP).

    And also, when we need to look up the Object Instance, we have to hard code some those beans' jndi name.
  101. "most of the dot coms went belly up because they just coulndt finish "EJB" apps in time and monney"

    Stupid me, all this time, I thought it was down to lack of viable business models and no market whatsoever for mail-order used jogging shoes and the likes.. ;)

    On second thought, the market for "used jogging shoes", just might be e-bay..
  102. Frazil[ Go to top ]

    Don't blame java.People are using java for wrong purpose.Company where i am working is planning to convert Big Client Server APP to Java(Web APP) .You know the time estimation between Client server and webAPP is almost double and cost is also double, and still manager want to pursue this,bcos he want to show his managemet that he is doing java project.It 's really personal interset not in the inetreset in the product .Higher level manager who will go by market hype will nod his head for any project which utilizes latest tech even tough it's doesn't make sense. When other language can be used with lowcost and high productivity.Yes i like Java and i am using in place where it really make sense.
  103. Fallout from the Java == SUV posting[ Go to top ]

    I like cheese.
  104. cheese[ Go to top ]

    Yes, cheese is good. Some is good on a cracker. Some is good on a pizza. What cheese you use depends on what you want you are cooking. Does more need to be said about cheese?
  105. Fallout from the Java == SUV posting[ Go to top ]

    His comments on prepared statements are true. But PHP database interface is not so good either
  106. Fallout from the Java == SUV posting[ Go to top ]

    The whole entry is just another "this language is better than that language" argument without taking into consideration the need to analyze requirements and choose the right tool/language for the task at hand.

    Am I jaded, or have I seen FAR too many of these kinds of childish posts?

    *sigh*

    -Michael, who codes in Java, C#, C, C++, and/or Perl depending on the problem at-hand.
  107. Fallout from the Java == SUV posting[ Go to top ]

    Sadly, he probably wasn't seeking publicity. It seems more likely that he accurately represents the complete lack of quality and relevance in the university system today. But without any outside oversight what else could one expect. It is a terrible shame that employers cede them exclusive control over entrance into this, as well as most all other, professions. It just proves the old adage: People get what they deserve not what they expect.

    Of course, as everyone who's ever been paid to write software knows, there simply is no comparison between the "utilities" he sights and actual programming tools. This is for all the reasons stated.

    One point mentioned above did hit my personal favorite hot spot: why doesn't Java provide a usable SELECT statement. Sun went so far to create a C++ like language that is actually usable for business programming. It is a terrible shame that they somehow forgot to write a SELECT specification. I assume this can be attributed to an unfortunate accident with a copy machine. Too bad they didn?t copy the COBOL manual instead of the C one :)
  108. JSP simpler then J2EE[ Go to top ]

    Just the phrase "JSP is simpler then J2EE" shows that the "professor" maybe should read a couple of books about the platform before writing something like that.
    Maybe the good professor should get out of the university and do some real application development. This would help the students understand better!
  109. This is quit basic knowledge! Use the right tool for the job!

    Choose your tools according to your project. If you are planting a flower, dont use a bulldozer, use a spade! Right???
  110. er... whats a SUV ?

    While I agree EJBs were a complete waste of everyones time and money I don't think they can be held totally responsible for the dot com crash. However I do blame them for the war in Iraq.
  111. er... whats a SUV ?

    >
    > While I agree EJBs were a complete waste of everyones time and money I don't think they can be held totally responsible for the dot com crash. However I do blame them for the war in Iraq.


    you are free to blame them, but it's just too damn hot out there to hibernate ;-)
  112. This is quit basic knowledge! Use the right tool for the job!

    > Choose your tools according to your project.

    In order to choose right tools you have to exclude politics from making a decision. That leaves us companies consisting of two and less people.

    Slava
  113. Smells like M$ paid FUD[ Go to top ]

    I have a question.. is this college students or Junior High kids doing web page.

    If the professor has no idea between the difference of asp scripting and OOP
    then he should take gardening as his profession.

    This is a shame on the CS professor where he is not fit to do some OOP coding.

    I wonder if this a M$ paid fud
  114. Phil Greenspun is more than an old fart professor.
    He is a humanitarian that cares enough about people to give up a considerable amount of his time and money to give free seminars; and, to help out charitable
    organizations with their web projects.
     As for real world experience, he was one of the founders of
    ArsDigita which was sucessful enough to be sold to Red Hat. He open sourced
    ArsDigita which became OpenACS which is based on AOLserver. AOLserver is what runs AOL; and, it's stable, multithreaded and based on TCL for development(it's acutually written in C).
     TCL will not replace Java. SAP will not be re-written in TCL.
    But, TCL is quick like a dune buggy for pure content jaunts in the web world.
    Java is like a U.S. army Hummer; it costs alot in developer time; but, it does things you just can't do with a dune buggy (and the manual weighs 5 pounds).
  115. Java is like a U.S. army Hummer; it costs alot in developer time; but, it does things you just can't do with a dune buggy (and the manual weighs 5 pounds).

    That is ridiculous. Java is actually a simple language and very easy to use. It has never cost me a lot in developer time. In fact, it has cost me less and that is why I continue to use it for most projects.
  116. \Bill Willis\
    That is ridiculous. Java is actually a simple language and very easy to use. It has never cost me a lot in developer time. In fact, it has cost me less and that is why I continue to use it for most projects.
    \Bill Willis\

    I agree completely. I'll go further and say that Java has the best power-vs-simplicity tradeoff I've yet seen (with "power" a function of language complexity and expressiveness). This is what endears me to it - it's not something dumbed-down like VB, it's not the most hideously complex and dangerous language known to man (C++), it's feature set doesn't meander all over the globe like Perl, it's not a stripped down engine on wheels like C, it balances dynamic and static features admirably without succuming to the extremists of either camp (too many to name on both sides here).

    Having worked with many languages over the years, Java by far strikes the best balance for me. My only fear is that too many overzealous JSRs may tip that balance some day soon.

        -Mike
  117. Changes are important[ Go to top ]

    Althogh, Changes are important for any language. Some of the features suggested above will make learning java much tougher. Let us keep it simple, as java is now. It gives you the flexibility of building the things how you want still adheres to OOAD. Too much emphasis on improving might lead to again another version of C++
  118. Simple can be powerfull[ Go to top ]

    Everybody meantions power of Java in big scale apps. I completely agree. I also do agree and in the long run investment in development project using OO methodologies will pay off.
    BUT, It doesn't mean that there shouldn't be layers on top of the core that limit the freedom for simplicity's sake. Look at .NOT. Powerfull C# is combined with STANDARDIZED ASP.NET that even 14 years old kids can use.
    It is true that Java is comvoluted with multiple satellite libraries that people cannot decide between.
  119. Simple can be powerfull[ Go to top ]

    Look at .NOT. Powerfull C# is combined with STANDARDIZED ASP.NET that even 14 years old kids can use.

    May be kids can use ASP.NET, but can they deliver production grade code, fix bugs and maintain existing code lines with APS.NET?
  120. Simple can be powerfull[ Go to top ]

    Look at .NOT. Powerfull C# is combined with STANDARDIZED ASP.NET that even 14 years old kids can use.

    >
    > May be kids can use ASP.NET, but can they deliver production grade code, fix bugs and maintain existing code lines with APS.NET?
    Yes they can, because ASP.NET code lines can be C# code lines or whatever language you choose. Also, ASP.NET is a true “component” framework. Java may have the upper hand on .NET in quite a few ares, but believe me, web development is not one of them. ASP.NET has nothing to do with the ugly php-like ASP.
  121. Simple can be powerfull[ Go to top ]

    I said something stupid :)
    Kids can't, but developers can.
  122. java == physiology?[ Go to top ]

    When the students of the physiology professor do not understand what he says, he is proud. When the students of the philosophy professor do not understand what he says, he is ashamed.

    To those that think that Java is more “advanced”, ”complicated”, or in any way that is less to learn I can assure you that there are significant more to learn in the .NET framework – even if you concentrate on only one language.

    .NET is done the right way. like chess. Easy to get started and learn the moves, but difficult to be a Grandmaster.

    Regards
    Rolf Tollerud
  123. java == physiology?[ Go to top ]

    When the students of the physiology professor do not understand what he says, he is proud. When the students of the philosophy professor do not understand what he says, he is ashamed.

    >
    > To those that think that Java is more “advanced”, ”complicated”, or in any way that is less to learn I can assure you that there are significant more to learn in the .NET framework – even if you concentrate on only one language.
    >
    > .NET is done the right way. like chess. Easy to get started and learn the moves, but difficult to be a Grandmaster.
    >
    > Regards
    > Rolf Tollerud


    if that's the case, I wonder why you keep coming onto these forums. is java some kind of "holy grail" to you ( and you won't admit it ;)?
  124. java == physiology?[ Go to top ]

    May be Rolf is like a christian missionary spreading his religion
  125. Fallout from the Java == SUV posting[ Go to top ]

    He is calling Java SUV, may be because it can run on any platform!
  126. unnecessary[ Go to top ]

    I love articles in TSS for they are very informative and expands my horizon.I feel this particular psoting is unnecessary and full of child's play.We should not bother to read what a student (yet to come out of university's womb) think about all the software in the world.
  127. I hope that the Yale *undergrad* intern we had at my last job has read this. He'd get a kick out of it, seeing as he picked up JSP's in a couple of days, and within a week had begun developing his own tag library. Hmmm....
  128. Phil is here again :-)[ Go to top ]

    Nice to hear from Philip again. A gifted speaker and writer and of course author of the wonderful (and wonderfully illustrated) guide to web publishing. However I find it strange that he still sticks with the same views he had in 1999.

    I mean, really, Tcl (and the AOL server) are nice but you are very limited, have to hand engineer a lot of stuff and ultimately are very limited in what you can do. I found that stuff much overhyped when I looked at the totally screwed "portal framework", my-o-my....

    On the other hand, he has some points when claiming that good application design builds on good data modelling. Also, arguably, there are languages that have the same or greater potential compared to Java. Python might be a prime candidate. For me, one of the wonderful things about Java is that is actually gives some choice how to do things. Using plain SQL/DAO/Entity Beans/JDO for data access based on what fits developer abilities and application requirements best is absolutely wonderful.

    Finally, let's get real: Compared to a decent object publishing environment,like WebObjects, Zope etc. using PHP, Java and even .NET (with its superior development environment) are quite poor tools for web publishing...

    Other than that: I expect any decent programmer - especially from an "Ivy League" school to able to get productive with *any* programming language in a matter of hours. If not, than there is a problem - with the teacher :-)
  129. University Prof with no problems...[ Go to top ]

    Interesting article. I actually teach a course called Introduction to Internet Technologies at a major private university in Texas. During this course, students are taught how to build HTML pages and introduced to dynamic page generation. For a final project, students are encouraged to use whatever technology makes sense for them from CGI, to PHP, to Flash, to ASP to JSP. Due to cost factors, most students end up using JSP (Tomcat) hitting an Access database using the JDBC-ODBC bridge -- fine for demoing and Access is an easy tool for many who don't have much database experience.

    I have never had a group that encountered anywhere near the amount of problems that Philip Greenspun talks about. In fact, the biggest problems tend to do with statefull issues that are a real bear in scripting languages and frowned upon by the ASP.NET folks. (In fact, I see more problems with the ASP students working on environment issues getting everything installed just right.)

    I think the most interesting thing about my experience is that this course is taught as an elective to full-time MBA students. Yup -- thats right -- no CS/MIS students here. These are business managers wanting to learn more about how web pages work.

    Having recommended Philip's book to many of my students, I understand why his class may have had problems -- he is a database centric type of person. To him, state is maintained in the database. I'm sure he guided his students through this train of thought and scripting languages work just fine. But for larger, more complex problems, a non-object oriented approach is ill-suited. (As well as performance problems, etc.) Perhaps I did a better job with my students teaching them (I hope so!) or my students just tend to be brighter/smarter than your typical Harvard CS/MIS student (you wouldn't think likely -- would you?).

    In any case, I have real-world proof from an educator's standpoint that Java is a fine teaching language as well as a suitable environment for "Mickey Mouse" projects.

    Russ
  130. This was said in the thread on Slashdot, but I think it deserves repeating: The Professor is confusing Java with J2EE.

    Java is not a complex language, and while it is not perfect, it is very approachable for the new computer science student. One of the main goals of Java was to create a powerful OO language without all the complexity of C++. It is not until you add all the complexity that comes with J2EE that Java becomes difficult to program.

    One problem with J2EE is that there are way too many artifacts and steps needed to create an application. Microsoft has done a good job of simplifying a lot of this (with attributes and other language features). Sun seems to think that the solution to this problem is by creating better tool support.

    Hiding complexity with wizards and other helper applications is the mistake that Microsoft made for many years. Ultimately, the realized the error of their ways and created first COM+ and then .NET to simplify the underlying technology.
  131. Please dont teach CS any more and look for a job in the IT world.
    Build a web app that will take 24 request per second with Database
    updates and inserts. Try to do it in PHP and ASP and see how easy it is and how many servers you need and amount of reboots you need.

    I have written similar app in Java in J2EE . The whole runs on one app server with only 4 procs/4gig ram in Weblogic 8.1 in Linux AS (20% cpu usage). My webapp has never crashed has a solid uptime of 3 months. My back end comprises Stateless Session Bean and Oracle 9i store procs (20% cpu usage). My frontend are Servlets and JSP using struts.

    By the way another group tried this same app in ASP in 13 IIs boxes(80% cpu usage) and 3 sql servers The app use to go down every day.
  132. Phil you suck as CS instructor[ Go to top ]

    I dont get it how a person like Phil gets a job in Harvard teaching CS.
    I have taught college kids writing Java using TomCat they all suceeded in OOP class.
    There is place for scripting and place for OOP if Phil doesnt understand this then he should learn to do some thing else . Old farts like him should just shuv dirt for living.
  133. Not one to comment on things like this I find this thread a bit of a misnomer. We are talking about a bunch of kids doing a project to get a fair comparison (for themselves or the prof ??) of a number of different ways to develop a similar project.

    I have to agree in principle that JAVA can be a bit unweildy to the un-initiated in that the sheer scale of the libraries available makes for a lot of work to stay up to date on what someone else has done for you already. For the average student this is not feasible, hence the idea of the prof with the helping cheat sheet. For the rest of us who once thought that tools.h++ was proof of god these are great times.

    Having been someone who worked prior to the great wave of object orientation that washed over the world back in the day I canot sing the praises of an object oriented approach to solving real world problems enough and feel that this should have been the point the prof should have been making to these kids. He should have helped them get the concepts of component based development in their heads first, then tried to develop the project using the different methods and then asked them to do another project where there would have been obvious re-use and see who came first.

    We all know that if you want a piece of code to be the be all and end all and the tightest little loop since high school you can write it in assembly and if you know your stuff there's not many optimising compilers for any language out there that will beat you. This does not, however, mean that this should be pushed as a better alternative on it's merits alone. The same goes for the time it takes to get the hello world web page up using a given technology.

    I can understand what he was doing with the project but I can't help but feel that the bar has been lowered when we're teaching students that a Perl/CGI solution is better than a JSP/JSF soultion just because you can get the first page up there faster. That's how you get laid, not write code.

    Until the next Timezone,

    Nigel
  134. I don't understand what message he wanted to pass across:

    That Java is complex for novice programmers? It's not a secret anyway.
    That his students are not smart to figure things out?
    That 'some-java-course' they did take before was a joke?

    What's bad is that he's making that kind of conclusions about platform usability, productivity, maintainability just by judging of performance of his students.

    He's also trying to compare the enterprise platform with the tools which is like comparing cows with apples.

    Next time I see a fresh Harvard graduate claiming he is proficient in Java, I'll think twice. Thanks to this article.

    -Yuri
  135. All I have to say about this is that it makes me feel great that I learned something realitively easily that MIT grad students could achieve. If it's too hard for MIT graduate students to accomplish something that people with bachelor degrees in English and Political Science from State College achieve easily, what does that say about MIT? Maybe it's just that most talented engineers go to work, not back to school. Or possibly it's that Daddy's money is no substitute for experience.
  136. error[ Go to top ]

    Should be:

    All I have to say about this is that it makes me feel great that I learned something relatively easily that MIT grad students could 'not' achieve.