Wednesday, April 21, 2010

Whenever I write code in Java....

Whenever I write code in Java I feel like I'm filling out endless forms in triplicate.

“Ok, sir, I'll just need your type signature here, here, and ... here. Now will this be everything, or...”

‘Well, I might need to raise an exception.‘

The compiler purses its lips.“An exception? Hmmm... let's see.... Yes, I think we can do that... I have the form over here... Yes, here it is. Now I need you to list all the exceptions you expect to raise here. Oh, wait, you have other classes? We'll have to file an amendment to them. Just put the type signature here, here, ... yes, copy that list of exceptions....

28 comments:

  1. An ellipsis has three dots.

    Also, I agree that Java is verbose.

    ReplyDelete
  2. funny :-), but there's something to it

    ReplyDelete
  3. It seems like some languages/frameworks could desperately need some DRY overhauling.

    ReplyDelete
  4. Prefering PHP over Java?

    Sane men use elegant languages.

    Like Ruby.

    The goal should be to strive make languages as beautiful and elegant as possible. But that takes brain in design, and Java was designed by a corporate moloch to extend control of the economy. No surprise you find jobs as a java guy - it is a market speak language.

    But not a programming language!!!

    ReplyDelete
  5. Just begin to use an IDE instead of a text-editor and you'll be fine.

    ReplyDelete
  6. An IDE doesn't make Java less verbose. Writing the code is one thing, but most of my time is spent reading it. That's when the verbosity hurts.

    ReplyDelete
  7. @cdmckay: Yes an ellipsis does have three dots. A period has one dot. Even if a sentence ends with an ellipsis, it still must be terminated with a period.

    ReplyDelete
  8. If only there were an agile framework built on Java that plays nice with my current Java libraries that would allow me to create applications faster without all the verbosity. http://groovy.codehaus.org/

    ReplyDelete
  9. Came here to harp on about Groovy and ThinkEddy had beaten me to it.

    I also recommend that you look at Groovy.

    ReplyDelete
  10. An ellipsis at the end of a sentence is three dots, followed by a period. He/she did it right.

    ReplyDelete
  11. give me a break. ever code in C++? this isn't unique to Java, noob.

    ReplyDelete
  12. Yes, an IDE can help: "you see, now you can fill all this forms online and print the resulting document... oh, yes, if you need to correct it, you have to fill it again... no, the form doesn't allow to save it"

    ReplyDelete
  13. We wouldn't be saying this a few years ago. Still, we use reference impl where we can and its tough to see them allowing scala in the src. Even though runs on jvm, call java libraries... etc.

    ReplyDelete
  14. This comment has been removed by the author.

    ReplyDelete
  15. Awesome. We both get hacked off by the same thing and blog about it at nearly the same time :)

    My take on it.

    ReplyDelete
  16. I might get hate for this, but whatever...
    I am really starting to enjoy coding in Objective C. I like the syntax, the messaging, the split header/implementation files, and yes, even the memory management.
    Objective C is certainly verbose, but not in the "I'm repeating myself everywhere" kind of way. It's more like spoken language, which makes sense to me.

    That said, I am not a fan of Java or it's slightly more attractive sister, C#. Not because of the languages themselves, but because in order to do anything meaningful with them, you need lots and lots of framework infrastructure. The heck with that. I just want to write a piece of code, compile it, and run it.

    And Ruby...that's just Python with a fauxhawk. Still, it's a nice language, in an "everyone's a winner" special olympics kind of way.
    "Aw man...we built this thing on Rails! We did it in like 20 minutes! Step 3: Profit!!!" Good for you.

    ReplyDelete
  17. I can't belive that nobody mentioned Clojure yet. I work in quite busy Java shop, and we use Clojure in production.

    It's lisp (should be close to jrm heart) and has seamless integration with native Java libraries.

    But maybe I'm just preaching to the choir.

    ReplyDelete
  18. This is what reflection is for. If you can't solve this problem with reflection, then you don't really have reflection.

    ReplyDelete
  19. Maybe you just need to learn to type faster. I don't think type definitions are what's causing you to be a slow coder anymore then I believe your typing skills are. If you can think up a whole program faster then typing "String x = new String()" ... well you're a better man then I.

    ReplyDelete
  20. Regarding ending a sentence with an ellipsis, there should be a space between the ellipsis and the period. Putting four dots ala George Lucas is incorrect....

    ReplyDelete
  21. We need to accept it’s a language for lesser mortals :-) who would write code where exceptions "will" happen and hence it gives a pre-defined way to handle it ...

    Only we should ask java ppl to put Statutory warning "injurious" for others :-P

    ReplyDelete
  22. I think the problem with Java is not it's verbosity, but as someone else said "infrastructure framework". I have to go through so many classes, through so much leaps and bounds, to do anything.

    I need a factory, to create a manager. Then I factor anther factory, to create a stream, then assign that stream to the manager. Afterwords, I give the manager to a dispatcher.

    Then there is an uncaught exception and I have to sift through 50 lines of junk to actually find out what went wrong.

    ReplyDelete
  23. I agree with @www.ithoughts.de; just use an IDE. Sure, writing Java code is a little more verbose. IDE's make it completely painless and add a lot of value (auto complete, javadocs, references, refactoring, etc) which you just don't see in the Ruby/Scala/Clojure communities.

    Btw, good Java developers avoid all the crapy api's and use good ones instead (like Spring, Apache commons, etc). The standard Java apis are so-so. IMO, the value of Java is in the JRE and the third-party packages.

    I disagree that verbose code is less readable. I think its way more readable because you can tell what is going on if your not a language super-guru. See: Perl and BrainF*ck.

    I've tried most all of the latest-fad languages (ruby, groovy, scala, etc). Sure, they are neat for a little web site. I fear they are totally unmaintainable for large (100k+) code bases.

    Real serious projects require real serious tools. Some day languages like ruby will grow up to fill that role but they just aren't there yet.

    ReplyDelete
  24. @ThinkEddy, try play framework: http://www.playframework.org/

    conclusion: play framework is the best thing happened to java.

    ReplyDelete
  25. IDEs help you write code, but they don't help you understand or modify the resulting code, unless they completely hide the resulting code (the way Yacc and Lex do) and let you work in an application-specific meta-language. That's where reflection comes in... it makes the creation of an application-specific meta-language part of the language's own toolkit.

    ReplyDelete