Slashdot Mirror


Departure Of The Java Hyper-Enthusiasts?

TomH writes "Bruce Eckel has an article at Aritma, where he posits that 'The Java hyper-enthusiasts have left the building, leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism.' Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?"

678 comments

  1. Switched to decaf, did they. by Orrin+Bloquy · · Score: 5, Funny

    Sorry.

    --
    "Made up/misattributed quote that makes me look smart. I am on /. and I must look smart."
    1. Re:Switched to decaf, did they. by Anonymous Coward · · Score: 1, Interesting

      When will someone make a new Ruby framework so everytime we mention Ruby, Rails is not automatically in the same sentence? Ruby != Rails. Rails is fun, I do like parts of it, but it is not the only thing in Ruby web development. I see why people like it, but it leaves a lot to be desired in parts. ORM for instance is not always a good thing. Most Ruby development is not with Rails. Please stop talking about Rails like it is a godsend. I would think Rails if anything should inspire you to make a better framework after seeing what someone can do with Ruby + Established Design Patterns like MVC.

    2. Re:Switched to decaf, did they. by JamesOfTheDesert · · Score: 1
      When will someone make a new Ruby framework so everytime we mention Ruby, Rails is not automatically in the same sentence? Ruby != Rails.

      Right on. Please check out Nitro, Wee, and IOWA, for robust alternatives to Rails.

      Each of them supports a different way to think about building Web apps

      --

      Java is the blue pill
      Choose the red pill
  2. Next Question by Ridgelift · · Score: 3, Insightful
    Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?
    Yes. Next question please.
    1. Re:Next Question by TubeSteak · · Score: 4, Funny

      What about AJAX?

      Doesn't it get to be on rails too? Or is it going to be limited to that accursed "rubber wheel" we've been hearing about?

      This "Ruby on Rails" sounds like a monopoly in the making.
      /. should be wary

      --
      [Fuck Beta]
      o0t!
    2. Re:Next Question by Anonymous Coward · · Score: 1, Insightful

      I was involved in a million $ project in Ajax.
      We end up with 100000 lines of javascript on client side for three time the cost of our 200000 lines of java code on server side.

      Ajax means Javascript which should not be used in corporate development. Therefore Ajax cannnot be compared with Java.

    3. Re:Next Question by flamesrock · · Score: 0

      Ajax is a significant part of RoR.

    4. Re:Next Question by Randolpho · · Score: 1

      No, it's moved to .NET and WPF.

      *ducks*

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    5. Re:Next Question by Anonymous+Brave+Guy · · Score: 3, Funny

      Ajax doesn't need rails. It flies, both defying the laws of physics and generating a thumping Queen soundtrack in the neighbourhood that makes your car stereo weep with envy.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    6. Re:Next Question by dkleinsc · · Score: 1

      Another good explanation of the lack of Java hyper-enthusiasts: They graduated.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    7. Re:Next Question by turbidostato · · Score: 1

      Yes, more or less.

      On other news...
      "The Wheel hyper-enthusiasts have left the building, leaving a significant contingent of Wheel-using engineers behind, blinking in the bright lights without the constant drumbeat of boosterism.'

      Does this mean we finally will end up using these now not-so-cool Wheels and we will move to the new hype Ion-Cannons?

    8. Re:Next Question by powerpointmonkey · · Score: 2, Interesting

      I'm by no means a Java luminary, but I have been coding Java professionally since 1997. I lived through the bad old 'applet for everything' days, and having to roll my own client-server communication protocols, then moved into Servlets, JSPs, and finally full blown J2EE applications. I was there at Java One in 2000 when the hype was incredible, when I honestly thought I'd be retiring at 35.

      Me, I'm now riding the SOA wave. (when I'm not writing powerpoint presentations).

      ROR is great, but IMHO SOA is where the J2EE hype went.

    9. Re:Next Question by bwt · · Score: 4, Insightful

      Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?

      Ruby (on Rails) -- yes
      Python -- no (sorry)

      And the hype will come back to java in about a year or two when people realize groovy has all the benefits of ruby but with a bigger set of production quality libraries (all those from java) and that it can be compiled too.

      This is actually the most exciting time for java in a long time:
      a) scripting - groovy (JSR 241) & beanshell (JSR 274) & bindings eg for PHP (JSR 223) & BSF
      b) New lightweight frameworks are blossoming (eg spring, hibernate, webwork, EJB3)
      c) Aspect Orient Programming is blossoming in java (AspectJ, spring, JBoss)
      d) Tools growth -- Eclipse plugins, Ant tasks, JUnit extensions, velocity & xdoclet, XML utilities

      When groovy hits 1.0 and the people who left for Ruby start realizing they miss all the java libraries, the hype will come back. RoR is popular for two reasons -- Ruby has a very efficient syntax and Rails innovated with the "convention over configuration" idea. Groovy solves the first problem and the second one will be adopted where appropriate by the framework wonks.

      Ruby's downsides are it's a raw young language (weird errors, its slow, small set of libraries, and poor tools support). In the end these negatives and the innovative things happening in java will win out.

    10. Re:Next Question by TubeSteak · · Score: 1

      rofl

      that gave me a good laugh

      you deserve +1 Funny

      --
      [Fuck Beta]
      o0t!
    11. Re:Next Question by basingwerk · · Score: 1

      Yeah, they graduated into FORTRAN Hyper-Enthusiasts instead. Pretty soon, they'll be Algol Hyper-Enthusiasts, then Pascal Hyper-Enthusiasts, then small-talk Hyper-Enthusiasts, then C++ Hyper-Enthusiasts, then finally they'll be Java Hyper-Enthusiasts again just in time to retire. On the other hand, they might become C Hyper-Enthusiasts and stay like that...

      --
      I stole this .sig
    12. Re:Next Question by Scorchio · · Score: 1

      Ruby of Rails is so old hat. Anyone who's anyone these days is using "Java on Rails.NET" with LAMP-enabled tomcat backends. And loving it. Or so my boss tell me.

    13. Re:Next Question by Schraegstrichpunkt · · Score: 1

      Until Microsoft Xtreme Object-oriented Active AJAX#.NET on Rails, Service Pack 1 ("MS XOAA#.NoR SP1") is released, you can pry Java from my cold, dead, fingers.

    14. Re:Next Question by renoX · · Score: 1

      Groovy, Scala, Nice..

      There are quite a few language for the JVM which are 'better Java' (I looked at Scala and liked it myself) but the number may be their downfall..

      I suspect that the reason why functionnal programming has not been successfull is that there are too many languages to choose from, so the minimum number of users needed to grow have not been reached, this could happen too to these 'better Java' languages..

    15. Re:Next Question by SteeldrivingJon · · Score: 1

      This is actually the most exciting time for java in a long time:

      It's not possible to get excited about things called "JSR 241", "JSR 274", "JSR 223", unless you're the type to get horny when talking about TPS reports.

      Those identifiers are evidence of the vast bureaucratic morass that Java has become. It's distinctly unsexy.

      Which is probably part of the reason why people are seeking other platforms that are younger and haven't become weighed down by bureaucracy and committees.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    16. Re:Next Question by Decaff · · Score: 1

      Those identifiers are evidence of the vast bureaucratic morass that Java has become. It's distinctly unsexy.

      No - they are simply project labels. Python has similar labels for projects: PEPs. There are hundreds of them. Does this indicate that Python has become an 'unsexy bureaucratic morass'?

      Which is probably part of the reason why people are seeking other platforms that are younger and haven't become weighed down by bureaucracy and committees.

      What bureacracy and committees? These projects often involve just a few people. (For example, the BeanShell JSR has just one person on the expert group!)

      I'm afraid this post looks like nothing more than an ill-informed rant against Java rather than a sensible criticism.

  3. Hype? by whargoul · · Score: 3, Informative

    I have to say, I haven't heard near the hype about Ruby and Python that I heard about Java. Although I must admit, the Java hype has died down quite a bit.

    1. Re:Hype? by Otter · · Score: 4, Insightful

      1. There's no big company behind Python and Ruby.

      2. There are no idiot VC's handing out cash to start Marimba-ish companies based on vague ideas about using Python and Ruby.

      3. Python and Ruby don't have an easily-understandable if not really accurate hook comparable to Java's "write once, run anywhere" hype.

    2. Re:Hype? by BlueCodeWarrior · · Score: 1

      Quite anecdotal, but it doesn't seem that the hype has died around here.

      I have only one wish, and that's that the Java hyper-enthusiasts would depart from my university's staff. The amount of Java classes here is ridiculous.

    3. Re:Hype? by nother_nix_hacker · · Score: 1
      Although I must admit, the Java hype has died down quite a bit.


      Personally I think the Java hype has done an about turn. At risk of being modded flamebait; when choosing tools for projects at work we skip over Java every time.

      IMHO Java is a great language poorly implemented.
    4. Re:Hype? by Anonymous Coward · · Score: 0
      Java marketing had interesting quotas/bonus-programs around the hype (measurable by metrics like %age of computer-book-shelf-space in bookstores) that were concrete goals for their marketing staff.

      Obviously, stupid artificial goals like that generated a lot of hype around features and capabilities that were not at all justified.

      To the best of my knowledge, RoR has no such marketing incentives; so most of the hype is a result of the products, rather than an independant effort orthogonal to the products (as in the case of Java and .NET)

    5. Re:Hype? by jo42 · · Score: 2, Insightful
      I wish the code monkeys here would get Java off of the Brain.

      They want to do everything in Java - even a basic web site.

      - If all you have is a hammer, then everything in the world looks like a nail."

    6. Re:Hype? by Pxtl · · Score: 1

      3. Python has "batteries included".

    7. Re:Hype? by AKAImBatman · · Score: 5, Insightful

      To be fair, Java's hype was well deserved. It was the first platform with a highly complete API set included in the core, it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI), it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      No other language has ever managed to pull off what Java has. In fact, it was the driving force behind the modern push for cross-platform languages, complete (and free) API libraries, and Object Oriented Programming. I look back at days before Java, and they seem like the dark ages of computers.

      If Java has lost its hype, it's only because it's already accomplished all its goals. :-)

    8. Re:Hype? by bigman2003 · · Score: 2, Insightful

      I really hate the idea that you have to develop in the Popular Flavor of the Month in order for some people to think you know what you are doing.

      In the past 10 years, there have been at least 6 or 7 big 'waves' that have hit, and if you tried to follow them all, you would never really get to know any of the languages.

      What about saying: "Well, this really works for me. It may not be the latest and greatest...but today's latest and greatest is going to be tomorrow's old dirty shoe. So I'll just stick with today's old dirty shoe, until there is a reason so compelling that I will change."

      It works...really...if you value productivity and efficiency.

      Viva La Cobol

      Okay, not really Cobol...but you get the idea.

      And for those Cobol programmers out there...good job. Just hang on a few more years and you'll be able to retire.

      --
      No reason to lie.
    9. Re:Hype? by NutscrapeSucks · · Score: 1

      it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI)

      I wonder about this -- ASP/IIS used a multithreaded model with runtime-compiled code (although the 'compiler' was significantly less sophisticated) -- and I'm pretty sure that was out years before JSP appeared.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    10. Re:Hype? by MaggieL · · Score: 1

      I haven't heard near the hype about Ruby and Python that I heard about Java.

      Then you haven't been listening in the right places. Ruby is at about the same hype level that Python was at in 2001.

      And from what I'm able to see, for about the same reasons.

      --
      -=Maggie Leber=-
    11. Re:Hype? by AKAImBatman · · Score: 2, Insightful

      They want to do everything in Java - even a basic web site.

      I suppose that depends on what you mean by "basic web site". A good architect always tries to plan for any likely scenario. Quite often, that "basic web site" may be bound for a long life as a "not so basic website". If you tie yourself to PHP or ColdFusion, you may find yourself with serious performance and scalability problems inside two years. That's not a good situation to be in, and could have been prevented. (I've seen this happen in WAY too many companies.)

      OTOH, if you're just implementing a simple shopping cart to integrate with Paypal for the few products your work-at-home company sells, go ahead and use PHP and best practices. Your best realistic estimates are unlikely to show your website expanding beyond the capabilities of PHP within a few years. And if you do have extreme expansion like that, you've got more important problems to deal with. ;-)

    12. Re:Hype? by AKAImBatman · · Score: 2, Insightful

      ASP/IIS used a multithreaded model with runtime-compiled code

      No it didn't. ASP was interpreted up until ASP.NET.

      Servlets were a world changing technology compared to CGI. JSP's just-in-time compiling kicked ASP up between its ears in performance. Add runtime safety to the mix (you can't crash your entire server application by GPFing or dividing by zero) and you have the makings of a revolutionary product for its time.

    13. Re:Hype? by IAmTheDave · · Score: 4, Interesting
      I have only one wish, and that's that the Java hyper-enthusiasts would depart from my university's staff. The amount of Java classes here is ridiculous.

      Yeah, my CS classes started out with Java. I don't want to start a huge debate, but I think it's a decent learning language, especially good for 100 level courses. Of course, you should move on past that... We ended up having a good mix of five or six languages while dabling in a couple others, but starting with Java was a good way to introduce the concepts of OOPLs without the added difficulty C++ brings with it.

      --
      Excuse my speling.
      Making The Bar Project
    14. Re:Hype? by Ignignot · · Score: 4, Funny

      Aha! This story was a trick! We finally got one of the Hyper-Enthusiasts to come out of hiding, so he can be studied in a controlled environment. Good work slashdot!

      --
      I submitted this story last night, and it didn't get posted.
    15. Re:Hype? by garaged · · Score: 0

      obviously you don't know yahoo uses php isnt it ?

      --
      I'm positive, don't belive me look at my karma
    16. Re:Hype? by NutscrapeSucks · · Score: 1

      ASP does have some sort of intermediate bytecode it stores in memory. I agree that it's nothing like the JVM though.

      And we were talking about "first", not "better" -- no doubt that JSP is better.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    17. Re:Hype? by Anonymous Coward · · Score: 1, Informative

      To be fair, Java's hype was well deserved. It was the first platform with a highly complete API set included in the core

      What? What??! C included libc, C++ has libc+STL, Smalltalk had a comprehensive API, and there are numerous other examples.

      it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI)

      That's mostly a web server issue, and it's technically untrue. You could write a multithreaded C program to handle web requests using pipes or other IPC mechanisms.

      it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      Again, what? All functional languages support reflection because functions are first class objects. Objects are a natural extension in functional languages as well, and most use some sort of virtual machine and were all cross platform.

      I look back at days before Java, and they seem like the dark ages of computers.

      You looked in the wrong dark corners, oblivious to the superior (yes, even to Java) functional languages that, true, have been ignored by "mainstream" users, even in computer science.

    18. Re:Hype? by Anonymous Coward · · Score: 2, Informative

      it was the first language with reflection designed into its core



      *cough* Smalltalk *cough* LISP *cough* *cough*

    19. Re:Hype? by Randolpho · · Score: 1

      When was Java ever a dynamic web server technology?

      JSP != Java.

      That's like saying Ruby on Rails == Ruby.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    20. Re:Hype? by Anonymous Coward · · Score: 0

      It doesn't matter who brought the best stuff first. In my opinion, it is the one that is the most stable, easiest to maintain, and easiest to learn. I never liked Java, and I have programmed it because I had to for about 4 years professionally. I am partial to Microsoft technologies.

    21. Re:Hype? by Anonymous Coward · · Score: 0

      Well put! There's not enough time in the day to keep up with it all. It's to much of a hassle to keep following the latest craze. I relate this to high school in that you had to dress/act a certain way to be in with the "cool" crowd. I'm to old for that crap.

      I've looked at, briefly, both python and ruby and honestly, they're not that impressive.

      In the end, a persons choice of one language over an other is a lifestyle choice analogous with choosing a political party. The arguing over languageX v. languageY is generally useless and doesn't solve anything. As long as you're being productive and you're happy with what you're using, stay with it.

      Anyway, I'm sick and I'm rambling...

      Happy holidays and may you be successful in any language you use.

      Mark

    22. Re:Hype? by mykdavies · · Score: 1

      it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      As long as you don't count Smalltalk...

      --
      The world has changed and we all have become metal men.
    23. Re:Hype? by Anonymous Coward · · Score: 0

      ...which is why you should use Perl.

    24. Re:Hype? by bnenning · · Score: 1

      it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      Smalltalk.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    25. Re:Hype? by BlueCodeWarrior · · Score: 1

      Maybe it's just me, but I see no difficulty with C++, and all with Java.

      I think that it's much better to teach functional programming first, because that's exactly how the computer handles it. It's also a little easier to wrap your head around. "There's this list of instructions. The computer does each instruction in order."

      With Java, you either have to teach OOP concepts or say 'We'll just ignore that for now, it's black magic' before you can even get to 'Hello World'.

    26. Re:Hype? by tolan-b · · Score: 1

      I primarily develop in PHP myself, and it is a fine little language (largely because it finally has half decent OO, has a great standard library and is installed virtually everywhere), but it's a bit of a myth that Yahoo 'use PHP'. They do use it, but only as a templating engine. The bulk of Yahoo's system is Perl believe it or not. Apparently it's a bit of a horror story internally. Lots of cool stuff, but overgrown.

    27. Re:Hype? by Anonymous Coward · · Score: 0

      Insightful? It seems more like a Troll.
      The "modern" push for cross-platform languages? I suppose, in the grand scheme of things, the 1950's, which gave us LISP and FORTRAN are "modern" (as opposed to "medieval"), but I'm having a hard time connecting Java to the '50's, so I think that crediting Java with being the "driving force" behind the push for cross-platform languages is quite a reach. As for free API libraries, you could probably cut down the Amazon rainforest for trees to print the documentation of all the free APIs that exist for C, C++, etc. In fact, two words really put the API issue in its place: 1. Perl 2. CPAN.

      Java put together a decent bundle of useful elements and was backed by a large company with interest in pushing it. Put the same sort of force behind Perl, and we would all be either cursing or worshipping Larry Wall (wait, that happens anyway).

      So, for the anti-hype:
      Cripple the syntax of C++, byte-compile it and put it on a VM to cripple performance (yeah, I know -- Hotspot. And Java partisans have a million and one tests to show that JVM performance is equivalent to native performance. And scads of time have gone into improving JVM performance. Tough. It still isn't there all the time for everyone), and slap together an API, and gradually add features (like generics) to get some of the things C++ had over a decade ago, and you have Java 2005.

      It is neat, it is cool, and it is certainly neither the First nor the Second Coming.

    28. Re:Hype? by paulproteus · · Score: 2, Interesting

      > It was the first platform with a highly complete API set included in the core,

      Python predates Java. When I program in Java, it's always a pain to replicate the functionality I get with Python's default libraries. Python comes with "batteries included."

      > it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI)

      Perhaps, I don't know early Python history this well.

      > it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      Python has had compiled bytecode for a long time. And it's also clearly object-oriented.

      Unless you mean the first such language pushed by a *corporation* rather than by *enthusiasts*.

      --
      |/usr/games/fortune
    29. Re:Hype? by jgerman · · Score: 1

      What you have just described isn't functional programming.

      --
      I'm the big fish in the big pond bitch.
    30. Re:Hype? by AKAImBatman · · Score: 4, Insightful

      C included libc, C++ has libc+STL

      If you call those comprehensive libraries, then I have a bridge to sell you. The 1.1 library (which was where Java first started taking off) had such features as a standard SQL API, advanced I/O capabilities, remote method invocation, GUI support, image handling, standardized complex data structures, cryptographic support, text processing, data compression, and many other features lacking in libc/STL. The Java 2 library and on added a metric boatload of useful new APIs (XML, CORBA, collections, XSL, Logging, Registry, RegEx, Directories, Sound, MIDI, etc.), guaranteed to be on every platform Java was. That's one hell of a feature!

      That's mostly a web server issue,

      Serlvets and JSP are "standard" Java libraries that made the language well suited to the task. It's irrelevant if it's a "web server" issue or not. It directly impacted its popularity.

      and it's technically untrue. You could write a multithreaded C program to handle web requests using pipes or other IPC mechanisms.

      (rolls eyes) Well then, KDE wasn't the first Open Source desktop because I could have written one first!

      That's a stupid argument, sir. Part of Java's popularity was that Servlet and JSP technology was the first technology on the market with these features. If someone wrote a customer server to do the same prior to Java, it didn't help the rest of the market at all.

      Again, what? All functional languages support reflection because functions are first class objects.

      Riiiggghhht. So let me just compile this code here, and then have this program I wrote a few months back over here automatically investigate the functions and run them.

      No wait, I can't do that. The compiler threw away that information after compile. Plus I need to write a very special loader to get the code into executable memory to begin with. And it's platform dependent.

      Java is inherently reflective at runtime. Native languages only keep that information for DLLs and the like.

      You looked in the wrong dark corners, oblivious to the superior (yes, even to Java) functional languages that, true, have been ignored by "mainstream" users, even in computer science.

      Another poor argument. I said that the other languages failed to bring many features mainstream like Java did. You agree but state that I'm wrong. How does that work, sir?

    31. Re:Hype? by drinkypoo · · Score: 1

      Great. Software doesn't even run on batteries. What a stupid slogan. Guaranteed to confuse the mundanes!

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    32. Re:Hype? by Anonymous Coward · · Score: 0

      "it was the first language with reflection designed into its core"

      You, Sir, should stop smoking crack immediately!

    33. Re:Hype? by Anonymous Coward · · Score: 0

      To be fair, Perl's hype was well deserved. It was the first platform with a highly complete API set included in the core, it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI), it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      No other language has ever managed to pull off what Perl has. In fact, it was the driving force behind the modern push for cross-platform languages, complete (and free) API libraries, and Object Oriented Programming. I look back at days before Perl, and they seem like the dark ages of computers.

      If Perl has lost its hype, it's only because it's already accomplished all its goals. :-)

    34. Re:Hype? by hackstraw · · Score: 3, Interesting

      To be fair, Java's hype was well deserved.

      No, Sun's marketing department should praised for the hype. Sun leveraged Netscape to rename whatever they called javascript to be called javascript even though it had nothing to do with java. Sun started calling everything java except coffee. Javastations, javaos, hotjava, $300 Linux computers at Walmart that had the "Java Desktop System", which I cannot figure out if Java is in it or not, I think its just Gnome.

      Java's supposed to be hype was because it was a cross-platform, write once, run anywhere language and portable across systems with compiled bytecode that could be run in a jvm. Somewhere I have heard that it was more like write once, debug everywhere. Java has almost died for GUI apps because the implementation did not live up to the hype. Java is now mostly found in app severs and whatnot as a middleware between web severs and databases.

      Java's implementation has caused me headaches as a system administrator and computer user for 10 years now, and I've been over the hype for quite some time.

      I have no beef with the language. I dabbled in it years ago, but didn't find any use for it, but that has nothing to do with my opinion of the implementation. Its the fact that I have had so many issues with it over the years that has caused my opinion. These issues have been Linux support, Matlab problems due to java, Oracle's universal installer that had issues because of java, Sun's "web installers" that have had problems, Netscape crashing for years because of java, etc.

      From what I hear, Java has fulfilled a real demand in the app server market, and I'm fine with that. I don't do that kind of work anymore, so I have no involvement with it. But when I did, we had java problems, but this was years ago.

      Personally, I believe that the hype is still floating around as witnessed by:

      If Java has lost its hype, it's only because it's already accomplished all its goals. :-)

      I'm not sure what the goals were. I was under the assumption that it was a cross platform application environment, completely with a cross platform GUI. If this was the goal, I am unaware of an example of its success. There are only a handful of examples. I believe Eclipse might be a success, but I'm unsure if it is entirely written in java or not. Apple has a java control program for their raid array that mostly works, and there is Azureus, but I personally don't like that either because of its heavy resource requirements, and it would not work on my Mac with two users in two different accounts using it at the same time. Oh, I forgot about OpenOffice. Again, I don't think that is entirely written in java, and I simply do not own enough of a computer to run OO, but I tried. The document that I was trying to open was created on a 700MHz or so PC, but I could not do anything with it on my PowerBook G4. I asked the person to simply export it to a CSV so I could work with the spreadsheet.

      Being that computers are so fast, if Java was a working cross platform GUI language and free, I don't see why at least 90% of the programs available for computers are not Java. If I owned a company that wrote a GUI program, and if there was a cross platform GUI language and implementation that worked, I certainly would use it. Even if portability was not a desired goal, why not open the door to 100% marketshare with one writing?

    35. Re:Hype? by jtwJGuevara · · Score: 1

      Uhmmm, JSP is Java and Java is a dynamic web server technology - see here. JSP's, upon being accessed, are transformed into servlet classes, compiled into bytecode, and processed by whatever servlet engine is handling them. JSP's appear like HTML with java code sprinkled throughout, but in reality, they are still Java classes.

    36. Re:Hype? by Waffle+Iron · · Score: 1
      For the sake of accuracy, your entire post should have been prefaced with the statement:

      "Assuming we totally ignore all developments that occurred the 5 decades of computer science prior to 1995, then..."

    37. Re:Hype? by FireBreathingDog · · Score: 2, Funny
      Python predates Java. When I program in Java, it's always a pain to replicate the functionality I get with Python's default libraries. Python comes with "batteries included."

      What the hell does that mean?

    38. Re:Hype? by Fujisawa+Sensei · · Score: 2, Funny

      When I write Python I feel like I'm writing COBOL.

      If Java were to stop paying the bills and I couldn't get a job doing Ruby, I would rather code C#, TCL or Perl than do Pybol.

      --
      If someone is passing you on the right, you are an asshole for driving in the wrong lane.
    39. Re:Hype? by Anonymous Coward · · Score: 0

      Ruby is at about the same hype level that Python was at in 2001.

      I hadn't heard of Python back in 2001 either...

    40. Re:Hype? by Sulihin · · Score: 1

      I think the point the original poster was making is that tecnically JSPs are not part of J2SE, they are part of J2EE which is can be viewed as an application framework built with Java, much as Rails is an application framework built with Ruby.

    41. Re:Hype? by mrbooze · · Score: 1

      When do we get cross-platform java again? I wish I could have all the time in my life back I've spent trying to get Java Program A working on Platform B. Java's the only thing that constantly nails me with "Ooops, sorry, this code will only run on 1.5.00134, but you've got 1.5.00135." "But wait, I also need to run Program C, and it won't run with anything else!" "Oh, well, then I guess you'll need to have duplicate JREs installed for each version that might currently work until the next update."

      Hell, just a couple days ago I spent the better part of a day trying to get one of our own corporate apps working (our Concur expense reporting app). It turned out the only way I was able to get it to work correctly was to use Microsoft's JVM (which MS doesn't even distribute any more).

      I'm sorry, but Java's cross-platform claims is just so much hot air to someone who has to actually deal with dozens of different platforms.

    42. Re:Hype? by JPrice · · Score: 2, Informative

      I think that it's much better to teach functional programming first, because that's exactly how the computer handles it. It's also a little easier to wrap your head around. "There's this list of instructions. The computer does each instruction in order."

      I'm guessing you probably mean procedural programming, since as the poster above said, what you're describing isn't functional programming.

    43. Re:Hype? by Anonymous Coward · · Score: 0

      So let me get this straight. Your company knowingly used a product that's not "Java", and now you're blaming Java for your company falling for Microsoft's predatory practices? What kind of an idiot are you?

    44. Re:Hype? by zootm · · Score: 1

      Again, what? All functional languages support reflection because functions are first class objects.

      Riiiggghhht. So let me just compile this code here, and then have this program I wrote a few months back over here automatically investigate the functions and run them.

      He might have you there. Some functional languages had reflection before Java. Not really comparable though, since they were not, and generally are not, used for the sort of things that Java is.

      You've got him on the rest of the counts though, no question.

    45. Re:Hype? by Anonymous Coward · · Score: 0

      I think Java is a nice language if you need to code something quickly. Its rather elegant too.

      My only beef is with its license but also with its inability to produce binary executables instead of .class only.

      License issue: For example, I cannot download a precompiled version of Java for my FreeBSD box because stupid Sun does not allow it. Not only that but to download source for Java so I can compile it on FreeBSD, I have to register with Sun's website etc! WTF? When I download binary version for windows or linux, then I don't have to log in. Fuck Sun because that is gay.

      Native binaries: Bytecode is nice sometimes, however, if I want to send a 300kb binary to my friend, they would have to download stupid jre just to run it. On other hand, if I use gcj/gcc, I can just compile a binary, send it over and they can just run it. I think this would be a lot better than to use the bytecode crap.
      For example, if a company codes a game for windows, if its coded in a portable language such is java, they could just install freebsd, run gcj on the java source (if that is what game is written in) and produce freebsd binary which they can release for freebsd users. So instead of using the stupid sun license, and fall under "java trap", why not make an open source license compiler for java, or take something like the new D language and make it portable across the platforms?
      Or perhaps why not take C++ and fix up the compiler so you can compile any source code automaticly on any platform? (I'm talking higher level stuff...leave drivers etc to C).

      Therefore I am very happy to say that gcc 4.x has java support built int (gcj) which I used as the main compiler for my java class. It has open source license and it can produce native binaries.

      So 2 thumbs up to gcc team and hopefully they can whip out a fully functional alternative to java.

    46. Re:Hype? by Anonymous Coward · · Score: 0

      "JSPs are not part of J2SE, they are part of J2EE"

      Which is amazingly irrelevant to a discussion about how Java became so popular. Don't you people have something better to do than pick at nits that don't exist?

    47. Re:Hype? by zootm · · Score: 1

      Oh wait, just realised that he was claiming that reflection and the first-class status of functions were the same, which is just nonsense. So he was wrong, but by coincidence semi-right.

    48. Re:Hype? by wft_rtfa · · Score: 3, Insightful
      To be fair, Java's hype was well deserved.

      I think your reasons for the hype really hit the nail on the head. Before Java, programming languages were just languages and usually didn't come with a huge standard API. Especially one that was object orientated , cross platform, and was really powerful.

      The concept is so good that Microsoft did their best to copy all the good things about Java (almost everything from Java and a few from VB) with C#. I don't think we would have C# or the .NET framework if it weren't for Java. So to say that the hype was undeserved is just silly. However, because Java has grown to be a little over complicated, a lot of people don't understand Java, and people fear or dislike what they don't understand.

      --
      :-] :0 :-> :-| :->
    49. Re:Hype? by jaydonnell · · Score: 2, Insightful

      I think java is horrible for 100 level courses. You have to say "ignore all this 'static', 'class', and 'public' stuff. Just type it and you'll learn about it in a couple quarters. Not my idea of a good way to teach.

    50. Re:Hype? by Anonymous Coward · · Score: 0

      We ended up having a good mix of five or six languages while dabling in a couple others, but starting with Java was a good way to introduce the concepts of OOPLs without the added difficulty C++ brings with it.


      Of course you should definitely learn more than one language when studying CS. But Java is a bit more than just a learning language... its actually a really well designed language... especially when compared to C++. The difficulty of C++ is better read as mess.
    51. Re:Hype? by TheNetAvenger · · Score: 2, Informative

      No it didn't. ASP was interpreted up until ASP.NET.

      Actually ASP was server side compiled and cached long before ASP.NET...

    52. Re:Hype? by Anonymous Coward · · Score: 0

      What? What??! C included libc, [...]

      If you consider libc a "highly complete API," you are on crack.

    53. Re:Hype? by Slick_Snake · · Score: 1
      1. There's no big company behind Python and Ruby.

      1. I guess Google isn't or NASA isn't big enough for you. They both use Python along with many other companies.

      3. Python and Ruby don't have an easily-understandable if not really accurate hook comparable to Java's "write once, run anywhere" hype.

      Stupid slogans don't win over programers the way it does the general masses.

    54. Re:Hype? by Not+The+Real+Me · · Score: 1

      "I have to say, I haven't heard near the hype about Ruby and Python that I heard about Java. Although I must admit, the Java hype has died down quite a bit."

      Well I read the article and the article was primarily a Ruby vs. Python debate. Java was mostly a side issue. But the author did have one interesting line in there, which is: "I'm going to find something drop-dead simple to solve my drop-dead simple problems. Probably PHP5, which actually includes most of Java and C++ syntax, amazingly enough, and I wonder if that isn't what made IBM adopt it."

      Based on the article, I tend to think that a number of the Perl users will gravitate towards Ruby, much in the same way that a number of VB users made the switch to C#. After downloading and reviewing Ruby on Rails, I can't imagine that C/C++/PHP (and maybe Java) developers will be migrating to Ruby.

    55. Re:Hype? by Anonymous Coward · · Score: 0

      >and it's technically untrue. You could write a multithreaded C program to handle web requests using pipes or other IPC mechanisms.

      (rolls eyes) Well then, KDE wasn't the first Open Source desktop because I could have written one first!


      As crazy as it sounds to you. People actually did stuff like that. I used to write CGI programs in C and I did all kinds of crazy stuff. Usually you'd use some kind of library though, perhaps a little one you wrote yourself. I'm not gonna say it's a nice thing to do, but you are wrong.

    56. Re:Hype? by Michalson · · Score: 1

      Um, yes they did. It's this thing called the Borland VCL, used by both C++ Builder and Delphi. The VCL set the standard for a large, well integrated, well designed API for doing everything. By comparison the Java API looks like it was designed by 20 different people working in different buildings, then slapped together 20 hours before the ship date (and lets not even start on how much worse it got as successive versions got tacked on).

      As for C#/.NET - C# gets it's wide API, and a lot of it's features from the work of chief architect Anders Hejlsberg - oh, he is also the same guy that designed the VCL and Object Pascal aka Delphi. .NET did learn a few things from Java, but mostly of the "whatever you do don't do this" variety. Like designing your bytecode language with runtime interpretation performance in mind first, making JIT a secondary addon. That's why Java apps take forever to start while .NET feels like a native executable - the .NET bytecode is optimized for use as raw input for a JIT compiler.

    57. Re:Hype? by Nautica · · Score: 1
      "I'm sorry, but Java's cross-platform claims is just so much hot air to someone who has to actually deal with dozens of different platforms"
      What the hell are you talking about? I have been developing Java application for Mac, AIX, Linux, Windows and Solaris since Java 1.2 and the only cross-platform issues I have ran across have been in the Swing extensions. (Default font in Linux is bigger then the default font in windows, etc). Give examples when you make a claim like that! Please don't use "It would only work in the Microsoft JVM shit either!"
    58. Re:Hype? by Anonymous Coward · · Score: 0

      You seem to have a reading comprehension problem. Allow me to explain. Writing your own server software in no way makes that software available to the market. Thus that technology is unavailable to everyone except you. So whether you wrote one or not is irrelevant. It wasn't available on the market. Java had the first technologies available on the market with those features. Ergo, it was "first".

      Comprende, amigo?

    59. Re:Hype? by samkass · · Score: 1

      "OTOH, if you're just implementing a simple shopping cart to integrate with Paypal for the few products your work-at-home company sells,"...

      then don't do it. Buy a storefront with Yahoo or Google or one of the many others that have solved this problem, don't waste your time and money on it, and focus on whatever you do best. If you're going to go into the "sell shopping carts to other people" business, write a shopping cart. If not, buy a shopping cart.

      --
      E pluribus unum
    60. Re:Hype? by Anonymous Coward · · Score: 0

      Actually, before Java there was the Plexus web server which was written in perl and allowed for "plug-in" perl modules to dynmically extend the core. The internal interfaces Plexus used were what became the CGI data model. And, it was always assumed that servers would provide internalized interfaces as well, like FastCGI did.

      And long before Java there was a little known language Forth which aside from being the basis of PostScript was also used in the design of Open Firmware which allows for cross-platform firmware! (used by Sun, IBM, and Apple even today). Granted, Forth isn't very friendly to novice programmers.

      Perl and TCL both have "reflection" built-in although I won't swear that TCL came before Java I'm reasonably sure it did. I never used it but I would suspect that Schema also beat Java to that punch.

      Go to the local computer store and count how many of those applications are written primarily in Java. Did you find any?

      Where is the Java "killer app"?

    61. Re:Hype? by Zaatxe · · Score: 1

      I've never chosen the language to write a program by it "hypeness". Should I?

      --
      So say we all
    62. Re:Hype? by drgonzo59 · · Score: 1

      Not all the batteries are the same. For example I like to think of Tk(Tkinter) not as a battery but more as steam engine - clunky, odd looking, slow and hard to use (I don't know why wxWindows hasn't replaced it yet) - besides that I really like Python.

    63. Re:Hype? by mmusson · · Score: 1

      No wait, I can't do that. The compiler threw away that information after compile.

      Don't look into reflection and Generics then, it will upset your world view.

      The main problem with Java over-hype is that every distinctive feature of the Java was done better in other previous languages. I think you can make a valid argument that Java brought together a lot of these features into one system, but that also feeds into bloat which is the dark side of Java.

      --
      SYS 49152
    64. Re:Hype? by rubycodez · · Score: 1

      NASA uses Ruby also (and no doubt a few dozen other languages)

      see here about NASA Ruby (and Python and Perl and other open source) use and also here for NASA and other companies

      Python runs on an amazing number of OS , from embedded ones to mainframe (maybe a couple java can't?). Ruby can run on Windows, Unix/Linux/BSD, OpenVMS, BeOS, amiga. Ruby even runs with threads on MS-DOS.

    65. Re:Hype? by Pxtl · · Score: 2, Insightful

      Having worked with TkInter, I have to say that I actually enjoyed the layout of it. I found it pleasant and lightweight to code with. The problem was that the widgets themselves were just awful.

    66. Re:Hype? by The+Wookie · · Score: 2, Insightful

      >> It was the first platform with a highly complete API set included in the core,

      >Python predates Java. When I program in Java, it's always a pain to replicate the functionality I get with Python's default libraries. Python comes with "batteries included."

      I think the two packages in Java that really differentiated it were java.sql and java.rmi. It gave you an API to work with numerous databases on numerous platforms. That is still tough to find in other libraries. RMI made it easier to distribute large applications across multiple platforms. I don't see a lot of people doing this with Python & Ruby. Java also came with reasonably good threading support, some minimal support for locking, and some mostly-thread-safe libraries. When Java came out, most of the other languages had libraries for collections, file access, and if your were lucky, network operations.

      >> it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      >Python has had compiled bytecode for a long time. And it's also clearly object-oriented.

      Python compiles into bytecode, yes. Java has a just-in-time compiler that turns the byte code into native code. Psyco is not as good as the leading JITs.

      >Unless you mean the first such language pushed by a *corporation* rather than by *enthusiasts*.
      Or maybe the first language targeted towards corporations. Some of the largest users of Java these days are companies with large database+web applications, with a lot of business logic. Python and Ruby may be getting more of the smaller projects these days, but it will be some time before they are able to get some of the larger ones.

    67. Re:Hype? by Anonymous Coward · · Score: 1, Funny

      When you wrote that sentence in English did you feel like you were writing COBOL?

    68. Re:Hype? by dnoyeb · · Score: 2, Insightful

      Just because the hype has dies off does not mean the language has. In fact this could be an indication that the run-up is over and people are receiving their dividends now.

    69. Re:Hype? by wft_rtfa · · Score: 1
      It's this thing called the Borland VCL, used by both C++ Builder and Delphi.

      I see your point with Delphi, but that environment wasn't freely available or cross platform, and Borland C++, although an awesome enviroment, is not standard C++. There wasn't even a standard C++ at the time most of Borland C++ was being developed.

      .NET did learn a few things from Java, but mostly of the "whatever you do don't do this" variety.

      Obviously, you've never programming in Java and C#. For, me after working as a Java developer for four years, it was easy to make the shift and start working as C# developer because of all the similaries between C# and Java. I just would think, how do I do this in Java and capitialize.

      Like designing your bytecode language with runtime interpretation performance in mind first, making JIT a secondary addon. That's why Java apps take forever to start while .NET feels like a native executable - the .NET bytecode is optimized for use as raw input for a JIT compiler.

      People think that .Net code runs starts so much faster than Java code because the first time you ran a Java app, it was 1999 and you had a slow computer, every time you think Java, you think of that experience. If you were to run .NET code on slow hardware, it start up just as slow as Java. The main reason Java is slower, is API bloat and they don't use the native APIs to do things as much as .NET. You do pay a price for being able to run on so many different OSs.

      --
      :-] :0 :-> :-| :->
    70. Re:Hype? by a_ghostwheel · · Score: 1

      As I wrote before:
      JNDI context implementation is incompatible on IBM JDK and Sun JDK. Which means you will never get a reference to remote EJB if client uses different class libraries. And this is basic J2EE stuff.

    71. Re:Hype? by Anonymous Coward · · Score: 0

      Wait a minute...
      Let's not throw out the ideas of the past and claim Java solved the woes of the world.

      The early implementations of Java were seriously low in performance and high in memory needs. Though you could express an idea of a Window, it often did not match the user interactions expected natively under Solaris, MacOS, or Windows. Confusing that were things like Java2D, SWING, and AWT.

      Almost everything you want to do with Java involved downloading an extension. Some things are hard even today, unless you get an extension (which may or may not work as expected). Want access to a serial port? Want to send a ping? How about some OpenGL-style graphics?

      Multi-threading was a concept more along the lines of event handlers that dispatch messages to appropriate routines. Multi-threading did not appear until later incarnations.

      In the early days, Java was not even a web server technology. It was primarily regarded as a web client technology. Today, very few websites use it on the clients because it is difficult to get an end user to have the right combination of browser, plug-in, and Java for any given applet. Many clients today turn off Java support for security reasons. Instead JavaScript rules the day.

      SmallTalk, Ada, and Scheme were languages too. These languages, though derided today, had some of the same features and in some cases implemented them better. Hell, Emacs was doing byte-compiled cross-platform packages for years before Java.

      Java pulled many of these features together in a unique way and offered a free compiler. The language is difficult in many ways (try specifying a path in a cross-platform manner, it may take a few lines). But it is effective. On the other hand, so is C++.

    72. Re:Hype? by arkanes · · Score: 1
      It was the first platform with a highly complete API set included in the core, it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI), it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities together into a workable package.

      It wasn't any of these things (except maybe the first). However, it was the first well-marketed language/platform with all these capabilities. I'm still not sure how Java survived the transition from "applets will obselete the OS" to "It's really good for long running server processes", but that as much as anything else is one of it's "firsts" - lots of other languages never survived moving out of thier niche.

    73. Re:Hype? by Jesus_666 · · Score: 1

      Oh, I forgot about OpenOffice. Again, I don't think that is entirely written in java, and I simply do not own enough of a computer to run OO, but I tried. The document that I was trying to open was created on a 700MHz or so PC, but I could not do anything with it on my PowerBook G4. I asked the person to simply export it to a CSV so I could work with the spreadsheet.

      Get more RAM. NeoOffice/J (a version of OpenOffice that was implemented completely in Java - not exactly fast but better than an X app) runs on my G4 iBook (1200 MHz) without problems. When I bought the 'Book it came with 256 MB of RAM and I could use NO/J, although it would get slow when multiple documents were open due to heavy swapping. After an upgrade to 768 MB I can have four documents in NO/J, Firefox, Thunderbird and VirtualPC running Windows 2000 open at the same time with acceptable performance.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    74. Re:Hype? by Anonymous Coward · · Score: 0

      Multi-threading was a concept more along the lines of event handlers that dispatch messages to appropriate routines. Multi-threading did not appear until later incarnations.

      This is outright incorrect. The Thread and Runnable objects existed from version 1.0, as well as the key features such as synchronization and local thread copies of variables.

      Almost everything you want to do with Java involved downloading an extension. Some things are hard even today, unless you get an extension (which may or may not work as expected). Want access to a serial port? Want to send a ping? How about some OpenGL-style graphics?

      Considering that the developers distribute the extensions with their software, I don't see how that's a big deal.

      Today, very few websites use it on the clients because it is difficult to get an end user to have the right combination of browser, plug-in, and Java for any given applet.

      Actually, it was Microsoft who screwed it up. They pulled their embrace and extend routine and actually managed to extinguish Java as a client-side technology. Thankfully, it proved to be too good of a language to kill and made its way to the server side.

      Many clients today turn off Java support for security reasons. Instead JavaScript rules the day.

      There are very few people who do that. Most people who can't run Java on their web browser simply never installed it. Of the remainder who explicitly disable it, most do it because they don't like the long startup times and/or annoying animations. i.e. Same reasons why people kill the flash plugin. As a security hazard, Java has been an extremely poor vector. Only a few versions had any problem, and it was actually the fault of the browser.

    75. Re:Hype? by Anonymous Coward · · Score: 0

      "it was the first language with reflection designed into its core, and it was the first language to bring OOP, Virtual Machine, and cross-platform capabilities..."

      Smalltalk and Self had these on the 80's.

    76. Re:Hype? by ultranova · · Score: 1

      I think that it's much better to teach functional programming first, because that's exactly how the computer handles it. It's also a little easier to wrap your head around. "There's this list of instructions. The computer does each instruction in order."

      Actually, no. What you should start out is an old Basic interpreter with line numbers and no procedures. That is how the computer sees code (well, the computer sees it as assembly instructions, but linenumber Basic is close enough while still getting something done with reasonably small effort). Then, when programs start getting big enough that keeping track of variables (linenumber Basic only supports global variables) gets to be a pain, and when the the students start wondering how to implement recursive algorithms, introduce them to the concept of stack (implemented with an array and a global variable that holds the current position in stack) after which you can move to procedural programming simply by explaining that the language can do some of the basic stack bookkeeping for you.

      If you start from procedural programming, it's black magic to the students - they have no idea why it works. How could they: they've never seen the code, much less coded it themselves. Consequently, they see no reason why they souldn't nest a million recursive function calls...

      In fact I think they should learn assembler and how the physical components of the computer work; the more they know, the less likely they are to do things that, while seemingly stupid, are actually clever but based on incorrect assumptions (like the double-checked locking "if (singleton != null) return singleton; else synchronized (class) { if (singleton == null) singleton = new Singleton(); return singleton }" idiom in Java to avoid synchronization, and doesn't work because of out-of-order execution and memory coherence issues, which you can't possibly know if you are only used to dealing with high-level abstractions).

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    77. Re:Hype? by Anonymous Coward · · Score: 0

      Actually ASP was server side compiled and cached long before ASP.NET...

      1. Compiled ASP components aren't "just in time" compiled code. That's a manual step you can take for performance.

      2. ASP does tokenize the page in memory, but that's not the same thing as being compiled.

      If you've got evidence to the contrary, post it here. Otherwise, expect to be modded down for unsubstantiaed statements.

    78. Re:Hype? by Anonymous Coward · · Score: 0

      Finish that quote you cut off and it will make a hell of a lot more sense. Fawking trolls taking crap out of context...

    79. Re:Hype? by Bill+Dog · · Score: 1

      Excellent post, and recalls something I've thought for a long time: The ultimate CS curriculum, or at least in terms of computer languages, would be essentially historically chronological. That is, start off with hex and binary and machine opcodes, for something simple like the 6502, then asm, then a more modern CPU instruction set and addressing modes, then C, then C++, and further into farther abstractions from the "bare metal", but then each successive learned abstraction is in context, based on the core foundation of understanding "how things really work".

      --
      Attention zealots and haters: 00100 00100
    80. Re:Hype? by Anonymous Coward · · Score: 0

      Well, fact is that both Java and C# were ripoffs of C/C++ syntax. Thus they look remarkably similar.

      C# certainly learned a lot from Java; people seem to criticize it for this, but in my opinion it would be stupid to not learn from the mistakes of a predecessor.

      So much of these "language wars" really seems to be "library wars." I find the *language* of C#, for instance, to be a fair amount cleaner and easier to use than Java. However, the Java libraries -- while often byzantine and sometimes shoddy -- are far more extensive. So it's an apples to oranges comparison.

      In the end, what I got from Eckels' article was the simple fact that Java isn't the "hottest" language anymore, and frankly I say: good riddance. I fully agree to the schoolgirl comparison a few posts up; I use whatever tool is best for the job (Linux, Windows, Java, C#, Perl, or good old pen 'n paper...) and don't really give a damn what the "cool police" say is the "next hot thing."

      Trends are temporary; if what was fashionable mattered the most, then big iron (mainframes) wouldn't exist anymore. We'd do all our coding for Ruby-enabled smartphones. But if you look at the world: mainframes are everywhere and most code is still written for and run on good old fashioned desktop PC's. Go figure.

      Ignore the hipsters and the trendoids; use what works.

    81. Re:Hype? by maraist · · Score: 1

      I think the point the original poster was making is that tecnically JSPs are not part of J2SE, they are part of J2EE

      Except that most of J2EE got rolled into Java 1.5. Moreover, 'most' of J2EE was as easily accessible as any other 3'rd party JAR which makes J2EE as ubiquitous as a CPAN module for perl. Especially when you use auto-download tools like maven.

      --
      -Michael
    82. Re:Hype? by a42 · · Score: 1
      Stupid slogans don't win over programers the way it does the general masses.


      No, but stupid slogans *do* win over PHB's which is what drives this sort of mania.
    83. Re:Hype? by Sulihin · · Score: 1

      J2EE (particularly the servlet specifications and JSP) isn't part of J2se 1.5. I'm not actually arguing for either side of the discussion and I'm a J2EE programmer by profession and a Rails user by hobby. The original post which the post I responded to was in response to simply stated that to consider JSP to be java would be the same as considering Rails to be Ruby. I believe there is merit in both sides of that debate, in that the level of incorporation of J2EE into the "Java Platform" has certainly made enterprise web development with Java easier. The corallary however is, how many people use the supplied reference application server? The reason J2EE usually seems to come for "free" is because when you're doing web development whichever servlet container or application server you happen to be using usually includes or implements the J2ee API. Not that this is a bad thing.

    84. Re:Hype? by maraist · · Score: 1

      I liked your post, it was amusing. Just a few nit-picks though.

      Cripple the syntax of C++

      It's not fair to say this, because at the time of Java, C++ SUCKED!! If you used 3 different compilers, your C++ WOULD NOT COMPILE on all 3. gcc (g++ or whatever it was called back then), sunCC, and MC C++ are three main ones that come to mind. Hell, C++ was originally a HACK to C. I remember running the "CC" SUN compiler which literally could spit out the intermediate C code. Remember directives like extern "C" { } or whatever the hell that was.. It just told the pre-processor to skip that section when translating C++ symbols.

      I grew up through the normal CIS channels.. BASIC -> Pascal -> Lisp -> C -> C++. After my time in school Java became popular in CIS circles; Perl never caught on in Academics; I'm sure because it wasn't elegant and was too hard for many professors/TAs to learn [well]. But I remember all to well the shere joy of programming in Java compared to C++ (both language and runtime environment). And believe me, I've had to do my fair share of time back in "c" land.. I never saw C++ as a main-stay.. I've only heard about it in the Windows world.

      In fact, two words really put the API issue in its place: 1. Perl 2. CPAN.

      I agree that CPAN is an EXCELLENT resource.. Primarily because even small-time crooks like me can post code there. Java doesn't have as well centralized a public upload. Moreover CPAN has excellent unit-test/code-style and versioning management/enforcement. That being said www.ibiblio.org/maven is a credible competator. Many commerical sites post their public jars there... And extraction of jars is trivial compared to extraction of CPAN modules.. Often, you have to be root to extract/install CPAN modules (unless you wish to deploy user-owned instances of perl). The download time for a jar is all you need, compared to the sometimes HOUR-LONG compile-time of a CPAN module (since it almost always has c-code).

      Most of the success of CPAN was due to putting thing perl-wrappers around existing C-libraries. So of course CPAN grew overnight.. Java, libraries are almost exclusively "100% pure" (as they're called).. There are plenty of CPAN 100% pure libraries, but I think if you stripped out all the non-pure libraries, CPAN wouldn't be as impressive. What is impressive about the Java world is that just about all the functionality of the CPAN library is found in the java world. You don't see as many libraries, because many functions are aggregated together or come as stock (which perl does more and more of).

      This isn't to disparage CPAN in any way; I love that resource.

      put it on a VM to cripple performance

      Yeah yeah.. I have to respond to this even though you seeded your response. An incredible strength of runtime compilation is the support of multi-megabyte memory-resident libraries. Re-organizing only the code that is used into compact sections.

      --
      -Michael
    85. Re:Hype? by Anonymous Coward · · Score: 1, Insightful
      From the sounds of this post, you really need to consider the history of Java. Like C and Fortran, the upstarts of a language will show a lot of problems and nuisances.

      Like you who "dabbed in Java years ago", there were guys just like you developing Matlab plugins, OUI, webapps, javascript apps, etc... Companies were trying to get Java apps out ASAP with developers that either were experts in C++ that thought procedurally, or at your level of programming (why did you stop dabbing? why did you find no use? would C++ have solved your "problems"? Hmmm...), or levels where developers just started learning what the heck is OOP and Java. Java opened the door to a lot of new developers, which in the end help the profession, but hurt it as well as poor coding practices, bad designs, and internet hype ended with bad applications, like the ones you complain about.

      You need to consider that Java had to evolve much faster than C/C++, do more than what C/C++ had available and be taught to people that were new to programming, period (think outsourcing companies!). So I say Java's hype is slowing, but because it's matured. And the latest Java GUI apps are 10x better than what was around 2 years ago, and with mechanism like AJAX, JSF, and Servlets 2.4, the apps are going to get better.

      If (that's a BIG IF) RoR gives us a paradigm shift in development compared to Java, then it will likely go through the same growning pains, otherwise, it will end up like another Python--a great supplement to C/C++/Java.

      Your argument sounds like a typical end-user, if product A doesn't "work", goto product "B" and bash product "A". Sun hype is just a bad as FOSS OSS everything!), as bad as M$ (.NET everything!), basically as bad as the next guy. The original post asks the question in a developer context.

    86. Re:Hype? by Anonymous Coward · · Score: 0

      People that whine about Java's cross platform ability are almost always writing crappy code. Java has many faults but this is simply not one of them. I've worked with teams that have developed huge applications for many fortune 500 companies and we've never had a problem with Java's' cross platform capabilities. We launch all of our products on Windows, MacOS X, Linux and Solaris simultaneously, and have yet to have a problem with any cross platform issues that wasn't caused by someone who wrote some shitty code. Even most developers I've talked to who dislike Java, realize that well written Java code is easily cross platform.

      But I'm confident you're just another web monkey who writes thousands upon thousands of lines of complete and utter garbage code. You're probably so dumb you prefer PHP like the rest of the Slashdot retards that don't have a job and write fucking pathetic code like Slashcode. Learn how to use the language and then you might not have these problems idiot.

      P.S. If you think you're right post an example of a Java program you wrote that is not cross platform. I would love to have a laugh at the crap code you're producing.

    87. Re:Hype? by laffer1 · · Score: 2, Interesting

      Hold on.. he said powerbook g4. That could be a lot slower than 1200 mhz. I don't know if you know this, but there is a big difference in performance between an 800 mhz and 1200mhz ibook for example. If he has an early version, there is no way in hell he's going to run openoffice. Its a big bloated piece of crap.

      Java apps run very fast if they are written correctly. Limewire and Intellij Idea both run very well on my ibook. I've even tried a quake 2 port in java. Works great.

      As for problems with java, its got issues. The write once, run anywhere "Promise" is a big lie. Try to write a swing app and run it on windows, linux and OSX to see what i mean. Java is great on the server end simply because it does run on windows, linux and osx though. Tomcat runs on all three and thats a blessing. Now if mono would start working correctly I could switch to .NET. Python and Ruby are ok languages and could be good as web languages. Like java j2ee, asp/ASP.NET, php, perl, and whatever else they are not for everyone.

      I personally hate php so much I use java. If I could afford a windows server, I would run on .NET though. The problem with php is that it is worse than java about compatibility. Java may be implemented poorly, but there isn't a 180 on the spec either. I dare you to run php 4.0 code in php 4.40. Hmm.. the environment arrays changed.. hmm.. functions behave differently? I wonder why... Now try to get mysql 4.1 to work without using old passwords. Oops. Backward API compatibility means nothing to the php folks even in a minor release. Ok back on track, the point is there are benefits to java, .NET and newer languages. Its called compatibility.

    88. Re:Hype? by AlexCV · · Score: 1
      [...], it was the first dynamic web server technology that used a multithreaded model in addition to runtime-compiled code (bye-bye CGI),[...].
      The fact that you don't know about FastCGI (or AOLserver for that matter) doesn't mean that the above statements is true. AOLServer has been around for a long time and while TCL is not sexy, it was a multi-threaded application server (I don't know if the individual TCL application threads could access data from the other threads, but there was no forking.) FastCGI transforms CGIs from "exec this file" to "connect to this socket". FastCGI has been around since at least may 1996. It was designed for "long lived application servers"...
    89. Re:Hype? by Anonymous Coward · · Score: 0

      What did you expect? Slashdot is full of idiots who haven't coded a decent program in their entire lives. The fact that most of these fucktards prefer PHP is a clear sign of their level of knowledge and competence on the subject of computer programming. This is probably why almost everything the open source community touches turns to an unusable mess. It's funny how the only things that don't completely suck in the open source community are things that have been largely taken over by corporate interests. A lot of people here who claim to be coders need to spend a lot less time rambling like idiots about subjects they don't understand and a lot more time learning how to code.

    90. Re:Hype? by petermgreen · · Score: 1

      can't say i agree as soon as you wanted to do something even a little unusual with vcl it got in your way, huge ammounts of stuff were declared private often requiring copying huge chunks of vcl code (which would also mean license issues if you planned to release your source) to get what you wanted done.

      the delphi ide was very good for making guis quickly and the language was totally uncrippled but vcl was pretty nasty really.

      and you had to go direct to winapi for stuff as simple as running another application.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    91. Re:Hype? by Jesus_666 · · Score: 1

      Hold on.. he said powerbook g4. That could be a lot slower than 1200 mhz. I don't know if you know this, but there is a big difference in performance between an 800 mhz and 1200mhz ibook for example. If he has an early version, there is no way in hell he's going to run openoffice. Its a big bloated piece of crap.

      Thanks for correcting me; I misread his post and thought that he had an iBook. Mea culpa.


      I personally hate php so much I use java.

      I use both. Java as my main programming language and PHP as my main shell scripting language. It's not perfect but it's better than sh and somewhat user-friendly. I haven't run into compatibility issues yet, but then again I have yet to run into a working PHP 5 ebuild. Also, I don't use PHP for bigger projects. I would replace PHP with Ruby but I strongly prefer languages with a C-ish syntax.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    92. Re:Hype? by blair1q · · Score: 1

      That's a shame. I just downloaded the newest JDK (5.0), and started playing with the IDE, netbeans (comes in the same package), which has a very nice quick-start tutorial, and frankly, I'm impressed. It's not all intuitive, but the richness of it means I don't hit walls too hard, the way I did the first 3 times I tried MS Visual whatever.

      I guess I'll just have to get things done without being part of a madding crowd, then...

    93. Re:Hype? by Anonymous Coward · · Score: 0

      Whatever.. There's always some douchebag who believes everything Sun claims Java is.

      Fuck, I even have a book on Java programming that states "cross-platform compatibilty is an elusive goal" and that "there are many incompatibilites between platforms and environments that you have to watch out for".

      Most corporate code is actually pretty simple when it comes down to it. You rarely stretch the limits of the language.

    94. Re:Hype? by Thundersnatch · · Score: 1

      JIT compilation wasn't always there. In fact, it wasn't included until Java 1.1.6, released in April of 1998. Everything Java-based before that was interpreted, SLOWLY. Interpreted ASP would have had very similar performance characteristics to JSP before JIT became widespread and stable (circa 2000?).

    95. Re:Hype? by Nautica · · Score: 1

      Again another vendors implementation. That is not Sun's fault IBM can't follow standard's. I have yet to find a page on IBM website that says it's JRE is certified by Sun. It simple says it follows the Sun standards. (In which I guess in JNDI they do not, I have also seen this in IBM security libraries). Sun's Java claims cross-platform this it does well across the platform sun provides JRE for.

    96. Re:Hype? by AKAImBatman · · Score: 1

      Yes, but since we're talking about JSP pages (introduced around the time of Java 2), it's not an issue. Also, an interface for Jitting existed in the original versions of Java as Sun expected others to pick up the slack. (Which was true up until Microsoft screwed everyone over.)

    97. Re:Hype? by nikster · · Score: 1

      I'm not sure what the goals were. I was under the assumption that it was a cross platform application environment, completely with a cross platform GUI.

      Clearing up some points here:
      - Eclipse is written in Java but uses its own GUI framework called SWT
      - Azureus is written in Java / SWT as well because it's based on the Eclipse Rich Client Platform - the Eclipse app frameworks generalized so they can be used for any GUI application.
      - OOo is not pure Java AFAIK but I never really understood why, maybe somebody else can clear this up.
      - Java on the Mac traditionally has sucked and unfortunately continues to suck though not as much as it used to.

      As for the goals of creating a cross platform GUI framework, for Java itself this was hindered by the fact that Sun doesn't have a clue about GUIs and now, 10 years later, still didn't get it. Sun is a CLI company.

      But there are others: WxWindows and Tk, together with Ruby, Python and C# as JVM-type cross platform languages.

      There are no _really good_ cross platform GUI frameworks that I am aware of, and it's really a shame. I would love to have a "Ruby on Rails" kind of GUI framwork - simple, powerful and just working.

      I don't see why at least 90% of the programs available for computers are not Java.

      I am wondering about this too. I think part of the answer is the bad rep Sun got for version 1.0 through 1.3 which had god-awful slow GUIs. Another part is most likely that while it's possible to write a Swing GUI that's indistinguishable from native speed, it's not easy to do.

      I am an expert Swing programmer, and I know I could rewrite almost all existing native windows GUI apps in Swing; but there are many pitfalls and it is extremely easy for a novice to fall into one of them and end up with a sluggish, freezing UI. Easy things are not easy in Swing. As a Framework, both design and implementation are a catastrophic failure. Much easier to cobble something together in Visual Studio..

      Look at the JGoodies applications to see what's possible with Swing.

    98. Re:Hype? by Moses+Lawn · · Score: 1

      A few points...

      ...at the time of Java, C++ SUCKED!! If you used 3 different compilers, your C++ WOULD NOT COMPILE on all 3. gcc (g++ or whatever it was called back then), sunCC, and MC C++ are three main ones that come to mind.


      Actually, C++ did not suck. C++ *compilers* sucked, especially with some of the more esoteric features. It's certainly not C++'s fault that gcc had broken implementations of STL. To be fair, much of the problem was because (as I recall) the C++ standards committee still hadn't decided on what the standard would be, so most of the vendors (rightly or not, but wisely) waited on making a lot of big changes to their code until everything had settled down.


      Hell, C++ was originally a HACK to C. I remember running the "CC" SUN compiler which literally could spit out the intermediate C code.


      C++ was originally a preprocessor to the C compiler ('cfront', from AT&T), which is a good way to start out if you don't want to actually write a compiler first thing. I'm not at all surprised that Sun kept this approach up for a while.


      Remember directives like extern "C" { } or whatever the hell that was.. It just told the pre-processor to skip that section when translating C++ symbols.

      'extern "C"' tells the compiler not to generate name-mangling for the given symbols and prototypes, so they can be linked in with C code. That's how you can have a nice C interface to your C++ libraries.

      I'll stand away from all the argument and hype. I came up with C and started using C++ in earnest in 1994 or so. I like it a lot, except for template syntax. I like Perl, too. It takes discipline to write clean, structured Perl, but you can't be a good programmer without discipline anyway. Both languages are showing their age - if C++ had garbage collection and could specify return types in function templates (and didn't have to maintain so much backwards compatibility with C), and if Perl had nested reference syntax and prototypes that didn't suck (and if modules and scoping weren't so baroque), I'd be a happy happy boy.

      --

      What if life is just a side effect of some other process and God has no idea we exist?

    99. Re:Hype? by tsotha · · Score: 1
      As for problems with java, its got issues. The write once, run anywhere "Promise" is a big lie. Try to write a swing app and run it on windows, linux and OSX to see what i mean.

      I see this over and over on slashdot. I write java apps for a living and I've never had this problem. My swing apps work just fine on all three platforms (to be fair, I don't test them as much on OSX since it's not around much, but I haven't had any problems with my small sample set). I'm real curious if anybody can come up with a specific, nontrivial example of something in swing that doesn't behave correctly across platforms.

    100. Re:Hype? by Halfbaked+Plan · · Score: 1

      Almost ALL the meaningful software I have written runs on batteries. In fact, I had to write battery voltage monitoring routines so that when the battery is close to depletion, the device can shut down gracefully.

      Four-bit assembly language, though. Not Python.

      --
      resigned
    101. Re:Hype? by mrbooze · · Score: 1

      I don't write code at all. I'm a sysadmin, not a developer. That means that, unlike the developers who get to spew out code and smile and tell everyone how cross platform it is, I'm the one who actually has to deal with trying to make it work in the real world. Did you actually test it in every browser on every O/S? Oh, hey, is the version you developed on even *available* in every possible combination of platform? If you developed it on 1.4.2_10, did you also test it on 1.4.2_09? Or 1.4.2_11? Or 1.5? If it was so thoroughly cross-platform, would you even have to test it against all those things? If java is so cross-platform, why can't it be cross-platform with *itself*?

      The ability of Java apps to break on even the most minor JRE update is frightening to me. And you're free to tell me that it's only because the code is crappy, but if that's all the code that ever gets handed to me, well, I don't really give a shit. All I see is Yet Another Java Problem that I have to deal with, and I'm far too tired of it to put up with pie in the sky ideals of how great it might have been. Blame the other "bad" Java programmers if you must, but 75 times bitten, 76 times shy.

    102. Re:Hype? by Anonymous Coward · · Score: 0

      Hi system admin! Thanks for reassuring my belief that all IT people are completely clueless. Now go get the rest of us coffee and then go back to your cubical with the rest of the clueless monkeys. You never know, maybe I'll see you later when my printer jams and it needs to be cleaned out.

    103. Re:Hype? by Dan+Ost · · Score: 1

      Head over to www.wxpython.org for an alternative to tkinter that uses native widgets on each platform.

      As far as I can tell, wxpython is the most popular GUI package for python (even though tkinter is the official one).

      --

      *sigh* back to work...
    104. Re:Hype? by Dan+Ost · · Score: 1

      Python's been around since 1991. Smalltalk is even older than that, I think.

      Face it, Java didn't really do anything new, nor did it an improvement over what came before it.

      What Java did have was marketing muscle. What Java has now is inertia. We'll see in the next couple of years how far that takes it.

      --

      *sigh* back to work...
    105. Re:Hype? by drgonzo59 · · Score: 1
      I know, but it doesn't come with Python by default and I wish it did. I want to tell a client to "just install Python" as opposed to "just install Python and version 2.6 of wxPython".

      The post above was talking about Python coming with "the batteries included". Then I replied that one of the "batteries" is actually a "steam engine" - Tk/Tkinter. I wish Guido+python-dev would decide to use wxWindows, but they probably have their reasons that us mortals cannot understand ;)

    106. Re:Hype? by renoX · · Score: 1

      -highly complete API?
      Sorry but the GUI part sucked very much and is still sucking by many measures (also Java can't print was true at some time), so while the standard library was more complete than what was available on other language, in some important areas (GUI, printing, ..) it was very bad..

      -it was the first language with reflection designed into its core
      Ok, you've just shown that you're ignorant: Smalltalk, LISP..

      Java's designers weren't even able to provide generics into the language at first, which means than when they realised that it really suck to have all these cast everywhere they had to bolt it on the language, bleh.

      As for your last part, Python predates Java.. What is true is that Java has succeeded much more than many other language: the Internet bubble and Sun's marketing have really helped Java.
      That said, Java is really 'plain' and too verbose for my taste, maybe the addition of local type inferencing (that C# v3 will have) would help here.

    107. Re:Hype? by petermgreen · · Score: 1

      note: this is written by a brit usians should replace "6th form collage" by "last two years of high school" and possiblly "university" by "collage"

      its certainly a possible approach but whilst a cronological approach is a nice idea in some ways i think it would be rather dull to study the same thing every day and would also amke it much easier to get left behind if you were struggling with something.

      once you decide you are going to run modules in paralell then in any subject that requires programming (cs eee etc) you are going to have to teach people programming in a way that gets them reasonablly competent at it fast.

      its just like when you learn maths pre-university you learn quite a bit by rote and even the proofs you do aren't exactly rigourous. Those who go on to study mathematics will learn how to prove it all properly later but at the early levels gaining competance is far more important than learning the why.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  4. good riddance by LOTHAR,+of+the+Hill · · Score: 0, Redundant

    Don't let the door hit you in the ass on the way out.

    Too bad they went to rails, I'd rather they just went away.

    1. Re:good riddance by cryfreedomlove · · Score: 2, Insightful

      I don't understand this level of hostility for java. It works well for large web application development. EBay.com is implemented with java.

      Please explain your loathing of java.

    2. Re:good riddance by CableModemSniper · · Score: 2, Insightful

      He doesn't loathe Java. (Well maybe he does, but its impossible to determine from his post). He loathes hyper-enthusiasts.

      --
      Why not fork?
    3. Re:good riddance by Anonymous Coward · · Score: 0

      Umm....

      One can hate fanboys and hype, even if they love the language.

      Some of us just like to get work done.

    4. Re:good riddance by Anonymous Coward · · Score: 0
      One can hate fanboys and hype, even if they love the language.

      As a corollary: I hate Honda fan-boys, especially the ones who preach fuel efficiency and emissions, then put $100k into making their car run at 4mpg with no chance of passing state emissions testing. That doesn't mean I hate Honda, because they put out some really great products. I mean, have you seen the new Civic?

    5. Re:good riddance by Drunken+Priest · · Score: 1
      If you have to ask... I'd say most people hating it never had to write a large enterprise-class app with the alternatives.

      Slashdotters like to think they're all kernel-hacking programming-geniuses, but we know, on the boundary, that the typically level of skill doesn't measure up to the hubris round here.

      Disclaimer.... done apps in PHP, Perl, Python and Java. Java is best. Maybe Ruby on Rails is the best thing since sliced bread, but I don't have the wherewithal to find out. I'll be on the look out for a Websphere/JBoss class app server for it, if it has one...

  5. maybe to ruby, not python by Surt · · Score: 4, Interesting

    No one I've met doing serious development is building on python, it's just too error prone. Ruby (and on rails) are definitely gaining serious adherents though. Particularly with ruby likely to become a first class JVM language, Ruby's future looks pretty bright. Ruby may well replace java as the syntax of choice for developing big web apps.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    1. Re:maybe to ruby, not python by 1010011010 · · Score: 1

      Do you have a link for this ruby-on-jvm thing?

      I'd personally like a "Python Application Server" that's on a level to compete with J2EE.

      --
      Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
    2. Re:maybe to ruby, not python by zootm · · Score: 1

      What's more error-prone about Python as compared to Ruby? I'm curious because I've read a lot of discussions on the differences between the languages, and it's never been an issue that's come up once.

    3. Re:maybe to ruby, not python by SilentTristero · · Score: 3, Interesting

      [This is not a troll, it's a serious question from someone who's about to start a major db-driven web app.]

      OK, everyone knows Java's a nonstarter these days. Ack, why did they kill it with Swing instead of a decent lightweight GUI (like wxWidgets or FLTK or something)? And they never got the memory usage under control.

      But why Ruby and not python? What sort of errors is python prone to that ruby avoids? We have a bunch of python code here (scons and other stuff) and a bunch of older perl, and I'm reluctant to start a big web app in Yet Another Language. We all know python pretty well now. Is ruby going to be that much more maintainable? What about TurboGears for instance?

      Also there seems to be a wider variety of libs available for python than ruby. And the python docs are very good. So I'm very interested to hear about the error-prone nature of large web-app development in python.

      -- SilentTristero

    4. Re:maybe to ruby, not python by nother_nix_hacker · · Score: 3, Interesting
      No one I've met doing serious development is building on python
      I work for a large tech. company in the UK and use Python for _a lot_ of my development. Google use it too: "Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we're looking for more people with skills in this language." said Peter Norvig, director of search quality at Google, Inc. Go to jobserve.co.uk and type Python into the search box. Tonnes of results come up.
      it's just too error prone
      What in gods name is that meant to mean? Too error prone? I've never heard such flamebait in my life. Just because you write buggy software in a language doesn't make the language "error prone"! I'd love to hear you elaborate on this...
    5. Re:maybe to ruby, not python by Anonymous Coward · · Score: 1, Insightful

      Nah the guy probably knows a lot of real life programmers and not too many "I'm a Python guy" types that do some stuff and claim is't just as good the professional stuff they never used..... Python is pretty nice tool for some things, but it's mainly overhyped by it'own users.

    6. Re:maybe to ruby, not python by latin_fury · · Score: 5, Informative

      That's funny, reddit.com just switched to Python (http://www.aaronsw.com/weblog/rewritingreddit). And Google uses Python extensively inside the company, and just hired Guido van Russom, Python's creator. There are many more examples out there if you bothered to look.

    7. Re:maybe to ruby, not python by Simon+Brooke · · Score: 4, Informative
      This is not a troll, it's a serious question from someone who's about to start a major db-driven web app.
      OK, everyone knows Java's a nonstarter these days. Ack, why did they kill it with Swing instead of a decent lightweight GUI ...

      If you're writing a web app, Swing is an irrelevance. You won't be needing it and it won't get in your way. Java remains an excellent choice for serious web apps which you're going to want to maintain later. I agree with you that Swing is a horrible mess, but as someone who only writes web apps it doesn't wory me at all.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    8. Re:maybe to ruby, not python by Surt · · Score: 1

      Some people from Sun discussed it (at JavaOne) being in progress for java 6-7. That is, it will likely have a compiler in the java 6 timeframe, and will become a fully supported language in the java 7 timeframe. I don't have a link for you because Sun isn't publicly committed to this yet, so it could not happen, but given their interests that seems unlikely.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    9. Re:maybe to ruby, not python by Tim+C · · Score: 2, Interesting

      OK, everyone knows Java's a nonstarter these days.

      Quiet you fool! My employers and clients might hear you! Then what would I do for a job, eh?

      Seriously, I have six years commercial experience of writing web apps in Java. Would I recomend it for absolutely every situation? No, of course not. Is it categorically a non-starter? No, of course not.

      The right tool for the job; Java has its place, and to deny this with the blanket assertion that it's "a nonstarter these days" is to reveal a closed mind.

    10. Re:maybe to ruby, not python by Concerned+Onlooker · · Score: 2, Funny
      Ruby may well replace java as the syntax of choice for developing big web apps.

      So what you're saying is that Java is being ridden out of town on a Rail?

      --
      http://www.rootstrikers.org/
    11. Re:maybe to ruby, not python by Surt · · Score: 2, Insightful

      Pythons syntax relies on whitespace rather than closure for depth management. It's foreign to a sufficient number of programmers to represent a real bug risk, particularly as you try to grow toward building large programs.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    12. Re:maybe to ruby, not python by adamhupp · · Score: 5, Insightful

      A few comments:

      1. I've started using Turbogears and its is wonderful. Easy to setup, very easy to understand, and very powerful. I cannot comment on it with respect to Rails, but as far as I know it is inspired by similar ideas. One major advantage of Turbogears is that it is built out of several existing projects that have had lots of use and development, SQLObject (for Object-Relational mapping) and CherryPy.

      2. I can't imagine any reason to believe Python would be more error-prone than Ruby. From a language standpoint they are very similar. However, Ruby is a somewhat immature language compared to Python. Standard library, 3rd party support and performance are all lacking in Ruby. I'm sure these things will catch up in time, but for now it's a much newer environment and it shows.

    13. Re:maybe to ruby, not python by forkazoo · · Score: 1
      Why do you dismiss Java as a non-starter? Certainly, the hype has died down, but it is also a fairly well-known, mature language with a massive standard library, and a ton of existing code available. I was never a fanboy, but I have used Java, and it really isn't terrible. I do think that it gets used in a lot of places where it shouldn't. As for the GUI issues -- you said it was a web app, right? How much of a Java GUI do you need? Even if you do need a GUI, I've always found Java GUI's quite easy to make, and reasonably fast. No, not as fast as writing straight native Win32. But, I use programs like azeurus without any issues, and it is fairly GUI intensive.
      That said, my first love for database backed web apps is always PHP. Personal preference. Some people will criticise it, but it works well enough for the stuff I've done with it.
      [This is not a troll, it's a serious question from someone who's about to start a major db-driven web app.]

      OK, everyone knows Java's a nonstarter these days. Ack, why did they kill it with Swing instead of a decent lightweight GUI (like wxWidgets or FLTK or something)? And they never got the memory usage under control.

      But why Ruby and not python? What sort of errors is python prone to that ruby avoids? We have a bunch of python code here (scons and other stuff) and a bunch of older perl, and I'm reluctant to start a big web app in Yet Another Language. We all know python pretty well now. Is ruby going to be that much more maintainable? What about TurboGears for instance?

      Also there seems to be a wider variety of libs available for python than ruby. And the python docs are very good. So I'm very interested to hear about the error-prone nature of large web-app development in python.
    14. Re:maybe to ruby, not python by Anonymous Coward · · Score: 1, Insightful
      [This is not a troll, it's a serious question from someone who's about to start a major db-driven web app.]

      OK, everyone knows Java's a nonstarter these days. Ack, why did they kill it with Swing

      You are using Swing as a reason for selecting a programming language / platform for a web application? That is somewhat bizarre.

      instead of a decent lightweight GUI

      Google for SWT.

      I've done production web systems in C, Perl, TCL, PHP, and Java. Ruby and Python for learning purposes only. If I started a "major db-driven web app" today, what would I use? Java. Maybe Ruby or PHP for a small personal web page, but for serious stuff there is no question.

      Of course Java is so popular that it every self-respecting /. |337 person must rebel against it -- can't go along with the great masses, after all. But if you do a brain-based decision Java is it by a wide margin.

    15. Re:maybe to ruby, not python by killmenow · · Score: 1

      I will not respond to your disparaging remarks about Python. I simply wish to say this:

      I certainly HOPE the hype moves to Ruby and skips right over Python. That way I can continue doing my serious development work in Python and avoid the nincompoops who've nothing better to do than go apeshit over whatever the latest buzz happens to be.

      Ruby can have the hype. Python will quietly continue being a highly usable, useful, and fun environment for me to do my job with under the radar.

      I hope.

    16. Re:maybe to ruby, not python by jrcamp · · Score: 1
      One major advantage of Turbogears is that it is built out of several existing projects that have had lots of use and development, SQLObject (for Object-Relational mapping) and CherryPy.
      Actually, I see cherry picking (no pun intended) as a disadvantage to Python. You have all these disjunct components created by different groups not necessarily designed to be used together. (This argument also applies to the Java lanscape, too.)

      On the other hand, Rails was created by a core group with all components tightly integrated, using the same naming, API, and logical conventions. It's a one-stop shop for an entire framework.

    17. Re:maybe to ruby, not python by Tumbleweed · · Score: 0, Flamebait

      I'm thinking that the type of programmer who can't wrap his head around whitespace in Python is perhaps a programmer one could do without.

    18. Re:maybe to ruby, not python by LDoggg_ · · Score: 2, Insightful

      OK, everyone knows Java's a nonstarter these days.

      As much as I hear this regurgitated ad nauseum in the comments here it still makes me chuckle.

      Just did a simple search on a few different cities on monster.com and it seems that there's about 10 or 11 times more positions available to java programmers than ruby and python combined.
      I've done a little python and don't mind it so much, and have only read a few tutorials on ruby and ruby on rails. They both seem ok, but neither have a syntax anything like what I'm used to(C,C++,Java,C#, etc...).

      I'm curious if gcj/gij + gnu-classpath had a complete and open 1.5 spec implementation on par with the Sun JVM's performance, would the anti-java hostility still be there?

      As a programming language I find it extremely productive on the client or server, and there is an API to do pretty much anything you could want.

      --

      "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
    19. Re:maybe to ruby, not python by tenchiken · · Score: 1
      Python is a great language, but it still has enough "isms" to make it hard to wrap your head around it. I will be the first to admit that Ruby also has several isms as well.

      Bear in mind that this is coming from a long time Plone fan, who recently has had to give it up:

      The reason why I think that Python is catching on where Ruby is not is:
      • Python had it's initial web framework that was going to change everything. Zope
      • Zope had a lot of really great ideas. The Object Store enabled a whole class of problems to be solved efficently. Unfortunitly once you start building larger applications (ala Plone) you discover that the entire approach does not scale and does not integrate well with each other.
      • Now we have a from the ground re-write of Zope, but Zope still requires learning python, and still is completly unusable with anything other then Zope.
      • While python does let you do several magical things, the syntax behind them can be rough.
      • There are still more Perl programmers then Python programmers. Ruby is closer in syntax to Perl


      Note that I think that several of the reasons that Zope and python failed will also result in drawbacks from Ruby. Already you see a attitude from the ruby team that bashes integration of components for a DIY approach. Do it yourself doesn't scale.

    20. Re:maybe to ruby, not python by bigskinnee · · Score: 1

      I think you have not seen the large amount of great development going on with Django http://www.djangoproject.com/

    21. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      Closure? What you mean to say is that Python relies on changes in indentation to delimit scope, whereas Ruby relies upon the "end" keyword to delimit the end of scope. Well, that and the optional usage of { } to delimit the scope of a block with different precendence levels and scoping rules.

      Since all code is indented, there is actually rather little risk of this causing any problems. If inconsistent indentation is used the interpreter will flag it. No one writes unindented code, and this complaint is usually one of the stupidest things I see people bring up.

    22. Re:maybe to ruby, not python by SilentTristero · · Score: 1

      Oh, just that. Sorry, I thought you had a substantive issue in mind. (We use emacs so the whitespace thing is not an issue for us, python-mode is very nice.)

      -- SilentTristero

    23. Re:maybe to ruby, not python by SilentTristero · · Score: 1

      > If you're writing a web app, Swing is an irrelevance

      That's true. However I'd really like to not have to switch languages between all the different stuff I do. Python's sufficient for admin scripts, glue scripts, generic command-line programs, build scaffolding, web apps, and small gui apps. I imagine ruby can do all those things too (Its regexp support is better, so it's probably almost as good as perl for heavy text processing which is pretty much all I use perl for anymore).

      But Java's Swing problems, startup time, and memory requirements pretty much lock it out of all those categories except web apps. Not to mention difficult interop with other languages/libs and having to compile it.

      (Yes, azureus is pretty beautiful -- but look at its startup time. No problem for an app like that, but I hate waiting for apps to start up.)

      -- SilentTristero

    24. Re:maybe to ruby, not python by Gargamell · · Score: 1



      Boink

      He nailed it. I am constantly concerned that blanket statements do not even help the opinion, but really take slashdot down a notch in reputation. Why do we have to squabble when a good question such as this is posed?

      The entire aspect of J2EE is ruined by someone saying that for a "web app" developer, Swing has no relevence. I ACTUALLY just built a J2EE web application. We already have numerous Swing tools, and a thick client that you can access via webstart is on the way. Consider the scalable implications of your system if you choose Ruby for an application? It will be that much harder to build thick application upon it. Of course it can be done - but for anyone who has written COM to integrate a PERL application with a VBS app, my experience tells me that it might have been easier if they had chosen J2EE from the start?

      Nothing Earth shattering - just my two cents!

      Now get back to work!

      ~tim

    25. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      wxWidgets is a heavy toolkit. The memory consumption of programs that use it is retarded. It has very few widgets, and every program that uses it looks bad.
      FLTK is a light toolkit, but it acts exactly as Swing does and implements all of its widgets itself. It also happens to look like shit, and have a terrible API.

      Java apps typically trade memory for performance. This is not always the case. Contrast IDEA with NetBeans. IDEA consume comparatively little memory in comparison to NetBeans (hog), Eclipse (serious hog), or Visual Studio (minor hog). This isn't limited to Java (wxWidgets programs waste lots of memory simply through all of the indirection, Mozilla rarely releases memory it allocates, before switching to a slab allocator Gtk+ frequently didn't return pools of memory with sparse allocations).

      Really the only C++ toolkit with quality is Qt, but at $5k per developer for cross platform development it's not worth the money. So for in-house cross-platform development people use Swing or to a much lesser extent the oft-reviled SWT. For commercial platform-specific development people just rely on the toolkits most popular and liberal for the respective platforms.

    26. Re:maybe to ruby, not python by CableModemSniper · · Score: 2, Insightful

      Oh come on. I mean I don't like the Python "whitespace as syntax" as a matter of aesthestics, but thats a ridiculous statement to make. Any programmer knows that the "if" for instance has to terminate, the worst case scenario is that they will throw in some { } or extraneous ends and it will fail to parse. Then they'll quickly figure it out. It's not gonna cause you any more runtime errors than any other language. If a block is so big and so nested that you make a mistake placing a statement in the proper block, you'd probably make that mistake regardless of the language.

      --
      Why not fork?
    27. Re:maybe to ruby, not python by arevos · · Score: 2, Informative
      Pythons syntax relies on whitespace rather than closure for depth management. It's foreign to a sufficient number of programmers to represent a real bug risk, particularly as you try to grow toward building large programs.

      Eh? That's like saying languages that have semicolons on the end of lines are more bug-prone because programmers sometimes forget a semicolon. Incorrect whitespacing and missing semicolons are both syntax errors that are caught at compile-time, not run-time, so in practise this is entirely a non-issue.

      Despite having twice as many years experience programming Java than Python, I've found that Python's whitespacing is far less prone to error than other methods of block delimiting. I can count the number of times I've messed up my indentation on the fingers of one hand. The number of times I've missed the occassional semicolon or bracket must number in the hundreds.

    28. Re:maybe to ruby, not python by sulam · · Score: 1

      Wait, a major db-driven web app and you're complaining about Swing and memory usage? Java is perfectly fine for db-driven web apps. In fact, I'd say of the three you mentioned, it has the richest set of frameworks you can use to build your app with. Java memory usage on the server is nothing special -- either direction. And you never touch Swing when you're writing server code, so I don't get why you're ruling it out. If you were writing a client app, sure, you have to need certain things to make Java the right choice. It has to need to run on multiple platforms, but look native on each of those platforms, without wanting to go the big $$ approach of writing multiple UI adaptation layers in C++. Java is actually the best at that, but that's a pretty specific set of constraints. I'd probably just write a C library and do it in .Net on Windows and ObjC on MacOS and call it a day, and if someone wanted to port it to Linux, great, go for it. But for a webapp? Unless it's something you're only putting 1 or 2 developers on, which hardly qualifies as "major", Java is the best choice IMO. Often it's the best choice even for small projects, although RoR / PHP / Python look a lot stronger at that point.

    29. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      I've been developing in Python professionally for the last 7 years or so. I've worked on very large systems in programming teams. Whitespace has never been an issue at all. I declare this whitespace issue FUD. Ruby has real things going for it compared to Python, and vice versa, but whitespace ain't it.

    30. Re:maybe to ruby, not python by Surt · · Score: 2, Insightful

      Whitespace errors can occur far more easily than block delimiting errors. Consider the case of un-indenting one line too soon. That produces an if condition error in python. Consider failing to close a block in java: that produces a compile time error.

      Run time errors are much much badder than compile time errors.

      Given that i've worked at only one place where I didn't have to work with people who would make this kind of error, I'd much rather stick with a language that will let me avoid having to debug this kind of mistake.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    31. Re:maybe to ruby, not python by Brendonian · · Score: 1

      I was not aware Java is a non-starter. I use it every day to develop web applications. So thanks for informing me.

      I do think Java is harder than it should be to start up a complex Java web application, but other than that Java makes me feel darn near omnipotent. With tools/APIs like Hibernate, Spring, IDEA (or Eclipse), the JUnit family, ANT/Maven there's nothing I can't write which isn't highly maintainable and extensible.

      I've had to convert lots of Perl code to Java when sites grew too large and complex to be maintainable. Will the same thing be true of Ruby?

      The main problem I see with Java is that so many creative people use it that its running in a dozen different directions all the time. I can't even count all the web MVC frameworks on my toes.

      I do need to check out all the buzz about Ruby though.

      Can anyone succinctly say why Ruby is easier than Java without just bashing Java? I would like to understand.

    32. Re:maybe to ruby, not python by mikaelhg · · Score: 1

      What sort of errors is python prone to that ruby avoids?

      Global Interpreter Lock? Monkey patching?

    33. Re:maybe to ruby, not python by pileated · · Score: 1

      What slashdot needs is a filter that sends any message with "everybody knows" to the bottom of the filter level, then digs a hole and puts it 5 levels beneath that. I don't believe I've ever read a comment anywhere that includes "everybody knows" and is worth reading.

      What they really mean is "I really don't have a clue to I'll just use this rhetorical flourish and hope nobody notices."

    34. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      Swing rocks.

      Can't find the link now, but recently read a survey showing swing is _the_ most popular gui toolkit for applications currently in development.

      Granted, Java being the no. 1 application language makes it an easy win.

    35. Re:maybe to ruby, not python by Nivag064 · · Score: 1

      Hmm...

      Java has excellent API's for handling databases, and you can write sophisticated GUI applications using Swing.

      With the default Hotspot compiler you get frequently executed code converted to native machine code; and in server mode, it will even consider inlining methods betwen classes.

      If you are doing a web application, you should consider a combination of Tomcat, Servlets and JSP's. However, there are many other combinations, including many Java Apache projects that might be more suitable for you.

      For heavy duty enterprise use you might like to consider JBoss.

      Java 1.5 introduced many features to ease coding, as well as improving performance and reliability. The next release of J2EE looks to do provide even better ease of development, as it incorporates key concepts from Hibernate and builds on the neat features of Java 1.5.

      I recomend Java for non trivial applications that you want to maintain easily and need to scale to large volumes of transactions.

      Essentially Java is still very viable for serious application development, and is often to be preferred.

      If you have a very small development team, only dealing with small to medium transaction loads, and don't expect to maintain the application for years - then other systems may be better for you.

      For large scale developments that need to be maintained and enhanced for several years, Java is the only starter. For medium systems: Java is a starter, but there are alternatives - although Java still has the edge. For small systems: the choice is not so clear cut, but personally I'd still chose Javs - though I'd carefully evaluate things before making a final decision.

      If I joined a company using PHP, then for small systems I'd stick with PHP, for a new project that was to be large scale I'd switch to Java.

      Please don't make decisions on software development like you would when chosing fashionable clothes.

      -Nivag

    36. Re:maybe to ruby, not python by zootm · · Score: 1

      That's a non-issue, in real terms. I'll give you that it takes a little longer to get used to than perhaps Ruby does, however. I don't think that whitespace delimitation is a serious problem beyond the first, say, week, though.

      If software engineers are causing bugs with this sort of problem, they probably shouldn't be trusted with curly brackets either. The biggest problem I've seen with the whitespace system is the difference between tabs and spaces, which should be covered by in-house coding standards and (if importing outside code) a simple spaces->tabs (or vice versa) filter.

    37. Re:maybe to ruby, not python by VGPowerlord · · Score: 1
      I've heard that the SWT Toolkit for Java is pretty nice... the problem is, you need to have compiled SWT libraries for your OS's Windowing system.

      SWT works by interfacing with the current windowing system, rather than having its own widgets like Swing does.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    38. Re:maybe to ruby, not python by arevos · · Score: 1
      Whitespace errors can occur far more easily than block delimiting errors.

      Not in my experience. At a guess, I'd say you haven't programmed in Python much. How can you make such an assertion when you have little to no practical experience working with a whitespace-using language like Python?

      I have over two years experience working in Python, and longer working in Java. Throughout this time, I've had less than a dozen whitespacing errors, and all of these were due to switching from using tabs to spaces for indentation in my editor. I've had at least ten times more semicolon and bracketing errors in that same period.

      Consider the case of un-indenting one line too soon. That produces an if condition error in python. Consider failing to close a block in java: that produces a compile time error.

      Er, no it doesn't. If the whitespacing is incorrect, it produces a compile time IndentationError in Python.

    39. Re:maybe to ruby, not python by Waffle+Iron · · Score: 1
      Java supports the optional curly-brace syntax for if/else statements just like C. I assert that this is a far more serious source of runtime errors caused by mediocre programmers than any Python indentation problems.

      With Python indentation, what you see is what you get. You can stare at a C/Java conditional construct for quite some time before you figure it out if the indentation doesn't match the braces or somebody omitted braces where they shouldn't have.

    40. Re:maybe to ruby, not python by jaydonnell · · Score: 1
      I've done a little python and don't mind it so much, and have only read a few tutorials on ruby and ruby on rails. ... As a programming language I find [java] extremely productive on the client or server ...

      Is this a joke? You admit to never really using python or ruby enough to know how productive they are then assert that java is extremely productive? Extremely productive compared to what, counting on your fingers?
    41. Re:maybe to ruby, not python by Surt · · Score: 1

      I've worked with python long enough to actually see these mistakes happen. You only get an indentation error if your indentation is illegal, but not if your indentation is wrong but legal. An off by one brace error is a compile error in java, an off by one indentation is a run time bug in python. I've never seen a brace error reach runtime in java, but i've seen an indenting error in runtime python.

      My experience tells me I don't want to have to debug poorly written python, and that i'll have no difficulty debugging poorly written java/ruby.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    42. Re:maybe to ruby, not python by Surt · · Score: 1

      Java may allow it, but who in their right mind doesn't flag a warning for unbraced if? This is trivial to do in all of the major IDEs, and everyone I know of does this, among numerous other code sanitizing requirements.

      But with python, it's literally impossible to compile time check for this error.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    43. Re:maybe to ruby, not python by zootm · · Score: 1

      You have all these disjunct components created by different groups not necessarily designed to be used together.

      Arguably, though, that's what projects like TurboGears provide. Ruby and Python both have extensive and consistent base libraries, but they both need an external project (TurboGears or Rails) to provide this extra framework. If TurboGears is done well, there shouldn't be too much of a loss as compared to the more "official" Rails package. Shouldn't. ;)

    44. Re:maybe to ruby, not python by jaydonnell · · Score: 1

      Have you worked at a place that writes unit tests? It doesn't appear so cause they would catch this immediately.

    45. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      The part about Python is nonsense. (I am no Ruby expert though) Numeric Python and/or Numarray is extensively used in Astronomy and other sciences. Many times it is used to wrap large scientific programs (esp FORTRAN) in an easy to use interface. I understand that govt labs like LLNL use it a lot.

    46. Re:maybe to ruby, not python by nojomofo · · Score: 1

      Is this a joke? You admit to never really using python or ruby enough to know how productive they are then assert that java is extremely productive? Extremely productive compared to what, counting on your fingers?

      Perhaps, as he says in his post, he's comparing it to C, C++ and/or C#. You know, those rarely-heard-of, under-radar-languages?

    47. Re:maybe to ruby, not python by Surt · · Score: 1

      I have, and of course you hope they will, but that requires that your unit tests cover every aspect of every conditional. That's the ideal, but the number of places actually successfully testing to that depth is miniscule.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    48. Re:maybe to ruby, not python by LDoggg_ · · Score: 1

      Whoa, take it easy. That's a little out of context.
      I didn't take a shot at either ruby or python, was just questioning the anti-java hostility, which you didn't manage to explain either.

      I find java productive compared to many other languages I have had extensive use with namely PHP, C, C++, pascal and a few others.

      --

      "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
    49. Re:maybe to ruby, not python by Surt · · Score: 1

      Note that 'wrap'ing a big scientific program isn't exactly the same as writing a big scientific programming. I'm not saying python is unusable, just that it doesn't scale well (eg can't replace java).

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    50. Re:maybe to ruby, not python by jaydonnell · · Score: 1

      Sorry, I just see so many "i've never tried ruby/python, but java is better because xyz" that I have a quick trigger.

    51. Re:maybe to ruby, not python by Waffle+Iron · · Score: 1
      Changing the indenting of Python code is exactly equivalent to moving the braces in Java code. There is no compile-time check in Java that will figure out if you incorrectly moved a brace either. In both cases, if you don't want to change the meaning of the code, don't do that.

      You're arguing that you want extra manually-crated redundancy in the text to help you spot (some) errors. (Redundancy which becomes useless if anybody happens to run an auto-indenter on the file, BTW.) That may be a small benefit, but it's not enough reason to dictate you entire choice of languages and saddling your project team's fingers with 3X more typing.

    52. Re:maybe to ruby, not python by jaydonnell · · Score: 1
      My company has been coding python apps for a couple years and we have had very few problems with the white space issue and when we have it's always been a quick fix. We usually put a newline between the blocks so it's visually obvious when a whitespace mistake occurs. (i'm using . for spaces because I don't know how to keep the spaces on here)
      if(a < 10):
      ....print 'woot'
      print 'a is less than 10' #this should be indented

      print 'not in the if block'
      This type of error has rarely occured for us. You combine the newline convention with decent (not ideal) unit tests and the benefits of python over java for example is well worth the slight problem whitespace issues may cause. Ruby is a completely different story though. If you don't like pythongs whitespace, but like the dynamics of it then I recommend ruby. problem solved :)
    53. Re:maybe to ruby, not python by Surt · · Score: 1

      If typing rate is a constraint on your productivity, that's a serious problem with methodology.

      Note that running an auto-indenter on java is harmless, and not so on python.

      Again, my experience suggests that making an indentation mistake is easier than making a brace mistake. Maybe your experience differs. But given my experience, I have to reach the conclusion that indentation based depth is a programming risk. If you're lucky enough to work with the sorts of people who will never make that mistake, that's great, but I'd rather work with a language and toolset that works hard to protect me from less talented peers.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    54. Re:maybe to ruby, not python by Surt · · Score: 1

      That was where I started from all the way back in the great-great grandparent original post: preferring ruby.

      My concern is that 'rarely' isn't very happy, and that this particular issue is potentially unfun to debug, particularly in situations where the intent is less obvious (and sure, unit tests might save you, if you were sure to capture every consequence of the if conditional, which in my experience is beyond the depth even fairly hardcore unit testers reach). I have never seen the corresponding brace error come up in java (which would be correct number of braces, but with a brace on the wrong line). The corresponding brace error which tends to actually occur is unmatched brace which never reaches runtime because you can't compile it.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    55. Re:maybe to ruby, not python by mnmn · · Score: 1

      I know its a guaranteed Karma-earner to say 'right tool for the right job' everytime two technologies are compared anywhere on the web, but I'll go out on a limb and say Python (and other similar tools) are more right for more jobs than Java. You can use that expression for Linux vs Microsoft, VHS vs Beta, 802.11a vs 802.11g or QNX vs eCos. But comparisons are done with that already in mind.

      I should say I've had a closed mind against Java for a long time. Its the only language (apart from Pascal) that I've despised enough never to have learned seriously. I feel comfortable with C, much more so than with C++, and tend to go more into deeply embedded devices with assembly languages. At the higher levels, I've used PHP and Visual Basic, and PHP is more intuitive to me. So theres my bias.

      But The results of Java have so consistently been slow everywhere I've checked, its hard to believe Java can be fast. Java web apps load much more slow than PHP, Java applications can be resource hogs and on a higher level can be a real pain in the ass. Have you tried to install Oracle 9i or 10g? Have you had those 'wrong Java version' problems, where you have to find and specify that EXACT version else things break all around? I'd rather have the C source code and compile it for whatever platform I'll use it. .NET seems to have failed to be the industry standard platform, maybe Java will too. Java has a stronger hold as a VM since the entire tech industry has been behind it and supported it minus Microsoft, but these so many other languages have been successful and flourished in spite of Java's standard usage and teaching in most colleges that I think somethings inherently wrong with Java's design as a VM. It tries to be a generalist, while the special languages PHP, Perl , Python, Ruby, C++, VB all continue to be successful.

      If I were a hardware technician, I'd rather have a large set of specialized tools than one swiss army knife.

      --
      "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
    56. Re:maybe to ruby, not python by stuntpope · · Score: 1

      Just too error-prone? Care to explain?

    57. Re:maybe to ruby, not python by arevos · · Score: 1
      An off by one brace error is a compile error in java, an off by one indentation is a run time bug in python. I've never seen a brace error reach runtime in java, but i've seen an indenting error in runtime python.

      I've this piece of code in Java source I inherited from a previous employee (or at least, a piece of code very similar in structure):

      SomePreviousLine = OfCodeWentHere(new thatWasTypicallyVery("Verbose").parse(stringName)) ;
      if (someCondition.equals(someOtherLongCondition) && booleanEvent && SomeOtherObject.methodName().equals(new Object()));
      {
      // Some equally long and complex javascript that inevitably overflows 80 characters in a very annoying fashion
      }

      It took me a while to spot the bug, especially since this particular delightful mess was embedded in hundreds of lines of similarly verbose code. The bug showed itself at runtime, not compile time, and you can imagine how hard it was to track down. Far longer, I suspect, than it would have taken me to spot a piece of code that didn't have the correct indentation.

    58. Re:maybe to ruby, not python by Surt · · Score: 1

      Your tools should have caught that. Empty statement is even a warning in the standard javac now I believe, but even if it's not, you should definitely be using a code-cleaner like pmd (or various others).

      http://java-source.net/open-source/code-analyzers/ pmd

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    59. Re:maybe to ruby, not python by Surt · · Score: 1

      See the various white space dependency issue posts.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    60. Re:maybe to ruby, not python by hohonuuli · · Score: 2, Insightful

      But Java's Swing problems, startup time, and memory requirements pretty much lock it out of all those categories except web apps. OK, I'll bite. What are Swing's problem's? Too flexible? Too many GUI builders available ? Too cross-platform? Also you forgot the category of delivering rich client apps over the web without requiring installation or any Web programming (Java Web Start). Swing is actually great for a lot of things. (Yes, azureus is pretty beautiful -- but look at its startup time. No problem for an app like that, but I hate waiting for apps to start up.) Azureus isn't Swing it's SWT. http://www.eclipse.org/swt/

    61. Re:maybe to ruby, not python by Waffle+Iron · · Score: 1
      If typing rate is a constraint on your productivity, that's a serious problem with methodology.

      Extra typing is mostly just an annoyance, but having to wade through thousands of lines of extraneous boilerplate code in order to find the essential logic is a serious problem.

      Note that running an auto-indenter on java is harmless, and not so on python.

      By definition, nobody would ever run an auto-indenter on python. An auto-indenter's job is to try to automatically recreate the redundant indent information that got out of sync with the brace information after programmers failed to do it manually. Python doesn't have this redundant info in the first place; it's an example of the DRY (don't repeat yourself) engineering principle that is frequently found in well-designed systems.

      Running the auto-indenter in java is harmless, but my point is that it erases any chance of you spotting errors based on indent/brace mismatching, which was your big reason for sticking with a language with the redundant block notation in the first place.

    62. Re:maybe to ruby, not python by hohonuuli · · Score: 1
      OK, everyone knows Java's a nonstarter these days.

      Really? No one told me that. Sheesh, I guess I'd better rip out all this Java code I've got running reliably and replaced it with [insert over-hyped language here]

    63. Re:maybe to ruby, not python by SilentTristero · · Score: 1

      > Azureus isn't Swing it's SWT

      Thanks, I didn't know that. I guess it's just regular Java overhead that makes it slow to start.

      As for Swing's problems: not truly native look & feel (doesn't behave like other Windows/Mac apps), terrible event model (bad queuing design - pretty much mandates a separate gui thread), slow slow slow, memory hogging, even more increase in startup time. I could go on, but for a serious GUI app (e.g. a desktop front-end to a web app) its performance is unacceptable and it is too buggy. In our testing, it was not very cross-platform either. We ended up having a fair amount of platform-specific code. Admittedly that was some time ago; it may have gotten better since then.

    64. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      I agree with you that Swing is a horrible mess

      Why does Swing have such a bad reputation? If done right, Swing is beautiful. Look at the NetBeans IDE. It is all done in Swing and it is a great application. I would blame the developer for a bad Swing application rather than blaming Swing.

    65. Re:maybe to ruby, not python by arkanes · · Score: 1

      Thats not error prone. It's like claiming that C is more error COBOL because you might forget your semicolons (which in certain cases can actually cause runtime errors, but never mind that for now). Your program won't run if you screw up your indenting, just like it won't run if you don't type and "end" in Ruby. Further, your conjecture is contrary the experience of almost everyone who's used Python (anyone who's bothered to talk about it, anyway) so I'd be interested if you could back this up with some sort of meaningful statistic.

    66. Re:maybe to ruby, not python by Surt · · Score: 1

      I don't know if I can provide any sort of statistic. I've seen this error crop up in python more than a few times, and it is both annoying and potentially difficult to debug. I very much guarantee you it can reach a runtime error (unindent the last line of any if block). When it does crop up, you better hope you have a unit test that catches it, or that the behavior is sufficiently broken to be obvious.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    67. Re:maybe to ruby, not python by arevos · · Score: 1

      I'll take a look at pmd, though I suspect that errors from extra semicolons are significantly rare enough for it to be more trouble to download and use pmd than it would be to check through by hand. The javac 1.4.2 compiler didn't catch the above bug, though perhaps 1.5 would.

      Regardless, for me, it is easier to spot the mistake here (indentation represented by "_"):

      if x == 1:<br/>
      ____ y = 2
      return y

      #more code
      Than here:
      if (x == 1) {
      ____ y = 1; }
      ____ return y

      # more code

      Nor can I think of a single time when Python's indentation has caused a bug for me. Maybe I've just been extremely lucky for two years, but I can't say I think it's a tenth the problem that you say. Also, I've spent more time on errors with semicolons and bracket in Java, than I have had with Python whitespacing.

    68. Re:maybe to ruby, not python by Surt · · Score: 1

      I think this may be an issue with size of codebase: you claim you'd look at pmd, but wouldn't it be easier just to check by hand. To which i'd say: not in 40,000 source files, no it wouldn't. When I first ran PMD against our 40,000 source files I turned up four bad semi-colons, three of which were real bugs (one had no side effect). Likewise, if you're looking at a comparatively small amount of python, i'm not too surprised if you haven't run into this very often. Working on a large team, with a large codebase, you want tools to do as much work as possible, and python is not as friendly to that notion as it should be.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    69. Re:maybe to ruby, not python by arkanes · · Score: 1

      Anti-Java hostility is common in Pythonistas and whatever Rubists call themselves. It's like you met this woman at a nice, upscale party (hosted by Sun, of course), and so you dated her for a while and she was pretty nice - not great, not especially good looking, but you got along okay and you aren't a prize yourself. So everything was okay for a while but then you noticed a few things about her. Like that she took forever to get up in the morning, and that she made you move to her house instead of living in yours, and she never let you hang out with your friends, and although she claimed to be a neat freak and hate garbage, she had a tendency to refuse to throw anything out because she thought she might need it later. And then the real bad stuff started to happen, like overnight she tripled in size and you don't know why, and she started insisting that you write everything down in Spanish before translating it to English to tell her. And then she killed your dog, and you were scared to leave.
      So one night after a long day satisfying your demanding new mistress, you run down to a bar you used to hang out with some friends, nad you meet this new chick. And she's really really pretty - elegant, even, and a hell of a dancer. And she thinks just like you do, you can talk about anything and you end up completing each others sentences before the night is over. She's a part of your crowd - all your friends know her and hang out with her too, no jealousy involved. She has her own house but has no problem living in yours, doesn't spread her stuff out too much, picks up after herself (but sometimes you have to remind her). So you ditch the demanding bitch and you move in with the new girl. And whenever you hear someone talking about those upscale women you meet at the big parties, you just get a bad taste in your mouth, and you tell them about the hot little lady you met at the bar.

    70. Re:maybe to ruby, not python by jaydonnell · · Score: 1

      But, i've seen plenty of very badly indented code which may not be a bug, but it adds significantly to the cost of maintaining the code. I'm not sure one is better than the other.

      The only time we've ever had a problem with whitespace is when we copy and paste a big chunk of code and in my experience you are just as likely to have issues with {} in such cases. You'll have the right number of { and } (no compiler error), but their positions will change. More importantly, when you do move a big chunk of code you should make sure to test it a little better in your unit tests. I just don't see an obvious benefit to one over the other.

    71. Re:maybe to ruby, not python by Abcd1234 · · Score: 1

      That's true. However I'd really like to not have to switch languages between all the different stuff I do

      So, what you're saying is you don't want to use the best tool for the job. Well, to each his/her own.

    72. Re:maybe to ruby, not python by arevos · · Score: 1
      I think this may be an issue with size of codebase: you claim you'd look at pmd, but wouldn't it be easier just to check by hand. To which i'd say: not in 40,000 source files, no it wouldn't. When I first ran PMD against our 40,000 source files I turned up four bad semi-colons, three of which were real bugs (one had no side effect).

      Probably. Generally the projects I've been involved in have between 10 to 300 source files. I'd be rather hesitant about using Python for a project that needed 40'000 source files! I might be tempted to try Scala for such a task.

    73. Re:maybe to ruby, not python by nwbvt · · Score: 1
      "Whitespace errors can occur far more easily than block delimiting errors. Consider the case of un-indenting one line too soon. That produces an if condition error in python. Consider failing to close a block in java: that produces a compile time error."

      And consider if you put the code outside of the block you intended because the idiot java developer who wrote the origional code used inconsistent indenting and you missed the &@$# end bracket. That causes a logical error which is even worse than a run-time error.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    74. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      Amusingly what you really mean to say is that Python makes it too easy for you to put a statement or expression within the wrong scope, since an actual indentation error will be flagged. This is not something any language can avoid, but which you believe to be more likely in Python than Ruby or Java.

      Without any statistics, I'm inclined to say that you're full of shit. I've used Python for just about eight years now, and I've never once witnessed someone that accidentally broke indentation. In fact, I think the only times I've ever seen people put logic within the wrong blocks of code were logic errors on their part in the first place.

      All code is indented in a real development team. Indentation is significant to the programmer for understanding scoping, which is precisely why it's indented. Indentation is standardized and enforced (by the editors, and then by means of pretty printers).

      Making stuff up is stupid. Don't do it.

    75. Re:maybe to ruby, not python by ChrisA90278 · · Score: 1

      Is performance realy an issue? If your database has less then about ten million rows and you are exapecting only a couple hundred transactions per hour almost anything would work. You need to define the scope of the project. How much code or how many kinds of interactive web pages. What's the volume. Do you have a budget? Wo will write the software and what do they have experiance using? Anyone who hands out advice without knowing the answers to these questions, well... thier advice is worth maybe less than what you paid for it.

    76. Re:maybe to ruby, not python by gregfortune · · Score: 1

      Take a look at Twisted

    77. Re:maybe to ruby, not python by hohonuuli · · Score: 2, Insightful

      Why oh why do people feel they need to say the same things everytime a discussion about Java starts up. Slow, memory hogging, swing sucks, etc, etc. These arguments simply are not true about modern JVM's

      As for Swing's problems: not truly native look & feel (doesn't behave like other Windows/Mac apps),

      I love to hear this argument. OK...can you show me what a native windows app should look like? Why don't we take a look at Microsoft Office. You will note that microsoft doesn't even use a consistent L&F between different versions of office. Please repeat after me...there is no such thing as a truly native look and feel. Apple now uses 4 different L&Fs for the applications they write. What is the native L&F on Linux (Motif, KDE, Gnome, etc...what theme?). Look, here's an article that discusses it: http://www.osnews.com/story.php?news_id=10633 In Java, you can set the look and feel to be platform native. The problem is a lot of folks set there app to use the Java L&F (Metal) which does stand out and is down right butt-ugly. This is the developers choice, not a problem with Java.

      terrible event model (bad queuing design - pretty much mandates a separate gui thread),

      Can you explain to me what's wrong with Java's event queue? I do a great deal of swing programming and I find the event queue very simple to work with. Generally you can ignore it. If you have long running actions (such as long database transactions) you can fire them off in a seperate thread or use SwingWorker or Foxtrot http://foxtrot.sourceforge.net/docs/toc.php. If you don't understand the threading model, just say so, don't rag on it.

      slow slow slow, memory hogging, even more increase in startup time.

      Here's a few benchmarks:

      All problems with benchmarks aside. You can't say that you're thinking about using Python or Ruby instead of Java because Java's too slow. By their nature, interpeted languages are going to be much slower than compiled (even byte-code compiled) languages.
      I could go on, but for a serious GUI app (e.g. a desktop front-end to a web app) its performance is unacceptable and it is too buggy. In our testing, it was not very cross-platform either. We ended up having a fair amount of platform-specific code.

      Them's fighting words!! ;-) Please oh please stop spreading such lies though. Look, I just wrote a database app that's used for annotating video data in real time. Not only is it plenty fast enough but it's cross-platform. There's no platform specific code in it what-so-ever.

      p.s. Happy Holidays

    78. Re:maybe to ruby, not python by Peaker · · Score: 1

      No one I've met doing serious development is building on python, it's just too error prone.

      Huh?
      All the serious developers I know use almost exclusively Python, only resorting to other languages when they must.

      What developers did YOU meet?

    79. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      Wow, he was talking about SWING being slow and you refer to benchmarks comparing numerical computations? Did you just start frothing at the mouth thinking somebody was attacking your precious java and neglect to actually READ the post? Or do you just like to make strawman arguments in hopes that others will skim your post and not realise you're comparing apples to oranges?

    80. Re:maybe to ruby, not python by aCapitalist · · Score: 2, Informative

      I don't think Java or Swing is really slow these days. I run the weekly Mustang builds and Java is plenty fast - way faster than Ruby for obvious reasons. But I just tried the weekly build of Mustang SwingSet2 demo and it still doesn't look all that hot on an XP LCD at 1920x1200. The fonts are just too damn small compared to my system fonts. There's needs to be more hooks into the native OS in order for Swing to get hints about approximately it should use. And Swing fonts on an LCD have been a freaking nightmare for ever since there have been LCDs. Mustang finally is attempting the subpixel rendering in Java 6 (Mustang), and they've got it down partly. The actual font rasterizations could use some work though still. Why, oh why, did Sun decide they had to paint everything themselves years and years ago. Why couldn't they have used more native OS hooks...like fonts. SWT wouldn't have had to been invented and Swing would look great. And now finally in Java 6, they're starting to use more gtk hooks and windows hooks. But it's so freaking late. Anyway, that my rant/history of Swing.

      And so I would prefer native fidelity I much prefer SWT/JFaces...or the RCP as a whole depending on how big I'm talking. So SWT is a pretty raw API. They put Jfaces on top and to the side the API stack, but JFaces isn't as powerful as something like Swing, so...

      To me, the only thing that doesn't make programming in Java a complete monotonous/boilerplate-ridden pain in the ass are the IDEs, which everybody knows are second to none. But hell, give me Ruby and vim and I'm good to go even though the RDT and RadRails plugins for Eclipse are getting better. Ruby and/or Python both could use a rich Smalltalk-like environment like that were around (and I guess still are) 20 years ago. At the very least the move to a real VM in Ruby 2.0 will be nice and bring up performance considerably.

    81. Re:maybe to ruby, not python by Junks+Jerzey · · Score: 1

      No one I've met doing serious development is building on python, it's just too error prone.

      Ha, I get it! You mean people you specifically know, and disregarding all the well-known companies leaning hard on Python, like Google.

      Honestly, I have never *ever* heard "Python" and "error-prone" in the same sentence before. That doesn't mean Python is perfect, of course, but I think the primary reason people use Python in the first place is so they can build more reliable software more quickly.

    82. Re:maybe to ruby, not python by Nexx · · Score: 1

      Swing was made in the days when JNI calls were bloody expensive. Back in Java 1.2 or 1.3, when they first came out with Swing, doing one big JNI call was faster than bunch of tiny JNI calls.

      I don't know how things are now, with JNI call speed, though. They might have gotten better or worse.

    83. Re:maybe to ruby, not python by Nexx · · Score: 1

      Oh, everybody knows all generalisations are false! :)

    84. Re:maybe to ruby, not python by hohonuuli · · Score: 1
      But I just tried the weekly build of Mustang SwingSet2 demo and it still doesn't look all that hot on an XP LCD at 1920x1200. The fonts are just too damn small compared to my system fonts. There's needs to be more hooks into the native OS in order for Swing to get hints about approximately it should use. And Swing fonts on an LCD have been a freaking nightmare for ever since there have been LCDs.


      I do most of my work on a Mac (coincidently at 1920 x 1200. You running on a Dell 2405FPW?). The Java Fonts match the Native Fonts exactly. (or at least near enough that I can't tell the difference) I suspect Apple has added the hooks to the native system Fonts. I'm not surprised Sun hasn't customized Java as much for Windows since it's not a product they sell or support. Of course, I don't know if they added those hooks for Solaris or Linux either.



      Why, oh why, did Sun decide they had to paint everything themselves years and years ago.


      I'm not sure it was a bad idea. SWT, which as you know attempts to use native widgets, isn't that good as a cross-platform API. It's very fast on Windows, (actually about as fast as Swing is now), where it's been heavily debugged and optimized. On Linux it runs considerably slower and the Mac port has a great deal of bugs. Also, since the Mac port is based on Carbon not Cocoa, I'm not sure it will even run on the upcoming intel-based Macs.



      So SWT is a pretty raw API. They put Jfaces on top and to the side the API stack, but JFaces isn't as powerful as something like Swing, so...

      Well when SWT came into being Swing was pretty slow, so SWT made alot of sense. A little competition has been VERY good for Swing in general. Now that Swing's perfomance has improved I think SWT will mainly be confined to eclipse and RCP apps.



      To me, the only thing that doesn't make programming in Java a complete monotonous/boilerplate-ridden pain in the ass are the IDEs

      Amen to that brother

    85. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      HA! you must know some serious non professional programmers... As far as I can see, amateurs who like to look/sound geeky use Python, and yes they're serious about it. Then most professionals I know use something else. Of course there are alwais some huge projects that use product X (Python in this case). Similair cases could be made for TCL or Perl (Persoanlly I've seen some really col TCL stuff done).

    86. Re:maybe to ruby, not python by dodobh · · Score: 1

      Just did a simple search on a few different cities on monster.com and it seems that there's about 10 or 11 times more positions available to java programmers than ruby and python combined.

      It could also mean that it takes you 10 to 11 times as much effort to do the same work with Java as you would with Python or Ruby, and hence you need more programmers. Or it could be that the average Python/Ruby programmer is good, and you don't end up with the average crap Java programmer and hence get better results from fewer people.

      --
      I can throw myself at the ground, and miss.
    87. Re:maybe to ruby, not python by d-rock · · Score: 1

      Just a note on the poor trig performance. Java goes for accuracy over speed when dealing with large multiples of pi (for -pi/4 to pi/4 the performance is much faster). James Gosling has a whole discussion on the issue here. It would have been nice if Java offered the option of a faster, inaccurate method for trig functions, but if you really don't care about accuracy and would prefer speed you probably want to do table interpolation anyway.

      Derek

      --
      Don't Panic...
    88. Re:maybe to ruby, not python by d-rock · · Score: 1

      Indeed, python has a lot of nice features. I actually use Jython a lot for DB scripting because it gives me the flexibility of Python with JDBC (among other Java libs).

      Derek

      --
      Don't Panic...
    89. Re:maybe to ruby, not python by Surt · · Score: 1

      Which really reaches back to my original claim: that big projects won't risk moving to python, whereas they might consider moving to ruby, considering sun's semi-official blessing, and that language's more team safe design.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    90. Re:maybe to ruby, not python by ESqVIP · · Score: 1

      Well, I agree with most other posts here: from my experience, problems with semicolons or optional curly braces are countlessly more frequent than indenting problems.

      But I think nobody remembered to mention this: your comparison is not valid. Dedenting too soon is not the same as failing to close a block, but rather the same as closing it too early. And that is also a runtime error, just with a different syntax.

    91. Re:maybe to ruby, not python by arevos · · Score: 1

      My definition of 'big' wasn't quite as large as yours :)

    92. Re:maybe to ruby, not python by Peaker · · Score: 1

      Like the amateurs at Google, or Nasa?

    93. Re:maybe to ruby, not python by Pete · · Score: 1
      I must admit that's one of the more entertaining metaphors I've heard for comparing Java and Ruby/Python. Well done.

      Though Java hasn't killed my dog yet, but maybe I just haven't given it enough of a chance. :)

    94. Re:maybe to ruby, not python by Pete · · Score: 1
      [...] who in their right mind doesn't flag a warning for unbraced if? [...] But with python, it's literally impossible to compile time check for this error.
      Erm - I may have misunderstood you, but this:

      x = 2
      if x == 1:
      print "x == 1!"

      ...will result in an IndentationError exception in Python. Try it and see. The only way to have an empty (ie. no code) if-clause in Python is to use the (properly indented) keyword "pass". It's the same if you want to have an empty function or class body.

      You may also find tools like PyChecker useful for more involved "compile" time checking.

    95. Re:maybe to ruby, not python by Anonymous Coward · · Score: 0

      You might not know anyone, but there are quite a few companies who do use Python and have been very happy with it so far. I'm involved with a company that uses Python to process tens of thousands of data files 24/7 for convertion into other data formats or imported into a database. The system also handles data retrieval using FTP and HTTP, image processing and archival, and a wealth of other processes.

      It runs very well indeed and is a joy to maintain and adapt as new requirements dictate. Based on over a decade of working on projects like this in a variety of languages, Python has worked out the most cost-efficient, the most stable and (more importantly) the least-error prone technology. It produces very clean and legible code and frankly if you can't understand the use of indentation to denote code blocks, you might want to go back and review your programming style. I had similar reservations until I actually tried Python - and I've been converted. The mental switch was trivial.

      I've tried Ruby, but the language is immature in comparison and I've yet to really see any benefits over Python. Quite the opposite so far! Still, maybe one day...

    96. Re:maybe to ruby, not python by Surt · · Score: 1

      More like:

      x = 2
      if x == 1:
            print "x == 1!"
      print "hooray, x was 1!" #oops

      vs either:

      int x=2;
      if (x==2) //unbraced if warning
            System.out.println("x==1!");
            System.out.println("hooray x was 1!"); //oops

      or:
      int x=2;
      if (x==2) //unbraced if warning
            System.out.println("x==1!");
            System.out.println("hooray x was 1!"); //oops
      } //brace mismatch error

      Either case is caught by the compiler in Java. When you work on a big team, you want your tools to catch everything possible for you.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    97. Re:maybe to ruby, not python by Pete · · Score: 1
      Ah, I see. Sorry, I did misunderstand your original post - but I can only suggest that your examples (of chunks of code without matching braces) would be pretty rare in most development environments (so there isn't necessarily a lot of value in being able to have that compile-time error). And having matching braces but in the wrong place (not a compile-time error) would surely be no less common a mistake?

      I'd actually forgotten that some people use the one-statement unbraced-if in Java or C-ish code - I (and most of the teams I've worked with) use the always-brace-even-single-statements style.

      But more generally (and more relevant to the original line of discussion :)) on Python's "safety" (relative to Java, etc.) in a team dev environment - I just last night reread Bruce Eckel's Strong Typing vs. Strong Testing article. You may also find it worth a (re-)read. It talks specifically about programmers coming from the Java mindset to the Python mindset (as Bruce did) and eventually concludes that a proper unit-testing regime completely supersedes compile-time syntax/type checks for verifying code correctness... and the same applies in Python. He emphasises his point of view with:

      I came to feel so strongly about this that in the third edition of Thinking in Java, I wrote: If it's not tested, it's broken.

      Of course, Bruce is a unit-testing nut. But that's not necessarily a bad thing to be. :)

    98. Re:maybe to ruby, not python by Surt · · Score: 1

      I certainly agree that unit testing is great, and I think it is an ongoing innovation in our industry that is doing much to improve overall code quality. With that said, I still believe that for a large team working on a large project, anywhere that you can use tools to prove code correctness that will help, as even unit tests can be mistaken. Particularly, if you have to work with legacy code, you may develop unit tests that only wind up proving what you think the behavior should be based on the code and the documented interface, without necessarily understanding the subtle bugs that you are not testing.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  6. What? by Ginza · · Score: 0

    Um, people move on. It's okay. I don't think the 30 java programmers are going to cry themselves to sleep tonight. Most likely they'll go buy another book and learn the next language, just like they did when java got big.

    --
    Difference between a brave man and a smart man: a brave man will die for his country. A smart man kills for his.
  7. Python hype does not exist by hsoft · · Score: 1, Funny

    Whatever praise it gets is well deserved.

    --
    perception is reality
    1. Re:Python hype does not exist by wmshub · · Score: 4, Informative

      That's all a matter of opinion. I'm using python right now in a project, 35,000 lines of python at the moment. I've done Java apps of similar (or larger) size. I find python to have some nice features, but to be pretty badly unsuited for large projects. The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers), small typos in function/variable names aren't caught nearly as quickly, performance is far behind java (which in turn is behind C/C++ of course), etc.

      Back to the topic: based on what I'd heard about how great python was, I'd say python *IS* overhyped. It has its place where it does very well; it's a nice little scripting language. Better than sh or perl in a lot of cases. But it is not even in the same league as java for medium-to-large projects. I'd heard a lot of people call python a better replacement for java, and it just isn't.

    2. Re:Python hype does not exist by carpltunl · · Score: 0

      Wouldn't "badly unsuited" mean "well suited"?

      Note to self - Next year, be serious.

      --


      Mama, I got 'dem ole cosmic blues again.
    3. Re:Python hype does not exist by Hognoxious · · Score: 1

      Does "badly injured" mean "perfectly fit & healthy"?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:Python hype does not exist by wmshub · · Score: 1

      Cute, but no. From dictionary.com, "adv. Comparative of badly., ill. In a worse manner; to a worse degree."

      When somebody says they badly need a haircut, do you assume that they don't need a haircut?

    5. Re:Python hype does not exist by Red+Alastor · · Score: 1
      performance is far behind java (which in turn is behind C/C++ of course), etc.

      Have you ever heard of Psycho ? It's a Just-in-Time compiler (well, technically, it's a JIT specializer) for Python which speed up your programs significantly.

      And all that you need to do is to add those lines to your program :

      import psyco
      psyco.full()

      --
      Slashdot anagrams to "Sad Sloth"
    6. Re:Python hype does not exist by hsoft · · Score: 2, Insightful
      The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers)

      Just use some naming conventions. Every sane project does. Personally, I use "_protected_member" and "__private_member". It does the trick. And really, if your python dev can't follow these conventions, they indeed deserve to be fired.

      Python is simply the most graceful language ever (when you follow the Zen of Python). And that counts for something when you want to scale. That being said, the dynamic nature of Python is better tamed (because yes, using it without caution can be fatal.) with TDD.

      And my nearly finished ~10K LOC python project could (and probably will), I think, scale quite nicely, thanks to TDD.

      --
      perception is reality
    7. Re:Python hype does not exist by carpltunl · · Score: 0

      I see your point. So "badly suited" means...oooh, never mind!

      Note to self - Next year, be serious.

      --


      Mama, I got 'dem ole cosmic blues again.
    8. Re:Python hype does not exist by EnderWiggin99 · · Score: 1

      With the people I tend to hang out with, I kinda would say that is about right.

    9. Re:Python hype does not exist by arevos · · Score: 3, Interesting
      The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers)

      You could look at it the other way round; if there's a mistake in a Java class, you can't easily work around it. And I can think of two recent incidents where this has been the case for me.

      The speed issue is a factor, but I personally can't see why anyone would prefer Java over Python for developing commercial projects. Java's limitations are pretty frustrating sometimes, and there are times when you need to copy-and-paste segments of Java that could be avoided in Python. Java's simplistic and long-winded syntax means you have to do things the long way more often than would be convinient.

    10. Re:Python hype does not exist by Anonymous Coward · · Score: 0
      Dear hsoft,

      10k lines? That's a toy. Try a real system - 1mm lines is a good lower bound - in Python, then get back to us about how great it is.

      Love,
      Slashdot

    11. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      "The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended"

      No offence, but people who think that python lacks information hiding should consider learning more about OOP/OOD.

      "small typos in function/variable names aren't caught nearly as quickly"

      1. use pychecker / pylint
      2. do unit testting

      It's hard to belive that some typo can pass through these 2 simple steps.

      "based on what I'd heard about how great python was, I'd say python *IS* overhyped"

      I know this feeling... It comes from trying to write JAVA/C++ in Python. You should continue to learn Python, as there is a tipping point, after which You understand 'the Python way' of doing things. BTW: learning Lisp helps.

      "performance is far behind java (which in turn is behind C/C++ of course), etc"

      1. Use scalable algorithms
      2. Learn about performance of 'language constructs'
      3. Cache results (it's dead simple with decorators and dictionaries)
      4. Profile the code and find 'offending' functions. Inline them in C or use Pyrex to achieve near C++ performance (http://www.scipy.org/documentation/weave/weaveper formance.html)

      "I'd heard a lot of people call python a better replacement for java, and it just isn't"

      For most applications: it is.

    12. Re:Python hype does not exist by kalirion · · Score: 2, Interesting

      Just use some naming conventions. Every sane project does. Personally, I use "_protected_member" and "__private_member".

      While I don't know Python, and maybe I'd get used to this naming convention after a time, it sounds like it would be very annoying.

    13. Re:Python hype does not exist by ph1ll · · Score: 1
      Good luck on your project but, with the greatest of respect, a 10K LoC project is not huge.

      I'm currently working on a 500 000 LoC project and the thought of writing it without data hiding and instead having ten people adhere strictly to naming conventions sends a shudder down my spine...

      --
      --- "We've always been at war with Eastasia."
    14. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      "small typos in function/variable names aren't caught nearly as quickly"

      1. use pychecker / pylint
      2. do unit testting


      You get the same arguments from people who favor manual memory management (tools/testing will save you). Given language A that will catch all silly errors, vs language B that doesn't, I'll take language A. Dynamic typing will never scale -- even the "hyper-enthusiasts" often state that languages like Ruby or Lisp work better for small projects.
    15. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      > Java's limitations are pretty frustrating sometimes, and there are times when you need to copy-and-paste segments of Java that could be avoided in Python.

      There is never an excuse to copy and paste. I have worked on extremely large (millions of loc) systems and have never had to copy and paste (yes we actively monitored for this bad practice).

    16. Re:Python hype does not exist by pkphilip · · Score: 1

      I concur. I have written a very large business application (> 100K LOC) used in American banks using Python. The problem we faced was primarily due to the dynamically typed nature of python when small typos weren't caught easily. Ruby doesn't solve this problem either.

      In hindsight, I think I should have settled on either J2EE or .NET as the development environment. My only problem with J2EE is that it is heavily over engineered; the designers came up with an inordinately complex architecture and completely lost sight of the fact that simplicity is in itself a worthwhile goal.

    17. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      The problem that you describe is solved in the Perl world through a pragma called strict that makes using any undeclared variable an error.

      Unfortunately both Python and Ruby decided not to have a way of declaring variables. They just spring into existence when used. So neither has an equivalent of strict. Proponents will say that if you design everything with small methods and have good unit tests, your unit tests will catch those typos anyways. Those proponents are right, but miss the fact that in the real world many people don't work like that.

      This is one of the few ways in which Perl is significantly better than Ruby and Python.

    18. Re:Python hype does not exist by pkphilip · · Score: 1

      I am not sure if such a setting exists in python.. someone perhaps more knowledgeable can comment. If such a setting does exist, it will definitely solve a lot of problems.

    19. Re:Python hype does not exist by arevos · · Score: 1
      There is never an excuse to copy and paste. I have worked on extremely large (millions of loc) systems and have never had to copy and paste (yes we actively monitored for this bad practice).

      I think you misunderstand me; I'm not talking about using copy and paste to produce identical code (although sometimes interfaces make this unavoidable to an extent), I'm talking about using copy and paste to produce similar code. Getters and setters are a big causer of this, along with interfaces and the unwieldly introspection Java has.

      For instance, here's an example that's similar to a problem I recently faced. I need to convert a group of xml Elements to custom objects:

      NodeList elements = element.getElementsByTagName("item");

      items = new Items[elements.getLength()];

      for (int i = 0; i < items.length; i++)
      {
      items[i] = new Item( (Element)elements.item(i) );
      }

      This same code appears in several methods, but because each method uses a different custom class, it can't be easily put into a method. I thought about creating a method that took in a NodeList and Class object, but that would take more time than simply copy and pasting code and changing the class names, which would rather defeat the point.

      In Python, the entire code above can be represented in just one line:

      self.items = map(Item, element.getElementsByTagName("item"))

      A language like Python is powerful enough to avoid repetition in almost all cases. Java, unfortunately, isn't.

    20. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      > self.items = map(Item, element.getElementsByTagName("item"))

      But WTF does that do?

    21. Re:Python hype does not exist by arevos · · Score: 1
      But WTF does that do?

      Any Python programmer can tell you at a glance what that means. Indeed, most functional programmers could tell you what it means as well. The 'map' function is standard in quite a few languages, as is 'filter'. In essense, it iterates through a list of values, passing them to the function supplied (in this case, the object constructor), and returning the resulting list.

      One could make it even more clearer by splitting it up on two lines:

      item_tags = element.getElementsByTagName("item")
      items = map(Item, item_tags)

      But this isn't really necessary. I think it's clear enough without it. Java can't do things like this, because it has an incomplete object model. Unlike Python or Ruby, methods aren't first class objects in Java, so you can't pass them directly as arguments; you need to rely on complex object wrappers instead, which aren't convinient for functions such as 'map'.

    22. Re:Python hype does not exist by WryCoder · · Score: 1
      GvR's planning to eliminate map eventually. The example could also be done with a list comprehension.
      items = [Item(elem) for elem in element.get_elements_by_tag_name("item")]
    23. Re:Python hype does not exist by hsoft · · Score: 1

      First of all, a 10K python project rougly equates a 40K C/C++ project (Which makes python inherently more maintainable). I mean, how many LOC of C would it take you to perform:

      #The strings in name_list are in a "LastName,FirstName" format
      for last_name,first_names in [s.split(',') for s in name_list]:
      DoStuff(first_name,last_name)

      DoStuff() is supposed to be indented, but I don't know how. Of course, you can have a little C library to perform list comprehensions, but even then, you have to process the results of it (first_name = result[1]; last_name = result[0]). And of course, it is not remotely as graceful.

      I never said that 10K LOC was by any mean big, but the way I feel it (It's my first Python AND TDD project, but still, I worked on other big non-python, non-TDD projects before.), it could scale easily to 30-50K, and I wouldn't be suprised if it would scale to 100K without problems.

      And my other feeling is that when a python project turn 100K, it is because something went wrong. I mean, python can do SO MUCH in so few lines, I wonder what could possibly be need 100K python lines (But I perfectly know how a C/C++ project can become huge.). List comprehesions (The most graceful feature IMHO), multiple-inheritance (very handy when you start to use it. Cmon java, admit that you suck for this (Java has single inheritance right? I never used java)), easy list/dicts/tuple manipulation/creation, no namespace pollution, very nice base class and magic functions overriding system (__getitem__, __add__, __str__, __repr__, etc..). Everything to make development easier, FUNNIER, and thus, drastically reduce LOC.

      Arg, I'm just thinking about these ugly, HUGE C "switch" blocks, and I shiver (Python people, of course, use dictionnaries instead of ugly switch blocks, mapping to either lambdas or functions (or directly values, if appropriate).).

      As for the data hiding thing, I too, when I jumped to python, was afraid by this (The lack of it), but really, when you get used to it, you learn to like it. So if your python devs are minimally good, they'll act responsibly and follow the naming conventions. Beside, if you go TDD, virtually nothing can go wrong :).

      Yeah, I'm a believer.

      --
      perception is reality
    24. Re:Python hype does not exist by arevos · · Score: 1
      I know this, but in simple cases map is a neater and more concise option, and one can always implement it locally, even if it is removed as a builtin function:
      items = map(Item, elements)
      items = [Item(elem) for elem in elements]
    25. Re:Python hype does not exist by WryCoder · · Score: 1

      You could look at pychecker; it will catch these kinds of problems.

      http://pychecker.sourceforge.net/

    26. Re:Python hype does not exist by pkphilip · · Score: 1

      Thank you. I appreciate that. That is useful.

    27. Re:Python hype does not exist by Anonymous Coward · · Score: 0

      The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended (and before anybody says "a good programmer will do what your comments say, so fire the people who just use the code they see" - shut up, it is not possible to hire a team of all super-diligent programmers)

      It isn't? I've seen several such teams, and heard of many more. Google uses Python, and the biggest complaint I've heard is that they're hiring away all the good programmers (possible because they're willing to offer great working conditions). Interestingly, I've also heard (from its employees) that Google has the largest quantity of "*good* Python code" ever seen.

      So what you're really saying is not a criticism of Python, but of your company's hiring ability. I don't work at Google, but we manage to do just fine -- I'm working on a 100,000-line Python system right now -- so you'll get no pity from me.

      This isn't specific to Python, either. Most dynamic languages share this feature. And even encapsulation won't solve everything; you still need testing and code review to check other things, and in practice this ends up being a rather minor issue, unless you have people actively trying to thwart it.

  8. How about this quote? by $RANDOMLUSER · · Score: 5, Funny
    > Ruby is to Perl what C++ was to C.

    My worst write-only nightmare...
    *runs screaming from building*

    --
    No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    1. Re:How about this quote? by Skowronek · · Score: 1

      Dammit. Where's (+5, Troll) when you need it!

      Seriously, my first reaction to Ruby was "Gak. Perl."

  9. older platforms by kevin.fowler · · Score: 1

    I work with a program that's not exactly new... minus the content we pass through it. There's plenty of refuge for Javanerds working with apps like that. Of course that means there would likely be a decline in pay.

    --
    Bury me in mashed potatoes.
    1. Re:older platforms by iluvcapra · · Score: 1

      Interesting point... s/Java/COBOL

      --
      Don't blame me, I voted for Baltar.
    2. Re:older platforms by aled · · Score: 1

      If you can't tell Java from COBOL you don't know either.

      --

      "I think this line is mostly filler"
  10. no! by Anonymous Coward · · Score: 0

    "Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?""

    God, I hope not. Anything but Ruby and Python.
    (anything with c/c++ style syntax, that is)

  11. What about LAMP by Hao+Wu · · Score: 1
    I thought LAMP was supposed to be "the next java"....(?)

    --
    I suggest you read Slashdot
    1. Re:What about LAMP by theurge14 · · Score: 1

      Write once, run on Linux everywhere?

    2. Re:What about LAMP by psyclone · · Score: 1

      What? You cannot seriously compare PHP/Perl (even mod-perl) with Java/J2EE (as an application server) for large projects. PHP and Perl work great for small web apps, blogs, etc. But for maintainability, Java/J2EE are great for large projects.

      As far as I know, Python doesn't have an application server container (ala Tomcat style), so that's out. Ruby (from what I've read; never used it) seems promising. Java has been around for years, so software companies that have been using Java for years have hopefully learned from mistakes. They'd have to re-learn from mistakes if starting with Ruby.

      Of course, bad design and bad implementations can make a large project done in Java/J2EE fail miserably. But that goes for any language.

    3. Re:What about LAMP by Octorian · · Score: 1

      How about Zope? Wouldn't that at least somewhat quality as a web application container for Python? (even if it is more application-specific than something like Tomcat)

    4. Re:What about LAMP by GigsVT · · Score: 2, Insightful

      There's no reason you can't write large maintainable apps in PHP. I maintain a 14,000 line PHP application, and I've never felt like the language had some fundamental flaw that made it hard to maintain.

      Like you said, bad design and bad implementations are the reason for lack of maintainability, the language makes little difference.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    5. Re:What about LAMP by Pxtl · · Score: 1

      Speaking of which, have they ever released their sandbox publicly? A big problem with any use of Python is that there is no restricted execution system. Zope has such a system, but it's buried within Zope and I haven't found any info on using it as a seperate project.

      After all, the core of what an application server is is simply a place to put sandboxed server apps. How do I do that locally, without the rest of the Zope framework?

    6. Re:What about LAMP by Anonymous Coward · · Score: 0

      First off check out TurboGears for Python. Second, 14,000 lines of code is not a large app. Try a 100,000 or so. Tell me how you will maintain this with out using a Persistence layer like hibernate (try a 100 database tables) storing multiple implementations of interfaces in the same table. How about with out Struts or with out all the wonderful Java apis out there (many from apache and their jakarta project)? I've written in PHP before I moved on to Java and J2EE. PHP is a huge joke. Any one who argues the superiority of PHP to Java for real world applications essentially is showing their lack of knowledge. PHP is great... for creating a web blog that no one will view.

    7. Re:What about LAMP by kevin.fowler · · Score: 1

      I love LAMP

      --
      Bury me in mashed potatoes.
    8. Re:What about LAMP by NutscrapeSucks · · Score: 1

      "It can be done" isn't much of an argument.

      I was involved in a couple large ASP projects (one ~40KLOC VBScript, another ~20KLOC Javascript). In both cases the projects were successful, the code was OO and maintainable. In both cases I also recommended that they go with Java or .NET, and I was right - they would have been cheaper/faster/better had they taken my advice.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    9. Re:What about LAMP by Anonymous Coward · · Score: 0

      I've always viewed Java/J2EE as an excuse not to fix broken webapps. With PHP or Perl, it's easier just to make the change than to argue with the user. Any "large" webapp is broken by design - they should all be small, independent applications

  12. Re:CS programs + obligatory by Anonymous Coward · · Score: 0
    Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders

    Time to switch to Java!

  13. Author's Thoughts on O'Reilly by TubeSteak · · Score: 4, Interesting
    The book is roughly edited; you'll find yourself thinking "haven't I read this paragraph before?" in any number of places, but that's a disappointing experience I've had with several O'Reilly books of late. In many places he plays fast and loose, and almost at the end of the book he declares that he doesn't have time to learn these other languages in any depth -- although he has no trouble condemning the same languages in his rush to Ruby. Such a statement should be in the first paragraph of the book: "I've decided that I love Ruby, so I will condemn other languages without fully understanding them" (in one sentence repeated in a number of places in the book, for example, he declares that C# is no more than a clone of Java).
    Not sure if it's worth reading the rest of his book review / article
    --
    [Fuck Beta]
    o0t!
    1. Re:Author's Thoughts on O'Reilly by Anonymous Coward · · Score: 0

      > he declares that C# is no more than a clone of Java Well yeah. What's your point?

    2. Re:Author's Thoughts on O'Reilly by Anonymous Coward · · Score: 0

      His point is that C# is no more a clone of Java than OS X is a clone of Unix.

      Common roots, and plenty of similarities if you look in the right places. But they just aren't the same, despite the fact that frothy-mouthed fanatics like to say they are because it makes them feel better.

    3. Re:Author's Thoughts on O'Reilly by Magnusite · · Score: 2, Informative
      Not sure if it's worth reading the rest of his book review / article

      Actually, it is. If you haven't read any of his work, you might dismiss Bruce Eckel as just another one of the proliferation of people writing programming books these days. Fifteen years ago, if you walked into a bookstore, you'd find about three books on programming languages, with all the rest being dedicated to Lotus Symphony and DBase III. Today, any schmuck with a publishing connection can write a book on Ruby, Perl, Java, or what have you. When I went looking for a book to make the transition from C to C++, I scanned through dozens of C++ programming books before I found Thinking in C++. It's very well written, does not patronize you, covers real world problems in the language instead of boring you with another introduction to sorting, and demonstrates some pretty nifty tricks that he gleaned from Andrew Koenig, among others.

      Bruce is a real software engineer, and writes and speaks to the same.

      Not trying to start a flamewar, just don't dismiss the man because he speaks the truth.

    4. Re:Author's Thoughts on O'Reilly by TubeSteak · · Score: 1

      Ah, I wasn't bashing the reviewer.

      It just seems to me that if he's trashing the book he's writing about (in the first paragraph no less) then maybe the book he's reviewing isn't worth reading about.

      --
      [Fuck Beta]
      o0t!
    5. Re:Author's Thoughts on O'Reilly by MidKnight · · Score: 1

      I can second the thought that Bruce Eckel is worth listening to. Many many moons ago, you were able to download a few of his books for free, and they were excellent. As a matter of fact, it looks like you still can. And this was way before the Pragmatic Programmer folks made software development books downloadable by default.

      I think of Eckel as a software engineer who happens to be able to write well. Bruce Tate (the author that Eckel is criticizing) seems less like an engineer than, well, a cheerleader to me: lots of yelling and excitement, but not a whole lot of useful content in there.

      Sorry if I offended any cheerleaders who are browsing Slashdot....

      --Mid

  14. In short, no by Serveert · · Score: 4, Interesting

    I think that Real People are getting Real Work done while the flashy enthusiasts no longer have to toot the horn of Java.

    Java is faster than Ruby and as bloated as it may be, there are a ton of J2EE applications you can purchase and modify to suit your own needs. Not to mention the plethora of development environments - hibernate, JMS, JNDI, torque etc etc. ROR is nice but let's get real - ruby isn't as fast and the few applications around ruby aren't nearly as mature as Java. Having said that I'm hoping Java will get opened up by Sun but I'm not holding my breath.

    --
    2 years and no mod points. Join reddit. Because openness is good.
    1. Re:In short, no by porkface · · Score: 1

      Yeah really. Bruce ought to know better. I haven't heard Java enthusaists for 5 years now, but I see a lot of work getting done.

    2. Re:In short, no by TrekCycling · · Score: 2, Insightful

      Yeah, this is what's so funny to me about hype. I don't hear from C++ or C enthusiasts too often these days, but last time I checked there's still lots of work happening in C and C++. Where are the SQL enthusiasts? I think the thing is, Java (while still evolving) has reached a point of sanity. Frameworks and tools like Hibernate, Struts, JSF, Tapestry, Ant, JUnit, etc. have created a sane, relatively lightweight toolkit for doing J2EE development. So what is there to get hyped about? Most people I know that do Java are just quietly getting work done. Which is actually kind of nice. The Rubyists can have the hype.

      I actually like Ruby and I like Rails. I just don't think the speed gains that come from it being interpreted necessarily outweight the explicitness of Java as it's currently used. I can get anything I need to done in Java, it's easy to install and it's easy to test and log. It just works.

    3. Re:In short, no by ObsessiveMathsFreak · · Score: 1

      ROR is nice but let's get real - ruby isn't as fast and the few applications around ruby aren't nearly as mature as Java.

      Java is mature in the sense that stale cheese is mature. And as for speed, most people stopped caring after home machines passed 3GHz or whatever.

      Ruby developers have only to wait for the Ruby JIT compiler. That is, if it doesn't already exist.

      --
      May the Maths Be with you!
  15. A Humble Note by eldavojohn · · Score: 1, Insightful

    Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.

    I can't think of many languages where this is true and that's why I think I'll always appreciate Java. It was a case where a practical computing technology was built after the theoretical studies were done.

    It was a language done right and the first in this manner I could appreciate.

    --
    My work here is dung.
    1. Re:A Humble Note by takev · · Score: 1

      This is one of the most funniest comments I've read, very british like humor.

    2. Re:A Humble Note by timeOday · · Score: 5, Insightful
      Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.
      I think you have to narrow that claim for it to be true:

      ML has a deep, solid formal foundation with type safety and provable semantics.

      Prolog has a foundation in inductive logic.

      Lisp is based in lambda calculus.

      SQL is rooted in set theory.

      Now, Java may be the first commercially popular marriage of mainstream (C++) syntax which at least has provable type safety. That's a good thing in itself.

    3. Re:A Humble Note by Anonymous Coward · · Score: 0

      Is this a joke? What theory??

      And to respond to your implication that Lisp is not object-oriented: it has 1) type inheritance 2) polymorphic operators and obviously 3) uniform syntax, why isn't it object-oriented?

    4. Re:A Humble Note by Anonymous Coward · · Score: 0

      this comment would have been much improved if you had also claimed that it was one of the first languages that could be considered aesthetically pleasing in its own right.

    5. Re:A Humble Note by Pxtl · · Score: 4, Insightful

      Score 5 interesting? Should be score 5 funny. Java is, from a language design standpoint, a joke. It was designed by cutting chunks off of it's predecessors and not supplying any viable substitutes.

      People always brag about their million-line .net1.1 and Java2 projects, claiming that such million-line monstrocities are proof the language is maintainable. What they don't tell you is that 900 000 of those million lines are spent on simple get/set wrappers, typecasting containers, re-implementing containers missing from the library, and recoding functions for different datatypes, giant class-based switch statements, and various other workarounds to avoid the languages' limitations.

      Java is a nice VM and a solid, mindbogglingly featureful library - but a mediocre language.

    6. Re:A Humble Note by poot_rootbeer · · Score: 2, Funny

      Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.

      Was that before or after the designers decided "well, we better make the syntax pretty similar to C++, so there's a chance people might adopt it"?

    7. Re:A Humble Note by Anonymous Coward · · Score: 0

      SQL is rooted in set theory.

      It's more correct to say that SQL is "inspired by" relational algebra. Relational algebra is more than just set theory (it includes predicate logic and relational types + operators). But since you can place duplicate rows in an SQL table, it's not a set. So if SQL is "rooted" in set theory, it quickly sprouted some weeds. :-)

    8. Re:A Humble Note by arrrrg · · Score: 1

      Have you heard of Java subroutines? They are a clever mechanism designed to reduce code bloat from nested finally clauses. To make a long story short, subroutines account for more than half the length of the formal correctness proof for Java, and complicate the implemention of the compiler and runtime system substantially. The punchline is, changing the name from "Java" to "Oak" would, on average, save 13 times as much space as adding subroutines. Well designed with a theoretical basis in mind? Decide for yourself.

    9. Re:A Humble Note by OYAHHH · · Score: 4, Insightful

      > Java is, from a language design standpoint, a joke

      For those of us awake at the beginning of Java, Java was anything but a joke. It was almost like manna sent from heaven.

      The alternatives were some pretty poor bundled C compilers, GCC 2.x.x, and some pretty lame C++ implementations.

      It really gets frustrating waiting five years for someone to actually come up with a C++ compiler that does templates correctly.

      > Java is a nice VM....but a mediocre language

      If you believe this go treat yourself to GCC 2.9.x. Try to do something with it. It truly sucked.

      --
      Caution: Contents under pressure
    10. Re:A Humble Note by timeOday · · Score: 1
      But since you can place duplicate rows in an SQL table, it's not a set.
      Yikes, not being a SQL guy I didn't know that. Offhand it sounds bad. Is there a reason for duplicate entries?
    11. Re:A Humble Note by Ulrich+Hobelmann · · Score: 1

      I'm not even sure if Java does have provably type safety. AFAIK there was a paper that the JVM's verification system isn't safe, and there have been some exploits for some cellphone's JVMs as well by using "customized" bytecode. The Java *language*, as opposed to the JVM, doesn't even have static type safety, because it leaves a lot of stuff to the VM. Even in Java 5 which has static type checking for generic lists (for instance) there are still lots of runtime checks inside the VM.

    12. Re:A Humble Note by arevos · · Score: 1
      Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.

      And yet Java sure does a good job looking like it was a bodge stuck together from broken bits of C++. Why would you design a language where you need to write this:

      FooBar foobar = new FooBar();

      Instead of this:

      foobar = FooBar()

      Why do you have to write the type twice? And what's the point of the new operator, anyway? In C++ it distinguished between objects to be placed on the stack and objects to be placed on the heap. In Java it appears to be there only to add in an extra layer of redundancy. How is this "well planned"?

      Add this to the abysmal system of casting to retrieve objects from Lists and Maps, a problem that has only recently been fixed in 1.5, and you're really descending into the soup of bad design. Why the hell would you go to all the trouble of ensuring type correctness with static typing, and then ruin it by having to rely on casting? The disadvantages of static and dynamic typing in one language! Again, how could this possibly be considered "well planned"?

      One need only look at the amount of hacks (*coughs* getClass *coughs* getConstructor *coughs* autoboxing) created to get around Java's incomplete object model to realise how little the originally developers planned things out.

    13. Re:A Humble Note by Anonymous Coward · · Score: 0

      Smalltalk, prolog, llisp and many others were well designed *for their need* well before Java.
      Java was (hopefully was) a flash in the pan as being the "ultimate language" as C++ was (supposedly) the ultimate language 5 years before Java was.

      Hopefully Java can be seen as another programming language like any other... it ***serves a purpose***

      Just after shuttle launch, pilot one says to pilot two "what does the system mean???? It says 'all critical functions on hold, garbage collection in progress'" :)

      Note for the Java zealots that take offence to the above (attempted) humour, there are many internet sites that deal with flaws in Java. I tried to highlight an example of where Java would not be good (eg. for a mission critical real-time system). I'm sure some nut will argue that Java is the fastest, most stable, predictable, repeatable and robust code ... then again, I am sure some people still believe the world is flat too.

    14. Re:A Humble Note by Pxtl · · Score: 1

      I guess I'm lucky and dodged that bullet - I was in highschool playing with VB at the time Java came out. Didn't learn C/C++ & Java until university.

    15. Re:A Humble Note by Anonymous Coward · · Score: 0

      Provably type safe != verification system.

      Verification system is a separate module from type checking. Verification is provably an NP-complete problem: Given the bytecode as the Turing string, it is obvious that to prove the string is "safe" (or satisfies any property P), it's gonna take an NP-complete algorithm.

      Java language *does* have type safety. Static type safety is determined by the compiler at compile time. Dynamic type safety is when you do cast a type where its safety will be detected by the JVM. Assuming that the bytecode verifies correctly, dynamic type safety enforcement is trivial in O(lg n) where n is the number of classes.

      Now, if you talk about some kind of paper on that exploit, I think you're refering to 2005 DOXA paper. If that's the case, the paper actually checks on the reference implementation of the type safety mechanism (i.e. the one implemented by Sun). Huge difference.

    16. Re:A Humble Note by feNIX77 · · Score: 1

      Why do you have to write the type twice?

      Thats up to you and the context the object is being created in.... ArrayList list = new ArrayList(); List list = new ArrayList(); Collection list = new ArrayList(); all create a new ArrayList and assign it to 'list'. Defining an object's type by its interface, if available, is more flexible than defining it by its concrete implementation. while a bit verbose in some cases, I think it adds to the extensibility of the language and is not a drawback.

    17. Re:A Humble Note by Anonymous Coward · · Score: 0

      It's obvious from your previous post that you failed to comprehend what you were taught.

    18. Re:A Humble Note by arevos · · Score: 1
      Thats up to you and the context the object is being created in.... ArrayList list = new ArrayList(); List list = new ArrayList(); Collection list = new ArrayList(); all create a new ArrayList and assign it to 'list'. Defining an object's type by its interface, if available, is more flexible than defining it by its concrete implementation. while a bit verbose in some cases, I think it adds to the extensibility of the language and is not a drawback.

      It would be just as easy to make the type optional, instead:

      a = Vector<String>()
      List<String> b = Vector<String>()

      "a" takes the default type of a Vector, whilst "b" takes the List type instead.

    19. Re:A Humble Note by feNIX77 · · Score: 1

      It just goes back to the fact that in Java, as in many languages, you have to declare your variables; Your example looks more like a scripting language where declarations are not required (e.g. Javascript).

    20. Re:A Humble Note by oopsdude · · Score: 1

      Designed by committee... C... 0... B... 0... L...

    21. Re:A Humble Note by wft_rtfa · · Score: 1

      I think he meant that it was one of the first practical languages that was well planned and well designed with a theoretical basis in mind. ML, Prolog, and lisp are more academic languages made for AI and to torture CS undergrads. Too bad SQL is not a programming language or I'd give you that one.

      --
      :-] :0 :-> :-| :->
    22. Re:A Humble Note by jbolden · · Score: 1

      or those of us awake at the beginning of Java, Java was anything but a joke. It was almost like manna sent from heaven. The alternatives were some pretty poor bundled C compilers, GCC 2.x.x, and some pretty lame C++ implementations.

      I was awake for the start of Java. How was C++ the only alternative (or even an alternative)? There were lots of application languages. What Java offered was applets.

    23. Re:A Humble Note by arevos · · Score: 1
      It just goes back to the fact that in Java, as in many languages, you have to declare your variables; Your example looks more like a scripting language where declarations are not required (e.g. Javascript).

      And how am I not declaring them? I mean, if you want to be really explicit about it, you could add in a keyword:

      var foobar = SomeCustomClassName()

      Which would both be easier to recognise as a declaration, and shorter to type. Though this isn't strictly necessary, I concede it could help prevent look-alike errors.

    24. Re:A Humble Note by Hard_Code · · Score: 1

      I'm a Java developer and have to agree somewhat.

      "designed with a theoretical basis in mind."

      Huh? It was re-marketed after it wasn't successful as "Oak", a TV set-top-box language!

      --

      It's 10 PM. Do you know if you're un-American?
    25. Re:A Humble Note by TrekCycling · · Score: 1

      This is more accurate. But the original poster has a point. The reason many of us settled into Java wasn't the hype. It wasn't the conferences (never attended one), the magazines or books similar to Mr. Tate's (which I've read, btw). The reason many of us settled into Java was because it made sense. The language and the spirit of coding in Java was all about being explicit, having the code be readable and maintainable and doing things the right way like type safety, etc. In Mr. Tate's book, he brushes away type safety by saying that it's a crutch for a lack of unit testing. Maybe, maybe not. He thinks you have to jump through too many hoops and you should just be unit testing and your problems will be solved.

      But then aren't there many crutches in Rails? Many things that framework forces you to do in order to maintain some kind of sanity? This isn't a bad thing. Neither is type safety. If type safety is good and unit testing is good then isn't haven't both like twice as good? :-)

      Anyway, Mr. Tate's book is as Mr. Eckel describes it. One long screed against Java and for Rails, often not bothering to back up his assertions and altogether tossing aside other languages like Python and C# without any real reason. So if the end result of Mr. Eckel's assessment is that Java is loosing people like Bruce Tate I would argue this is a GOOD THING. Good luck with him, Rubyists. May he write crummy books for you (like he did with "Spring, a Developer's Notebook", which he even *apologizes* for in the beginning of "Beyond Java") and may he embarrass your community just like he did with Java. Maybe one day someone will stop listening to him altogether and just proceed with getting work done. Whether they choose Rails or Java (both of which offer fine solutions, IMHO).

    26. Re:A Humble Note by Da+VinMan · · Score: 1

      Yes, well a poorly designed or denormalized database will allow duplicate rows. But a normalized database will not have duplicate rows. If you consider yourself a "software guy" you really should go read up on normalization. With relational databases being as prevalent as they are today, it's just about as important to know about normalization as it is to know about boolean logic.

      --
      Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
    27. Re:A Humble Note by Profane+MuthaFucka · · Score: 1

      I agree. First interpreted language without line numbers. It took the technology of the 90's to make that happen, as interpreters of the 1980's languages (like BASIC) needed the numbers to keep track of where they were. Amazing!

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    28. Re:A Humble Note by Anonymous Coward · · Score: 0

      The one thing you probably don't know about is the bytecode of the virtual machine. Claiming it was designed well is ... pretty much a not so educated guess. The bytecode was designed over a decade ago with utterly crappy results today. If only sun would release a JVM bytecode specs level 3 (that obviously were not backwards compatible to fix the mess we have today) then maybe java could be summarized as a 'well thought out' language/platform. Right now it's not.

    29. Re:A Humble Note by feNIX77 · · Score: 1

      I think we are coming from different backgrounds here - strongly-typed(Java,C#,Ada,etc) vs weakly-typed (many scripting languages, assembly, etc) languages...

      for example your code:

      foobar = SomeCustomClassName()

      is that a declaration or a reassignment? what object type is foobar? By declaring a variable, I am referring to declaring its type, which the above doesn't do, adding a 'var' in front doesnt remedy this. Declaring the variable type at compile time can drastically reduce the amount of runtime errors that occur, as they are caught at compile time instead.

      Java is by no means the most strongly typed language out there as you can still declare everything an Object and throw runtime exceptions casting if you really felt like it...

    30. Re:A Humble Note by RevAaron · · Score: 2, Insightful

      And then there's Smalltalk, a language that was also well planned, well designed, with both theoretical and practical aspects in mind.

      Smalltalk belongs in that list you site- ML, Prolog, Lisp. Especially notable because Smalltalk is where Java gets most of its features.

      --

      Working toward a usable PDA environment in the spirit of Newton OS: Dynapad
    31. Re:A Humble Note by arevos · · Score: 1
      I think we are coming from different backgrounds here - strongly-typed(Java,C#,Ada,etc) vs weakly-typed (many scripting languages, assembly, etc) languages...

      Quite a few modern scriping languages, such as Python and Ruby, are strongly typed, just as Java and C# are. The difference between these is that Python and Ruby are dynamically typed, and Java and C# statically typed. This all said, I'm a professional Java developer with a couple of qualifications in C++ as well, so I do know a little about statically typed languages.

      for example your code:
      foobar = SomeCustomClassName()
      is that a declaration or a reassignment? what object type is foobar? By declaring a variable, I am referring to declaring its type, which the above doesn't do, adding a 'var' in front doesnt remedy this. Declaring the variable type at compile time can drastically reduce the amount of runtime errors that occur, as they are caught at compile time instead.

      The above is a valid compile time declaration. In answer to your question, the above is a declaration iff the variable 'foobar' has not been previously definied. As to working out what object type foobar is - that's the whole point of strong typing! The foobar variable is assigned the type that SomeCustomClassName() returns.

      To give you an idea of what I mean, the code below would generate a type error at compile time:

      foobar = SomeClass()

      // foobar hasn't been defined before, so the above assignment
      // is a declaration, not a reassignment. The type that SomeClass()
      // returns is 'SomeClass', so foobar is assigned the type
      // 'SomeClass'

      foobar = AnotherClass()

      // the above causes a compile time error, because foobar has
      // already been defined as type 'SomeClass' by the previous line
      // of code, and AnotherClass() returns type 'AnotherClass',
      // which is not compatable with 'SomeClass'

      If you're still not convinced, take a glance at the following code:

      var foobar = new FooBar();

      This is valid Nice code, a language that compiles into Java class files and is totally compatable with the JVM and Java library. If a small Open Source project can achieve this, there's no reason Sun cannot.

    32. Re:A Humble Note by Ulrich+Hobelmann · · Score: 1

      No, the verification is only concerned with safety in a static sense, so that the loaded code can't break anything; it's certainly nothing about runtime, so it isn't NP-complete, and it doesn't suffer from some halting problem. But this load-time verification isn't safe, as some paper claimed. And IIRC there was some exploit that resulted in insecure code being loaded on cellphones, so that from inside the JVM the cellphone could execute unsafe code, which is supposedly not possible with Java.

      The Java compiler can not determine static type safety, because Java allows exceptions in the type system (not Java exceptions), i.e. type casts. You can put Cars in a list and you get Objects out of the list. You have to cast them, but that's statically unsafe; only the VM can at runtime determine if it is safe. Other languages, say, ML, have real parametric types that are determined statically, at compile time.

      The exploit was an implementation fault, because cellphones leave out the verifier, but the paper that said that Java didn't live up to its safety claims was about the JVM per se. It was from '98-02 I'd say, not later. Unfortunately I can't remember the author, or the exact name. Google doesn't find me anything.

    33. Re:A Humble Note by feNIX77 · · Score: 1

      I correct myself - I am talking about strongly statically typed languages as opposed to dynamic. Correct me if I'm wrong, but since java is strongly, statically typed, how could:

      foobar = SomeClass()

      as a declaration possible work w/o changing basis of the entire language? There is no type for foobar. As far as the Nice example - if that is converted to valid Java, then I dont see how it can be converted to anything but:

      Object foobar = new FooBar()

      which doesnt really do anything as far as this conversation goes other than confirm that variables are strongly typed at declaration in Java (though saying Object is a strong type is in the weakest possible sense). Correct me if I'm misinterpreting you on this.

    34. Re:A Humble Note by arevos · · Score: 1
      I correct myself - I am talking about strongly statically typed languages as opposed to dynamic. Correct me if I'm wrong, but since java is strongly, statically typed, how could:
      foobar = SomeClass()
      as a declaration possible work w/o changing basis of the entire language? There is no type for foobar.

      But there is! Consider the following code in plain Java:

      String foobar = new Integer(3);

      When I try to compile it, it comes up with an error:

      Test.java:7: incompatible types
      found : java.lang.Integer
      required: java.lang.String
      String foobar = new Integer(3);
      ^
      1 error

      From the above, it should be clear that Java knows that "new Integer(3)" returns an Integer object. Java's smart enough to figure out that a constructor of class Integer, returns an object of type Integer. It also knows that this Integer object is incompatable with the String type; hence the type error.

      So in Nice:

      var foobar = new Integer(3);

      The Nice compiler knows that "new Integer(3)" returns an Integer, and that "var foobar =" is a declaration, so it assigns the type Integer to the variable foobar. The above Nice code is directly equivalent to the following code in Java:

      Integer foobar = new Integer(3);

      And that's why it's redundant to write the type of the variable twice over.

    35. Re:A Humble Note by Trepalium · · Score: 1
      But there is! Consider the following code in plain Java:

      String foobar = new Integer(3);

      Very good, now try:

      object foobar = new Integer(3);
      foobar = new String();
      (contrived example; you'd normally use an interface type plus implementations of that interface)

      In java, the type of the object and the type assigned to it can be different. In a real program, I might create an object with the interface type, and get a reference to a type based on a factory class that may choose from a number of classes that implement that interface. It's a common practice when dealing with database engines, logging engines, etc, that have mostly the same interface, but can be used generically if you only use the interface's public interface. The compiler will tell you immediately if you're using a member that's not part of the interface, in this case, and you can avoid some very annoying bugs. You can't do this with dynamically typed languages at compile time, which means you can get unexpected results at runtime.

      I won't argue that Java (and it's evil twin brother, C#) have the best syntax for creating new objects, but declaring the object type twice is intentional. It's used in real situations to solve real problems.

      --
      I used up all my sick days, so I'm calling in dead.
    36. Re:A Humble Note by frank_adrian314159 · · Score: 1
      Java is one of the first languages that was well planned and well designed with a theoretical basis in mind.

      Anyone who knows the history of Java who hasn't spit coffee out his nose while reading this hasn't read it close enough.

      Hell, anyone who knows the history of Gosling and hasn't spit coffee out his nose while reading this hasn't read it close enough.

      --
      That is all.
    37. Re:A Humble Note by arevos · · Score: 1
      In java, the type of the object and the type assigned to it can be different. In a real program, I might create an object with the interface type, and get a reference to a type based on a factory class that may choose from a number of classes that implement that interface. It's a common practice when dealing with database engines, logging engines, etc, that have mostly the same interface, but can be used generically if you only use the interface's public interface. The compiler will tell you immediately if you're using a member that's not part of the interface, in this case, and you can avoid some very annoying bugs. You can't do this with dynamically typed languages at compile time, which means you can get unexpected results at runtime.

      Yes, I know this. Type safety isn't available in dynamically typed languages (though dynamically typed langauges have the advantage of mutable objects, which can be very useful).

      But why mention dynamically typed languages at all?! I've been talking about statically typed languages, like Java or C#. Nice is also a statically typed language. This can be demonstrated quite easily:

      // foo is initialised with type Foo
      var foo = new Foo();

      // This line will throw a compiler error, because we are trying to assign
      // a Bar object to foo, which we've just defined as being of type Foo.
      foo = new Bar();

      See? Statically typed. The above is no different to the following Java code:

      Foo foo = new Foo();

      // Next line throws a compiler error, because Bar is not a subclass of Foo
      foo = new Bar();

      That's worth mentioning again. Nice is statically typed, the same as Java.

      Understand now?

    38. Re:A Humble Note by Anonymous Coward · · Score: 0

      Of course, now C++ compilers work. A working JVM is proof that your C or C++ compiler is working fine. I haven't seen many truly useful "pure" Java implementations of much of anything. Can it be that C++ has only continued to get better and better and Java has continued to get more and more complex? C++ has never pretended to not be that way, and once one drinks the "multiparadigm programming" Kool-Aid... well, it doesn't kill you. In fact, it is pretty tasty. It takes a while to learn, but if you are going to be sitting in that programmer's chair for a few years you certainly do have the time.

    39. Re:A Humble Note by Anonymous Coward · · Score: 0

      Always as hilarious to read these uni-boy comments who don't have a clue of real software development. In good OOP designs there are always tradeoffs, but the fact is that if you want a flexible design your class count is gonna increase.


      People always brag about their million-line .net1.1 and Java2 projects

      And what's your experience of software development in real projects? And no I don't mean that 2000-lines minesweepers clone.


      get/set wrappers, typecasting containers, re-implementing containers missing from the library, and recoding functions for different datatypes, giant class-based switch statements, and various other workarounds to avoid the languages' limitations.

      Giant switch statements... eh? Wow. You've proved nothing here except that you're a bad programmer and have no clue of Java programming (not to even mention OOP).

      Seriously, if you have no clue of what you're talking about... just don't talk at all!!

      What's wrong with people in here? How does a post like that get a rating of 4??

    40. Re:A Humble Note by Pxtl · · Score: 1

      I've worked in a Java shop and I'm working in a .NET shop, and I call it like I see it. The historical lack of generics in those languages combined with the lack of multiple inheritence means that doing normal tasks become tons and tons of work.

      Java was invented so that coders could look busy by producing huge, megalithic programs without getting too much done. It's the "look busy" school of architecture design - it maximizes the number of annoying intermediary classes and functions the coder must make.

    41. Re:A Humble Note by Trepalium · · Score: 1
      Fine. I didn't know that Nice was strongly typed (I thought you were just talking about a theoretical language). And, yes, it has a slightly simpler syntax for declaring local variables that you initialise imediately. If you're not initialising the variable immediately, you're stuck with the Java syntax, or the slightly longer Nice syntax (add var to the beginning of the Java syntax). That leaves you with three different ways to declare a variable: the Java/C style Type variable;, the Nice implicit typing of var variable = new Type();, and the Nice explicit typing of var Type variable;.

      My point was that, yes, String s = new String() has redundant type information in it, but that's not the only type that will ever be assigned a String object. Object s = new String() does not have any redundant type information in it.

      --
      I used up all my sick days, so I'm calling in dead.
    42. Re:A Humble Note by Anonymous Coward · · Score: 1, Insightful

      The great advantage of Java--a language without templates at all--was that C++ compilers didn't "do templates correctly?" Excellent.

      Actually Java was pretty mediocre when it was released. Its oft-lauded standard library didn't contain much, the language itself was primitive, and its performance was poor. AWT was buggy, and threads had inconsistent behavior on different platforms. Compared to any of the commercial Smalltalk environments (of which the language is most closely related, rather than C++ which it shares fewer but syntactic similarities) it was a total piece of shit. The only thing it had going for it was that Java looked vaguely like C++, which meant that C programmers that wanted static typing without stepping off into a foreign syntax (ML, Eiffel, Ada, ...) could finally have the joys of a string type, safe arrays, and garbage collection. Most people weren't interested, and the language failed miserably in the niche of web applets.
      It's by accident that Java begins to replace CGI on the server and obtains the niche that eventually leads it to the marketing-driven Enterprise Bullshit status that it now resides in. That portions of the work done on the implementation of the Self VM could be used for HotSpot is a nice side-effect that eventually makes Java faster.

      The world is positively overflowing with languages at the time that are better than C++ in all of the ways that mattered to the Java programmer, except they didn't look like C++. This plus Sun's marketing the the "Will Java replace Windows?" hype makes Java--a mediocre technology--the winnarrrrr that is through billions of dollars forced into its position it occupies today.

      And for the record, GCC wasn't that bad. It was actually one of the more compliant C++ compilers at the time. C++ is one of the most complex programming languages, so it's not all that surprising that developing a conformant implementation with decent performance has proven to be an arduous task.

    43. Re:A Humble Note by arevos · · Score: 1
      My point was that, yes, String s = new String() has redundant type information in it, but that's not the only type that will ever be assigned a String object. Object s = new String() does not have any redundant type information in it.

      This is true, which is why I proposed making the type optional, defaulting to the type returned by the constructor:

      foo = String();
      Object bar = String();

      See the ancestor post, here

      However, I cannot think of a single situation where explicitly declaring the type would be useful anyway, since subtypes can be implicitly defined on method arguments:

      void test(Object o)
      {
      System.out.println(o.toString());
      }

      void main(String[] args)
      {
      test("Hello");
      }
    44. Re:A Humble Note by Anonymous Coward · · Score: 0

      You really just don't to get it, do you?

      OOP is about change and maintainability, whether you have to adapt, decorate, create proxies, change strategy it means you minimize the changes to your actual core objects and create wrappers/different behaivors for them. So you like inheritance more, too bad it just doesn't cut in the real world - when we are talking about components that have to change. A good designer knows better what parts of design should be made more flexible.

      You don't have a problem with Java, you have a problem with the current state of OOP and design patterns (because you don't understand them).

      And if you WOULD know about patterns and good OOP, they would make sense to you and you wouldn't call them annoyances. You could recognize the patterns used in a project and understand a LOT faster how the design works.

      But you're a classical example of a person who thinks he knows everything about OOP after learning the four basic principles of it.
      Sorry to break your bubble, but your journey is just beginning.

  16. Slashdot Libs by AugstWest · · Score: 5, Funny

    (Slashdot reader) writes, "(Uknown pundit) wrote an article about (Technology that we're not currently fond of), based on conjecture and personal opinion. Does this mean that (Technology flavor of the month) is taking over?

    1. Re:Slashdot Libs by Anonymous Coward · · Score: 0

      Has anyone actually read the article? He is saying that it is a GOOD THING the "hyper enthusiasts" have left.

      The very next sentence states: "...but instead they welcome the silence, because it's easier to think and work."

    2. Re:Slashdot Libs by Anonymous Coward · · Score: 3, Informative

      Bruce Eckel is hardly an "unknown pundit". Have you ever read Thinking in Java?

    3. Re:Slashdot Libs by Linker3000 · · Score: 1

      May I add this to my Slashdot EeziPost system?? Thanks L3K

      --
      AT&ROFLMAO
    4. Re:Slashdot Libs by gad_zuki! · · Score: 1

      Hehe. One of the best comments I've seen in a long time.

      Where can I buy a book of slashdot libs? Is thinkgeek stocking them yet?

    5. Re:Slashdot Libs by Anonymous Coward · · Score: 0

      Yeah... Bruce Eckels, Unknown pundit. Seriously, do you know _anything_ about _anything_ other than lowbrow sarcasm?

  17. nothing by Penguinoflight · · Score: 1

    The problem is, while the universities are teaching Java, their mailing lists only advertise jobs with c/c++ experience. Neither C or C++ counts for any credit at my school, but you need to be awesome in them to get a job out of college. Bottom line: the university doesn't want to teach you, they want your money.

    --
    "And we have seen and do testify that the Father sent the Son to be the Savior of the World"
    1 John 4:14
    1. Re:nothing by mumblestheclown · · Score: 2, Funny

      Bottom line: you clearly confuse a university with a trade school.

    2. Re:nothing by yuriyg · · Score: 0

      mumbles, Although I 100% agree with your comment, I have to say that trade schools should teach Java, while Universities should teach C++. To me C++ is an excellent language to learn both, OO and the way the code executes on the machine, since you get exposed to both. Java teaches you how code executes on JVM. Doesn't help you much with other languages. Python on the other hand is a great way to some new concepts that have been excluded from "curly-brace" languages. (lambdas, gererators, etc.). This will actually make you write better code in C++/Java

    3. Re:nothing by hal2814 · · Score: 1

      A good university isn't going to teach you a language. They're going to teach you how to be a good programmer and how to apply good scientific methodology to software design. If you get your degree and still can't understand how to easily pick up a language from scanning a book or two and maybe talking to someone who already knows the language, then your university has failed you.

      Universities teach mostly Java right now because Java uses a C style syntax. Java forces some things like OOP and exception handling. Java's built-in APIs make it easier for students to build projects without worrying about what libraries to use, system incompatibilities, and that sort of thing. Java's kitchen sink API lets instructors ignore things like build environments and focus on the topic at hand.

    4. Re:nothing by ltbarcly · · Score: 4, Insightful

      (public) Universities lose money on undergraduate education, period. Tuition does not even cover half the cost of an undergraduate at UMD College Park. The rest of the cost is picked up by the state, so every student they enroll takes away money from other programs that you seem to think your tuition is paying for. Add it up.

      Cost of CS Professor = CP = ~$100,000 (only salary, does not include facilities, offices, electricity, water, equipment, payroll taxes, support staff, campus police, repairs due to soccer hooligans, etc) = ~$50,000 per semester.
      Number of Classes taught by Prof = NCP = ~3 per semester
      Cost of in-state tuition = CIT = ~$4000 per semester
      Classes taken by undergrad = CTU = ~4 per semester, minimum
      Students per class = SPC = Between 10 and 200, say 30 average.

      so we have (CIT * SPC)/CTU = FPC = $30,000 to fund any given class, call this FPC, or Funds per Class

      FPC * NCP = $90,000 in Funds per professor per semester.

      After the Profs salary that leaves $40,000 per professor to run the school.

      Now Consider that any given Prof is likely to have several graduate students, either on fellowship or as TA's. At a good school this will be about a 1-1 ratio, so 1 grad student for every professor. Grad students make about 18,000 per year, plus a tuition waiver. Generally there are actually more grad students than professors, but lets pretend that isn't the case.

      So $40,000 - $18,000 = $22,000.

      That $22,000 per professor left over certainly won't cover even the cost to maintain the facilities at the university, not to mention computer labs, libraries, shuttle bus, payrol taxes, health care, internet connection, etc etc etc.

      Then there are the support staff, secretaries, grounds crew, deans, etc etc.

      Next add on millions per year in renovation and new building construction. To that you can add the cost of all the University staff, such as the people who review applications, the people who work in the bursars office, and so on and on and on.

      Real Bottom Line: The University wants to teach you to be a Computer Scientist, not a code monkey. If you want to learn C++ so badly pick up a book and learn it on your own. Most professors will be very glad to answer your (legitimate) questions on any subject relating to their field. If you can't manage to learn it on your own, then give up and major in PolySci or Communications, because you aren't going to make it in teh real world.

    5. Re:nothing by jonmarkymarc · · Score: 1

      The unversity I attended never changed to Java, it was the chairs opinion that java didn't teach the basics. Hence they still to this date teach C/C++ then some courses in java if you like. OS, Algorithms, Theory, all in C. It never made sense to me to teach them in java anyways.

    6. Re:nothing by Anonymous Coward · · Score: 0

      The problem is, while the universities are teaching Java, their mailing lists only advertise jobs with c/c++ experience. Neither C or C++ counts for any credit at my school, but you need to be awesome in them to get a job out of college. Bottom line: the university doesn't want to teach you, they want your money.

      If you can't learn C/C++ on your own after going through a CS program, you have no business being a programmer. I'm being elitist, but for a very good reason. I, my family, and people I work for will have to use software that you write, and if you can't be a Real Programmer, I don't want you writing any software. I wish CS programs taught with functional languages and C, since those are still the cornerstones of theoretical CS and Real Programming languages, respectively.

      When we can develop a language that doesn't let the programmer make any mistakes and the source is required to remain Free, I'll be happy to let anyone and their mother take up programming, provided they can do the formal proofs and logic necessary to actually get their software to compile on a type-safe, memory-safe, compiler with proven security and running time constraints. Good luck.

    7. Re:nothing by releppes · · Score: 1

      Unfortunately, I attended a university like that too. I did most of my programming in Fortran and C and this was in 1995. However, I completely disagree with not using Java (or any other high level language) because you want to teach algorithms. With mentality like that, why don't you just teach everything in assembly? I learned C++ and OO programming after college on my own. Then I made the switch to Java and I was much pleased. No more dealing with malloc/free, crappy pointer code and the like. One could say it's nice to know how pointer code works, but then again, it's nice to know how about loading register stacks and ALU components. I say train kids today with the latest tools. If all you use is old languages to program, then all you will know is old algorithms to code. Newer languages make programming easier so hopefully newer algorithms and new ways to solve a problem can be found. I personally hated the University of Buffalo for being so dated in their teachings.

    8. Re:nothing by TurkishGeek · · Score: 1

      Grad students make about 18,000 per year, plus a tuition waiver

      Grad students make 18K at UMD? Maybe so at the math department, but the actual number was far south of that over at the EE and CS departments before I could finally get out of there. 18K!!! Holy crap, with that kind of money one might even be able to rent a place at the world-famous, posh Springhill Lake estates at Greenbelt and have money left over to get a bulletproof vest for those late-night strolls in Hyattsville.

      --
      Zigbee Central: A Zigbee weblog
    9. Re:nothing by ltbarcly · · Score: 1

      That was a guesstimate. I can't imagine being able to live on less than about 12000 per year, that would be almost impossible. Rent alone is going to cost you at least 7000 per year. If you only spend 400 per month for food, clothing, transportation, and books, then you still end up needing another 4800, total 11800. It wasn't really important to the calculation so I didn't bother to look it up.

    10. Re:nothing by WryCoder · · Score: 1

      You need to take into account that many of the graduate students teach the introductory classes. Also, typically the school's endowment covers much of the costs. As I recollect, at MIT the endowment generates income equivalent to all the undergrad tuition.

    11. Re:nothing by Anonymous Coward · · Score: 0

      Real Bottom Line: The University wants to teach you to be a Computer Scientist, not a code monkey. If you want to learn C++ so badly pick up a book and learn it on your own. Most professors will be very glad to answer your (legitimate) questions on any subject relating to their field. If you can't manage to learn it on your own, then give up and major in PolySci or Communications, because you aren't going to make it in teh real world.

      In the real world computer scientists don't matter. The only thing a CS degree gets you is past the basic qualifications set in place by the HR guy. The real world runs on money. And money means business. A business cares if you are a cheaper and more efficient operational employee. This is why outsourcing is happening. They aren't trying to get better computer scientists. They are trying to get the same work done for cheaper. So quit with the BS about being a "computer scientist", because the real world doesn't care. They want code monkeys. I've never seen a job asking for a computer scientist, but plenty for java developers, dba's, etc.

    12. Re:nothing by ltbarcly · · Score: 1

      Public schools rarely have endowments which produce substantial income.

    13. Re:nothing by ltbarcly · · Score: 1

      You are a dumbass. Your college should have cut you early on and prevented you from degrading the image of your school and CS majors in general.

      If you have a strong understanding of the fundamentals of CS then you can pick up ANY language in virtually no time. You will understand the data structures and algorithms which you need to use, and those are language independent. I'm not bragging, but I think I learned enough java to get by in about 2 weeks. It's not necessary to take a class in it, especially when the professor isn't going to tell you anything that isn't in the book already (basic programming in Java isn't on the cutting edge of research. You really don't need someone to guide you through it.)

      As a someone who is well acquainted with the bottom of the barrel, you probably do need various tricks and official looking paperwork to get past the HR department, that is, if you can find one of the HR managers who has their head stuck up their ass and doesn't know anything. I think there are many other CS graduates who value the actual knowledge they gained at their school, and who apply some part of it on a daily basis, even if they didn't take your dream course -- CS103 "How to set up an Oracle 9i database and connect to it using JAVA v1.3.7 on Solaris running CDE for between 3 and 8 users who need to do basic queries using Discoverer and save the results as flat text files using clients which consist of microsoft windows 2000 SP3 running on Dells and connected to the Oracle Server through Ethernet and a Router on a Windows 2000 Server domain with Active Directory." What you will do once Java is out of style, they need to use Linux, and the windows clients are replaced with thin clients? Your fucked, because you aren't flexible enough to change with the times. You learned how to follow a checklist made for a single version of software from a single vendor and now that it is gone you will be unable to do your job at all. Meanwhile CS grads (from real schools, not backwater state degree factories) can roll right along.

      The real world does care about producing good maintainable and efficient code, but most importantly reliable code. And you simply cannot do that without a grounding in the fundamentals of CS. Businesses don't care if you are an efficient employee. Especially when they realize they can hire one experienced Guru and replace a team of pimple faced "hackers" fresh out of code-monkey academy, and have software which works, and 99% less downtime. So even if you are willing to work for next to nothing, only an asshole will hire you as you actually do negative work. It takes longer for people to track down your mistakes then it would to just re implement it correctly from scratch.

    14. Re:nothing by Anonymous Coward · · Score: 0

      Another person who doesn't live in the real world. Sorry, but it doesn't work like that. Any serious application requires specialization in a technology, not a programming language. For example, you don't write an application IN java. You write an application using JSP's, EJB's, JMS, RDBMS, etc. Using frameworks such as spring and hibernate and application servers such as jboss. You must be well prepared for these things. I'm sure you've had a class in how to avoid writing code by using xdoclet. No one person can competently understand all of these technologies. Which is why you have people who specialize in these small areas. The movement nowadays is not towards writing more code, it's toward writing less code. Take hibernate for example. You don't write sql anymore. You write an xml mapping file between a table and a java object. The things you learn in your CS courses like how to write a linked list are pretty much useless nowadays. Every language comes with a library that already implements these things.

      The real world wants an Oracle DBA. The real world wants a JSP specialist. The real world does not want a jack of all trades master of none. Sorry my friend, you're obsolete already and you haven't even graduated yet.

    15. Re:nothing by ltbarcly · · Score: 1

      You can't become obsolete when you can pick up new technology easily. If you have understanding of fundamentals you can learn specific things in very short order. If you only know how to write within the hibernate structure then you are going to be pretty worthless once everyone else moves on. The point is that if you are well grounded you CAN learn anything you need to. If you are an expert in JSP you have great employment potential, until people start using something else, then you are seriously fucked.

  18. No by kevin_conaway · · Score: 2, Insightful

    Stop posting fluff articles in the absence of real news before the holidays.

    Java isn't going anywhere for a while. It is a fantastic language for large scale projects simply because its very easy to write maintainable code AND its buzzword compliant. That latter fact alone will keep it afloat years after it is truly dead.

    Don't get me wrong, I love Python and I have really high hopes for it in the coming years, but to declare that "enthusiasts" have left Java, seems silly

    1. Re:No by Anonymous Coward · · Score: 0
      Stop posting fluff articles in the absence of real news before the holidays.

      Anti-Java fluff articles will continue to exist as long as the Microsoft Marketing Department continues to exist.

    2. Re:No by pileated · · Score: 1

      "Enthusiasts" is used as a very critical term, meaning almost the opposite of anyone who actually is enthusiastic about Java. I think Bruce Eckel is just saying thank god all the hypemeisters have left and are now bellowing about Ruby on Rails, or who knows what, leaving actual Java progammers the quiet they need to actually get some work done.

    3. Re:No by ak3ldama · · Score: 1

      right on.
      here's a new one for y'all: the enthusiasts that rant about the latest technology craze don't matter. people writing code to get things done matter. and they will keep track of what works and what doesn't. journalists are just lame writers that can't code enough to write a full book about some various technology.

      --
      "but money is the God of Algiers & Mahomet their prophet." - Rich. O'Bryen June 8th 1786
  19. time to make fun of them again by nate1138 · · Score: 2, Insightful

    So, will the Slashdot collective make fun of them again when their latest platform du jour fails to live up to its hype?

    They ALWAYS do ;-)

    --
    Where's my lobbyist? Right here.
  20. Not this discussion again. by FnH · · Score: 4, Insightful

    Different problems, different solutions, different languages. As always, pick the right tool for the job.

    ROR having (more) hyper-enthousiasts only means it's newer.

    1. Re:Not this discussion again. by TrekCycling · · Score: 1

      Exactly. Having more "hyper-enthusiasts" is exactly a badge of honor I'd wear proudly.

      And for the record, I like Ruby on Rails. But when it comes to just getting work done, Java works fine for me and I'm still finding employment doing it. Go figure.

  21. Where have all the good guys gone? by randomErr · · Score: 1

    "Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?" Some of the people who have to be on the bleeding edge are at Ruby. It does a lot of stuff with minimal programming. Python has very solid segment, but its still and outsider, kinda like PERL. The rest of the coders are either at .NET or PHP. PHP is a great web language which is starting come out with some really solid desktop platforms (PHP/GTK comes to mind.) .NET does everything, web, server, and desktop and it keeps expanding every couple of years.

    I personally prefer PHP. It flexible and is great for my personal project. But when I can write something in .NET in 5 minutes and have it execute on all the platforms I running, I sometimes have to make a deal with the devil and go with Microsoft. My 2 anyway.

    --
    You say things that offend me and I can deal with it. Can you?
    1. Re:Where have all the good guys gone? by Brandybuck · · Score: 1

      But when I can write something in .NET in 5 minutes and have it execute on all the platforms I running, I sometimes have to make a deal with the devil and go with Microsoft.

      I keep hearing people say that .NET is cross-platform. I don't get it. I understand you can do some cross-platform stuff with Mono and dotGNU, but anything with a GUI is inextricable tied to Windows. Downloading and installing Sun's JDK just to run an application is a major pain, but at least it's feasible. Getting your GUI client written in .NET to run on my platform is impossible.

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Where have all the good guys gone? by swordfish666 · · Score: 1

      We people say "cross-platform" they mean it runs on Windows 2000, Windows WinXP and Windows 2003.

      --
      I like-a do-the cha-cha.
    3. Re:Where have all the good guys gone? by Anonymous Coward · · Score: 0

      Actually alot of us are right here still using Java. Why? Well I can write my servlet/jsp layer in Java. Then turn around and write my web services layer in Java. And deploy them on the same Application Server. Then I can turn around and write my Rich Client GUI in ....Java.

      Why do I need Axis? Or activeX controls? If I want a rich client - I'll write one in Java and then deploy it on the web using Java Web Start.

      In short Java lets me code all phases of my application in a code language and share code where apporiate. I never had much use for the zealots banging the drum and claiming anything but Java stinks - if they have moved on to the next new thing - I'll be quite happy.

    4. Re:Where have all the good guys gone? by TrekCycling · · Score: 1

      That's funny. I use the same version of Eclipse, Tomcat, Ant, JUnit (all written in Java, of course) on my Windows box as I do on my Linux box. Yet I've never been able to run Visual Studio on Linux. Am I not installing it correctly since it's apparently so cross-platform?

    5. Re:Where have all the good guys gone? by Brandybuck · · Score: 1

      You'll have to pardon me. I'm still getting used to this NewSpeak the .NET advocates talk in.

      --
      Don't blame me, I didn't vote for either of them!
  22. Don't plan the party just yet by curtlewis · · Score: 0, Flamebait

    There are still a lot of companies, in their misguided foolishness, developing on Java technology. It was the buzzword so they jumped on the bandwagon. Nevermind a little common sense mixed with practical experience.

    Nothing will make me happier than to see the piles of junk referred to as various types of Java technology fade from existence. The bloated, memory pigs that will happily do your garbage collection for you (sometime, maybe, perhaps, if it feels like it) sucked when they were first released and the suck fest just kept going. I will admit that java servlets did reasonably well, but there are other technologies that work just as well for that.

    But it's going to be a long time before people learn to adapt and drop the dying technology. Those that do, will move on, those that don't wil move on to the unemployment line.

    I'm looking forward to the Java is dead party myself!

    1. Re:Don't plan the party just yet by Anonymous Coward · · Score: 0

      Wow...bitter much? Completely miss the Java trend, and still stuck with old tech, or what? Who pissed in your cornflakes?

    2. Re:Don't plan the party just yet by Bill+Dog · · Score: 1

      Completely miss the Java trend, and still stuck with old tech, or what?

      Actually that's exactly why many of us skipped the Java trend -- it's old tech/largely a duplicative language. For example, the shift from C to C++ was challenging and a tremendous boost. The shift I took in college from Pascal to C was not. They're largely redundant languages. As Java is to C++.

      Another perspective from which Java is old-tech is Web Services/SOA. Java is just more of the same tightly-coupled, language-specific, platform-dependent way of combining pieces of functionality together into an application. Java calls Java, C++ calls C++, CORBA calls CORBA, COM calls COM, etc. It's time to move on to looser coupling based on language/platform/OS-independent standards. I pray that Java is the last of the old-school redundant technologies that businesses get suckered into.

      --
      Attention zealots and haters: 00100 00100
  23. What is the appeal of Ruby? by Anonymous Coward · · Score: 0

    Is it the engine behind it or the semantics/style of the language.

  24. Has the previous hype of Java and J2EE moved on? by plopez · · Score: 5, Insightful

    Of course it has. IT actually is not too far removed from the fashion industry.

    about 10 years ago:
    Cast off those old tired relational databases! It's all object databases! It new! It's modern! It's chic!

    C++? So passe'! The greatest thing is Java! So trendy, so fresh!

    In the past few years:
    Object databases are not with it! XML databases are the way to go! So modern! So *you*!

    Now:
    It's Ruby on Rails! What are you thinking using that dingy old Java! So... last season! Step into the 21st century!

    etc.

    The only thing I can think of which is more fad driven are diet books and management crazes (E.g. '7 habits of Effective Plan Z 2 Minute TQM EManagement iCommerce Gurus for Dummies (but were afraid to ask)').

    Yet another reason to leave IT.

    --
    putting the 'B' in LGBTQ+
  25. VB for the 21st Century by NutscrapeSucks · · Score: 4, Insightful

    I hope nobody takes this the wrong way, but both Python and Ruby seem to be "VB for the 21st Century" -- as in tools to build quick-and-dirty apps without all that annoying type safety. In other words, they don't really directly compete with Java at all.

    However, I don't think either have even registered at all in the commerical job market, so comparisons to Java are especially silly. As long as the Java programming market is so huge, there will be plenty of hype.

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
    1. Re:VB for the 21st Century by Billly+Gates · · Score: 1

      I assumed python was type safe? I keep telling myself to create some free time to learn python. I wanted to hack in it for the last several years but never got around to learning it.

      VB is a bad language in general. the newest version is alot better and more modern. I heard nothing but good things about python and ruby (except for whitespaces in python). To me both seem alot more powerfull than vb and you can run mod-ruby and mod-python for apache to create webservices.

      The problem with java even though I praised it in my other post is that it takes awhile to do anything simple with it. Java is still great for large ecommerce websites and I recommend it but pythonand ruby are nice for small apps, scripts, and even small sites that dont expect to become huge.

    2. Re:VB for the 21st Century by Anonymous Coward · · Score: 0

      Hm. That's probably the most uninformed post in this discussion. Quite a feat, congrats.

    3. Re:VB for the 21st Century by timeOday · · Score: 3, Informative
      both Python and Ruby seem to be "VB for the 21st Century" -- as in tools to build quick-and-dirty apps without all that annoying type safety. In other words, they don't really directly compete with Java at all.
      I think Ruby (and Python?) *are* typesafe, in that sense that all data is typed and only operations for that type can be used on that data.

      Java is different in that it has static type checking, but it also has dynamic typing constructs like dynamic_cast which can raise runtime type erorrs, just like Ruby. Static type checking is handy to decrease the number of dynamic type errors, but I don't see how it's any more *secure* than dynamic typing.

      All of Ruby, Python, and Java are in a different class than C/C++ which don't guarantee anything about object types.

    4. Re:VB for the 21st Century by NutscrapeSucks · · Score: 2, Informative

      Well, in that case VB is "typesafe" too.

      But that gets to the heart of the issue -- Solutions developers learned the hard way with VB that runtime type-checking significantly hurts the "scalability" of a development project, both in size and # of developers. But now that VB has been written off and forgotten, so have the lessons, and a new generation is about to relearn them with new and cool languages.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    5. Re:VB for the 21st Century by Pxtl · · Score: 1

      Python uses duck-typing - that is, all the member lookups are hashtable checks. So imagine every object as a dictionary, and when you say "foo.bar" you're really doing a heavily optimised foo["bar"]. Whatever object "bar" returns is what you get back.

      Basically, it means no compile-time type safety. The workaround is that you make lots and lots of checks and exceptions.

      Really, it's at least better than Java2 and .NET11, which have all the cruft of static typing, but you have to cast back-and-forth to "Object" all the time, making all that static typing useless for safety anyways.

      No static language is complete without generics. Thank god they've finally got those.

    6. Re:VB for the 21st Century by NutscrapeSucks · · Score: 1

      VB had some horrible language constructs, true, but that's not why it was a bad enviornment -- it was the typing issues that caused most VB projects to fail.

      (And I don't think 'powerful' is the term you are looking for -- even VB6 had a servlet-type interface, and it was 'useful' enough for certain things.)

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    7. Re:VB for the 21st Century by Anonymous Coward · · Score: 0

      runtime type checking = some day some part of the code you forgot about will just up and die and you won't know why.

      compile time type checking = same thing, but you catch it in the beginning, because ("Z" > 0) is an invalid operation. ("Z" being a string, and > being an integer operation)

      yes in theory if you have unit tests that cover 100% of your code you will never have these errors. In practice, you always have these errors
      (assuming you use a code coverage tool like Emma for Java to make sure your tests do actually cover everything)

    8. Re:VB for the 21st Century by helifex · · Score: 3, Interesting

      It always seems to me when I see this argument that it's the "but it's not type-safe" people that don't get it.

      I, like lots of other dynamic language proponents, come from a background in type-safe languages but eventually I realized that in most cases static type checking did nothing but slow me down. It doesn't matter if your code is correct at compile time, it only matters if it's correct when it's being used and the reality is that type-safe and dynamic language users verify this the same way, wth automated testing.

      Why then, should I bother jumping through the hoops of type safty?

      I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine ;)

    9. Re:VB for the 21st Century by mikaelhg · · Score: 2, Funny

      Indeed. I'd ask what the Python and Ruby counterparts to, say java.util.concurrent.ConcurrentHashMap or java.util.concurrent.SynchronousQueue are, if I didn't know about the Global Interpreter Lock which quite effectively limits any serious adult use, outside of the sandbox where wild imaginations roam free and little shovels and sand cakes seem to do anything anyone might ever want.

    10. Re:VB for the 21st Century by NutscrapeSucks · · Score: 1

      I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine

      Judging by your spelling, I recommend a statically-typed language :)

      (As an actual response, what happened to VB was that it became ghetto-ized, and then the salaries dropped through the floor. Then it becames your problem.

      And no, I never programmed much VB professionally, I was just around while all this happened)

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    11. Re:VB for the 21st Century by arevos · · Score: 1
      I hope nobody takes this the wrong way, but both Python and Ruby seem to be "VB for the 21st Century" -- as in tools to build quick-and-dirty apps without all that annoying type safety. In other words, they don't really directly compete with Java at all.

      It's worth remembering that until 1.5 came out, even Java didn't have complete type safety.

      It's also worth remembering that static typing comes at a cost. A dynamic typed language can do things that a static typed language simply cannot. Mutable classes and objects are not uncommon in Python, and this is not just because the programmers just felt like it; there are significant benefits to using these tools.

      For instance, in database abstraction layers such as the one in Rails, and SQLObject in Python, make heavy use of this mutability to create an largely transparent SQL interface. Java's static typing prevents it from doing the same.

      Ruby and Python sacrifice a safety-net for greater power. You may think this is a wise decision, or you may not. But I don't think you can compare this philosophy to VB, which has all the power and flexibility of a dead fish.

    12. Re:VB for the 21st Century by smcdow · · Score: 1

      Remember folks, threads were invented as a workaround to deal with operating systems that exact heavy penalties for process creation. When you use threads, you're continuing the use of a workaround.

      --
      In the course of every project, it will become necessary to shoot the scientists and begin production.
    13. Re:VB for the 21st Century by Sanity · · Score: 1
      The difference between static and dynamic typing is that with static typing, if a method says it will return a String, you know that it will (unless it is null). In other words, interfaces are enforced by the compiler to a greater degree than with dynamic typing.

      I think ML's approach, where the compiler does enforce typing, but the types are inferred rather than being specified explicitly affords the best of both worlds. Modern Java IDEs, such as Eclipse, which exploit static typing to suggest options to the programmer, also do much to alleviate the tedium that static typing can create - indeed, it exploits static typing in a useful way.

    14. Re:VB for the 21st Century by mikaelhg · · Score: 1

      When you use threads, you're continuing the use of a workaround.

      Because sharing resources between computational threads in a defined and controlled way is just so wrong. Who cares if it makes the system faster by orders of magnitude and makes maintenance work much easier?

    15. Re:VB for the 21st Century by Anonymous Coward · · Score: 0
      No type safety and explicit checks is better than type safety and implicit checks?

      Uh, no.

    16. Re:VB for the 21st Century by Hard_Code · · Score: 1

      What? Of course C++ can make guarantees about object types. You have to use the C++ dynamic casts to use these guarantees if you want to cast, which in general should be avoided if possible.

      --

      It's 10 PM. Do you know if you're un-American?
    17. Re:VB for the 21st Century by smcdow · · Score: 1
      The real solution is to get a better operating system that allows resource sharing and cheap process creation. Plan 9 is a step in the right direction.

      Besides, all the threading models I'm aware of make it difficult to share resources between unrelated threads (or processes). At least SysV IPC, warts and all, allows for sharing between completely unrelated process threads.

      --
      In the course of every project, it will become necessary to shoot the scientists and begin production.
    18. Re:VB for the 21st Century by Bill+Dog · · Score: 1

      Others would say it was the skill level and mentality of the typical VB developer that caused most VB projects to fail. Incidently, I see the same thing with Java. Whether it's Sun or MS, market a language/platform to PHB's telling them it's easier and they won't have to hire expensive C/C++ people, and it will become hugely popular. (I had read estimates that there were 10 times as many VB programmers than there were C++ programmers (developing for Windows)).

      --
      Attention zealots and haters: 00100 00100
    19. Re:VB for the 21st Century by Anonymous Coward · · Score: 0

      Damn, I love it when people type a bunch of stuff, that as I'm reading it sounds like it might be generally true, and then they end it with an imbecilic statement from evident ignorance tanking their credibility and casting into doubt everything else that was said.

    20. Re:VB for the 21st Century by Anonymous Coward · · Score: 0

      >> I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine ;)

      If English was compiled instead of dynamic, you would have recieved the following compiler errors:

      -Error: Unknown word 'propobally'
      -Warning: 'there' used as noun modifier, perhaps you meant 'their'?

    21. Re:VB for the 21st Century by Peaker · · Score: 1

      Threads are overrated.
      Every solution using threads is simpler, better and more reliable with coroutines or a Reactor.

      The only use of threads is to extract every last bit of computational power from SMP machines. This is not the target audience for Python and Ruby.

    22. Re:VB for the 21st Century by Peaker · · Score: 1

      If English was explicitly statically typed and compiled instead of dynamic, you would have had to write:

      "Noun English;
      verb compiled;
      adjective instead(adjective *of);
      typedef mutability_t dynamic;
      pronoun you;
      [5 more useless lines...]
      If English was compiled instead of dynamic, you would have recieved the following compiler errors:"

      With all that work you have to do to satisfy the compiler, I write unit tests, and test the code types AND the required functionality.
      My code will in fact be better and more reliable, in the end.

    23. Re:VB for the 21st Century by helifex · · Score: 1

      You guys can enjoy my typos all you want. I was trying to crank that out at work between passes from my ever mobile boss. If it had been compiled (me proofing it) the project would have been abandoned for lack of available time. Instead the message was delivered and you understood it just fine.

      *** don't take this as me suggesting dynamic languages generate more bugs in code, they don't. It's just me having a little fun with your stupid waste of bandwidth attacking spelling and grammer on a message board. ***

    24. Re:VB for the 21st Century by youknowmewell · · Score: 1

      Strong Typing vs. Strong Testing From the man himself.

    25. Re:VB for the 21st Century by arevos · · Score: 1
      Damn, I love it when people type a bunch of stuff, that as I'm reading it sounds like it might be generally true, and then they end it with an imbecilic statement from evident ignorance tanking their credibility and casting into doubt everything else that was said.

      Notice I said VB, and not VB.NET; though even VB.NET doesn't compare well with Python or Ruby.

    26. Re:VB for the 21st Century by mikaelhg · · Score: 1

      The only use of threads is to extract every last bit of computational power from SMP machines.

      What are you smoking?

      Did you look at the examples I just mentioned above?

      What size of a parallel software application do you normally design and implement?

    27. Re:VB for the 21st Century by NutscrapeSucks · · Score: 1

      When all the Python hype is about how cheap/easy/fast it is to develop with, what conclusion do you think the PHBs will come to?

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    28. Re:VB for the 21st Century by Bill+Dog · · Score: 1

      Well, PHB's listen to what big companies whose names they've heard of say, not to the recommendations of the kinds of dorks they used to make fun of in school. Unless Python has a big-name backer or three, it will stay obscure. If not, it'll be sullied in the same way as Java and VB -- PHB's will believe that just about any warm body can do it, and will set salaries such that only barely warm bodies will apply, and its developer community will be overrun by the mediocre to worse, and the language's reputation will suffer.

      (BTW, on your username and sig, as someone who had to support NS4 several summers ago in a new web development project (customer had some really old installations), I could not possibly agree more. It works fine for basic HTML and forms, but try DHTML or slightly complex layouts, or non-trivial js, and it's unbelievably crash city all over itself. Biggest f'ing POS ever.)

      --
      Attention zealots and haters: 00100 00100
    29. Re:VB for the 21st Century by Peaker · · Score: 1
      Your examples involved types explicitly and specifically useful for threaded programming.

      I am questioning the usefulness of threads themselves.

      People think of them as "transparent parallelism" in their programs, while in fact the parallelism in threads is about as transparent as a whole lot of mutexes and race conditions.

      The simplicity of threads is an illusion, one that one usually snaps out of too late. Reactors and coroutines allow for scalable parallelism while:
      1. Retaining deterministic execution allowing much more effective debugging, and eliminating practically all race conditions.
      2. Don't require any locks, thus require almost no thought at all about critical sections simplifying the design, with the added benefit of no deadlocks.
      3. On Uniprocessor machines, they actually run faster, because of quicker/less context switching and no locking overhead.
      4. With modern languages, and even in less modern ones (via modern tricks), coroutines can be just as transparent as threads at first, and much more transparent later, when the locks are not required.
    30. Re:VB for the 21st Century by mikaelhg · · Score: 1

      Alas, in the real world where 32 parallel application hardware threads might be churning away day and night, threads are the way working people handle this kind of parallellism, where one thread might know of the context of work arriving, but nothing of the content, as threads are just as transparent as the tools we handle them with allow them to be.

      So I ask again: what size of real world parallel applications do you usually design and implement?

    31. Re:VB for the 21st Century by Peaker · · Score: 1

      The size of the real world applications I write is large. The parallelism required by these applications, at least in terms of the parallel hardware is not large.

      The point is that this is the situation for almost all developers. Almost everybody is using threads as a tool for parallelism, rather than a tool for exploiting performance of parallel hardware, which is the only thing they're really good for. And indeed very few have the kind of parallel hardware AND performance requirements to really need those threads.

      That aside, if you happen to be in a situation where you really need to exploit the hardware to its last bit of performance, and the hardware happens to be parallel - use threads. I would, in that case though, suggest to avoid Java, and write the performance critical threaded code in C, C++, and use a high-level language only for the surrounding logic.

    32. Re:VB for the 21st Century by Nevyn · · Score: 1

      You're talking about using processes and shared memory right? Oh, you're not ... you are under the impression that "share everything, and hope" is somehow near "share X, in a well defined way". I would hope you are perfect, but having seen the bug ridden crap that multi-threading advocates produce ... I'm just not that much of an optimist.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
  26. No "serious development" on Python? by Zancarius · · Score: 5, Insightful

    No one I've met doing serious development is building on python, it's just too error prone.

    I don't suppose you've heard of this company before?

    There are dozens of others, too. I'll cite this page as a source, though it is by no means comprehensive.

    --
    He who has no .plan has small finger. ~ Confucius on UNIX
    1. Re:No "serious development" on Python? by blank · · Score: 1

      To be fair, Google probably hires good programmers. So the quoted statement probably is correct.

      --

      bah. start over

    2. Re:No "serious development" on Python? by sgtrock · · Score: 1

      Based upon what criteria? Python error prone? How? Care to cite specific cases?

    3. Re:No "serious development" on Python? by mikaelhg · · Score: 1

      Python error prone? How? Care to cite specific cases?

      Zope. 'nuff said.

    4. Re:No "serious development" on Python? by Anonymous Coward · · Score: 0

      & Yahoo Shopping did all their development in LISP, but you won't be seeing me follow them either :-/
      Development isn't just about which language is coolest. Especially on large scale projects (not to say google isn't large, but you just don't find a team of serious geeks to do all your development in the real world). You need great tool support & to be able to almost find developers on the street who are competent, if not great. You then want support from server vendors, 3rd party library writers etc. & your bosses/clients need to be comfortable that what they're buying can be easily supported.

      python/ruby et al may be great for small, in-house development, but for the most part it doesn't offer what the wider business community wants.

    5. Re:No "serious development" on Python? by ashot · · Score: 1

      Zope is not python

      --
      -ashot
    6. Re:No "serious development" on Python? by kaffiene · · Score: 1

      Google does more serious development in Java than Python. Their python usage is more for glue code.

  27. Re:A Humble Note -- Nonsense! by Anonymous Coward · · Score: 0

    LISP, 1960.

  28. Just recently switched from C++ to Java? by tashpool · · Score: 1
    ASU and my friend's colleges in the same area have been heavily Java for mainstream CSE classes for a number of years now. When I first entered the University back in the late 90's people were whispering something about how all the classes have just switched to Java.

    They were right, I only had one class that specifically used C++ (in an MFC environment) and we were really only doing OpenGL programming in a predefined project. Other than that, it was all Java and some lisp/prolog for AI and language theory.

    --
    Read my sig! That's right, keep reading...
    1. Re:Just recently switched from C++ to Java? by crazylocks · · Score: 1

      Colleges who focus on one language and/or platform are doing their students (dare we say "customers"?) a disservice. The software world is not static and probably never will be. There is no perfect programming language and young developers should be taught that up front.

      --
      My momma gave birth to a winner, I gotta win.
  29. Nope. Still here. by Soong · · Score: 2, Interesting

    PHP sucks, it's a lousy language with crappy syntax and barely existant error checking.
    Python is an ok language but its interpreter is slow, and that's coming from a Java guy.

    So, in summary, suck it, I'll keep writing Servlets for Tomcat.

    --
    Start Running Better Polls
  30. It's gone to .NET by Brandybuck · · Score: 5, Insightful

    Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?

    No, the hype has moved on to C# and .NET. The religiosity people have towards Microsoft's semi-proprietary technology is definitely reminiscent of the 1990's Java hype. Especially among management (who think they've finally found the silver bullet).

    I don't blame people for getting excited over .NET, because compared to MFC and traditional COM, it's a wonderful thing. But many people are going overboard on it.

    --
    Don't blame me, I didn't vote for either of them!
  31. I don't need a drumbeat to follow by Matt+Perry · · Score: 4, Insightful
    leaving a significant contingent of Java programmers behind, blinking in the bright lights without the constant drumbeat of boosterism
    As a Java developer I've never felt that I needed hype and "boosterism" to make me feel like I was using the "right language". Java is a tool. Where it best fit, I used it. Where it didn't I used something else. At work we use Java and we're quite happy with it. I think Java will do just fine without the fanboys.
    --
    Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    1. Re:I don't need a drumbeat to follow by kisrael · · Score: 1

      I don't know, I think the Boosterism is an important thing, because it influnces was platform choices are made going into the future. You can't always get hired on general smarts and ability to learn, so it's nice if you're reasonably versed in some of the hotter topics.

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
  32. Nope. I will have another order of java thank you by Billly+Gates · · Score: 5, Informative

    I am really just rediscovering Java now and the API's are very nice.

    Java is stable, mature, and scalable, right out of the package. Python is nice for small projects and scripts but Java's strength is not the language. Its the api's and framework as well as the ton of third party software for it. For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling. Results vary drastically depending on who wrote what. There are tons of third party java objects and programs that co-exist and integrate with your java based servlets.

    Java seems to have found its niche since multiplatform desktop applets never took off. Not to mention java is pleasant to debug and the tools are nice.

  33. LISP practical? by eldavojohn · · Score: 1

    I also use LISP. But let's keep in mind that I said "practical computing." I probably should have included "object oriented" with practical.

    Duly noted though, Paul Graham and company did a fine job on that language. I still enjoy using it in my AI classes in grad school. A very clean language but the topic at hand was Java, not LISP and I'm only 23 years old ... I think that makes Java a little more accessible to me than LISP.

    --
    My work here is dung.
    1. Re:LISP practical? by Anonymous Coward · · Score: 0

      Paul Graham and company did a fine job on that language.

      I sincerely hope you're not implying that Paul Graham (& co.) invented LISP...

      I'm only 23 years old ... I think that makes Java a little more accessible to me than LISP.

      Eh? I didn't know there was an age limit. "LISP: Adults Only. Contains content that is suitable only for persons aged 25 and older. Content rated by ESRB." :)
      Or maybe you don't want to use any language older than you are, in which case may I recommend the Io programming language, invented in 2002?

      (By the way, I'm 21, and I find languages like LISP, Smalltalk and ML fascinating.)

    2. Re:LISP practical? by Anonymous Coward · · Score: 0

      I thought Scheme replaced LISP? Or was it Haskell?

    3. Re:LISP practical? by jbolden · · Score: 1

      I probably should have included "object oriented" with practical.

      Then you are assuming what you are trying to prove. What you are saying is that Java is the best:

      1) Procedural
      2) Object oriented
      3) Cish syntax
      4) Multiplatform

      Well yeah. But that's not really addressing the root question above.

    4. Re:LISP practical? by Anonymous Coward · · Score: 0

      Scheme is a dialect of LISP. Haskell is completely unrelated. HTH.

    5. Re:LISP practical? by Karma+Farmer · · Score: 1

      Scheme replaces Lisp in exactly the same way that Java replaced C.

  34. Ruby (on Rails) and Python? by Omega1045 · · Score: 2, Interesting
    Ruby (on Rails) and Python

    I would imagine that .NET is gaining much more of the Java base of applications than Ruby and Python combined. That is no disprespect to those two fine languages. Microsoft wrote .NET to compete with Java, and that is exactly what it is doing. I am working on a project right now where the last version of the app was written in Java, and the new in C#. When interviewing for jobs a couple of years ago, I think I interviewed with at least 5 companies that were doing the same. This is hardly scientific evidence, but I have a much easier time believing that companies would switch from Java to C# than to other languages, if they are going to switch.

    --

    Great ideas often receive violent opposition from mediocre minds. - Albert Einstein

    1. Re:Ruby (on Rails) and Python? by helifex · · Score: 1

      In terms of raw number maybe

      but posts such as this one from scobleizer indicate that there's enough interest/departure from .NET for Microsoft to notice.
  35. It's the compromise that is so important by 0xABADC0DA · · Score: 4, Insightful

    That's why Java has been so successful. It made a compromise between performance and ease. It made a compromise between compiled and interpreted. It made a compromise between local applications and applets. It made a compromise between easy-of-use and formalism.

    C++, which Bruce used to love, made *no* compromises, except to run C code. It wanted to include anything possible as long as it was fast, and it did except that it was so freakin complicated that even to this day sometimes compilers can't interpret the source correctly. In the same way, Ruby (and Smalltalk) also do not make compromises. They say 'everything is an object' even though that means computations are 20x slower even after decades of optimization. They say 'no type checking' (if it acts like a duck it is) even though it is pretty much a necessity for large or reliable systems.

    Regardless of the level of hype, the real world of programming is about compromises. It's about Java, and C#. Sure there will be plenty of work at the edges for Ruby/Smalltalk and C++/C, but Java-like languages will be the center of programming for decades yet.

    1. Re:It's the compromise that is so important by Anonymous Coward · · Score: 0

      Obviously you haven't worked with any decent system in the past, if you think duck-typing is bad for "large or reliable systems", which it isn't. You should try building something with Cocoa. It's one of the best development systems out there, and it has HEAVY use of duck-typing (In fact, several docs from Apple indicate that you should use respondsToSelector, basically duck-typing, instead of using [NSWhatever class] = [NSInstanceofaClass class]; or however you do that. And if you think the Apple engineers aren't in the real world, well, whatever. And you're cripe about C++ makes... no sense. Um. Bad compilers can't compile bad syntax? Hard to believe. You can write clean and simple code in C++, but I guess you don't. I'm not defending C++ in any way, because personally I think it's object-oriented system is deplorable compared to Obj-C (Or Ruby/Smalltalk), but seriously. You don't even make SENSE. 20x slower computations with Ruby or Smalltalk (And I assume you also mean Obj-C, because it's basically a mix of the above and a dab of C compatibility)? What have you been smoking? Seriously. If you're using Ruby to rewrite your fun math super graphing OMG a bajillion calculations per second app, then you've got something wrong with your HEAD.
      Don't even get me started about "the real world of programming". Java and C#? Please. C# is hype. Java is half hype, half C++. In case you've never programmed before: compromise is a BAD thing. It's like having a smartphone that can do everything, but can't do anything well. The only thing that stands out about languages today, and gives them a REAL, long-lasting fanbase (Which Java obviously doesn't have) is doing something good. And considering that Apple just destroyed Cocoa-Java with a shotgun, and Microsoft has .Net (Which is also crappy...) and C# (again crappy), you don't have any major contendors besides Sun behind Java.

      Considering how little you know about real programming, you're not very qualified to make a prediction about the industry decades from now.

    2. Re:It's the compromise that is so important by Anonymous Coward · · Score: 0

      Newsflash, .NET is not a language. C# is a language that is used with .NET as is VB.NET and others. They operate on the same CLR. Why do you think C# is hype vs. Java. I've worked with both and C# standard libraries are light years beyond Java's in many areas or almost exactly the same. Your claims are about as believable as some of my fellow posters having a sex life.

    3. Re:It's the compromise that is so important by bnenning · · Score: 1

      In the same way, Ruby (and Smalltalk) also do not make compromises. They say 'everything is an object' even though that means computations are 20x slower even after decades of optimization.

      And considering our computers are *way* more than 20x faster than they were when Smalltalk was created, this shouldn't be an issue. But everybody likes to make pretty graphs out of benchmarks and forget that programmer time is much more expensive than CPU time.

      They say 'no type checking' (if it acts like a duck it is) even though it is pretty much a necessity for large or reliable systems.

      Apple and other OS X developers seem to do pretty well with Objective-C.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    4. Re:It's the compromise that is so important by ciggieposeur · · Score: 1

      You were going well until this:

      They say 'no type checking' (if it acts like a duck it is) even though it is pretty much a necessity for large or reliable systems.

      I used to think that strict typing was a Good Thing, but now I don't so much, and I ESPECIALLY don't like the way Java does it. The things I don't like about it:

      1. The artificial chasm between function and Object. Every function must live in one (and only one) Object. This makes both standalone methods and multimethods (Lisp CLOS) impossible, and results in overcomplicated object heirarchies where you have to think: which Object should own this function? Half the Design Patterns would be unnecessary if we used something like CLOS.

      2. Every data type is an instance of Object (except for the ones that aren't (primitives) which happen to be the basis of computation) and you're stuck casting all over the place to get access to the specific function you want. I've already got the type I want in a variable declaration, why do I need to keep casting to it? And now we have autoboxing so others apparently agree with me.

      3. It's SO EASY to break the typing system, who really needs it? Example 1: serialize an Object to SQL, upgrade JVM, deserialize Object and watch the app break. Example 2: toss a numeric String ("123") into a List of Integers on a JSP form and watch the app break when the backend iterates the List. Example 3: load Object from Webapp 1 (with its own ClassLoader) and try to pass it via EJB to Webapp 2 (with its own ClassLoader) and watch the app break. Again, why all the fuss from the JVM?

      On a separate but related issue: why checked Exceptions? Why the arbitrary distinction between Errors and Exceptions, and why are most real errors subclasses of Exception instead of Error? I relate this to the typing system because both language features assume a certain degree of design incompetency on the part of the programmer. I've worked on large projects, and I still think that if we tailor our tools to the lowest common denominator we will generally get software that isn't as good as it should be for the time invested.

    5. Re:It's the compromise that is so important by jbolden · · Score: 1

      Well I should mention computers are way more than 20x faster because the hardware guys consider speed to be very important. As a result:

      1) microcode
      2) chip processing
      3) drivers .... are much faster than they were

      Anything that gets performed millions of times needs to be fast. Lots of stuff is still performed millions of times. Look at games. Look at Window Managers. Look at core libraries.

    6. Re:It's the compromise that is so important by Anonymous Coward · · Score: 0

      Oh, because I definitely don't know anything about that. I never said it was. I said it was Microsoft's touted Java replacement, because that's what it is. I never said it was a language. C# is, yes, hype. It's a mishmash of C, Java, C++, and whatever else MS shoved in there. I never said it wasn't better than Java either.
      "And considering that Apple just destroyed Cocoa-Java with a shotgun, and Microsoft has .Net (Which is also crappy...) and C# (again crappy), you don't have any major contendors besides Sun behind Java." that is ALL I said about .Net.
      "Don't even get me started about "the real world of programming". Java and C#? Please. C# is hype. Java is half hype, half C++." All I said about C# other than what I said about .Net above. I never indicated that C# was not half C++ or whatever. As I said earlier in this post, it's just a mismash of C and Java and whatever else. Well, class, let's grade the post.

      Newsflash, .NET is not a language. C# is a language that is used with .NET as is VB.NET and others. Who doesn't love the word newsflash? It sounds sooo official. A++.
      Why do you think C# is hype vs. Java. I've worked with both and C# standard libraries are light years beyond Java's in many areas or almost exactly the same. End a question with a period... check... Say you've worked with both and one is insanely better, check, use scientific omg reference such as light years, check, talk about something completely unrelated (standard libraries? WTF? We're talking about language syntax... standard libraries are total fluff. They add to using the language, sure, but they aren't intrinsically part of the language....) check, you get an E+++, which doesn't mean exemplary, it means Extra-WTF?-y.
      Your claims are about as believable as some of my fellow posters having a sex life. Point out slashdot user's sex lives, which is a total stereotype and has nothing to do with anything, check, say claims aren't believable as something that is believable.... check check check. You get a G-- for this section, as in, I think reading your post made me get your gonorrhea.

  36. time to move on by penguin-collective · · Score: 2, Insightful

    I used to be quite enthusiastic about Java--it had a lot of promise when it came out. But I think Java has stagnated and it's time to move on.

    What are the problems?

    First, Java never turned into an open standard like C or C++. Initially, it looked like there were going to be dozens of independent implementations besides Sun's and Microsoft's, but they have all disappeared. The only way to run a compliant Java platform these days is with Sun's implementation or one of its derivatives (IBM, Oracle, Apple).

    Second, Java is focused on niche markets; most of Java's real-world use seems to be in enterprise apps, a market segment that by itself is not enough to sustain a general purpose programming language (Java may well be the new Cobol).

    Third, related to the above points, Java has failed to evolve sufficiently. Sun has failed to address concerns and needs of the scientific and numerical communities. And many of Sun's changes have been hampered by backwards compatibility with the JVM (e.g., genericity in Java 1.5 is deeply flawed). And Java never acquired a reasonable native code interface, keeping it out of many applications.

    Java has made a valuable contribution by demonstrating to many working programmers that features like garbage collection, reflection, and runtime safety are useful, but those features are essentially 1970's technology. Sun has failed to evolve Java beyond that, and that's why it's time for other languages and other stewards to take over. Fortunately, there are many other excellent languages being created. The Java language itself (but not the platform) will probably be with us for a long time, although probably running in many environments other than the JVM.

    Java had the potential to be a lot more than just a transitional language from C/C++ to modern, safe, reflective languages, but Sun unfortunately has failed to realize that potential fully.

    1. Re:time to move on by Glock27 · · Score: 1
      I was going to write essentially what you've written (so thanks for saving me the trouble). I want to expand on one of your points:

      Third, related to the above points, Java has failed to evolve sufficiently. Sun has failed to address concerns and needs of the scientific and numerical communities.

      This is the main reason that I, once a major Java supporter, have gone elsewhere. Gcj still has potential for numerics, but it has been slow moving and there is still not even operator overloading in sight. Also, there is no standardized access to IEEE floating point flags. I'm also concerned that as gcj achieves better conformance to "standard" Java implementations in areas like security, that performance will suffer.

      And many of Sun's changes have been hampered by backwards compatibility with the JVM (e.g., genericity in Java 1.5 is deeply flawed). And Java never acquired a reasonable native code interface, keeping it out of many applications.

      Again, gcj addresses a better native interface (CNI), but gcj is far from complete compared with even Java 1.4.

      For me, Dylan is looking like a great alternative. True compilation, all the advanced features you'd ever want, procedural/functional/oo programming style support...great stuff. I really hope it catches on for HPC, game programming and so on.

      If "performance per watt" is ever applied to software, there will be a great shift back to "traditionally compiled" languages like Dylan will occur. In fact, Dylan should be quite good for server-side Web programming...

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    2. Re:time to move on by 0xABADC0DA · · Score: 1

      Check sourceforge... the majority of Java projects are not in the Web category of trove. Azureus is not a web application. Gcj and classpath now have about 95% of the Java core implemented as totally free software. Your post is just not based on the facts.

      Java generics are not deeply flawed, except for making the classic C++ mistake of having generic variables identified with letters (ie, "public class List { ... A getIndex(int index) ... };" wtf does A mean?). But that's where Java's generics shine: if you don't want to use them, just don't use them. You can use somebody's library who used generics without you also having to. It's not a language virus like C# generics are.

      The scientific community is still often using FORTRAN for heaven's sake. I think blaming Sun for not doing what nobody else could (or wanted to) do either is more than a bit of a rant.

      Seriously what competition is there for Java other than C#? Java beats C# hands down in terms of performance (C# only competes because a significant part of its standard API is written in C), and the betas already put objects on the stack instead of allocating them, which will make it the speed of C for pretty much all real code. These algorithms are patented, and C# bytecode is less friendly to dynamic optimizations such as those, so C# has a huge uphill battle in that regard. With java 1.5's syntax additions, C#'s winning on ease of coding is debatable... properties vs having to specifically mark methods overridden methods.

    3. Re:time to move on by Anonymous Coward · · Score: 0

      Sorry the parent was right -- Java generics are deeply flawed.

      The canonical example is this: if A is a sub-type of B, then List of A should be a sub-type of List of B. But with Java generics that isn't true, mainly due to the underlying implementation of generics via erasure.

      I understand that these flaws were necessary for backward compatibility, but that doesn't change the fact that they are flaws.

    4. Re:time to move on by espressojim · · Score: 1

      There are some really nice APIs out there for computational work.

      For example, those folks over at CERN don't seem to do any computational work, but when they have to, they like to use this:

      Open Source Libraries for High Performance
      Scientific and Technical Computing in Java

      http://hoschek.home.cern.ch/hoschek/colt/

      There are lots of other very interesting and handy APIs out there for computational work. I do bioinformatics, and can rely heavily on work other people have already done, and done well.

    5. Re:time to move on by penguin-collective · · Score: 1

      Gcj and classpath now have about 95% of the Java core implemented as totally free software.

      gcj is not a Java implementation. And "the Java core" is not Java.

      Java generics are not deeply flawed

      We'll just have to agree to disagree.

      The scientific community is still often using FORTRAN for heaven's sake.

      The scientific community is using C and C++ extensively. Java would have been a great platform to move to if Sun hadn't screwed up so badly.

      Check sourceforge... the majority of Java projects are not in the Web category of trove.

      It doesn't matter what the projects are on Sourceforge, what matters is where Java actually gets used.

      The real measure of Java's failure as an open, modern application programming platform is the fact that no desktop environment has adopted it: Windows, OS X, Gnome, and KDE are all still based on C/C++. Even Sun's own "Java" desktop is based on C/C++. After 10 years, Java ought to have swept that market.

    6. Re:time to move on by 0xABADC0DA · · Score: 2, Insightful

      And List> is a subtype of List> which basically means that you have as many types as there are uses of the generic class. That's the C++ school of thought, which just takes it one step further and generates code for each (most) uses. I could load one class that creates an arbitrary number of new types within the JVM. That's very bad from a practical standpoint.

      So then is Hashtable<B,B> a subtype of Hashtable<B,A> and Hashtable<A,B>, which is multiple inheritance, or a subtype of Hashtable<A,A>, which leads to basically a parallel tree of types over every independent variable in every generic type and recursively since parameters can themselves be generic types? All this basically means that it is extremely hard to do instanceof operations in any reasonable time.

      So are Java's generics really so bad, or are they just one of another good compromise between practicality and formalism that makes Java so great? I say the latter.

    7. Re:time to move on by jvital · · Score: 1

      First, Java never turned into an open standard like C or C++. Initially, it looked like there were going to be dozens of independent implementations besides Sun's and Microsoft's, but they have all disappeared. The only way to run a compliant Java platform these days is with Sun's implementation or one of its derivatives (IBM, Oracle, Apple).

      It is an open-standard. The reason why you don't see lots of compliant platforms is simply because there isn't much interest in developing a JVM and making a business out of it. Most companies are more interested in making money using Java, not developing it.

      But there are a lot of open-source JVM's being written.

      Second, Java is focused on niche markets; most of Java's real-world use seems to be in enterprise apps, a market segment that by itself is not enough to sustain a general purpose programming language (Java may well be the new Cobol).

      Enterprise apps is a huge "segment". It's what most software business do today. But anyway, doesn't mean you can't use Java for whatever you want... see succesful projects, such as Azureus, or OpenOffice (which isn't totally written in Java, but uses Java).

    8. Re:time to move on by ciggieposeur · · Score: 1

      But there are a lot of open-source JVM's being written.

      Sorta. There's lots of VM's, but none that are a) full JRE's, and b) Java certified(tm). We've got "close" to #A but nothing yet for #B until GNU Classpath is finished. That's the "Java trap" RMS is talking about: java.* and javax.* are not yet open, and until they are all Java code is pinned to the Sun implementation.

    9. Re:time to move on by 0xABADC0DA · · Score: 1

      The real measure of Java's failure as an open, modern application programming platform is the fact that no desktop environment has adopted it

      To me that's more of a failure of the desktop environments; we're stuck with C/C++ based ones because of network effects not because of merit. What sense does it make to program a window manager in Java when it has to speak X11 to actually do anything? I'd bet that there is nobody in the whole world who could program a ICCCM compliant window manager from scratch, from memory. So you would have to study some notoriously confusing spec to implement one in Java or port lots of low-level bit-flipping code from C. Or you could lift code from twm or other and start hacking on it, which is what people do.

      If one of the major desktop environments were implemented in Java, it would represent a massive victory. If not, it's more likely than not just another sad but understandable failure of markets, like the dvorak keyboard for instance.

    10. Re:time to move on by penguin-collective · · Score: 1

      The last release for that library was in 2002. And if you look around the web, you'll see that that pretty much sums up the situation with Java and numerics: starting around 1999, there was a lot of interest in fixing up Java for numerical work and a lot of those kinds of projects started. But Sun failed to do their part and people just gave up in frustration around 2002. Java is mostly dead for numerics.

      Most people have gone back to C++, Fortran, or Matlab. C# has a chance of taking off for numerical work, however.

    11. Re:time to move on by psykocrime · · Score: 1

      but nothing yet for #B until GNU Classpath is finished.

      GNU Classpath is pretty close to complete, relative to JDK 1.4. Take a look and see. Most of the remaining problems are in pretty obscure or seldom used areas.

      That's the "Java trap" RMS is talking about: java.* and javax.* are not yet open, and until they are all Java code is pinned to the Sun implementation.

      Many java apps, including large, complex applications like Eclipse, JBoss, etc., have been shown to run using Classpath. Kaffe + Classpath or SableVM + Classpath is pretty dang close to a complete JDK 1.4 environment and will run many (maybe most) Java programs.

      --
      // TODO: Insert Cool Sig
    12. Re:time to move on by penguin-collective · · Score: 1

      But there are a lot of open-source JVM's being written.

      A JVM is useless by itself for running Java software.

      It is an open-standard. The reason why you don't see lots of compliant platforms is simply because there isn't much interest in developing a JVM and making a business out of it. Most companies are more interested in making money using Java, not developing it.

      It makes no difference what the reasons are, a language that wants to replace C and C++ needs to have many independent implementations, just like C and C++ do.

      Enterprise apps is a huge "segment". It's what most software business do today.

      Yeah, but so what? All I was saying is that that's the segment in which Java has been most successful, but even in that segment, Java is not dominant.

    13. Re:time to move on by Profound · · Score: 1

      >> There are some really nice APIs out there for computational work.

      Yep, except all the code looks like:

              BigDecimal balance1 = new BigDecimal("123.45"),
                                    balance2 = new BigDecimal("678.90"),
                                    rate = new BigDecimal("0.05"),
                                    xfer = new BigDecimal("99.99");
              balance1 = balance1.multiply(BigDecimal.valueOf(1).add(rate)) .subtract(xfer);
              balance2 = balance2.multiply(BigDecimal.valueOf(1).add(rate)) .add(xfer);
              if (balance1.compareTo(BigDecimal.valueOf(0)) < 0) {
                      throw new InsufficientBalanceException();
              }

      Instead of:

              decimal balance1 = 123.45, balance2 = 678.90, rate = 0.05, xfer = 99.99;
              balance1 = balance1 * (1 + rate) - xfer;
              balance2 = balance2 * (1 + rate) + xfer;
              if (balance1 < 0) {
                      throw new InsufficientBalanceException();
              }

      Examples thanks to /dev/null

    14. Re:time to move on by ciggieposeur · · Score: 1

      Many java apps, including large, complex applications like Eclipse, JBoss, etc., have been shown to run using Classpath. Kaffe + Classpath or SableVM + Classpath is pretty dang close to a complete JDK 1.4 environment and will run many (maybe most) Java programs.

      *nodding head* Yup, but that's still not Certified Java(tm) and Sun won't let anyone call it Java unless it passes 100% of the compatibility tests, which are NOT free (beer or speech). Maybe Sun will change their mind someday, or maybe Kaffe/Sabre + Classpath will become the defacto JVM. But it's not at all a rosy picture. Some of the comments here are illuminating.

      By now I just don't care, I've moved out of the webapp space and Java is the wrong tool for my current projects.

    15. Re:time to move on by penguin-collective · · Score: 1

      To me that's more of a failure of the desktop environments; we're stuck with C/C++ based ones because of network effects not because of merit.

      Taking into account network effects is an important component of language merit, and Java has failed to address this adequately. In contrast, languages like C# and Python integrate much better into the existing environments, which is why they have been much more successful on the desktop.

      (Even if we just look at the language itself, and not network effects, Java doesn't rate too well: better languages than Java have been around since before Java was even conceived.)

      I'd bet that there is nobody in the whole world who could program a ICCCM compliant window manager from scratch, from memory. So you would have to study some notoriously confusing spec to implement one in Java or port lots of low-level bit-flipping code from C. Or you could lift code from twm or other and start hacking on it, which is what people do.

      So you are proposing to throw out the ICCCM altogether and replace it with a bunch of Java windows? That would break a lot of functionality and replace a documented (if complex) standard with a bunch of stuff that's defined implicitly in Java source code. How exactly is that progress?

      ICCCM is complicated, but it's complicated because it describes complex interactions. One could only wish that Macintosh and Windows had standards comparable to the ICCCM.

      If one of the major desktop environments were implemented in Java, it would represent a massive victory.

      I think it would be a massive victory if a major desktop environment were implemented in a garbage collected, safe language, but Java is not the language--it lacks essential functionality for that purpose. Python or Mono are decent platforms to build desktop environments on, and, not surprisingly, more and more desktop components are being built in those languages.

      If not, it's more likely than not just another sad but understandable failure of markets, like the dvorak keyboard for instance.

      That's a good analogy because the superiority of Dvorak is as much of a myth as the superiority of Java. Both Dvorak and Java have gimmicks that make them sound appealing, but they fail to address the real problems in their domains, and that's why they are ultimately not going to take over the world. Java had the potential to grow into that role, but it is clear at this point that it's not going to happen anymore.

  37. Re:CS programs + obligatory by Ostien · · Score: 1

    A year ago my school switched their programming class from C++ to Java as well. Because of this my school bought all new books. And now the "hype" is over and schools may have to change again soon thus losing a lot more money :( .

    --
    Reality is a big nasty dragon. Fortunately I don't believe in dragons.
  38. Beware of any 'hyper-enthusiasts' by digitaldc · · Score: 1

    did he actually do his homework on this particular topic, or will you be embarrassed in public if you use his explanation?

    Most likely the 'hyper-enthusiasts' are suffering from irrational exuberance and therefore cannot be trusted. But it did sound marvelous during the explanation.

    --
    He who knows best knows how little he knows. - Thomas Jefferson
  39. Buzzwords by vectorian798 · · Score: 1

    Yes, Java is no longer the buzzword of the day, but that doesn't mean that it is obsolete, dying, or anything like that. This is (at least partially) highlighted by the fact that MS is aggressively developing C# and the .NET framework. Java has its own niche, and that's a different group than Ruby. As the article points out, some decisions in Java syntax (in J2SE) were made for efficiency's sake, at the slight expense of programmers' convenience - and different applications demand different tradeoffs. It is stupid to compare Java directly to Ruby or RoR, because only a portion of Java competes with it.

    That being said, today's buzzwords seem to be RoR and AJAX, though I don't think either will be knocking any of the competition (completely) out of the picture.

    1. Re:Buzzwords by LDoggg_ · · Score: 1


      That being said, today's buzzwords seem to be RoR and AJAX, though I don't think either will be knocking any of the competition (completely) out of the picture.

      Interesting. The funny thing is, people think that they are not just in competition for buzzword space, but in competition as solutions for all problems. Even when they are complimentary technologies.
      "Why write something in j2ee when you can do it in ajax" ;)

      --

      "If they have both, tell them we use Linux. And if they have that, tell them the computers are down." -Dave Chapelle
  40. With All Due Respect to Bruce E. by lonb · · Score: 4, Insightful
    Most senior engineers I know do not get "hyper-enthusiastic" about anything. The gross majority (pun intended) of hyper-enthusiastic software folk are the softies... ya know, the guys who think VB is the cure-all or who don't have time to learn things in depth. When was the last time you met a true engineer who's primary fault was that they ALWAYS learn things in depth -- analysis paralysis is rarely top-down.

    The bottom line is that the majority of programmers are bad programmers. These move to the easiest fad where the majority of people go. And that's not a horrible thing, it's just a thing most senior engineers don't care much about. Because, and I say this after interviewing tons and tons of developers, real devs dig deep on their own, and do not 'rely' on the work of others. And before I get flamed here, it's not to say they don't use the work of others, it's just that I've seen many seniors spend hours trying to figure out how something works, rather than spend two minutes asking for help.

    p.s. I think Bruce Eckel is awesome -- "Thinking in Java" is rockin'

    --
    "Ain't I a stinka..." - Bugs
    1. Re:With All Due Respect to Bruce E. by Strudelkugel · · Score: 2, Insightful

      Sorta off topic, but can you explain how this

      I've seen many seniors spend hours trying to figure out how something works, rather than spend two minutes asking for help.

      is a good thing?

      What if the two minute explanation includes the fundamental answer to the question? I think a good developer (regardless of years of experience) knows when to ask a question and knows when to improve knowledge in an area. If would be quite unhappy as a manager to pay a developer for hours of research if the answer could have been had in 2 minutes.

      --
      Imagine how much harder physics would be if electrons had feelings! -Feynman, maybe
    2. Re:With All Due Respect to Bruce E. by lonb · · Score: 1

      It's not necessarily a good thing, but it is often the case nonetheless. It is because engineers have a deep desire to figure things out on their own (read: opened up their ataris to the chagrin of their parents).

      And, unless there are burning deadlines, managers are used to senior engineers behaving this way, and are okay with it because it is how knowledge is established and is not going to stop anyway.

      --
      "Ain't I a stinka..." - Bugs
    3. Re:With All Due Respect to Bruce E. by MojoStan · · Score: 2, Informative
      p.s. I think Bruce Eckel is awesome -- "Thinking in Java" is rockin'

      I think you forgot to mention that "Thinking in Java" is also a free download, no strings attached. The C++ version of this book, "Thinking in C++" (also a free download), helped me "get" OOP.

      --
      TO START
      PRESS ANY KEY

      Where's the 'ANY' key? I see Esk, Kitarl, and Pig-Up...

    4. Re:With All Due Respect to Bruce E. by Q2Serpent · · Score: 2, Insightful

      The issue is short-term versus long-term. If the overall goal is short-term results (an instant answer to a question), then asking may be the best bet. I argue that long-term is better though. If I spend a little more time researching the answer, but it means I have in-depth knowledge of everything involved, I'll be able to solve all sorts of related problems 10 times faster. Which is better now?

  41. Golsing will shave beard by Anonymous Coward · · Score: 0

    The old jolly guy will put his resume inside the shirts he throws to the audience next JavaOne.

  42. It's gone to Mono. by Anonymous Coward · · Score: 0

    "I don't blame people for getting excited over .NET, because compared to MFC and traditional COM, it's a wonderful thing. But many people are going overboard on it."

    Miguel agrees with you.

  43. Another Religious War by slipnslidemaster · · Score: 5, Insightful


    Just another religious war.

    C++ vs. Java
    C vs. C++
    C++ vs. Smalltalk
    Lisp vs. everybody
    Perl vs. PHP
    Javascript vs. VBscript
    VB vs. C++
    Delphi vs. VB

    Haven't we moved past this language is great but this language sucks yet?

    You use the tool that will get the job done the best and easiest. If you tried hard enough, you could probably use the Lotus 123 macro language (showing my age) to write a web app, but would you want too? With someone of these languages, Python, Perl, PHP, Ruby, Java they are similar enough that they are all good enough for the same jobs. Languages are tools that programmers use to write applications. Personally, I like PHP and Ruby but I'm not knocking those that like Phython or Java.

    Why knock that someone likes another language?

    Why another religious war over Ruby vs. Java?

    --


    "What the hell is an aluminum falcon?"
    1. Re:Another Religious War by prsce96 · · Score: 1
      You use the tool that will get the job done the best and easiest.
      I usually end up using the one someone will pay me to get the job done with -- faster and easier or not ;)
  44. Best slashdot troll all day by Rev.LoveJoy · · Score: 4, Funny
    *** Golf clap ***

    Well done, sir, I salute you.
    -- RLJ

    1. Re:Best slashdot troll all day by eldavojohn · · Score: 1

      "Slashdot troll," that's good.

      Well, to let you know, I got to log on for about five minutes. I'm at my parent's house in the middle of nowhere working on a phone line connection (of which the ISP is 7 miles away as the crow flies).

      I'm tying up the phone line as I type and I had about as much time to write the humble note about Java.

      I said it was a "humble" note because I'm no expert on computer languages and I never claimed to be.

      I started downloading firefox on this POS celeron and it looks like it's going to be around 45 minutes ... which is out the question considering the phone line it will tie up.

      Further more, the high score on your post causes me to realize what crap this site can be. Don't worry, I won't be posting on slashdot for quite some time ... if ever.

      Thank you for showing me the light, good day.

      --
      My work here is dung.
    2. Re:Best slashdot troll all day by Rev.LoveJoy · · Score: 1
      Further more, the high score on your post causes me to realize what crap this site can be. Don't worry, I won't be posting on slashdot for quite some time ... if ever.

      Let me see if I have it:

      -- You are not a language expert, in fact, you know very little about them.
      -- You are asserting an opinion that one language, Java, is better than almost all others.
      -- You are upset that I called you a troll (which was nicer than just saying, "Shut it, Corky.").

      Do I have it?

      Not that it is for me to tell you what to do, but not stating your opinion, about which you admit you know very little, sould have been your first course of action, not your final one.

      Happy Easter,
      -- RLJ

    3. Re:Best slashdot troll all day by eldavojohn · · Score: 1
      -- You are asserting an opinion that one language, Java, is better than almost all others.
      Where did I say this? I never said this. I said that it was well planned and well designed. I wasn't saying it was better than C, I would never say that. They both have their applications.

      What I was trying to convey (as neutrally as possible) is that I appreciate Java because I feel that the extent to which it's been used reveals that the planning that went into it was well done.

      Appearantly I was painting a bullseye on my back.

      - You are upset that I called you a troll (which was nicer than just saying, "Shut it, Corky.").
      Yeah, it is nicer than just saying "Shut it, Corky." But you could have pointed out what was wrong with my post instead of being an ass. Now, normally I just ignore asses but your post got modded up so at least a few other members of the community agree with you. I'm not pissed, I just realized something. And that something is to no longer offer my comments to slashdot. I think I'll move to anandtech.

      If slashdot users want a community full of people who snort and laugh everytime they read someone's opinion, than I don't want to be here. I'll look for a place where people only try to add more information to the discussion and spend more time constructing arguments than insults.

      Happy solstice.
      --
      My work here is dung.
  45. And the cycle continues... by ErichTheRed · · Score: 1

    There's a difference between "what's cool" and "what's used by businesses." I've seen this same boom-bust-settling-down cycle for many other programming languages. The truth is that there's a lot of Java and J2EE code out there now, some of it running very critical things. The key to being a successful developer seems to be constantly learning each new fad while maintaining at least some skillset in the "classics".

    I can definitely see why Java has lost some of its appeal. The high memory requirements for all but the most optimized code are one reason, and the fact that many corporate datacenters are standardizing on Intel Windows/Linux/Whatever boxes make its portability less important.

    Say what you want about Visual Basic, but as a primarily Windows admin, I can tell you that some of an organization's most important software tools were cobbled together in it. They may not be pretty, and may be a huge pain to maintain/support, but that's our lot in life.

  46. Re:Nope. I will have another order of java thank y by bill_kress · · Score: 1

    I agree, but I think it actually IS the clean, consice, consistant language that makes it what it is.

    Why do you think all those tools are written in Java?

  47. Re:Has the previous hype of Java and J2EE moved on by Anonymous Coward · · Score: 0

    Hmm... an IT person bitches and moans about the chaotic nature of progress: multiple technologies from multiple sources over decades? Ooh, pain. Different viewpoints to consider? Oh, god no!

    Does the poster believe there is One True Answer? Is the poster a mathematics major or something?

    Grooooooooooooow up!

  48. Fundamental computer science by cryfreedomlove · · Score: 2, Insightful

    I still use java every day but I will not miss the hyper-enthusiast. I've interviewed and hired people to work in java for years and I've learned a few things along the way. First, I've never hired someone who has obtained the official Sun Certified Java Developer status. I've learned that these guys have memorized a lot of the java library api's but their judgement is not grounded in the basics of computer science. For example, they have no idea how to choose between using a LinkedList or an ArrayList. The presence of LinkedList is redundant to the superior abilities of an ArrayList in their minds. I've been much better off hiring solid computer science generalists for java jobs whether they currently know java or not.

  49. You all need by greg_barton · · Score: 4, Insightful

    First line: But the majority of programmers, who have been relatively quiet all this time, always knew that Java is a combination of strengths and weaknesses. These folks are not left with any feelings of surprise, but instead they welcome the silence, because it's easier to think and work.

    That's exactly my attitude, too. Couldn't agree more.

    You know what I liked most about the tech bubble bursting? All of the loudmouths, charlatans, and marketriods went elsewhere for a while. I got to do some real work for a change instead of building demos. :)

    So the hypemeisters have a new favorite platform? Great! I can stop reading the slashdot posts from anit-hype nazis who only love to yell at marketriods. A pox on all of your houses, I say.

  50. Re:Has the previous hype of Java and J2EE moved on by tomhudson · · Score: 1

    So a reasonable assumption is that 10 years from now we'll still be using sql and c++, we'll just have some sort of framework for those who don't want to get their hands dirty.

  51. No, the fashion industry has fads well organized by Animats · · Score: 4, Interesting
    If course it has. IT actually is not too far removed from the fashion industry.

    You thought fashion fads just happened? It's much more organized than that. The "in" colors for US fashion are chosen 22 months in advance, by the little-known Color Association of the United States. Color forecasts are issued to subscribers, and the textile mills, dye manufacturers, and clothiers start to gear up for the coming seasons. Because there are some long manufacturing lead times to produce fabrics in huge volume, the style decisions have to be organized.

    "Pinks and fuchsia were everywhere in spring 2003; CAUS members knew this in spring of 2001."

    Here's the activewear color plan for 2006-2007:

    • Colors are anchored by light and dark neutrals in addition to the ever important white.
    • Red will return as a leading bright, in coral and raspberry shades. - In color combinations, tonalities of one shade look new and dynamic.
    • Cool colors like Apple Green, Indigo and teals are soothing, and especially attractive when matched with brown-influenced neutrals like Wheat and Terracotta. Finishes such as metallicizing add dimension and interest to color and fabrications.

    Color changes in fashion do not happen by accident.

  52. I like ruby by pfharlock · · Score: 0

    I recently started coding in ruby, I'm not a rails developer. I've found it to be very useful for the kinds of scripting tasks that I've put to it. Everyone I've heard talk about it seems to be tired of listening to hype. Well it's not hype for me to say that I like the language and that it has been useful to me. If I had not picked up ruby, I probably would have picked up python instead. As it is, I'm very happy with the choice I made, and I've truly enjoyed the community support. All the rest is hype.

  53. What about multiplatform? by TheTiminator · · Score: 2, Insightful

    Can you give me a language besides Java, that I can use for developing apps for Windows, Mac, Linux, Web, Palm, and tons of smartphones? If so then show me. Otherwise, quit preaching that java is dead and let me get back to doing real work.

    --
    TheTiminator
    1. Re:What about multiplatform? by Anonymous Coward · · Score: 0

      But what's the point? Rarely is that ability of Java truly leveraged. You would be better served to either work in a CLR and port it to other platforms (hi .net) or write cross-platform code (hello good C). BTW, Java doesn't guarantee cross-platform since there's plenty of dumb stuff you can do with filesystems or platform specific logic that'll break that dynamic.

    2. Re:What about multiplatform? by Anonymous Coward · · Score: 0

      Ever look at QT, it does most of what you want, and besides, your java apps, that run on desktops, and then handhelds, are most likely going to be written differently anyways. The only benefit you gain is from using a single language, or standardized IDE.

    3. Re:What about multiplatform? by Anomylous+Howard · · Score: 1

      Jython.

  54. Why isn't the post titled... by idontgno · · Score: 1
    "Netcraft confirms it. Java is dead."

    Sheesh. Yup, the fanbois have left. Now the rest of us can get some work done.

    I feel bad for the Python and RoR guys, though. The hypemeisters are definitely not the crowd you want crashing your party.

    --
    Welcome to the Panopticon. Used to be a prison, now it's your home.
  55. Java is old in the tooth by Anonymous Coward · · Score: 0

    I know alot of people are well versed in Java these days, but for the most web apps, it seems to be too complex for the task at hand. And unless you are running an open source Java app server, they certainly do not come cheap. Performance is another matter to look at, however as fast as todays processors hum along, its certainly not as big of a factor as it used to be. I do think its about time that these things be simplified. I think Ruby is on the right track even though I think its in its early stages and a bit unproven.

  56. Java is still worth it... Ruby has great potential by TheUncleD · · Score: 1
    Has the previous hype of Java and J2EE moved on to Ruby (on Rails) and Python?"

    I hope it hasn't. Java is still an enterprise development language whose potential for new developers remains intact. Ruby and Rails have potential, they aren't be-all-end all solutions though. I program with both Java and Ruby. I can tell you there are times when one outweighs the other in benefit to use. Much code and pre-existing classes and examples for challenging situations have been tackled in java, providing a framework and foundation to re-use old code in many projects I've encountered. Ruby poses an incredible potential for new and fast application development, but I find myself often writing the entire program or large amounts of it from scratch, aside from the often use of Ruby facets The facets of Ruby which is an essential site for any ruby developer. With that said, sure it may not be as exciting as it once was, that doesn't mean its worthless to pursue and learn, even from its humble beginnings. My two cents.

  57. LAMR by Anonymous Coward · · Score: 0

    That's what you get when you substitute Ruby for PHP in LAMP. You can pronounce it better when spelled LAMeR.

  58. CS Departments shouldn't use proprietary languages by Morganth · · Score: 3, Interesting

    I never understood why CS departments started switching to Java. It's a proprietary language, a behemoth library, uses confusing concepts even in early programs (such as the Hello World program requiring a class declaration), and has a compiler/VM to which you have no source code access! (True, nowadays you have gcj to look at, but that's by no means the reference implementation.)

    CS departments, I think, should be using Python for instruction. Not only is Python an easier language to learn, but it's more intuitive and more closely resembles pseudocode you see written for theoretical computer science. For example, in a theory of computation book, you may find a definition of a Turing Machine as a 6-tuple. Well, Python has tuples, so you can just say

    # turing machine M is a 6-tuple
    M = (Q, T, s, b, F, f)

    If you need to pass to a function (the encoding for M), it's easy to do so: just pass M. etc.

    Python also supports other concepts common in pseudocode, like "for i in x" syntax, and associative arrays being a built-in type really helps with dynamic programming problems. Etc.

    Python has an interactive shell where students can try out code to play with the language, a very helpful learning tool. It also has a high degree of transparency and allows introspection, so students can see how something like an object system actually works.

    Also important, the main Python implementation (CPython) is open source, and the development of the language is done in a community-oriented fashion.

    Finally, Python has two extremely high quality books written about it, which are also 100% free. One is called "How to Think Like a Computer Scientist: Learning with Python" and is found here, and the other is called "Dive Into Python" for experienced programmers, and is found here.

    I'm not saying that Python is the ultimate language, but I think everyone has to agree that it's a better choice than Java for programming courses in universities. I know my data structures/Java course was 90% about "how Java works" and 10% about "how to solve programming problems." In a Python course, I think that ratio would be inverted.

  59. Re:Has the previous hype of Java and J2EE moved on by Sebastian+Jansson · · Score: 1

    It's not like fashion trends, in the way that they aren't cyclic like them. You probably won't see people hyping Java as the next cool language in five years. It's also not random, as Paul Graham noted, they'r all more or less going towards Lisp in functionality. We are walking away from languages based on how the computer work and towards languages more focused on how humans work.

    To me the evolution of languages to be more pleasant to work with is a reason to go into IT, just imagine how it would be if the only languages avaible were Fortran, Basic and Assembler. Discovering Python made me interested in programming again.

  60. Gone to c#, vs.net by mariogarcia · · Score: 1

    Also c# can be seen as a descendant of Java but with a better IDE (Visual Studio) and also a great class library. Many are been seduced by this irresistible combination, even with the lack of open source projects other languages/frameworks have.

    1. Re:Gone to c#, vs.net by releppes · · Score: 1

      Yeah, if you want to program for one platform and serve code from one platform, then c# may look good. However, one must return to the motto "write once, run anywhere". c# breaks that slogan. Not to say Java is great. Just saying c# is good for a Microsoft world and that alone. As for better IDE, I think the latest offerings of Eclipse and SunOne are pretty damn good.

    2. Re:Gone to c#, vs.net by DaemonTW · · Score: 1

      I like C# but I've been doing it all using Mono which does allow C# and .NET to be used across multiple platforms just the same as Java. Don't just limit yourself to Microsoft's implementation of C#, using Mono allows you to build some pretty powerful applications quite quickly (using Glade and GTK for the GUI side of it).

      --
      www.techwatch.com.au
  61. It must be the client requirements. by Chemisor · · Score: 1

    Java applications are usually supposed to run in a VM on the user's machine, which is problematic because it requires both support for it and good security. In many places Java is locked out because people heard the VM was insecure. I have never enabled the darn thing at all and never saw any Java app I wanted badly enough. Add to that the fact that embedded Java apps don't look like HTML and they don't look like the OS, and it is a recipe for disaster.

    Server-side Java VMs are probably shunned because of their memory footprint, which is too large to allow a heavy load. That leaves lighter scripting languages like Ruby, which are used mostly because there really isn't anything better.

    As for C++, it is hard to do web development in it due to lack of libraries. People also have this irrational fear of the language, fueled by decades of unjustified FUD. And, C++ programmers really would rather write desktop applications, even though the current fad is against them. IMO, this web application fad will blow itself over, just like all the previous attempts to make thin clients. The approach is particularly ridiculous now that even a $300 computer is more than enough for most mundane tasks. What will come after it? We'll either fix the desktop so that people will stop trying to find "solutions" like the web application, drop into a dark age, or whatever.

  62. Good Riddance by jcrowder · · Score: 2, Informative

    I say good riddance to them. Nothing contributes more to this industry-wide attention deficit disorder than these technology evangeslists that have somehow gained celebrity status, then abuse it to sell more books and fill seats in technology symposiums.

    Java works for me. I get paid to do it, and I'm tired of all the noise.

  63. Lua by fishbowl · · Score: 1

    Everywhere I turn, there's someone saying I should use Lua. Anyway...

    My shop is firmly into J2EE, and we get a great deal of service out of the JBoss container and also the relational database object idiom of Hibernate. There are plenty of things to not like about Java, but most of the criticism against it seems to come from a point of view that's not well informed about the power that Java has for certain kinds of applications.

    Oh well, the people who participate in this kind of discussion are those who have time for it, I guess.

    --
    -fb Everything not expressly forbidden is now mandatory.
  64. CC++PythonPerlRubyJavaCSharp by Anonymous Coward · · Score: 0

    While some people can't stop arguing about the merits of [yet-another-block-structured language], real mathematicians are working on continuations, monads, macros, type inferencing, theorem proving, etc.

    Of course, Lisp programmers don't even need to touch a computer anymore. (They already wrote a program in 1970 that does everything they'd need to do :D)

    http://lambda-the-ultimate.org/ (no affiliation)

  65. Disingenuous by smcdow · · Score: 5, Insightful
    ROR is nice but let's get real - ruby isn't as fast ...

    Please. For years the Java wonks have been calling performance a strawman argument, usually followed with "get a faster machine".

    Now they're using exactly the same performance argument to argue against what is now one of the premier up-and-coming programming environments? Now the table turns; if ROR or my fave the Python-based TurboGears is too slow -- well then, get a faster machine. That argument worked with Java; now it works with Java's replacements.

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
    1. Re:Disingenuous by Serveert · · Score: 1

      For years the Java wonks have been calling performance a strawman argument, usually followed with "get a faster machine".

      Guess i'm not your typical java wonk since I've never claimed such a thing:

      link

      --
      2 years and no mod points. Join reddit. Because openness is good.
    2. Re:Disingenuous by curunir · · Score: 2, Interesting

      [RoR] is now one premier up-and-coming programming environment...

      Hehe...thanks for the laugh.

      Rails is basically a hobby-ist environment. It's useful for internal projects that don't have to be performant or scale up to more than a couple of concurrent users, but beyond that, it's tough to compare it favorably with Java, .NET or any of a host of other Enterprise solutions. It's not just speed, although Rails *is* considerably slower than Java, even when you navigate the nightmare that is FastCGI. It's also the supporting tools that Java has in abundance that Rails hasn't had the time develop. Things like comprehensive unit testing (and code coverage monitoring) simply aren't possible in a Rails environment.

      Java and J2EE are extemely fast and scalable when you avoid the few nightmare APIs (Swing, EJB, etc). We've built a complex, data-driven site with Spring and a few other nice tools that has scaled incredibly well. By far our biggest performance concerns are database related. The Java tier comprises only about 10% of the total response time (which we've kept sub-500ms even under load, except in extreme cases). Rails just isn't capable of meeting this kind of requirement.

      I don't mean to bag on Rails...I've actually done a couple of internal projects in it that needed to get done fast. And some of the core concepts behind rails (namely convention over configuration) are starting to be considered as possible feature-adds to frameworks like Spring. Ruby is a great little language and I would *love* to be able to use Ruby-like closures in Java. But it just simply isn't an enterprise development environment yet. It may get there with time (it needs a faster Ruby runtime, a native Ruby websever to rid itself of the FastCGI albatross, a good testing environment and some essential third-party stuff that Java has gotten over the years) but it simply just isn't there yet.

      --
      "Don't blame me, I voted for Kodos!"
    3. Re:Disingenuous by ggeezz · · Score: 1

      Things like comprehensive unit testing (and code coverage monitoring) simply aren't possible in a Rails environment.

      Actually unit testing is a focus of Rails and the framework that Rails provides for testing is quite good. Also Ruby Coverage is a tool that generates HTML reports including coverage statistics. Certainly Java does have more supporting tools right now, but apparently RoR has more than you know of.

      All in all I agree with you, RoR needs a better environment to run in, and is behind Java in certain areas. However, in many respects it is ready for enterprise development, evidenced by some of the large projects already made in it. The reason so many people are excited about RoR is that is inherently better than J2EE in many respects due to the nature of Ruby vs. Java. Sure, Java environments may steal some ideas from RoR, but the whole framework is an idealogically good fit for Ruby; and it's not for Java.

    4. Re:Disingenuous by frank_adrian314159 · · Score: 1
      For years the Java wonks have been calling performance a strawman argument, usually followed with "get a faster machine".

      Damn straight. People should be using Smalltalk or Lisp. At least the latter really is faster.

      --
      That is all.
    5. Re:Disingenuous by iluvcapra · · Score: 1
      Hehe...thanks for the laugh. \n Rails is basically a hobby-ist environment

      Trolling, but you find a more conciliatory tone towards the end for whatever reason, though I think you may be misunderstanding the use case for Rails.

      Firstly, I've used basecamp for my projects for a few months now, and despite their many many users I've never appreciated any problems with its perfromance. As well, the rails main site never seems to get slashdotted when it gets linked. IMHO it's too early for anybody to say what scale rails can work on, we have not yet seen the triple-digit-blade load-balanced rails application (which the framework does support, theoretically).

      Secondly, rails for a developer like me has been fantastic because I have zero formal CS education, and for years I have been making "a couple of internal projects" in things like FoxPro, Paradox, 4th Dimension and Filemaker Pro -- these are the real targets of Ruby on Rails. There are alot of functions in any company that might be automated through a web application -- simple billing and invoices, job tickets, things that were specific to their business -- and now they can just do it, without having to buy anything, and it'll work on the web.

      I work in film sound, and I've been writing a web app for ADR, a process that has alot of special data requirements and has untiil very recently been done on paper, or in filemaker databases, or in some god-awful dongled 4th Dimension app some guy wrote and wants $600 for. I able to do it in my free time (when I'm not submitting to /.). There's a huge demand for small web apps that do what filemaker and it kin have been taking care of up until now.

      While I don't concede that rails can't power a 1000-hit-per-second website, I don't believe that's what all the exitement is about, either. I would never go back to filemaker, and frankly if you're good at FMP and you can write HTML, you can code rails.

      --
      Don't blame me, I voted for Baltar.
    6. Re:Disingenuous by curunir · · Score: 1

      You know, you're right...the last time I used Rails it required a tight coupling of Models to Controllers but it seems that they've remedied that. If you can inject stubs in, then you're getting much closer to being able to write actual unit tests. It still seems like Ruby is wanting for a good Mock package (unless I'm missing something...if so, please point one out), but you can work around that with stubs.

      ...but the whole framework is an idealogically good fit for Ruby; and it's not for Java.

      Just curious, but what do you mean by this? Does any of that change with the addition of Groovy to Java 6.0? Why does language even matter to a framework? One of the points brought up at the recent SpringExperience conference was that it looked like Spring would be enabling users to IoC in components written in Ruby and other scripting languages that have a BSF implementation. Also remember that many in the Java community are shying away from EJB and other parts of J2EE that are just too bloated. If you look at what BEA has been up to recently, it looks like they are positioning their real-time Weblogic product, combined with Spring, as a high-performance replacement for the full J2EE specified environment. I can see why some of the Rails philosophy is in contrast to traditional J2EE development, but given the current trend towards small, light-weight components and IoC/AoP to wire everything together, why isn't the Rails philosophy appropriate for this developing methodology?

      --
      "Don't blame me, I voted for Kodos!"
    7. Re:Disingenuous by Nexx · · Score: 1

      You're right, for 99% of things, EJBs are horrible. However, when you have to write extremely high-performance applications that needs to scale to thousands of users, both EJBs and JMSs become godsends.

      Right tool for the right job, and all that :)

    8. Re:Disingenuous by curunir · · Score: 1

      when you have to write extremely high-performance applications that needs to scale to thousands of users, both EJBs and JMSs become godsends.

      I'm afraid we'll have to disagree on this point. I have had to write code for very high performance environments (> 1000 req/sec) and I'm convinced that EJB just won't scale the way a properly designed POJO system will. And it's not just performance either. EJB development is far more prone to errors since it's much more difficult to unit test. I've done it the EJB way and I'll never do it that way again.

      You're right about JMS though...it's almost essential in a lot of situations (though if I can help it, I like to use an ESB on top of it in case I need some extra flexibility at a later date).

      Not that I've hidden it particularly well, but I'm definitely an adherant to the Spring philosophy. If you're at all curious, take a look at Expert One-on-One J2EE Development without EJB. They make a really good case for avoiding EJB completely (backed up by a strong resume of successful large-scale projects).

      --
      "Don't blame me, I voted for Kodos!"
    9. Re:Disingenuous by Gr8Apes · · Score: 1

      You're not the only one. I'd go so far as to say EJBs should be avoided at all costs for new development. Theoretically, they are supposed to make scalable development easy, but in reality, I've never seen this happen. A well designed java application, backed by DBs (or JMS/JTA for distributed transactions) have far out-performed EJBs on a given hardware platform, as you can do a much better job of bottleneck identification and resolution than you can with EJBs.

      I'm currently working with a system that peaks with 35000+ concurrent users. Not an EJB in sight.

      --
      The cesspool just got a check and balance.
    10. Re:Disingenuous by ggeezz · · Score: 1

      First, I didn't mean to imply that that RoR philosophy and Java are incompatible. Some of the ideas could be adopted by a Java framework with some success, but here are some RoR ideas that make it fit well with Ruby, but not Java.

      • Convention over configuration. This is a main tenet of Ruby, but not Java.
      • Simply syntax that leads to code that does what it says it does in English. That's hard to do in Java.
      • Everything is an object. (Ex. 5.times or 7.days). This allows Rails to put more tools at your fingertips and make code that reads better.
    11. Re:Disingenuous by Aceticon · · Score: 1

      I believe the core of the parent poster argument is about availablility of 3rd party products and maturity of the language.

      Yet you choose to conter only the the argument that you yourself saw as moth ...

    12. Re:Disingenuous by smcdow · · Score: 1
      This thread is getting old now, but the same arguments apply -- when Java was a relatively new language and programming environment, it couldn't have been considered as "mature". The Java wonks and Java hype people worked on that and the language eventually matured. In the very early days of Java, the argument went, "You just wait. Java will be great."

      Why wouldn't the same maturation process apply to ROR, TurboGears, etc.?

      Here we have the turnabout of another strawman argument.

      --
      In the course of every project, it will become necessary to shoot the scientists and begin production.
  66. don't let the door.. by sucati · · Score: 1

    hit you in the ass on the way out

  67. Some weak properties of Python by Anonymous Coward · · Score: 0

    Not only the indenting is error-prone, Python is a dynamically typed language. All the checks that a compiler can do on a statically typed language like Java, C, C++, and C#, can't be done or can be done only partially on Python (by tools like pychecker).

    In Python a simple typo is a real risk. For example, if you assign a value to an attribute of an object, and you mis-spell the name of the attribute, Python creates the attribute on-the-fly at run-time instead of reporting an error. This can sometimes be a useful feature, but it is very dangerous all the time. Not only is there no compiler that can validate your code, but such an error will easily go undetected even at run-time.

    Another issue that I have personally encountered concerns reference counts. Python extension modules are written in C. If the C code creates a Python object, the C code often needs to update reference counts to allow Python's garbage collector to properly clean up objects. This is tricky to do correctly and working with reference counts is (or was, I haven't checked recently) not well-documented, so memory leaks or crashes are easy to accomplish.

    Starting a Python program may take a few seconds at 100% CPU, because the interpreter needs to process all imported modules. This also disqualifies it for some purposes.

    Dynamically typed languages like Python can be really useful for scripting and prototyping, but I wouldn't rely on them for mission-critical applications. You can quickly create a simple program but it is hard to be sure that it is really stable.

    1. Re:Some weak properties of Python by zootm · · Score: 1

      Python is a dynamically typed language.

      This was the answer I was expecting, which is why I specifically stated "as compared to Ruby". An interesting language for this is Boo, a Python-like .NET language which has a static typesystem.

      Another issue that I have personally encountered concerns reference counts. Python extension modules are written in C.

      To be completely fair, just writing in C presents this. However, just because extension modules can be written in C, does not mean they have to be. It is quite dangerous, but most langauges (Java, C#, I assume Ruby, Haskell through GHC, etc.) allow linking into unsafe code in some way or another. It just seems a pity that the reference implementation of Python is written so largely in C (although some would argue this is a matter of practicality). I like the look of the PyPy project, which is implementing Python in Python, in order to get around these problems though.

      Starting a Python program may take a few seconds at 100% CPU, because the interpreter needs to process all imported modules. This also disqualifies it for some purposes.

      ...but not many, to be fair — JIT compilation of any kind carries similar problems though. I believe it may be more pronounced in Python, but I'm really not sure.

      Dynamically typed languages like Python can be really useful for scripting and prototyping, but I wouldn't rely on them for mission-critical applications. You can quickly create a simple program but it is hard to be sure that it is really stable.

      I essentially agree with this — in particular, it does always feel unsafe to me to program in such a language. There is a great many automated checks one can do without a typechecker though, which can greatly improve the reliability of a system. Another point is that with the sort of applications that Python and Ruby are used for, reliability is not always priority number one, particularly when the systems are built on top of a proven framework.

    2. Re:Some weak properties of Python by arkanes · · Score: 1
      Python is as suitable as any other (popular) language for mission-critical applications, including Java. The kinds of things you need to do to ensure reliability to a "mission critical" level - a quality which is not easily defined and more honored in the breach than in the observation, I might add - have very little to do with programming languages themselves, and to the extent that you can implement them in the language itself, no popular language does so. Static typing is insufficent, and the measures you would have to take would superscede any static typing you do. Of course, there is always interest in getting better, even if you can't get perfect. My experience is that Python code tends to be more reliable under optimal conditions because given the same time to completion, you can spend more time testing and exercising it (the *only* way to know if a program is reliable and stable is to test it, and even then you only know up to the limits of your testing)

      You can quickly create a simple program but it is hard to be sure that it is really stable

      If you used the same methodology on a Java program and a Python program, then you can be equally sure. If you didn't exhaustively test your Java program, then you aren't any more sure about it (or you shouldn't be) than you are about your Python one.

    3. Re:Some weak properties of Python by zootm · · Score: 1

      You appear to have replied mostly to my post's parent here, but I'd just like to add that a static typesystem does add a degree of provability that isn't present in dynamic systems, although a lot of this (as I either stated in the post you reply to or in some other post on here, some of this can be obtained through less-formal automated tools for dynamic languages, in practical terms).

    4. Re:Some weak properties of Python by arkanes · · Score: 1
      (I know I responded to the parent, but you were agreeing with him anyway :P)

      Static typing, the concept, provides a degree of provability, but every popular language that is statically typed has commonly used methods for escaping and subverting the type system which render proofs of the type system useless unless you avoid those features. I'm not even sure that it's possible to write a non-trivial Java application that way (prior to Java 5) unless you re-implement much of the standard library, and I'm not sure I've seen even trivial C applications without casts in them. So my submission is that static typing, as implemented in Java/C#/C++/C (the 4 statically typed languages I would consider popular), cannot provide you with any meaningful provability. You can get better provability from Haskel or some other functional languages (type inference is very powerful), but even then, proving the type system isn't sufficent to guarantee the programs behavior. You can get that only through testing that would catch type errors anyway. It's the difference between provably sound (in a mathematical sense), and proven to work (in a real world sense). The latter simply can't be done - you can only prove that it's worked "so far".

    5. Re:Some weak properties of Python by zootm · · Score: 1

      Again, though, it avoids many classes of errors. The lack of generics in Java before 5 and C# before .NET 2.0 was a fairly serious hindrance, but type systems do add a degree of safety, and narrow the range of errors that can happen in a system, to some degree.

      I won't argue that they're the be-all and end-all, but they are helpful. And I wasn't really agreeing with the post you replied to, except in the case of the validity of static typesystems. This does become a bit of a religious debate sometimes though (and it's late, and it was my last day of work before Christmas, and I forgot to go to the shop before they stopped selling beer, so this is not appealing to me right now!).

      In real-world terms, though, Python is fine, and in the context of C# and Java a static typesystem is beneficial. Would a static typesystem (even an optional one, for certain contexts) help Python? I don't know — I'm sure I heard talk of adding one at one point, which would be interesting if nothing else.

      I think Python is a fine language for such things, don't get the impression that I don't!

    6. Re:Some weak properties of Python by arkanes · · Score: 1
      If you're interested in typing in Python, you may be interested in looking at the PyPy project, which has done a ton of cool work (which, in the best tradition of academics everywhere, isn't really usable for anything pratical yet :P), one of which is a type inferrence engine which works on a (limited, hardly any dynamism) subset of Python.

      I honestly wasn't trying to open the whole static/dynamic flamewar bag, although I realized that I went down that path without thinking. The issue I was raising is that, when you're talking about bulletproofing, static typing is insufficent - it obviously does catch classes of errors (at compile time) that dynamic typing cannot. However, the claim is generally extended that this makes it the only thing suitable for "mission critical" systems, which I consider false - if it's "mission critical" and needs to be proven, complete test coverage will work as a superset of the safety static typing can give you. Of course, you then need to have complete test coverage - but that is one of the costs of "mission critical" systems. Proponents of dynamic typing (can you guess which side I'm on? :P) will say that since 100% test coverage provides superior safety to static type checking, your time is better spent figuring out wasy to make test coverage better and running tests easier than arguing with the compiler about whether your program is runnable.

      And, of course, the term "mission critical" is way overused. I know of literally mission critical systems, like the company goes broke and we all are out of work critical, that run on Access databases on world-writable shared drives and rely on the "yell over the cube wall" method of file locking.

    7. Re:Some weak properties of Python by zootm · · Score: 1

      However, the claim is generally extended that this makes it the only thing suitable for "mission critical" systems, which I consider false - if it's "mission critical" and needs to be proven, complete test coverage will work as a superset of the safety static typing can give you.

      This is probably my only disagreement with you —; and it's not even very strong. I realise that one can create a superset using good unit testing, but I feel that static typing allows you to narrow the range of things that need to be checked a unit test environment (the types of your input and output), so it aids your ability to perform more-isolated testing. This isn't a huge complaint though, but I do feel it's pertinent (you're right that Python's less-time-to-develop gives you more-time-to-test, but if there's also more-to-test this cancels out a little of those benefits). Static typesystems allow a little more flexibility with larger teams who are expected to create systems that interact, too, since it's possible to specify more strictly (that is, with words rather than with documentation) the required inputs and outputs.

      Above all, though, it's largely a matter of picking the right tool for the right job. I don't think that anyone (sensible) would argue that Java is a better tool than Python for every application, or vice versa.

    8. Re:Some weak properties of Python by Weedlekin · · Score: 1

      While it is true that Python is dynamically typed, the problem you describe (a wrongly spelt variable name leading to the system creating a new variable) has nothing to do with the dynamic type system, but is instead caused by dynamic variable creation (a big source of bugs in BASIC programs, and BASIC is not a dynamically typed language).

      There is no requirement for a dynamically typed language to also have dynamic variable creation (Smalltalk for example is profoundly dynamically typed, but all variables must be declared at compile-time), or for one with dynamic variable creation to also be dynamically typed. They are separate and entirely unrelated things, although it is easy to see why many people confuse one with the other.

      Most (if not all) modern BASIC programming systems have the ability to disable dynamic variable creation because it was identified as being a big source of problems in non-trivial programs, and serious BASIC programming shops (yes, there are such things!) insist on this being the default for all projects. IMO Python badly needs a similar capability if it is to be considered as a candidate for serious enterprise-class and / or commercial programming (I'm not sure whether Ruby has dynamic variable creation because I am not very familiar with it).

      By contrast, the main problems with dynamic types are performance-related. A simpler, more consistent programming model without the need for hacks such as Java's interfaces to achieve true polymorphism instead of the more restrictive hierarchical polymorphism usually present in statically-typed OO languages does not come free of charge. Late binding is more expensive than early binding in a number of significant ways, and it also precludes certain types of optimisations that can be applied when the compiler "knows" what sort of data it will be dealing with.

      The above situation has resulted in several attempts to marry the convenience of dynamic typing with the efficiency of static types. Some have taken an automated "under the hood" approach that uses contextual analysis to derive the types of as many objects as possible at compile time (Sun's abandoned Self language did this); while others such as Objective-C let programmers decide which typing system they want to use for each variable they declare. And this is I think the most pragmatic approach to the problem, because both typing systems have clear advantages and disadvantages under certain situations, so why not leave the decision of which one best suits a particular area of a problem domain to the person who is tasked with solving that problem?

      NB: I have never understood why not having to tell your computer where to put the things you want to keep around for future reference is supposed to be easier for novices. Avoiding having to tell it what type of things will be put in them is definitely easier, because the very concept of "type" in the computing sense takes a lot of getting used to. However, it's pretty easy to grasp a concept such pre-declaring variables, because people are accustomed to putting things into labelled containers so they can find them again later, and are therefore perfectly capable of handling the fact that a prerequisite for using the computer equivalent involves (a) telling it that a container is required, and (b) what it should be called.

      --
      I'm not going to change your sheets again, Mr. Hastings.
  68. Sick of troll articles by hkb · · Score: 1

    This article is a total troll and I wish the Slashdot editors would do their jobs. Also, while I code in Java, I am not a particular fan of it. Regardless, I hardly see any mass adoption of python or "ruby on rails". It's still at best, fringe. Ask any IT managers (who's opinions matter when it comes to mass adoptions) if they've even heard of Ruby or Python, and see what kind of answers you'll get.

    --
    /* Moderating all non-anonymous trolls up since 2004 */
  69. "20x slower" by wombatmobile · · Score: 2, Interesting

    Jacques Surveyor summarizes Doug Bagley's benchmark opus to shed light on this important comparison:

    "What emerges from examining the Bagley Benchmarks is that programming languages are breaking out into 3 speed tiers for raw computing power:"

    1. Compiled native code languages C, C++, GNAT Ada95, OCaml are the fastest. No surprise there.

    2. Byte code engines such as Java, Mono C# and Python average 7-12 times slower than the first tier...

    3. Interpreters such as Ruby, JavaScript, PHP and Rexx average 100-200 times slower....

    1. Re:"20x slower" by 0xABADC0DA · · Score: 1

      The language shootout is fundamentally flawed when it comes to Java performance. I've written about this before, but basically it measures the time for a fixed number of iterations instead of throughput in a given time. So, the difference in fast languages is dominated by the much smaller differences in startup time (only very grossly accounted for in the benchmark) and for slow languages it results in fewer datapoints, where the program took too long and was killed).

      C typically ranges from 1.2x to 4x faster than Java. It's a huge mistake to group Java in with other bytecode engines since due to the IP advantage (hotspot, stack allocations, etc) Java is far faster. So in other words if the average for bytecode engines is 7-12, the others are much slower than 7-12 and Java much faster.

      The proper grouping is compiled languages, static bytecode engines, dynamic bytecode engines, and interpreters. Of course a language can be implemented in more than one of those categories, for example Java can run on any of those four categories (compiled with gcj). Python/Ruby cannot be compiled or run under a static bytecode engine since they are dynamic languages.

    2. Re:"20x slower" by Anonymous Coward · · Score: 0

      Naw I think the 7x-12x slower claim is dead-on accurate. There really are only two utopic languages representing the two mentalities: C for raw, brutal speed and Lisp for outlandish "high level" flexibility (as in Perl, Python and Ruby are implementing things now that Lisp has had for decades). And Lisp has native compilation that rivals C speeds, truly not using fantasyland metrics. These two stand alone. You give C a java-like component library and it would tear java to shreds.

    3. Re:"20x slower" by Surt · · Score: 1

      That's an unfortunately bad benchmark. I've not been able to find any more realistic benchmark showing more than a 4x difference between intel-c and java.

      He does at least the following wrong:

      His benchmark reads from the console rather than doing file IO, and so puts console IO overhead into the benchmark. No one cares about console overhead in real performance.

      His benchmark includes jvm startup time. You shouldn't count that against any of the programs in question, because this is a small one time cost (in the event you must run your program many many times, you can work around this by one-time loading the vm, and keeping it around).

      His java implementation constructs a Counter object for every word, that's a grossly unnecessary implementation overhead compared to the C implementation.

      He runs the java version under -client: anyone with really performance critical code is going to run in -server, and for that you'll need a larger benchmark to be fair.

      All in all, a terrible inter-language benchmark.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    4. Re:"20x slower" by Surt · · Score: 1

      Another followup:

      your original link is to a benchmark in the 'old' category.

      Have a look at the current benchmarks:
      http://shootout.alioth.debian.org/

      Wherein mostly java is generally no worse than 4x slower than the fastest implementation in any language.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    5. Re:"20x slower" by Anonymous Coward · · Score: 0

      That is a troll-like statement. I just downloaded the scimark2 benchmark compiled on my system with the fastest optimizations for c++ (vc++.net, c# and java[jdk1.6]) and found that the c++ code was only 20% faster than the java result using:
      c++ (-G7 -O2 -arch:SSE2)
      java -server

      In terms of composite scores (MFlops): c++ (600), java -server (530), C# (330)

      http://rotor.cs.cornell.edu/SciMark/

  70. what about client side by trainwrek · · Score: 1

    Java is still the only robust cross platform client side platform, which keeps it relevant beyond Ruby. The only platform that shows promise in that realm is Mono, and they don't seem to be focusing on it.

  71. Badly misinformed by Anonymous Coward · · Score: 0
    You are badly misinformed.

    If you want to learn what "serious developers" think of Python just read articles at Python Success Stories.

    While you are at it see Jython for Python interpreter for JVM. It has a very long track record already today.
    Or take a look at IronPython from Microsoft: implementation of Python on .NET.

    1. Re:Badly misinformed by Anonymous Coward · · Score: 0

      Yeah, come on, any language has it's propoganda... Ever checked out: http://www.tcl.tk/about/audience.html/ ? And there all the develoopment was not mentioned done by software companies in the areas where companies will not disclose what they do exactly (and that's a lot more that law enforcement and intelligence, allthough that's included). Funny to see Slashdot people alwais come up with 'Web companies" to make their point that tool X is supperior to tool Y, while in fact once you get t do the really cool stuff, and get the really cool toys you can't brag about it anymore...

  72. Java by Anonymous Coward · · Score: 0

    There needs to be a virtual virtual machine that would make Java truly portable and protect the programmer from all the pitfalls associated with programming in a virtual machine environment.

  73. Re:Has the previous hype of Java and J2EE moved on by Anomylous+Howard · · Score: 1

    Bottom up.
    Top down.
    Structured.
    Object orientd.
    Agile / Extreme. (I think we just made all the way around the block once.)

  74. java is sh*t by DeveloperAdvantage · · Score: 1

    The media industry (including online and offline publishers and to some extent the writers themselves), have simply found out that, at this particular stage of java's evolution, attacking java simply sells better than saying something positive about it. Attacking java attracts more eyeballs, gets more postings in response and basically generates higher revenue.

    It will be interesting to see how much of a self-fulfilling prophecy these predictions on java's decline become.

    As a simple test, I have given this posting a very negative subject. If you read this posting, please visit my website http://www.developeradvantage.com/. Within a day, I will review my website traffic and post a reply with some quantitative indicator of the increase in traffic.

    --
    FREE - Java, J2EE and Ajax Audiobooks for Software Developers - www.DeveloperAdvantage.com
    1. Re:java is sh*t by DeveloperAdvantage · · Score: 1

      I checked today, only about a 10% increase...

      --
      FREE - Java, J2EE and Ajax Audiobooks for Software Developers - www.DeveloperAdvantage.com
  75. WPF? by paulproteus · · Score: 1

    What's WPF? I've never heard of it....

    --
    |/usr/games/fortune
    1. Re:WPF? by JPrice · · Score: 1

      Windows Presentation Foundation (formerly "Avalon").

      http://msdn.microsoft.com/windowsvista/building/pr esentation/default.aspx

    2. Re:WPF? by Randolpho · · Score: 1

      As another poster mentioned, WPF is the Windows Presentation Framework, formerly Avalon.

      It's the newest GUI platform from Microsoft, shipping with Vista, and it's getting tons of hype. Well deserved hype, IMO, as it's a very powerful framework. I've only just begun to dabble with the framework beta, but what I've seen and been able to do just so far has been amazing.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    3. Re:WPF? by Anonymous Coward · · Score: 0

      Oh yeah. XUL.

    4. Re:WPF? by Randolpho · · Score: 1

      Yes.

      Only better: full application as well as intra-browser (XUL is intra-browser only), plus a *much* better rendering engine, just to name a few. Plus, Microsoft is throwing its full support behind it as a key technology and will constantly upgrade and tweak the system, whereas Mozilla has quit bothering with XUL entirely a while ago.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
  76. ReHype? by symbolic · · Score: 1

    Part of the hype is being generated by articles like this one, if not promoting java, then either questioning the promotion of java, promoting something else altogether.

    Use what works best. Simple. I really don't care what THEY decide to use. This fickle, platform-du-jour nonsense reminds me of what I'd expect from a group of schoolgirls. There is no holy grail. Technology is what it is.

  77. Dispersed, not gone by SuperKendall · · Score: 1

    I think indeed some Java people are taking a look at ROR (who could not admire such a cool acronym?).

    However I think what has happened is that the enthusiasm is now dispersed over a wider space. While there is still strong support for J2EE, people are also working heavily on a lot of other alternatives or plug-ins like Struts, Spring, Hibernate (to replace entity beans), Vekocity, and so on and so forth.

    The volume seems lower simply because there are more areas under discussion instead of a lot of people talking about one thing.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  78. I guess... by Wootzor+von+Leetenha · · Score: 1

    I guess you have to be an OO purist in order to really appreciate it. I gain productivity when I write code in Java, because I already have loads of reusable object architectures that I can use. Do scripting languages or Ruby have ways of doing Aspect Oriented Programming? Give me AOP or give me death, is what I always say.

    --
    My name is Wootzor von Leetenhaxor
  79. Java tried to do too much by JavaJoint · · Score: 1

    I was involved in a project about 9 years ago, writing a tabbed scoreboard in Java. It was a nightmare - a total hack to do something as simple as tabs. Java would have been better off to have stuck to a server side language. The applet side is a joke. I'd much rather code & run an X11 app. When I look at the complexity of getting a Java app going these days, I wince a bit.

    Scripting is a much faster means of development. You could say "yeah, but Java runs faster!", and you'd be right. I could (and have) write something that runs even faster in straight C ... My point is that hardware costs have really come down, and in some cases it makes more sense to a) ship earlier, b) compensate by using more machines to handle the scripting overhead, c) have the means to iterate faster through development phases. Time to market is important. Customers don't care what the f**k something is written in, if they can't see it.

  80. Oh absolutely by 5n3ak3rp1mp · · Score: 1

    Every company is going to want to go from ONE proprietary vendors' product, to ANOTHER proprietary vendors' product (Microsoft being arguably the worse offender of the two). Now I know that philosophy and geek idealism are probably hard to come by when it comes to IT middle management, but when the shit hits the fan on your Very Expensive Application and it's due to a security hole/insidious bug/memory leak by Microsoft code, won't you be wishing that you could have your guys dig into the source and patch it yourself?

    The whole point of relying on open source is that you have no vendor lock-in. Not to mention the cost-effectiveness. But if you want to bet that Microsoft is just aaaalways going to be there for you, go right ahead.

    /quit my all-microsoft-tech-shop job, sick of windows and ASP and "microsoft uber alles" mentality
    //fulltime RoR developer
    ///already makin the kizzash

    1. Re:Oh absolutely by Omega1045 · · Score: 1

      So, does your comment have anything to do with what I said? I was not speaking of the good or evil of switching to c#. I was trying to make the point that I really doubt all the Java people are beating a path straight to ruby and python. I thought that the wording of the Slashdot article was a bit silly. Do you disagree with this? Are you making any comment other than beating the FOSS drum? Notice I am not anti-FOSS, not even in the least. But what do you have relevant to say here?

      --

      Great ideas often receive violent opposition from mediocre minds. - Albert Einstein

  81. No, they're Consultants by Logos · · Score: 2, Insightful

    Writing good software is hard, anyone who tells you different is selling something.

    Most programmers program, trading their time and knowledge for money. The ones who hype have an agenda beyond that -- to sell themselves for financial or egotistical gain. The former are consultants (selling themselves, not the tools and practices they purport to sell for a liviing), the latter are that guy who spends all his time on the mailing list, telling you how great x is, and how stupid you are for uisng y.

    Not that there is anything inherently wrong in this -- in fact, I'd argue that both groups serve a valuable function in our industry -- so long as people understand that the motivation for this has a lot less to do with the languages, techniques and tools directly than for the person who's doing the hyping.

    --
    We are agents of the free
  82. Re:CS programs + obligatory by Anonymous Coward · · Score: 0

    or species :-)

    (Posted anon as no ever knows how one of these will go over)

  83. LAMP = Functional / JAVA = Ivory Tower BS by Anonymous Coward · · Score: 0

    This whole Java/J2EE performance comparison with LAMP is rediculous. The performance aspect about which language runs faster (compiled vs. intepreted) is silly. It's not like the language is the only variable in a web application. Large sites use horizontal clustering and proper design principals to scale (LiveJournal - 50+ million hits a day????) Enterprises use Java cause they think they can get better performance by purchasing rediculously expensive servers and scale vertically..stupid, stupid. Typical management response. Let's be real...Java / .NET is ivory tower bullshit that allow vendors to over complicate the technology so that they can create new tooling products. I'd rather scale horizontally, not consume hundreds of megabytes of RAM to run one app, and be able to change a script without having to recompile and redeploying any day.

  84. Slashdot Java Article Formula Revealed!!! by Brendonian · · Score: 2, Insightful

    "With the advent of the language total annihilation is on the horizon for Java and all its developers. This new language/platform/stack is so revolutionary that developers are passing out from Ruby/LAMP/Python induced hyperventilation. Its virtually certain no one will write more than three lines of Java the day after Tuesday ever again."

    Its getting seriously funny how many articles there are like this. Slashdot posted this nearly identical article about LAMP a week ago.

    Why is it always language XXXX compared to Java rather than C++, C#, ASP, or even LAMP? I guess it means that for now Java is the king of the hill?

    So which is superior...LAMP or Ruby (on or off the Rails ;)??

    I actually do enjoy these discussions because there are always more efficient ways to accomplish specific goals. Java can take a bit to get started with, but once there it is unparalled in being the Swiss Army knife of software development.

    Without the competitive efforts of the Ruby community and M$ for instance Java probably would get stagnant so I applaud you Mr. Ruby Developer (Rails or otherwise).

    Just give me a call when people start converting complex Java apps to Ruby because its easier to extend and enhance.

  85. Python aint cutting it in the webapp biz... by Drunken+Priest · · Score: 1
    Though I'm ignorant of Ruby on Rails, that won't stop be from adding my two cents from the peanut gallery (it's a free country, after all...)

    Python doesn't have nearly the web-application support going for it that Java has. I've done both.

    Mod_python is too primitive, and Webware for Python is still not ready for prime-time.

    Java, on the other hand, has butt-kicking development IDE's (WSAD, JBuilder), libraries (J2EE, JDBC, Apache et al) and platforms (Websphere, WebLogic).

    And most important... I can understand pretty much any Java code. I know Java shoe-horns you into some paradigms that feel constraining; look at the bright-side: that's what makes it so maintainable.

    Python is an elegant language and all, but people can sometimes still get cute with it and write things to do stuff without obvious ramifications.

    Webware is a breeze for cranking out a webapp quickly, but it's not close to enterprise ready.

    (I've written web-applications in Perl, too. If I go to hell, they'll probably assign me to support someone else's Perl code... ummmm, using 'dictionaries' to fake structured data types....).

  86. J2ME by sbyrnes00 · · Score: 1

    Java hyper-enthusiasts are alive and well in the world of mobile application developement. J2ME is the leading platform for developing cell phone applications, and provides the kind of platform independent framework that led to java's original adoption. Having done BREW and J2ME development, I am a strong evangelist of java on the handset. Since there are certain benefits to having an end-to-end system in the same language, I think that Java will have a strong position in mobile application development (client and server side) for the forseeable future.

    That being said, J2ME isn't perfect. Not sure if cell phones could run Ruby, however....

    --
    http://www.flurry.com
    E-mail and news on y
  87. I've moved on to python but it sucks in many ways by presidenteloco · · Score: 3, Informative

    Having used Java exclusively since 1995, I've decided to try a webapp in python (turbogears).

    The turbogears python webapp framework is a nice bit of tool integration for rapid development.

    Python itself is a mixed blessing compared to Java.

    On the one hand, it has very nice compact, in-built syntax handling of multiplicity (lists, dictionaries, tuples) as all powerful languages should have and java still lacks.

    It has other simplicities and flexibilities that are nice.

    However, the "pythonic" philosophy of "anything is allowed if you try hard enough
    could be re-termed "moronic". It's just bad design to have multiple ways of
    doing the same low-level thing in a language. Complexity multiplies, as we all
    know.

    Also, Python is not as platform agnostic as Java in issues such as byte-ordering
    in data structures etc, nor is it as secure as java in this respect, because
    java does not specify the representation in memory of its data objects, making them
    more difficult to sniff.

    Java also has other code security features that python to my knowledge lacks, such as class bytecode verification,
    class loader security, etc.

    Finally and importantly, while Java's (and its standard libraries') documentation is only moderately detailed, at least it is consistent and pretty complete.

    The same cannot be said for python documentation, which is sloppy and incomplete, and
    inconsistent in places.

    So is python "progress" from Java? In some O-O and functional programming language respects
    yes, but in platform quality, simplicity, platform-agnosticism, learnability, and security,
    no.

    We still need a new language that combines the best of these breeds.

    --

    Where are we going and why are we in a handbasket?
  88. enthusiasts should be gone earlier! by Fedarkyn · · Score: 1

    Thats very good that the enthusiasts are gone... Programming languages are to be discussed with reason, with enthusiasts you have too much emotion on the equation. Java have some pros and cons. Personally I still thinks that is the best language to make enterprise web systems. Ruby on rails is in the stage of "geek toy" and ASP.NET is as unstable as any m$ technology and the IDE is very costly. when you are dealing with huge companies, you can't just have the latest cutting edge technology. You must stand with what was tested, known and have a short time to market. with java you have multiple vendors competing to supply the cheaper, more secure and more performatic application servers. Java can be a pain in the ass sometimes because you need to follow the OO way of thinking and this can lead to some extra effort in the initial coding, but this makes harder to write unmanageable spaghetti code. I have 2 certifications in java and one in c#, and the market is not going to abandon those technologies soon, that I know for sure!

  89. another kick in the groin by routerguy666 · · Score: 0, Offtopic

    That god damned George Bush.

    (isn't this obligatory now, like the Soviet Russia thing?)

  90. Java...faster than something? by Dysfnctnl85 · · Score: 1

    Java doing anything faster than Ruby is about as likely as a garbage-laden dumptruck outrunning a Honda Accord.

  91. Re:Has the previous hype of Java and J2EE moved on by Urusai · · Score: 1

    XML databases? What kind of idiot defines their DB technology on a static data format (and a merely heirarchical one at that)? Do you mean that you use a DOM to manipulate data? If so, that's just stuffing a heirarchical DB inside a relational one, which is stupid 2 teh maxx0rz.

  92. Python's wretched threading by ovapositor · · Score: 2, Insightful

    I just don't see how Python is going to make it big with such poor threading. This is quickly becoming the era of multi-core, multi-thread systems. I hate to say it but Java does have that covered. Sun's new T1000 and T2000 servers are targeted at this important and growing segment.

    I suppose you could use Jython and get the benefits that way... (it is much slower and way behind C Python).

    Before you flame me, let me just say that I spent a great deal of effort trying to build a threaded telephony server in Python and it was just not possible.

  93. 42 by msbsod · · Score: 1

    So, everybody was searching for the answer, and we got Java. Now, to find out what the problem was, we need larger, faster computers to run Ruby?
    42, that's it!

    ... and from the chaos a voice spoke to me:
    "Smile and be happy, it could be worse !"
    ... and I smiled and was happy, and it got worse ...

  94. .NET, ladies by manthrax3 · · Score: 1

    Sorry, it's great.

  95. How about JRuby and Jython? by cpu_fusion · · Score: 3, Interesting
    Why not run those dynamic languages and newfangled frameworks on the JVM? There's always JRuby and Jython. Not to mention Groovy, if you prefer the Java syntax.

    Granted, some of the frameworks, like Stackless and Rails, may not run on these tools, YET ... but there's really no reason to start totally from scratch and throw out a nice VM and a nice set of libraries...

    1. Re:How about JRuby and Jython? by Anonymous Coward · · Score: 0

      Um, because the JVM is fucking slow and onerously licensed, and the class libraries are swimming in worthless cruft?

      Rather than emitting Java bytecode from other languages, wouldn't the more useful effort be to improve generation of machine code from Java source and class libraries? The fact that Java code is primarily only useful for deployment to the JVM seriously inhibits its utility.

    2. Re:How about JRuby and Jython? by Decaff · · Score: 1

      Um, because the JVM is fucking slow

      get real. It benchmarks close to C++ speed. For example, a version of Quake has just been released in Java that is as fast as the C version.

      The reason for using languages on the JVM is that they can gain a substantial fraction of this speed. Open-source VMs for languages like Ruby are far from complete and fast (so far).

      Rather than emitting Java bytecode from other languages, wouldn't the more useful effort be to improve generation of machine code from Java source and class libraries?

      Why bother when the JVM emits highly optimised native code for whatever platform you deploy on?

  96. You nailed it - but Sun shares a bit of blame. by nobodyman · · Score: 1


    I think you're absolutely right about how the IT industry tends to have a single-minded obsession with The Next New thing. I suppose it's partially motivated by a hope that some new technology will be the silver bullet to solve problems that have plagued the industry for ages - projects get missed and go overbudget.

    Take ruby for example. Now, I'm not knocking it because I see a lot of things that I like. But when I look at it, I see it as basically a distillation of Smalltalk with concessions for LAMP programmers. Of course, we could all just all write in Smalltalk, but then it wouldn't be *NEW*.

    However, for Java, Sun deserves a bit of blame. Most of what Ruby [on Rails] so great is not as much the language as it is a rejection of the methodology that Sun has promolgated. Alot of the frameworks that Sun champions (Struts, Hibernate, EJB's) are so overwrought and complex that they true implementations of such mostly exist in academic "proof of concept" apps. They require huge teams to develop for and support.

    When you compare Java to Ruby as a language, the differences aren't all that staggering. But when you compare the mindset of "The J2EE Way" vs. "The Ruby on Rails Way", it's a very stark contrast.

  97. Re:No, the fashion industry has fads well organize by maggard · · Score: 2, Informative
    Just to clarify the hyperbole, CAUS is a private consultancy providing color popularity forecasting. They have a panel of folks from different parts of the color industry (clothing, paints, dyes, advertising, etc.) who are all expected to be 'in tune' with current trends. That panel generates a series of reports that interested parties subscribe to to help guide their planning.

    Thus they're no different from Gartner pronouncing "Small Form Factor PC's will be hot next year!" or "This will be the year of Tablet Windows!".

    Nothing Orwellian, no Central Planning, just the same sort of forecasting that happens in every trade & industry.

    I've a number of friends who are subscribers to CAUS's & others reports, they say they're generally pretty on, and are rarely much of a surprise to folks paying attention in their fields. Indeed I was told 2 years ago by a buddy to watch, last year and especially this year look for holiday decorations to have lots of purple and black and raspberry and long skinny legs would be very in; he was right.

    Just like in business practices and coding strategies there is a lot of group-think that keeps everyone sorta in sync with each other (beyond everyone knowing that hemlines HAVE to change up or down every few years). Occasionally there are huge shifts caused by outside influences, fluorescent colors in the 60's due to dyes becoming available, now shimmer surfaces because durable ones have become relatively cheap, but even those are fairly well anticipated.

    If you're interested enough try writing a dozen or so folks you think are very 'in tune' with an area of interest, then next year see how accurate they were. If you can show a decent track record of getting good predictions then hey, I smell $$ subscriber report...

    Oh, and those color predictions: Good to keep in mind when painting the living room, buying furniture or a new car.

    --
    I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
  98. Re:CS Departments shouldn't use proprietary langua by mikaelhg · · Score: 1

    I never understood why CS departments started switching to Java.

    Not everyone can be a professor. Some people need to do actual work.

  99. Re:CS Departments shouldn't use proprietary langua by Anonymous Coward · · Score: 0
    Geez buddy, if you're actually going to write a Turing machine implementation, I hope you aren't passing it around as a tuple.

    If you're every debugging some method and trying to tell exactly what's going on with every variable in scope... you'll know what I mean.

    Yes I'm kidding. I sometimes wish for lambda functions in Java... oh the humanity!

  100. mustang by Anonymous Coward · · Score: 1, Informative

    and has a compiler/VM to which you have no source code access!

    The source is here: https://mustang.dev.java.net/

  101. Re:I've moved on to python but it sucks in many wa by arevos · · Score: 1
    However, the "pythonic" philosophy of "anything is allowed if you try hard enough could be re-termed "moronic". It's just bad design to have multiple ways of doing the same low-level thing in a language. Complexity multiplies, as we all know.

    Um, the Python philosophy is supposed to be completely the opposite. To paraphrase: "There should be one, and preferably only one, obvious way to do it."

    Where do you feel Python falls down in this department? Could you give an example?

  102. No.... by cartman · · Score: 4, Insightful
    Java is, from a language design standpoint, a joke.
    Java is widely recognized among language designers as being one of the cleaner mass-deployed languages. It's a well-designed though imperfect language. However it has defects, of course....
    It was designed by cutting chunks off of it's predecessors and not supplying any viable substitutes.
    Those chunks were removed precisely because they were not orthogonal. Those chunks/features were simply overlapping. As such other viable substitutes already existed. Nothing was removed from Java which would prevent any operation.

    Bear in mind that most of the "features" not included from C++ were examples of very poor language design.

    There are some omissions from Java which are unfortunate, like pre-conditions and post-conditions, however most of the omissions were not present in Java's predecessors.

    The only features of C++ which are lacking in Java and which arguably should be included are: operator overloading, and some variant of the const keyword (although not exactly like C++ const, which is hideously overloaded).

    People always brag about their million-line .net1.1 and Java2 projects, claiming that such million-line monstrocities are proof the language is maintainable.
    No serious programmer ever brags about million-line programs, or claims that lines of code somehow correlates positively with maintainability. You're attributing a point of view to "people" which they don't possess. Perhaps some friend of yours made a comment like that, which you now attribute to "people"?
    What they don't tell you is that 900 000 of those million lines are spent on simple get/set wrappers, typecasting containers, re-implementing containers missing from the library, and recoding functions for different datatypes, giant class-based switch statements
    Typecasting containers is not done in Java, since it has generic containers. Re-implementing missing containers is very rare since the Java API has a wide variety of containers already (some even argue the API is too big). Recoding functions for different datatypes is unnecessary since Java has always been polymorphic. And there's nothing wrong with switch statements; they're syntactic sugar for if/else (I assume you're not opposed to if/else).

    I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary. I don't understand why the designers of Java don't just borrow ideas from Eiffel on this matter. I realize the Java designers are opposed to syntactic sugar in general, but in this case it would be justified, since a huge proportion of Java code wasted is on statements like "public Foo getFoo() { return this.foo; }".

    1. Re:No.... by Pxtl · · Score: 1

      The generic containers are a new invention, and imho the language was disastrously incomplete before then. And the Java API is similar to the .NET API in that it's bulkiness comes from the massive amount of database, serialization etc. libraries thrown in, not because of having a perfectly complete set of containers.

    2. Re:No.... by NatteringNabob · · Score: 3, Interesting

      [ I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary. ]

      It's worth mentioning though that the language doesn't force you to implement the accessors. If you don't think the wrappers buy anything, you can just make the members public.

    3. Re:No.... by Anonymous Coward · · Score: 0

      >> >> What they don't tell you is that 900 000 of those million lines are spent on ... typecasting containers

      >> Typecasting containers is not done in Java, since it has generic containers.

      Only if you wrote those 900,000 lines in the last year.

    4. Re:No.... by aCapitalist · · Score: 1

      Bear in mind that most of the "features" not included from C++ were examples of very poor language design.

      I don't care what Sun or some academic has to say about operator overloading...it was a mistake to not include it. Let the development team decide when and where to use it - not the language designers. The big fallacy that if you include it *everybody* will abuse it has been put to rest and it does improve readibility much of the time. And after further reading of your post, it seems you agree.

      Switch on strings, an enum from the beginning, I think the event/delegate mechanism in C# is much cleaner than Java's. I think C# has real closures now and Java has inner classes. For me, it's a bunch of little things that add up and make Java code so verbose. I don't care about typing, I care about reading.

    5. Re:No.... by Anonymous Coward · · Score: 0

      Please don't associate this retard and Sun's opinions on "very poor language design" with "academics."

      Java lacked descriminating unions.
      Java lacked parametric polymorphism.
      Java conflated subtyping and subclassing.
      Java had ad-hoc polymorphism but as you point out singled out "operators" (other than for String) as exceptions.
      Java had "native types" and classes.
      Java adds synchronization primitives in a non-performant way with threads that have inconsistent behavior across platforms.
      Java had a completely superfluous 'new' keyword.
      Java had constant references to mutable instances, but no constant instances.
      Java lacked covariant return types.
      Java forced manifest typing even when local type inference was tractable.
      Java lacked unsigned types. Who needs those, right?
      Java lacked a full tower of numeric types, but had a limited number that can't be used with normal math operators.
      Java broke its implementation of floating point math.
      Java had undead objects revived by finalizers.
      Changing a member denoted as final breaks binary compatibility silently.

      Trust me, I can go on.

    6. Re:No.... by cartman · · Score: 1
      Please don't associate this retard and Sun's opinions on "very poor language design" with "academics."
      I'm afriad you're the only retard. In fact, after reading your complaints, I'm amazed how retarded you are.

      The verdict of poor language design was not Sun's (nor did my post imply that) but rather a consensus of language designers. That consensus is so widely shared that Stroustrup has to issue apologies on occasion...

      Java lacked descriminating unions.
      You have to be joking. Those are desirable? Also, you should learn how to spell better than a 3rd grader...
      Java lacked parametric polymorphism.
      Java has parametric polymorphism. That topic has been discussed already....
      Java had "native types" and classes
      C++ has native types and classes.

      But I assume you're complaining about the split between primitive types and their object wrappers in Java (int vs Integer, etc). That was the most elegant way of solving various problems without having an "everything is an object" language.

      Java had constant references to mutable instances, but no constant instances.
      You mean it lacks the hideously overloaded "const" keyword of C++?
      Java had a completely superfluous 'new' keyword. Java forced manifest typing even when local type inference was tractable. Java lacked unsigned types.
      Those are EXTREMELY minor concerns. You honestly have difficulty typing the 'new' keyword? And your complaint is that it could theoretically have been omitted from the language?
      Java lacked a full tower of numeric types, but had a limited number that can't be used with normal math operators.
      C++, C, and most languages lack a complete set of numeric types primitive to the langauge. C++ has recently added additional numeric types like complex (they weren't there for the first 15+ years), but they're in class libraries, and similar libraries are available for Java.
      Java had undead objects revived by finalizers.
      This is an obscure concern that almost never comes up in practice.
      Trust me, I can go on.
      I must say, there are a great many legitimate criticisms of Java. But you haven't hit on even one of them. Your list was a compilation of incorrect and trivial criticisms.
      Trust me, I can go on.
      I have no doubt that you could "go on" and demonstrate your ignorance still further.
  103. It's not 1996 anymore. by lorcha · · Score: 1

    Wake up, dickhead.

    --
    "Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
  104. Good riddance. by mattgreen · · Score: 1

    We don't want hyper-enthusiasts. These are the type of people that recommend a single technology for *every* problem and believe it to be the absolute saving grace. Usually, they have a poor grip on reality. What has probably happened is the delusion that Java will nullify platform differences may finally be starting to wear thin on these people.

    I can't see how anyone would lament the loss of zealots, however. They always do more harm for their cause than good.

  105. Creating Java Objects by Anonymous Coward · · Score: 0

    Both C++ and Java create objects this way for the same reasons. The syntax is important to basic OOP.

    FooBar foobar = new FooBar();

    The type "FooBar" could be a superclass type of the object being created. Then, polymorphism chooses the real object. Consider the code:

    FooBar foobar = new SubFooBar();
    foobar.draw();

    The reference "foobar" only knows what a FooBar object can do. This keeps us from doing SubFooBar methods that a SubFooBar2 can't do.

    The "new" operator is absolutely necessary. It tells the system to call a constructor function. Even Javascript has "new", and it is very weakly typed. How would Java know that foobar = FooBar(); isn't a call to foobar = this.FooBar(); for the enclosing class? Don't say that it should guess that an undefined method is a constructor!

    1. Re:Creating Java Objects by arevos · · Score: 1
      Both C++ and Java create objects this way for the same reasons. The syntax is important to basic OOP.

      Only to statically typed OOP. A minor distinction, but possibly worth mentioning.

      The reference "foobar" only knows what a FooBar object can do. This keeps us from doing SubFooBar methods that a SubFooBar2 can't do.

      You could just have the language default to using the type of the class called:

      // has type FooBar
      foobar = FooBar()

      // has type SubFooBar
      SubFooBar foobar = FooBar()
      The "new" operator is absolutely necessary. It tells the system to call a constructor function. Even Javascript has "new", and it is very weakly typed.

      It isn't necessary at all! C++ doesn't need the new operator to create a class, it uses only to distinguish between objects placed on the stack and on the heap. Java only has one memory location to put objects in, so the original purpose of 'new' is redundant.

      For instance, in C++:

      // Create a new FooBar object and put it on the stack
      FooBar foobar();

      // Create a new FooBar object and put it on the heap
      FooBar twobar = new FooBar();

      And in Python:

      # Create a new FooBar object
      foobar = FooBar()

      So the new operator isn't needed. It's pure fluff, designed to make C++ programmers feel at home.

      How would Java know that foobar = FooBar(); isn't a call to foobar = this.FooBar(); for the enclosing class? Don't say that it should guess that an undefined method is a constructor!

      You'd just putting classes and methods in the same namespace, of course. Since classes are meant to start with an uppercase character, and methods with a lowercase letter, you wouldn't have any clashes if you're naming things correctly. I mean, how often, really, would you create a method called "Object", or a class called "toString"?

      Besides, when you think about it, what's so special about a constructor anyway? All a constructor is, after all, is a method that returns a new object. Big deal. Any method can return a new object - just look at Class.newInstance or the singleton pattern. So why make an artificial distinction in syntax between constructors and methods?

  106. Re:Has the previous hype of Java and J2EE moved on by H0p313ss · · Score: 1

    If so, that's just stuffing a heirarchical DB inside a relational one, which is stupid

    HERETIC! Burn him! Burn him now!

    (Be wary of pointing out common sense truth to the believers, it tends to be hazardous to your health.)

    *sigh*

    The next level of inanity is storing compressed XML in relational fields to "increase performance".

    That's it... I'm going home to mother...

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
  107. So I take it... by emil · · Score: 1

    ...that my enterprise systems running on HP-UX 10.20, Oracle 7 and Entera are the equivalent of shopping in the Goodwill that is in the back of the KMart?

    I guess that I won't be attending any Paris fasion shows anytime soon.

    Seriously, core business logic seems to get implemented and STAY implemented. Just ask the COBOL guys.

  108. Re:Python hype Gramma Nazi by MrCopilot · · Score: 1
    I find python to have some nice features, but to be pretty badly unsuited for large projects.

    I think su meant pretty badly suited.

    Sorry, But I just can't get rid of this strange mental picture of an ugly naked snake.

    --
    OSGGFG - Open Source Gamers Guide to Free Games
  109. Re:Has the previous hype of Java and J2EE moved on by wft_rtfa · · Score: 1

    You could also think of Java as an old girlfriend. When you first meet her, she was exciting and fun to be around. She helped you out in a lot of tough situations where no one else could. However, over the years she got fat and other women seem more fun. Don't get me wrong, she's still sexy, but some of these other women you are spending time with seem hotter.

    --
    :-] :0 :-> :-| :->
  110. Re:CS Departments shouldn't use proprietary langua by Anonymous Coward · · Score: 0

    Our CS classes mostly used Pascal and Modula-2 when I was a undergrad/grad student during the 80s and 90s. One particular course named "UNIX & C" was offered as an elective. I went back to my alma mater last year and I discovered they're now using Java for nearly all of the CS classes. Nothing wrong with that. Professors always liked those type safe languages, but at least Java is used in the real world. However, if I had never taken that "UNIX & C" class back in 1987, I never would have developed the passion for all things Unix (especially Linux) that I have now.

  111. Re:CS Departments shouldn't use proprietary langua by DdJ · · Score: 4, Informative
    I'm not saying that Python is the ultimate language, but I think everyone has to agree that it's a better choice than Java for programming courses in universities.
    Nope. I won't agree to that, for one simple reason -- whitespace has meaning in Python.

    A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so.

    For programming courses in universities, maybe Ruby is a better choice than Java. Maybe Perl even is. But Python is not, because of this one simple feature that completely rules the language out, in my book, regardless of how good the language is otherwise.
  112. Re:Has the previous hype of Java and J2EE moved on by Julian+Morrison · · Score: 1

    The irony is that most trends actually get assimilated in some way, if not in the way originally intended. For example, many people are using "object databases" - they're using hibernate, which turns humble mysql or postgres into a beautifully featureful object DB.

  113. You summed up the problem in one sentence by Augusto · · Score: 1

    > I will grant that dynamic languages propobally give less skilled programmers more ways to screw something up but that's there problem not mine ;)

    So you think software maintenance is not relevant or important at all? You're not making a convincing case for "dynamic languages".

    --

    - sigs are for wimps.
    1. Re:You summed up the problem in one sentence by Peaker · · Score: 1

      Are you saying software maintainance is by definition done by less skilled programmers? God help the software being maintained.

    2. Re:You summed up the problem in one sentence by helifex · · Score: 1

      I'm not here to convince anyone to move to Ruby, Python or any other dynamic language. I was trying to point out that using the "It's not type-safe argument" is pretty much an admision that you've never used a dynamic language and don't understand their advantages. I was trying to point out that the Java/C++ crowd tend to forget that quite a lot of us Ruby/Python programmers used to be Java/c++ programmers. As far as maintenance goes... With out a doubt, if programmer sills were the same in their respective tools and the code bases to be maintained were of the same quality (good or bad), a Ruby/Python programmers will be up to speed and productive much faster than a Java/C++ programmer. The reality is that the higher level language allows for more natural expression of the problem domain and this results in more readable code. All I meant by "more ways to screw something up" was that there are more ways, not that they were more likley to get it wrong.

  114. Re:What?!?! by nazsco · · Score: 1

    Must say they lasted a lot more then i tought.

    For a language designed by maketing people and implemented in power point slides, it sure did get a fair amount of adopters.

    I had high hopes on java. But it was completely useless in a embeded system, too much hassle in a obscure plataform (irix, beos) and simply extra work on a common base (windows, linux)

    if i write the same app on python or ,god forbid, C, i have much less work to do, and it will be even more "multi-plataform" then java!

    Then, they tried to sell it as "the intraweb language" and all hell broke loose. Even php outdo it!

  115. What is Java? by drgonzo59 · · Score: 2, Insightful
    Besides coffee, when people say Java they sometimes mean different things:

    For some it is the byte compiled oo language, these people chose it because it looked like C++ but with no explicit pointers and a GC.

    For some it is the platform, in other words they liked the large library of classes that came with it like swing/awt, math, networking.

    Others liked it because of the technologies built on top of it or with it: J2EE (EJBs etc.), Applets, Servelets

    Yet others liked it just because it is the most portable and functional language+platform they had ever seen. Here when a company makes a product written in C/C++ that they have to port to another platform, having a "compile once, run anywhere" language can cut costs of developing/maintenance dramatically

    As far as the Java fanatics and cheerleader of the past years are concerned they probably moved on because that is what they do - they get excited about a new technology for a while, make a lot of noise then move to another new technology. Java is already used extensively in the industry and is not going away soon.

    As far as Ruby and Python. I would have to say that Python is probably the best successor of Java. Why not Ruby? Because, as you say Ruby is a raw young language it doesn't have nearly the libraries that Java and Python has. The only context I ever hear of Ruby is when it is mention in the "Ruby on Rails" title. I know it is a more pure 'cleaner' object oriented language than PYthon, Python is just more practical, and more intuitive as far as I am concerned. I was planning to write my project in Java, but after a week of playing with Python, I was up and running and I believe I finished in 2/3 or 1/2 the time it would have taken me to write it in Java. Look at a simple code comparison in java and one in Python

    : In Java

    public class J {
    public static void main(String[] args){
    System.out.println("text");
    }
    }

    then you have to run: "javac J.java" then "java J"
    Versus the Python version
    print "text"
    then to run just: "python file.py"
    Ruby is pretty close but I dismissed it as not having enough libraries and add-ons. With python for example, I can even run it on a Java platform with JPython and still access the rich java libraries. I can optimize parts of my code in C and either use the syntax extensions of Pyrex, or weave to inline that code into regular python code. There are good GUI bindings (Qt, wxWindows, Gtk and of course the default Tk, for those seeking to punish themselves), there is threading, networking, good regex support. My favorite is the native dictionary (hash table) data type. Just use something like "dic={}" to initialize an emtpy dictionary then "dic[key]=value" to use it, and that is it - no need for new no need to import anything.

    1. Re:What is Java? by Anonymous Coward · · Score: 2, Insightful

      You're example is useless. In fact, it would actually lead some people to believe that the Java code is superior due to the fact that it's more robust, more reusable and runs much faster than Python/Ruby etc.

    2. Re:What is Java? by Decaff · · Score: 1

      As far as Ruby and Python. I would have to say that Python is probably the best successor of Java. Why not Ruby? Because, as you say Ruby is a raw young language it doesn't have nearly the libraries that Java and Python has.

      I am a huge fan of Java, but I have recently started to take a look at Ruby, especially as it runs on the JVM (like Python). I have to disagree in some ways about Python's advantages. Ruby is not that young, and has (in my view) major advantages over Python, in consistency of language and flexibility. There are still significant issues with Python to do with scoping of variables that can make really sophisticated programming tricky.

    3. Re:What is Java? by drgonzo59 · · Score: 1

      You are right, Ruby is cleaner and more consistent. But Python works for me because it has more 3rd party mechanisms to inline C code and thus I can optimize say 3 nested for loops in a certain function. Ruby has been popular in Japan and Asia for quite a while but I think there is more documentaion and examples of code for Python.

  116. Java is great; Gosling is a genius by Anonymous Coward · · Score: 0

    I program 95% in Java, 4% in shell, and 1% in Perl. I do not want to ever touch C and C++ again, although I somtimes do. Java always comes through for me. Gosling is a genius responsible for one of the most amazing technological achivements of man kind.

    Here are some genius features of Java:
        . Serialization
        . RMI (along with security model)
        . simple syntax
        . amazing, standard API
        . cross platformness

  117. Re:CS Departments shouldn't use proprietary langua by TromboonDotPy · · Score: 2, Informative

    As a high school computer science teacher, I'm hesitant to say what university CS departments should use.

    But I can talk about what makes good teaching languages. The purpose of a teaching language is to serve BOTH those who will be programmers, and those for whom CS1 is just an interesting (hopefully not harrowing) life experience. Python, with its VERY low floor and VERY high ceiling serves both purposes exceptionally well.

    I use Python with high school freshman and sophomores as a "pre-AP" language, and find it a real joy to use. In fact it has really turned part of my professional life around, and made me renew my commitment to teaching younger kids programming-as-such. I'm having a blast.

    I have used Pascal, AP-ified C++, Scheme, and Java. I've taught structured programming, objects, and functional style.

    I find that teaching state machine programming with Python is providing hooks to start many wonderful conversations about variables, values, expressions, control, objects, garbage collection etc. etc... And, mirabile dictu: the way the math works relates to Algebra in a comprehensible way!

    Most significantly, students are showing inititative and making up little hacks on their own in a way that they haven't since Turbo Pascal. As a constructionist kinda guy, that's the big win for me.

  118. get/set stuff by lamber45 · · Score: 1
    I'll grant that the repetitive get/set wrappers are unfortunate and unnecessary.

    Isn't a Java Bean allowed to have a public variable xxx as a public property xxx in place of getXxx()/setXxx(), thus making those wrappers unnecessary?

    1. Re:get/set stuff by docbombay · · Score: 1

      Any Java object is allowed to have a public *attribute* without getters and setters, but a Java Bean *property* is a specific part of the Java Bean design pattern that requires get and/or set methods -- but that's neither here nor there. You can decare public attributes all you want, but in doing so, you are knowingly violating data encapsulation (and therefore, good object-oriented design) by allowing other objects access your data directly. This is yet another example of how junior programmers will blame something on a language (in this case, Java) that is actually a symptom of how one designs or implements. I've used getters and setters in Perl and C++ applications in the past -- certainly not because either language mandated their use, but because it was a *good idea*.

  119. Re:Nope. I will have another order of java thank y by Anonymous Coward · · Score: 0

    I am really just rediscovering Java now and the API's are very nice.

    It's been my experience that the opposite is true. Sun tried to shovel a lot of crap into the core JVM and wound up doing such a half ass job that my job is harder. For example, this month's JDJ mentions that there are more deprecated public methods in java.util.Date than there are non-deprecated methods. That's not the sign of a nice API. java.util.Date has also had significant bugs W.R.T. date parsing and DST.

    Here's another one that chaps my ass. How many times have you inherited some code that does I/O only to find half a dozen different copy utility methods (i.e. copying InputStream to OutputStream, InputStream to Writer, Reader to OutputStream, etc.) They typically wrap everything in a buffer and/or use some wild-ass-guess at appropriate buffer size. What is the fscking reason that Sun couldn't put these copy methods into InputStream/OutputStream/Reader/Writer? The Sun software engineers, as implementers of the JVM, should have at least an inkling of a reasonable default buffer size, no? They kind of figured this out with NIO and added Channel copy methods.

    How about XML? I always enjoy converting a String into a *Stream just so I can parse it. Oracle figured out how to do this circa Java 1.1, why the hell can't Sun?

  120. Re:No, the fashion industry has fads well organize by Skjellifetti · · Score: 1

    I wonder if the chosen colors would be of any use as a leading economic indicator. Bright colors -> Happy Folks who spend money -> economy picks up. Dark colors -> Worried folks -> economic downturn.

  121. Re:CS Departments shouldn't use proprietary langua by boa13 · · Score: 1

    whitespace has meaning in Python. (...) a programming language choice that introduces unnecessary barriers to blind students

    How is that a barrier? I would expect non-blind people to have more problems with whitespace (they can hardly see if there's three or four spaces) than blind people (their interfaces should say each whitespace, or their fingers should feel them). Unless of course their interfaces collapse whitespace, in which case they should be improved.

    Admittedly, I don't know much (almost nothing) about such interfaces, but I'm genuinely curious about the problems you say Python is causing.

    (Note that Python doesn't care about the size of indentation: one-space indentation is ok.)

  122. Two Words by martinultima · · Score: 0

    Puzzle Pirates. Proof that Java isn't dead.

    --
    Creative misinterpretation is your friend.
  123. What's the deal with comparing ROR to Java? by bill_kress · · Score: 1

    I really don't get it. I use Java to create non-web based apps. Java isn't actually very good for web apps, which is fine.

    Rails, as far as I can tell, is used to create web based apps only.

    Why are people here constantly saying my hammer makes a better hammer than your wrench does?

    I don't use Java to write webapps, I don't use ruby to write hotkey scripts that run in windows and I don't use AutoHotkey to write enterprise apps.

    If you choose to use Java to write a webapp, stop bitching and learn how to actually engineer.

    Also, if you use Ruby with a team of 40 people or more on the same million+ loc non-web project, I'd really like to hear about it. My lack of personal experience renders me unable to judge, but Ruby does not seem to be the perfect solution for that type of development (to me).

  124. Real men use assembly. by barfomar · · Score: 1
    Java, Ruby and Python are for candy-assed wimps.

    You want speed and flexibility use assembly.

    XOR A,A

  125. PARENT FUNNY by fforw · · Score: 1

    yeah.. I don't really see the connection to COBOL either...

    --
    while (!asleep()) sheep++
    1. Re:PARENT FUNNY by Anonymous Coward · · Score: 0

      whitespace

  126. Java's Goals: Mission Accomplished??! by SimHacker · · Score: 1

    Goal: Crush Microsoft. BZZZT!

    Goal: Write once, run everywhere. BZZZT!

    Goal: 100% Pure Java. BZZZT!

    Three strikes. You're out.

    --
    Take a look and feel free: http://www.PieMenu.com
  127. -1 (Flamebait) by BillBrasky · · Score: 1
    Let's see...
    • Daily Micro$oft article... Check!
    • Daily Google article... Check!
    • Daily Java vs Ruby flamebait article... Check!
    Seriously... you have a toolbox, the toolbox contains many languages. There is no 'best' language. Use the one that fits your project's requirements best.
  128. OT: SYS 49152 by fatboy · · Score: 1

    I remember 49152 was the location in memory (in decimal) that cartridges for the Tandy CoCo were. If you disabled the enable line on the cartridge, you could copy that memory byte for byte on to a cassette or floppy. If you wanted to execute the program on the cartridge you could simply type "exec 49152".

    What is "SYS 49152"?

    --
    --fatboy
    1. Re:OT: SYS 49152 by sgbett · · Score: 0

      on the c64 it was an often used entry point in memory for a machine code program. SYS 49152 told it to start executing machine code from that address

      --
      Invaders must die
    2. Re:OT: SYS 49152 by sgbett · · Score: 0

      further to my previous reply the entire memory map can be seen here with 49152 being described as the start of "upper ram area" ($c000)

      further googling also revealed this curiosity!

      --
      Invaders must die
    3. Re:OT: SYS 49152 by mmusson · · Score: 1

      This was a command in Commodore 64 BASIC that would start executing machine code at the specified address. A 4k block of free memory started at address 49152 (C000) and so this was a common jump point for games and other programs. Commodore 64 fans will also remember SYS 64738.

      --
      SYS 49152
  129. My demo of Python vs. Java by Anonymous Coward · · Score: 0

    Not really much of a demonstration, but I've shown this to a few people when discussion comes up about Python and Java.

    I was playing with Lupy, which is a rewrite of Lucene using Python. It provides essentially the same API. I took an example from Erik Hatcher's Lucene Intro (a directory indexer) and ported it to Python. I tried to be faithful to the original code, except where I thought that Python idioms made sense.

    To me the code is much more readable and approachable, not simply because it is shorter (25 vs 34 content lines (excludes closing braces) or 31 vs 50 lines (includes whitespace and closing braces)), but the content lines are less dense (33 vs 39 chars per line).
    The Python code sample follows. Erik Hatcher's code and full article is available at http://today.java.net/pub/a/today/2003/07/30/Lucen eIntro.html
    (look for the first code sample that starts with "import").

    from lupy import document
    from lupy.index.indexwriter import IndexWriter
    from lupy.index.documentwriter import standardTokenizer

    import sys
    import os.path

    def index(indexDir, dataDir):
            if not os.path.isdir(dataDir):
                    raise IOError, dataDir + ' does not exist or is not a directory'
            writer = IndexWriter(indexDir, analyzer=standardTokenizer, create=True);
            os.path.walk(dataDir, indexDirectory, writer)
            writer.close();

    def indexDirectory(writer, dirname, names):
            for name in names:
                    if name.endswith('.txt'):
                            indexFile(writer, os.path.join(dirname, name));

    def indexFile(writer, filename):
            print 'Indexing', filename

            doc = document.Document()
            doc.add(document.Text('contents', file(filename)))
            doc.add(document.Keyword('filename', os.path.abspath(filename)))
            writer.addDocument(doc)

    if __name__ == '__main__':
            if len(sys.argv) != 3:
                    sys.exit('Usage: python indexer.py ')
            index(*sys.argv[1:3])

  130. No wonder... by C10H14N2 · · Score: 1

    ...their website colors are so !#%@ing ghastly.

  131. Re:Has the previous hype of Java and J2EE moved on by jma05 · · Score: 1

    These idiots...

    Oracle
    http://www.oracle.com/technology/tech/xml/xmldb/in dex.html
    Microsoft
    http://msdn.microsoft.com/library/default.asp?url= /library/en-us/dnsql90/html/sql2k5xmloptions.asp

    you know, the ones that sell the most databases today. Not to mention just about every other successful commerically sold database.

    >> stupid 2 teh maxx0rz

    Very cogent and convincing.

  132. Hyper-Enthusiasts follow their whims.... by rdean400 · · Score: 1

    The pace of "exciting" Java development has slowed down, so they've moved on to technologies where they can get that feeling of new and exciting again. I don't begrudge them. They have that right....but their departure doesn't automatically make what they're working on any better than current technology.

    Moreover, they're making comparisons that don't make any sense. RoR vs. "Java" is comparing apples to oranges. One is a framework for creating web applications. The other is a general purpose programming language and environment. Are you comparing RoR to Do-It-Yourself Servlets? Struts? WebWork? Spring? RIFE? Such is the way once a technology enters maturity. If RoR is the Next Big Thing and takes off, we'll be having these same discussions in 5-10 years about some other technology.

  133. Re:What?!?! by plughead · · Score: 1, Funny
    if i write the same app on python or ,god forbid, C, i have much less work to do, and it will be even more "multi-plataform" then java!

    Some of us have to write things a little more complicated than 'Hello, World.'

    --
    If a giant oil company wanted an abortion, would W's head explode?
  134. i don't buy it by namekuseijin · · Score: 1

    "The lack of information hiding makes it very hard to ensure that fellow programmers use your classes in the way intended"

    It can certainly distinguish between private and public instance variables. Just prefix with __ -- say, foo.__bar -- the attributes you want to make private and the runtime will mangle them and make them not directly accessable. Tsk, tsk, 30.000 lines and seemingly not even a peek at TFM...

    Yes, people will not be able to say foo.bar ( obviously ), but neither foo.__bar. However, they can take a look at dir( foo ) and see the result of the mangling: you can reference it via foo._Foo__bar ( supposing a Foo class ).

    So, if the guy access a private variable, it's very obviously not an accident: it's deliberate. Then, if he's deliberately trying to access a private variable, let him get hurt. He should learn it the hard way...

    Oh, you may think the language should prevent that? People in this side of the fence think of that java "feature" to be very limiting. There are some valid reasons why having direct access to private variables should prove worthy, so it's there to be used with care...

    "small typos in function/variable names aren't caught nearly as quickly"

    I don't understand what you mean by that. You mean at compile time or something? Test. and then test again. and then some more, just to be sure. To quote Donald Knuth:
    "Beware of bugs in the above code; I have only proved it correct, not tried it".

    By correct, he meant: it compiles ok...

    "performance is far behind java"

    Are you sure of that? Most python libs are just thin high level wrappers to C libs which are running natively, while Java libs will be running in the same JVM and using just as much memory. Besides, a very high level language as python has many useful operators and data structures builtin ( implemented in C ): i'm thinking specifically in lists and hashes, while Java has to handle the gigantic Collection API just to have something halfway-decent...

    It's easy to measure benchmarks by just going with a simple recursive algorithm and declaring java the champ. But this does not count on real world matters. And i believe real world matters are far more taxing on java and its tons of jitted libs than on python and its many thin wrappers to native libs.

    "a nice little scripting language."

    ah, yes! So now we get to your point. It's just a "little scripting toy tool to do quick hacks", not capable of ever achieving the same level of performance of a "harder", more "sturdy" and "enterprise"-ready compiled language like java.

    Now, i doubt why a guy who has python in so low account would have a 30.000 line project written in it when he had not even taken a look at the available documentation to know that you can indeed simulate perfectably acceptable access modifiers?

    I know the answer: you're plain fucking lying just to wash your java ego...

    --
    I don't feel like it...
  135. Oh, I Guess We Can Finally Get Some Work Done by Greyfox · · Score: 1

    The hyper-enthusiasts were always jamming java into places it didn't fit well. Maybe now that they've gone away we can actually get some real work done with the language. They'll probably mess the ruby camp up for a while too, until the next shiny object... oriented langauge comes out.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  136. Java doesn't need hype anymore by Heembo · · Score: 1

    Java Hype is like saying "C++ hype". Java is now an engrained language that is just part of most enterprise developers reality. It's just a tool and a glue that can be used any number of ways. Java is not PAST hype, and is just an engrained part of the computing world.

    --
    Horns are really just a broken halo.
  137. and.. Java helped promote the Linux platform! by pivo · · Score: 1

    At least at my company. When we started out, we were building a Java application server for Unix patforms, which mostly meant Suns. We couldn't afford Sun workstations for every developer though, so we used Windows on cheap Dells for development. Once a JDK appeared for Linux many developers dumped Windows and installed Linux on their Dells. After a few years of Java-on-Linux development, Linux moved from an unsupported skunk-works OS in our organization to a platform officially supported both internally by IT and as a deployment platform for our customers. Lucky for us, when our customers started asking for Linux support, we'd already had two years experience with out product on that platform.

    Without a decent JDK for Linux, I'd probably still be developing on Windows, and my company certainly wouldn't claim Linux support.

  138. dark ages?! by namekuseijin · · Score: 1

    "I look back at days before Java, and they seem like the dark ages of computers."

    Come on! I believe the 70s to be like the Renascentist ages, with a few Leonardo DaVincis and Michaelangelos. OOP, VMs, IDEs, GUIs, functional programming... all born those days...

    Lisp and Smalltalk had programming environments those days which could not be matched on features and sheer complete control of the environment up until recently with the likes of Eclipse...

    The dark ages and the java era have one thing in common: people lived in obscurity, paying their deeds to God in the form of self-punishment...

    --
    I don't feel like it...
  139. Re:Has the previous hype of Java and J2EE moved on by Anonymous Coward · · Score: 0
    The next level of inanity is storing compressed XML in relational fields to "increase performance".

    Sad to say, against my violent protests, my company did precisely that. Posting anonymously out of (deserved) shame.
  140. Java and C are not functional languages by Anonymous Coward · · Score: 0

    a functional language is one structured in reducible expressions (as in, the lambda calculus/lambda function).

    functional languages are LISP, Scheme, Haskell, etc.

    Java and C are imperative languages (maybe could also be called procedural?)

  141. API by namekuseijin · · Score: 2, Insightful

    "C included libc, C++ has libc+STL

    If you call those comprehensive libraries, then I have a bridge to sell you. The 1.1 library (which was where Java first started taking off) had such features as ... guaranteed to be on every platform Java was. That's one hell of a feature!"

    That's because Java is not a language with a standard library: it's a development platform, almost an OS, with an associate standard language with which you reference the imense API. It's almost the same as a sh script accessing the POSIX utilities: as long you're in a POSIX environment, you'll be able to use them, using the same standard sh scripting language.

    Only thing annoying is that java is a lousy scripting language to handle what is otherwise a nice programming environment. Thankfully, Jython, ruby and others are coming along just nicely in said environment...

    --
    I don't feel like it...
  142. libc by namekuseijin · · Score: 1

    It was pretty complete for it's original purpose: being the high level API of UNIX...

    Back in the day DBMSs were still in their infancy and people used their own file-based DBs to store data. There was no web, let alone web servers, servlets and other stupidity. No GUIs, except some crazy concepts which didn't work ok on the slow hardware of the days.

    Memory allocation, file, stream and string handling were all you needed to build functional systems.

    It has remained that way for historical reasons, but i still believe it's ok. If you ever have a need for DB access, just pick an API among the many available. If want xml processing, pick one.

    The one solution fits all doesn't sound ok to me...

    --
    I don't feel like it...
  143. take a look at the concurrency APIs by Anonymous Coward · · Score: 0

    (java.util.concurrent)

    The package makes things like read/write locks, check-and-set variables, and concurrent data structures readily accessible.

    All-in-all, the default set of building blocks is just much less basic and when you're developing large-scale server apps it's just nice to use these larger blocks.

  144. *agreed* by GnuDiff · · Score: 1

    -1 zonk
    You have Views on Java - fine. But trying to creating black PR just by picking up any tidbit of something that might show Java in any possible unfavourable way - I would have thought better of slashdot. So far only MS seemed to have been the punchbag.

  145. Re:CS Departments shouldn't use proprietary langua by nnorwitz · · Score: 3, Interesting

    Nope. I won't agree to that, for one simple reason -- whitespace has meaning in Python.

    A university cannot make a programming language choice that introduces unnecessary barriers to blind students. Python does so. Wow, thanks for that bit of news. I guess I will have to tell the blind guy at work he can't use Python.

  146. Parrot. by SanityInAnarchy · · Score: 1

    The next-gen Perl engine, meant to handle Perl6 (and 5), Python, and Ruby. While no one's forcing Python/Ruby to use it, they probably will anyway, because it will allow calls across languages -- in other words, Python and Ruby will be able to use CPAN modules.

    Sadly, some design features of Ruby will mean that it will always be slow. Here's one: Did you know that when a method is called on an object, and that method doesn't exist, you can set a default method, whose first argument is the name of the method which they attempted to call?

    Sounds cool, until you realize that everything in Ruby which has a name keeps that name around well into runtime, and so every method call (and there are piles and piles of explicit method calls) is done by name, at runtime. Same with class and variable names, and, well, anything that has a name.

    Now, say what you will, but I don't think that being able to optimize the real speed bottlenecks by writing them in another language (perl, python, or even C) is a good idea. Yes, it makes Ruby fast, but then you have to be bilingual, and you may end up spending as much time writing the C and the glue to tie the Ruby and the C together as you save by writing anything in Ruby instead of C.

    --
    Don't thank God, thank a doctor!
  147. Re:I've moved on to python but it sucks in many wa by GnuDiff · · Score: 1

    > We still need a new language that combines the best of these breeds.

    Hmm. Not sure if that is what you would like, but maybe try Pike? http://pike.ida.liu.se/
    Been around for like 10 years, syntax close to C, usually described to be close to Python. Touted to be much faster tho.

  148. GWBASIC still rules! by M1FCJ · · Score: 5, Insightful

    Nothing can beat this beauty:
    10 PRINT "TEXT"

    then you would do
    GWBASIC FILE.BAS

    Beats "python file.py" every time...

    Fake arguments involving hello world apps should not be taken as a way of comparing languages.

    1. Re:GWBASIC still rules! by Taevin · · Score: 1
      Indeed, the same thing is also rediculously easy in the so called "hard" languages like C and C++:
      std::cout << "text";
      printf("text");
    2. Re:GWBASIC still rules! by drgonzo59 · · Score: 2, Interesting
      Printing a string to the console (aka the "hello world" problem) is something done often in programming. Most programs out there have to send output to an output device.

      I, like many other people out there, want to see this "hello world" problem solved in any new language that I am learning for illustration purposes and because it gives a feel about the language, for example: what are the delimiters?, are any variables declared?, are there any object being instantiated?, is there a need to import any libraries for I/O? and of course, how many lines would be needed to do a basic task of outputting a string to a console? Most computer books that introduce a new language, if you have seen any, will include these type of programs and for good reasons.

      In this particular case the hello world program doesn't show that Python is the absolute best language out there, but it does show that even to print a string to the console java needs 3 or 4 more time the ammount of code that Python does. The implication is that _in general!_ to solve the same problem in java one would need to type more lines of code. I could have shown you a 2000+ lines little project I wrote and the n an almost similar solution written in Java that took about 3000+ lines, but don't you think that would have been a little too much?

      But since you brought your example in an attempt to show how stupid the "print "text" example is, let's see what one would learn just from it anyway. So we have:

      print "text"
      then "python file.py"
      as opposed to:
      10 PRINT "TEXT"
      then GWBASIC FILE.BAS

      Just from that I can guess that both are probably interpreted, both are high level (no need to allocate memory, or set up interrupts and load anything into registers), both languages are probably not strictly object oriented because there are no objects being created, both have built-in statements for console output, strings are enclosed by double quotes. also no visible end-of-line or end-of-statement characters are there, so whitespace might be used as a delimiter. Now what is different about them: Because one has a line # number I assume that it probably relies heavily on the GOTO statement and the other one doesn't. Now that is quite a bit learned just from 2 "stupid" "hello world" examples...

    3. Re:GWBASIC still rules! by poor_boi · · Score: 1

      In case you didn't notice, he made lots of other (good) arguments in his post. Way to focus only on the code sample. I suppose you wanted him to paste a full blown enterprise application into his post?

    4. Re:GWBASIC still rules! by drgonzo59 · · Score: 1
      For completeness, did you forget to #include anything?

      Or say add an "int main()" ... plus may be some curly braces here and there..

      But how about a litte compilation and linking? perhaps even a Makefile...

      ;)

    5. Re:GWBASIC still rules! by Anonymous+Brave+Guy · · Score: 1
      Fake arguments involving hello world apps should not be taken as a way of comparing languages.

      True. But showing that a language requires unnecessary design elements like classes to model even simple behaviour, and requires cumbersome syntax to do even trivial tasks, is fair game. "Hello, world" is simply a concise illustration of the problems with Java's horribly bloated syntax and underpowered design tools.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    6. Re:GWBASIC still rules! by GlassHeart · · Score: 1
      Now that is quite a bit learned just from 2 "stupid" "hello world" examples...

      How much can you learn looking at C's

      printf("hello, world");
      and C++'s
      cout << "hello, world";
      ? Sure, you can learn a bit about any computer language by looking at an example, but now a whole lot.
    7. Re:GWBASIC still rules! by Anonymous Coward · · Score: 0

      "Now that is quite a bit learned just from 2 "stupid" "hello world" examples...
      How much can you learn looking at C's
      printf("hello, world");
      and C++'s
      cout
      int main()
      {
              printf("Hello, World.");
      }

      then
      gcc hello.c
      then ./a.out

      Then, again, there's quite a lot to learn about this language:
      It is compiled.
      It relies on external libs for "advanced" processing (we can bet then for a short primitive types list), at list it seem to be strongly procedural, and we can bet it is "loosely OO if at all", etc.

    8. Re:GWBASIC still rules! by GlassHeart · · Score: 1
      Then, again, there's quite a lot to learn about this language:
      It is compiled.

      Several C interpreters are available. Try googling for them.

      It relies on external libs for "advanced" processing (we can bet then for a short primitive types list)

      Nonsense. There's nothing you can tell from C's printf() call that suggests external libraries. If you know Pascal, then you'll know that writeln() looks just the same, but is very much internal. In fact, writeln() itself cannot be implemented in Pascal.

      at list it seem to be strongly procedural

      The general classification of a language (procedural, functional, etc) does not count as "a lot" about a language.

      we can bet it is "loosely OO if at all"

      I don't even know what this means. Please explain.

      etc.

      No, please name them. The first two things you concluded are "wrong" and "accidentally right", so please name the other things you've "learned" from looking at the hello world examples.

  149. Linux does that by Clueless+Moron · · Score: 1
    I like the Linux clone syscall. It's like fork(), except you tell it exactly what you want copied.

    This is how the Linux 2.6 kernel does threads.

  150. Java never was hype. by Qbertino · · Score: 1

    Java never was hype. It once was the new PL. It had garbage collection. But it never was hype. It was not flashy enough for that. It actually allways has been the absolute antithesis of flashyness. It was a slowpoke. Back then the VM was to slow for anybody to hype Java over everything. It's GUIs were (are?) ugly as hell. Yet it offered plattform independece and a good enviroment for those who could handle OOP.

    The reason why so many people are now rather settling for Python/Ruby/Perl/PHP/Whatever is a very simple one: They are FOSS. They may suck in other ways than Java (no predictable GUI enviroment for these) and they certainly suck less than a PL that's 10 years old, but the main reason is they are FOSS. They will never be controlled by the whim of a MicroSuck or Sun.

    In fact I'm quite shure that Sun prevented Java from hyping, in order to establish it as a constant classic. They could've easyly gotten into the RIA territory Flash/AS2 are in now but they didn't. They stuck to where the bucks were in order to sell their hardware. They moved from the client side to server side within a year or so and had no interest in hyping RIA.

    Java never was hype and never will be. Along with all the downsides and upsides that come with it.

    --
    We suffer more in our imagination than in reality. - Seneca
  151. actually by Anonymous Coward · · Score: 0

    as a consultant who develops in whatever the client wants, I have noticed a major shift over the last few years to .NET (mainly vb/asp). I was on the Java bandwagon and had nearly 5 straight years of Java and occasional PHP, for the last 1 1/2 years every project I have been on has been .NET, not one RoR or PHP. It seems to me the big losers are the swing apps, Servlet/JSP still seems to be semi popular but users just dont like the swing desktop (and yes I have seen many horrible & poorly coded swing apps). There seems to be a misconception that Java development is not productive, support cost are higher and time to market is orders of magnitudes faster with .NET based applications. In reality (IMHO) there are just alot of poor Java developers out there turning out bad code, and the same can be said for .NET but management perception always rules the day in the end.

  152. Why java is still compelling by The+OPTiCIAN · · Score: 1

    I like java, but I don't love it. Lots of things are laborious and it doesn't suppot first class functions elegantly. Processing lists is tedious when you're used to how python does it.

    However!

    As far as I know, Java still has far and away the best tools for web application development. I don't know much about J2EE, but there's all that to start with. Then there are the webobjects descendants. WO itself, and then open souce tools that do similar things (often a much better job of them and with far less pain from quirkiness): tapestry (templating), cayenne (persistence), hibernate (persistence).

    I've heard suggested that the python framework turbogears might be set to take over as the leading webapp development environment.

    But then - this article was about hype, not reality, so perhaps my coment is irrelevent? ;)

    --


    Believe with me, my saplings.
  153. How didn't they think of it? by Peaker · · Score: 1

    I think the entire Python community is in debt for your comment, helping them realize the error of their dynamic typing ways.

    Seriously, now, if you take a little less patronizing look of the situation, you'd realize that Python developers realize the merits, advantages and disadvantages of dynamic typing. Pythoneers dream of static typing via type inference (the PyPy and other projects), but they wouldn't dream of explicitly and redundantly repeating the declarations of all types. This would reduce Python's expressiveness by orders of magnitude, making it as low as Java's, while also making code very redundant and thus resistant to changes.

    Python is not missing lessons from the past, and dynamically-typed code is just as scalable as static code, it just requires modularity and basic unit testing.

    In fact, the more powerful approaches enabled by dynamic typing enable more powerful scalability. The lack of scalability is a myth, and Python projects scale up wonderfully (while retaining amazingly low line counts).

  154. where "you" = sloppy programmer by Peaker · · Score: 1

    Seriously, I (almost) never have these bugs in my Python code.

  155. Re:where "your partner" = sloppy programmer by NutscrapeSucks · · Score: 1

    Which is great until you get to be on a project big enough to have multiple developers

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
  156. Java is Like Church by ObsessiveMathsFreak · · Score: 1

    Java remains an excellent choice for serious web apps which you're going to want to maintain later.

    Java remains an overly verbose and inflexible language that requires intensive and detailed study of the gargantuan API before ANY development work can even begin. I have never understodd the allure of Java, and I probably never will.

    After reading the article, I've decided to at last take a glimpse at Ruby. First google result was this, an interactive web tutorial. I'm tinkering away like a kid in a sandbox. It's kind of fun.

    Compare to Java. Here's the spec. You WILL need to read substantial portions of this before you even begin to program anything of substance. Learning Java, along with all its quicks, restrictions, paradigms and frameworks, reminds me of going to church and hearing all that nonsensical dogma. I never liked church. Ruby just reminds me of perl.

    For me, a language has to be somehow fun to program in for it to be useful. You may find that ridiculous, but if I'm not enjoying what I'm doing, my work will be substandard. Java was never fun. I don't think java is even fun for Java zealots. Java has always felt like a chore.

    I'm on lesson four in the Ruby tutorial. It feels like it could be fun. I'll let you extrapolate the future.

    --
    May the Maths Be with you!
    1. Re:Java is Like Church by aCapitalist · · Score: 1

      If you want an IDE for Ruby, I would recommend http://rubyeclipse.sourceforge.net/ for non-radrails programming or http://radrails.org/ for rails programming. Both are plugins to Eclipse and work pretty well. I probably don't hate Java as much as you, but Ruby definitely is a more powerful (as in language features) and concise than Java ever will be. To me, Sun had a chance to do something really interesting and productive during the Self days and they chose to dumb down C++. I'll just never be gung-ho about Java. But they do have some good tools...that's for sure. Ruby with a Smalltalk-like environment would be very powerful; and don't forget about the VM coming in Ruby 2.0 which should give it some more cred in the corporate environment.

  157. Applied Maths by ObsessiveMathsFreak · · Score: 1

    You thought fashion fads just happened? It's much more organized than that.

    There's actually a mathematical model for the spread and sustainment of fashions and trends. These are called self-sustaining norms in the paper.

    The most facinating part of the paper is the revelation that many upheld social norms are in fact unpopular amoung the general population, but are sustained by essentially falsely sensed peer pressure. For example, most students privately disappove of heavy drinking, but nonthe;ess engage in thsi behaviour to "fit in".

    I wonder if it's the same for Java programmers. They all secretly despair over their language, but nontheless continue to program in in "because that's what everyone else is doing".

    --
    May the Maths Be with you!
  158. I think the point by BlightThePower · · Score: 1

    is because its about fashion this leads to a self-fulfilling prophecy. You say "forecast" but the nature of the organisation means that they have a habit making what they forecast come true on the basis that they forecasted it.

    --
    Plays violent online games as: Nerfherder76
    1. Re:I think the point by maggard · · Score: 1
      I think the point is because its about fashion this leads to a self-fulfilling prophecy
      So Gartner pronouncing:
      "This will be the year of Tablet Windows!".
      means we all went out and bought Tablet PCs last year?

      Um, raise your hands... both of you...

      No dear, the point is that they're codifying what is already pretty much the popular wisdom amongst their clients. THAT was the point of my post.

      Could they make Raspberry more popular next year? Yes. Could they decree Avacado is back? Sure they could, but only the foolish Tablet PC developers would listen to that prediction.

      --
      I don't read ACs: If a post isn't worth so much as a nom de plume to its author then I wont bother either.
  159. Its like being at a party... by helix_r · · Score: 1

    Its like being at a party and realizing all the cool people left.

  160. NO by Anonymous Coward · · Score: 0

    They are still to complex for end users to get and install. Most people can figure out java. The rest of the populations are just retards. Java rules and nobody can figure that out even 10 years later. dummy.

  161. Java is best in an all java world by hubt · · Score: 1

    I recently blogged why I feel Java isn't growing as quickly as some of the agile languages.
    http://www.chen.net/~hubt/blog/2005/12/maybe-java- is-dying.html

    Summary: Java is great in a large scalable, all Java world, but that's just not reality. Today it's all about pockets of service oriented architectures tied together with agile, interoperable web services.

    The consistency and quality of Java's class library has always been it's strongest suit, so it will live on for quite a while, but I can see why people are slowly shifting away.

    This brings me to my other question. Why haven't we found a new paradigm for relational databases. I know a lot of the strengths, but it just feels like we could have done better by now.

  162. Re:No, the fashion industry has fads well organize by Animats · · Score: 1
    It's a little more than prediction. Read the history of the Color Association of the United States. "A committee representing the textile and allied industries, including silk, wool, thread, button, and garment manufacturers, was selected to choose colors for the following season, have them dyed and issued in the form of an American color card."

    Admittedly, they don't have the clout they used to, but neither does the garment industry in NYC.

    Then there's the Color Marketing Group, which comes on like the RIAA: "Any unauthorized use or possession of CMG's copyrighted Color Palettes and/or related information shall be prosecuted to the fullest extent by Color Marketing Group.!!" Read their 2006 color plan. Consumer electronics will go to a shinier silver next year.

  163. I call BULLSHIT! by Maxmin · · Score: 1

    ...dabbled in it years ago, but didn't find any use for it, but that has nothing to do with my opinion

    In fact it sounds like you have no clue whatsoever about Java, from a developer's viewpoint, let alone system administration. You sound a lot like one of those sysadmins who gets whiny when you have to reconfigure a stock redhat installation.

    Sure mod me down, but the grandparent post got it right. Java was and still is a capable oop platform, and the best alternative to C++ to-date. And it does run well on many platforms -- if you'd actually done any development with it, you'd find it's a pretty small percent of the time that you have behavior differences you have to code around.

    --
    O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
  164. I feel old by localman · · Score: 1

    And here I am still coding in perl. Nobody's enthusiastic about perl any more. But it's still my favorite web development language. Funny how the trends go.

    Cheers.

  165. mentalities... by Stu+Charlton · · Score: 1

    Java evolved out of C++, which also has a gargantuan spec, and C, which also is spec-based (at least the K&R book is something you'll need to read). And you need to understand the gargantuan operating system libraries to get anything done, which are different on UNIX vs. Windows vs. Mac OS X. And there are no standard UI libraries across platform, though you have a number of choices...

    Java is more productive than C or C++ were, which is what its creators really wanted it to be. It's not a scripting language, which has a different value system.

    --
    -Stu
  166. splintering hype cycles by Stu+Charlton · · Score: 1

    It's interesting, the amount of hype being generated really depends on who you talk to. In some people's worlds, .NET is a complete non-player. In other people's worlds, it's all that matters; Java is a fading memory (and what is this weird Ruby thing)?

    Based on what I see in financial institutions, I agree that many IT managers have latched onto .NET as the next "silver bullet", sometimes helped along by Microsoft doing CIO or CEO-level pitches. But I find architecture groups (good ones, anyway) are a bit more level headed, they see Java remaining important, particularly with the advent of these lightweight containers. We've spent 10 years as an industry building a marketplace for standard tooling, utilties, infrastructure and support for Java, it would be a shame to start re-inventing the wheel again for another platform. I would rather see new languages adapted to run on the existing Java infrastructure (the VM, the API's that work, etc.)

    Sure, Microsoft is big enough to build a .NET infrastructure ecosystem single-handedly, but I'm not sure the software industry can afford to do a "rebuild" at this point, which was largely justified by Y2K and the rise of the Internet. Java's timing was absolutely imeccable to get the most impact at a time where things were changing the most. We may, of course, have a similar era of change in the coming decades, but I think it may be a while before Java's success / adoption cycle is replicated.

    --
    -Stu
  167. a big lie? by Stu+Charlton · · Score: 1

    The write once, run anywhere "Promise" is a big lie. Try to write a swing app and run it on windows, linux and OSX to see what i mean.

    Azeurus
    IntelliJ IDEA

    And while not Swing-based... Eclipse??

    It's not a big lie, but it's not perfect. And it's arguably more pervasive that other so-called "cross platform UI toolkits", which if you'll recall in the late 1990's, were pretty rare...

    --
    -Stu
    1. Re:a big lie? by metallic · · Score: 1

      The Azureus GUI uses SWT. Not sure about IntelliJ

      --
      Karma: Positive. Mostly effected by cowbell.
  168. Re:TSR80 BASIC still rules even more! by arnwald · · Score: 1

    >Nothing can beat this beauty:
    >10 PRINT "TEXT"
    >
    >then you would do
    >GWBASIC FILE.BAS

    10 . "TEXT"

    then you would do
    RUN

    or, gasp, simply

    . "TEXT"

    T.

    --
    My other sig is Funny.
  169. XSLT rocks! by Paua+Fritter · · Score: 1
  170. If you would have read the whole post by Anonymous Coward · · Score: 0

    You would have noticed the remark that most languages have some big projects that use them... Google is a nice and high profile, on the other hand could one ask himself (herself) what the requirements are for a language in a project like that and if that means it has to be such a great language (but I guess you haven't and you would not have responded this way if you had). Sure some people at NASA use Python, there are also people there using Fortran/Forth/Smalltalk etc... So that's definately not a case in your case. Once again a major part of the people that do really interresting stuff are not talking about it...

    1. Re:If you would have read the whole post by Peaker · · Score: 1

      Where "really interesting stuff" is very subjective.
      I believe I do "really interesting stuff", most of it with Python, with a bit of C where that's a necessity.

      Anyhow, I only "appealed to authority" because that seemed to be the language you'd understand, saying that all the "professionals" you know prefer to use something else.

      I am not sure what definition of "professional" you use, but most "professionals" I know who come to work for me and prefer to avoid Python (as they were taught in university, or various other places) are not the greatest developers. Once they get acquianted with Python's amazing productivity, they don't look back (and incidentally become a bit better developers in other languages they know...)

  171. Re:"20x slower" is nonsense by Decaff · · Score: 1

    2. Byte code engines such as Java, Mono C# and Python average 7-12 times slower than the first tier...

    Well of course Java is slow for very short benchmarks like this! They are totally unrealistic as a measure of typical Java application performance, as java was never intended to run like C: small command-lime apps. To get good performance from Java (and you certainly can) you need to give the Hotspot optimiser time to work. You simply aren't going to see this benefit in less than a few seconds.

    To show this, I have run the Java benchmark with multiple copies of the input. The results are as follows:

    1 copy: 1.449s
    5 copies: 1.561s
    25 copies: 2.175s
    100 copies: 4.480s

    It processes 100 copies at a rate 15x it seems to process 1! This is because the optimiser has kicked in, and because a significant fraction of that time for 1 copy involves start-up of the JVM and class loading.

    Note that this 15x covers the supposed difference between Java and C++!

    Java can provide very high performance for server-side systems where code can remain in memory and can therefore be highly optimised. The same is true of many other byte-code engines, such as the .NET CLR.

  172. Quite obvious by Anonymous Coward · · Score: 0

    We come from different worlds ;-)

    I've been in many different projects using many different tools, and have seen things work and not work.

    Since you're original statement said you mainly know professionals that prefer Python (That was before I started posting, allready appealing to athority there?), it's obvious that you're in some big Python shop. Hey if it works for you that's just great.

    Just keep in mind that there are many languages and tools out there and many very good people who after working with Python still like to stay away, I have yet to meet one in person who prefers Python (but then again that may also happen someday ;-) ).

    Anyway we'll never agree because we're from different worlds.

  173. Virgin territories for books and conferences by SteeldrivingJon · · Score: 1


    The Java territory is pretty much tapped out in terms of publishing and expensive developer conferences.

    The people leaving Java are just headed for new wide-open territory, where they can write the books, become big names, and make loads of money.

    --
    September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
  174. Syntactically, Ruby is... by attwease · · Score: 1

    I just checked out some Ruby source code for the first time and..oh god, I just threw up in my mouth a little.

  175. Re:Nope. I will have another order of java thank y by Anonymous Coward · · Score: 0

    -- For large sites Java is still the best way to go. Especially for ecommerce sites for businesses. Php is not there yet and is quite inconsistant with a immaturish feeling.

    Yahoo is a succesfull business that's serving 4 bilion pages a day. It's using PHP.
    Name one site/business of a comparable size/revenue that's using Java?
    Marketing literature and CS college indoctrination aside, where do you derive -- empirically -- the notion that 'for large sites Java is still the best way to go'?
    When has Java *ever* been the best way to go for anything? Examples?