JOB REFERRALS
    ON THIS PAGE
    ARCHIVES
    CATEGORIES
    BLOGROLL
    LINKS
    SEARCH
    MY BOOKS
    DISCLAIMER
 
 Sunday, June 01, 2008
Best Java Resources: A Call

I've been asked to put together a list of the "best" Java resources that every up-and-coming Java developer should have, and I'd like this list to be as comprehensive as possible and, more importantly, reflect more than just my own opinion. So, either through comments or through email, let me know what you think the best Java resources are in the following categories:

  • Websites and developer Web portals
  • Weblogs/RSS feeds. (Not all have to be hand-authored blogs--if you find an RSS feed for news on java.net projects, for example, that would count as well.)
  • Java packages and/or libaries. (Either those within Java Standard Edition--a la Reflection or the Scripting API--or from Enterprise Edition--a la JMS--or even third-party packages, a la Spring.)
  • Conferences, even including those that I don't speak at. ;-)
  • Books.
  • Tools. (IDEs, build tools, static analysis tools, either commercial or open source.)
  • Future trends you think bear watching.

There is, of course, no prize to be won here, and I'd please ask the vendors (commercial or open source) who watch my blog to avoid outright advertisements in comments (though you are free to rattle off the various advantages of your product in an email to me), in order to avoid turning this weblog into a gigantic row of billboards along the freeway. I am interested in peoples' opinions, however, and more importantly, why you think X should be on that list, or even why Y shouldn't. Keep it civil, though, please--I'll delete any comments that get too vindictive or offensive. (That doesn't mean that you have to agree with me--just avoid calling anybody names. Basic 'Netiquette.)

Oh, and if you want to be mentioned in the article (which will be published on an international developer site), please indicate how you'd like to be accredited. Or not. Whatever you prefer.


Monday, June 02, 2008 5:08:00 AM (Pacific Daylight Time, UTC-07:00)
One book: Programming Groovy by Venkat Subramanian.

Seriously though...

Effective Java by Joshua Bloch. This is the book on writing idiomatic Java. My company is on their 3rd book club of this book since it's publication, now on the 2nd edition. It is our way of assimilating new hires into the collective. To a lesser extent, Java Puzzlers is a good way to learn the weird edge cases of the platform and really learn Java and the JVM, but is by no means required reading.

Refactoring by Martin Fowler. I've always felt Refactoring was a better "bible" than Design Patterns. These are just good, solid engineering skills that oftentimes transcend languages and sometimes even OO in general. I'd point someone to Refactoring long before Design Patterns.

As for tools, I'll paraphrase Mike Nygard by saying something like, "The IDE wars is like a marathon and both Eclipse and IDEA are minutes from the finish line but miles ahead of the closest competitor." Or something like that. I recently tried to use Visual Studio to toy with F# and was reminded how far the inventors of IntelliSense have fallen behind. (And yet they still have the best WYSIWYG form editor that hasn't changed much since VB 6, imo)

As for conferences, No Fluff has been a really positive force in my career. It exposes me to new and practical frameworks and languages. I always leave the conference with more energy than I started, and usually leave with at least one or two frameworks/libraries to start using at work Monday morning. It's also cheap.

And feel free to quote me as "Just another intergalactic exile earning money in IT to buy parts and mend his hyper boosters, at which point he will fix his space frigate and travel back to his home planet". That should give me an air of credibility.
Monday, June 02, 2008 6:56:53 AM (Pacific Daylight Time, UTC-07:00)
http://www.javaranch.com/
Friendly place with a nice forum an many links.

Books I would say:

Head first Java for real beginners.
Head first Design Pattern.

And + 1 for Effective Java.
Monday, June 02, 2008 9:36:13 AM (Pacific Daylight Time, UTC-07:00)
http://java-sources.net
http://community.java.net/projects/
eclipse, netbeans, intellij plugin sites
http://apache.org/
http://codehaus.org/
Prashant Rane
Monday, June 02, 2008 2:01:39 PM (Pacific Daylight Time, UTC-07:00)
I'm a tools whore so I feel obligated to post something but I don't have time to go into all the details. Note: some of this stuff is Windows only.

IDE: IDEA. Accept no substitutes. I know it's a religious issue for folks but IDEA is just better than anything else (and yes I've tried them all). I wish it was Eclipse so I could save some money but it ain't. The reason is that IDEA saves you a keystroke here and there (and yes it adds up fast). Their IDE is just smarter and it will take most users at least a month to realise that (unfortunately). I also recommend the Sixth and Red River plugins.

XML: If you need to deal with gobs of XML, then oXygen is the IDEA of XML editors. No, seriously. It's also significantly cheaper than Altova's offerings.

Static analysis: IDEA has some great stuff built in (including a simple dependency matrix) but I like to suppliment it with STAN (by Odysseus Software). A picture is worth a thousand words and STAN gives you that picture. There are some others out there like Structure 101 and Lattix but the Structure 101 interface is very awkward to me and Lattix is very expensive. Don't get me wrong, I love dependency matrices but the truth is you still can't fit a whole project on a single screen. And yes, I've tried all three of these products. They are all good and your mileage may vary but right now I go with STAN (even though it's pretty new). Btw, none of these support dynamic languages at the moment.

