views:

255

answers:

8

I've been writing java.io code verbosely for far too long, and stumbled onto Apache Commons IO last week. I've used a lot of Commons before, but never looked at IO, and now I feel silly for writing a notable amount of extra code over the years.

Is there any good resource for Java libraries that isn't overwhelming, besides maybe reading through all of the available Apache Commons once a year to see if anything new was added?

How do you keep up to date on what's out there?



Adding an edit to summarize. Mostly, I'm looking for push technology; something to help me keep up to date, instead of me having to know what I want to learn.

Additional items that require you know a bit to look for something using them (pull):

  • ACM (If this could be pared down more, it'd bump to the first list.)
  • Google
  • Browse the Maven Repository

Also tangentially related, keeping up on Java itself, this blog was recommended:

Any other suggestions? Thanks everyone for the helpful advice.

A: 

Well, giving the (unsatisfactory) answer to my own question, I can just start reading through Apache Commons once a year to see what I might have missed.

That seems like a high-return-on-investment plan for an afternoon, at least.

Dean J
The key to keeping "up to date" is to do it more han once a year
nos
"There's more to keeping up to date than reading Apache Commons" might be the more important point.
Dean J
+1  A: 

The Common Java Cookbook is a very nice reference for useful things that can be done with Apache Commons and some related libraries (Lucene, Velocity).

JacobM
Nice link, that definitely gets an upvote!
Dean J
Okay, reading further on just Commons-Lang, I feel I'm going to be a better developer tomorrow. A+++.
Dean J
A: 

Since the number of java libraries probably exceeds the amount of free time you have to stay informed of them, you should probably evaluate them lazily. Whenever you are about to write something, search Google first.

Mitch Blevins
The problem I have with that is something like Apache IO; I would have never thought to look, but it's saved me a few lines of code everyday for weeks now.
Dean J
+1  A: 

Good question.

  1. Read sites like this one all the time
  2. Read relevant publications - ACM etc. I used to read Dr. Dobbs but have discontinued for about a year.
  3. Review the various main projects periodically - like your example of Apache. Ever so often check back on the site.
  4. Search for projects when you have a task to do before writing it yourself.
Vincent Ramdhanie
5. Communicate with colleagues!
Trick
What other main projects should I be aware of? Any particular ACM publications that are relevant to Java web dev? (I've been overwhelmed by their breadth of reading materials in the past.)
Dean J
@Trick - good point, and probably one of the most valuable. I guess SO is a way to do that too.
Vincent Ramdhanie
@Dean J I subscribe to ACM and I have access to many of their publications. I find that by reading through these I come across mention of many libraries and projects that I would not have heard of otherwise. So I cannot pinpoint one particular pub. By main projects I mean the ones you mostly work with...In my case I will check JBoss hibernate, Apache, and the like occasionally just to see what they're up to.
Vincent Ramdhanie
+3  A: 

Just by reading QA's in Stack Overflow I get a lot of information about new libraries and stuff like that. I found about google collections on reddit programming, I believe. I guess the secret is to regularly monitor forums and discussion groups - by doing it that way, your universe is not limited to the Apacha Commons only.

Ravi Wallau
Okay, I'd never heard of Google Collections, and This Is Full of Win. +1.
Dean J
google-collections isn't Full of Win. It's Made Out Of 100% Pure Organic Free-Range Win, with a Rich Slathering Of Creamy Winsauce.
Cowan
+1  A: 

google > cool new useful java api

:p

Maxime ARNSTAMM
If you think to look for it, yes; I never thought about IO until I stumbled upon it, unfortunately.
Dean J
For every kind of dev you would like to make, Steve Jobs would say : "There's an api for that" :p
Maxime ARNSTAMM
Okay, +1 for the comment. :-)
Dean J
+4  A: 

Be curious. Look at required libs for any Java app you use. When I download stuff like IntelliJ IDEA (or other big apps) I like to see what dependencies they have, poke around in the jars, etc. For example, in the IntelliJ/lib dir I see things like groovy, jgoodies, junit, loj4j, nanoxml, picocontainer, velocity, etc. If you didn't know what any of those were before, you certainly have a reason to do some googleing.

If you use a tool like Maven that does dependency management for you, take a look at what is sucks down every time you add a new required library. Or just browse the maven repository http://mvnrepository.com/

z5h
Good point - be curious. It matters not how many publications are out there if you are not activily searching you will not find...
Vincent Ramdhanie
There are more publications than any of us could read in a lifetime, though; data overload is part of the problem. Reading dependencies isn't a bad idea, and I already do that when I have a chance. Browsing Maven seems like you'd hit data overload again, though.
Dean J
@Dean, yes, you can't follow everything. But there is a nice tag cloud on the side there. The IO tag points to http://mvnrepository.com/tags/io and includes commons-io among others.
z5h
I didn't know to look for an IO item until I stumbled on one; the things I *do* know to look for, I already have. :-) Maven's a *big* place to stagger through blindly, for better and worse.
Dean J
+4  A: 

I use:

Andy Gherna