Java is not a dinosaur



  • i did 6 years of java - large scale implementations using everything from J2EE to Swing

    at this point, i must say, it has evolved into a steaming heap of stinky bits

    • checked exceptions - this was a last minute change introduced by Bill Joy right before Java 1.0 went out the door - and has created some of the biggest coding nightmares i have ever seen.  i have never seen more catch/warp/retrow coding in my entire life.  when a company says their app is 50k lines of code - rest assured that 50% of that is dealing with the poorly thought out nature of checked exceptions.  better yet, most of the open source java code i have seen simply catches exceptions, prints the stack trace to stderr, and continues.
      yes, 1 or 2 influential guys at sun think something is important, and you will be forced to live with the consequences for the next few decades.
    • EJB - what the hell???? this has got to be the most insane, redudant, broken, poorly thought out piece of crap i have ever seen.  i understand that they were trying to innovate when it comes to developing component architectures, but this was a sorry piece of poop - nuff said.
    • when referring to java, i hear adjectives such as 'enterprise strength', 'industrial grade', 'high performance', 'stable', 'secure'.
      ok - 99% of what i have seen behind this is a huge mess generating HTML.
    • lack of java versioning - BTW - this is the biggest reason you actually need a container, deployment framework, etc.
      of course the vendors will tell you all the benefits of a container, but fail to point out its the only consistent way of maintaining compatibility with the 288 open source java libraries that you will need to run your HTML based application.
      yes, you need a container to offset the inadequacies of Java.
    • write once, run everywhere - except on different versions of the JVM
      especially Swing
    • interfaceing every standard - for example, rather than just provide a decent XML implementation, you get the JAXP interface with a few factories and a -D for the java command line
    • JVM's are not as stable as they are made out to be - i've seen plenty of production containers segfault with no special JNI loaded
    • mediocre open source implementations - ANT, struts, JSF, hibernate just to name a few.
      yes, i think ANT sucks - it represents less than 1% of the sophistication of previous template based make systems
      most java programmers i have talked to don't have the background to know that all the stuff they love is actually kind of crappy.
      i hate to say it, but it's true

    anyway, i used SML in college for those of you who know about functional programming languages
    i've done years of C/C++.  learned java and like a lot of the language features.
    written tons of perl, TCL and shell scripts.
    started hating java when i realized that only way to scale it up in terms of deployment management was with a crappy J2EE container.

    i've been using .NET for a few years now, and i'm very impressed.

    especially .net 2.0 and c# 3.0 - now we are talking.

    • linking actually exists! there is a linker and assemblies are named, versioned and can be signed - NO NEED for an expensive shitty container product from which you can't debug you applications.
    • no typed exceptions - you've got to be careful, but you see much less catch/wrap/retrow garbage
    • winforms actually perform decently
    • generics
    • anonymous methods
    • lambda functions
    • anonymous types
    • expression trees
    • integrated queries
    • boxing of types
    • nillable atomic types
    • references
    • declaritive attributes
    • properties
    • events
    • value types
    • incredible debugging support

    overall, i've been very impressed, and i'm a pretty language neutral.

    but, i regardless, i have to say that java is looking sad and tired

    why - SUN IS NOT A SOFTWARE COMPANY!

    they don't have the collective experience and knowledge to understand to run software all over the place.

    their claim to fame was solaris - a UNIX clone - that's it

    anyway, enough ranting.

    for those of you who think java is the best thing since sliced bread - realize there were several generations of COBOL programmers who thought the same about IBM MVS with IMS/CICS.
    and that's where i see java going

     



  • huh?

    EJB != Java. Everyone agrees EJB 1 and 2 were BAD.

    ANT != Java, it's not even a Sun product. It was thought up by someone in his spare time. It's actually better than make which is what it set out to do even if it's not perfect.

    API versioning. Can't blame Sun for kiddos writing open source libraries in their bedrooms who don't have a clue about maintaining backwards compatibility.

    unstable JVMs. Haven't seen them, at least not from Sun. Can't blame the language for someone implementing it poorly.

    Your complaints about WORA not working are the same. I've had Java applications written on one platform deploy just fine on 5 or more others using different hardware, OS, and JVM vendor. Try that with anything else.

    Your entire rant makes no sense.

    If there's one poorly designed language that's grown into a monster it's Perl, with C++ making a decent run for top dog in that department.



  • @jwenting said:

    huh?

    EJB != Java. Everyone agrees EJB 1 and 2 were BAD.

    ANT != Java, it's not even a Sun product. It was thought up by someone in his spare time. It's actually better than make which is what it set out to do even if it's not perfect.

    API versioning. Can't blame Sun for kiddos writing open source libraries in their bedrooms who don't have a clue about maintaining backwards compatibility.

    unstable JVMs. Haven't seen them, at least not from Sun. Can't blame the language for someone implementing it poorly.

    Your complaints about WORA not working are the same. I've had Java applications written on one platform deploy just fine on 5 or more others using different hardware, OS, and JVM vendor. Try that with anything else.

    Your entire rant makes no sense.

    If there's one poorly designed language that's grown into a monster it's Perl, with C++ making a decent run for top dog in that department.



    OK, well instead of 'poorly designed', let's say 'poorly implemented' instead.

    Maybe letting every man and his dog write a JVM was not a good idea.

    Also, you were lucky with your WORA deployments, but probably with stuff that uses very standard functionality. After all, sockets are pretty much sockets in every platform, and same for stdio. As soon as you use something a little 'exotic' and very implementation dependent, like swing, prepare for fun.



  • @slashkev said:

    • checked exceptions - this was a last minute change introduced by Bill Joy right before Java 1.0 went out the door - and has created some of the biggest coding nightmares i have ever seen.  i have never seen more catch/warp/retrow coding in my entire life.  when a company says their app is 50k lines of code - rest assured that 50% of that is dealing with the poorly thought out nature of checked exceptions.  better yet, most of the open source java code i have seen simply catches exceptions, prints the stack trace to stderr, and continues.
      yes, 1 or 2 influential guys at sun think something is important, and you will be forced to live with the consequences for the next few decades.


    I know it's currently fashionable to have a go at checked exceptions, so I'll forgive you for bowing to the norm. But I still think checked exceptions are a great thing, when handled correctly. I'll agree - I've seen plenty of code where I've created a new Foobar() only to have to catch 5 or 6 different types of exception, but just because people use the exception hierachy badly doesn't in itself make it a bad concept.

    It's my belief that exceptions should only be thrown if the calling code can *do* something about it - retry, shut things down, try something else, etc. Otherwise the exception can, most of the time, be catagorised as a minor exception (and should be properly logged and recorded and not thrown up to the calling tier) or a severe exception (which should probably be converted into a Runtime exception which shuts the application down). The severe exceptions should, as much as possible, be detected at start-up or on first instantiation. Frameworks like Spring gear themselves towards this.

    In essence, I'd still prefer an exception hierachy which allows (or forces) you to pick your level of granularity rather than one which requires little or no explicit exception handling.


  • I've had Swing applications work without any problems on Windows (several versions), Linux (several versions), and Solaris, thank you very much.
    Maybe if you do things like hardcode system dependencies you're in for trouble, but that's your fault not Java's (as are all the things you mention as faults in Java).

    If you know how to use it, Java is good. Sadly a lot of kids don't know how to use it. They then go on to blame their own ignorance and failing on Java, a common theme in these degenerate days (never blame yourself, but find someone to sue).



  • @jwenting said:

    I've had Swing applications work without any
    problems on Windows (several versions), Linux (several versions), and
    Solaris, thank you very much.
    Maybe if you do things like hardcode
    system dependencies you're in for trouble, but that's your fault not
    Java's (as are all the things you mention as faults in Java).

    If you know how to use it, Java is good. Sadly a lot of kids don't know how to use it. They then go on to blame their own ignorance and failing on Java, a common theme in these degenerate days (never blame yourself, but find someone to sue).


    'work without any problems'. I guess you really mean 'work the same' on said platorms.

    That said, every java GUI application I've seen on windows has been pure shite. Monsters like that stuff Oracle force onto you spring to mind - those guys are paid heaps and they are not 'kids'.

    Shit, the tab key doesn't even bloody work for changing fields.



  • @Quinnum said:

    @jwenting said:

    I've had Swing applications work without any
    problems on Windows (several versions), Linux (several versions), and
    Solaris, thank you very much.
    Maybe if you do things like hardcode
    system dependencies you're in for trouble, but that's your fault not
    Java's (as are all the things you mention as faults in Java).

    If you know how to use it, Java is good. Sadly a lot of kids don't know how to use it. They then go on to blame their own ignorance and failing on Java, a common theme in these degenerate days (never blame yourself, but find someone to sue).


    'work without any problems'. I guess you really mean 'work the same' on said platorms.

    That said, every java GUI application I've seen on windows has been pure shite. Monsters like that stuff Oracle force onto you spring to mind - those guys are paid heaps and they are not 'kids'.

    Shit, the tab key doesn't even bloody work for changing fields.



    It is true that the Java standard GUI is crappier than crap on crappy day. For example, I don't understand why people use JEdit.


  • Most GUIs are crap no matter the language they're programmed in. You can't blame the language for the way it's abused...
    If a programmer fails to map accesskeys when the option to do so is there (as it is in Java) that's hardly the fault of the tools he used.

    If that guy remapped the tab key to something completely different, that's not the fault of Java either (you can do the same in other languages as well), by default it would have worked just fine.



  • @jwenting said:

    Most GUIs are crap no matter the language they're programmed in. You can't blame the language for the way it's abused...

    Correct.

    I was blaming the native Java GIU. I'm agnostic on the qualities of Java itself, as I've never coded anything in it.

    I do like the tactile experience of thos rugged purple scrollbars, though.


Log in to reply