LDAP: Softerra's LDAPAdministrator. You may not need a strong, generic LDAP administration tool but if you're doing LDAP development it's VERY handy. This is the only one to look at and the price is actually reasonable.

SOAP Testing: SOAP UI. There's a free version that will do what most people need and there's a pro version that will do all the rest. Very nice tool for testing out SOAP web services.

Text editing: UltraEdit. It just seems to have all the junk you need. Not much to say about tools of this sort.

I don't have time to go into libraries and books right now but for the love of God, no Struts or JSF pls. Thanks.
Marc Stock
Monday, June 02, 2008 2:06:13 PM (Pacific Daylight Time, UTC-07:00)
You should include The Pragmatic Programmer and Joel on Software. While not exclusively Java books, they are tremendous. NEJUG is a great networking opportunity and generally quite enjoyable. NFJS is tremendous (I enjoyed your talk on Class Loaders).

I like the Java Specialist's Newsletter (Heinz Kabutz) and for anyone just learning, the Head First Java is fantastic. Their series of books is truly FUN to read (who would have thought of that?)

As for the IDE - sigh. I just started using Intellij at my new job and coming from a die-hard, Eclipse fan-boy, I'm not sold on it yet. But all the smart (read: NFJS speakers) love Intellij, so I'll keep trying!
Eric Kerwin
Monday, June 02, 2008 4:37:42 PM (Pacific Daylight Time, UTC-07:00)
Your own list?
http://blogs.tedneward.com/2005/08/21/Recommended+Reading+List+Old+Version.aspx
Forthwith, Electronic Rodent
Tuesday, June 03, 2008 1:13:20 PM (Pacific Daylight Time, UTC-07:00)
You may a also check our linkblog: jarpit.com. Colleagues and I created it to share our findings (yes we're working between surfing ;-). Not many submitters by now, though. Maybe you find it useful, take a look ...
Saturday, June 07, 2008 6:31:18 AM (Pacific Daylight Time, UTC-07:00)
I'm going to propose QCon as an excellent conference - I've attended two of them now, and I have been blown away by the caliber and number of speakers that are there. It's cross-technology, and the Java stuff is always very interesting - Rod Johnson comparing the JCP to the Commissar of the USSR, a lively panel on the Future of Java, and sitting in an interview in which I thought Ted was going to attack the interviewer (alright - that last one wasn't Java, but it was damn entertaining!! ;) )

For books, Joshua Bloch's 'Effective Java' and 'Release It!' by Michael Nygard are excellent developer books. 'Lean Software Development: An Agile Toolkit' by Tom and Mary Poppendieck is also an excellent book for giving you the bigger picture and helping you to figure out ways of doing things better.

Eclipse is my favourite IDE, period - however I hear good things about IntelliJ as well, and you must have a pretty damn good product for it to keep market share against a free, open source product.

For future trends, I really like the modular toolchain idea that Ted has discussed in the past - I also like where OSGi is going, and when SCA and Java as a multi-language VM is tossed into the mix I see some very tantalizing possibilities. One of the languages which is out there is bound to have a good, clean solution to the problem of programming for multicore parallel systems, right? I also think that OpenJDK will fork a few times, and this will lead to proving grounds for some of the ideas which are out there for the next-generation language/VM/platform (Flash running natively on the JVM, anyone?).

Oh, and I feel that I should point out that I'm an InfoQ Java editor, so take the above with however many grains of salt you choose to - however, I'm not in the business of saying things I don't believe in, and I don't have an advertising budget. I'd offer up InfoQ.com as another good resource for Java, but I imagine that it goes without saying that I recommend it given that I write for it. :)
Ryan Slobojan
Saturday, June 07, 2008 8:48:50 AM (Pacific Daylight Time, UTC-07:00)
Books:
- Brian Goetz: "Java Concurrency in Practice" should be read before any expirements with multi-threaded programming.

- Stuart Halloway: "Component Development for the Java Platform" - contains must-know knowledge about the classloading in the JVM.

"Classic" articles:
- "The "Double-Checked Locking is Broken" Declaration" - http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html - can we please get rid of this anti-pattern.
- your own paper on "Multiple Java Homes" - http://www.tedneward.com/writing.aspx - it is good for every java developer to actually knows what goes on inside "java.exe".
- articles on GC - if I remember correctly Brian Goetz have a good 3-part series on this on IBM's developerworks site (since then, never algorithms have been introduced - but at least the articles gives a good basic knowledge about generational GC, mark-sweep-compact and copying collectors).

API's: The JMX stuff seems to be pretty overlooked. Knowing about the monitoring and management tools for Java should also be part of the basic "toolbox" - one starting article could be Mandy Chungs: http://java.sun.com/developer/technicalArticles/J2SE/monitoring/ - and besides the tools and resources mentioned therein, the newer VisualVM project https://visualvm.dev.java.net/ should probably also be investigated (when time allows).

Tools: FindBugs.

(I would really like to put your "Effective Enterprise Java" on the list too - it's a great read, but I am unsure about it being a MUST-read for all java developers)
Comments are closed.