I had the idea to build a photo mosaic program rolling around in my head for a while, and was looking at a handful of languages to use for it, as a fairly recent college grad. I did look at Java, since there's a lot going for it on an abstract level. However, I looked at step one (Read in a bunch of images and scale them down so they fit in memory) and naturally blew the stack. So I was left with two choices:
1. Learn how to micromanage Java's garbage collector so it actually freed images I'm done with...
2. Use a language that manages memory directly: http://github.com/lukeschlather/ImageWeave
For less ambitious projects, I use PHP (if off-the-shelf solutions exist) and Python (if I need to build it.)