views:

214

answers:

6

I've decided to get some experience working on some project this summer. Due to local demand on market I would prefer to learn Java (Standard and Enterprise Editions). But I can't even to conjecture what kind of project to do. Recently I had some ideas about C. With C I could to contribute to huge Linux projects. I don't mean that my work will be surely commited. I could get the code and practice with it. But C it's not right thing to get good job in my area. In case of JavaSE there is a chance to develop some desktop applications. But thinking about JavaEE I get stuck. I'll be very thankful for answers.

+6  A: 

CodingBat.com will give you good core Java practice.

Project Euler is still the best for all around practice. You can use whatever language you'd like to solve the problems there.

For actual projects, I almost always start on something easy like a Twitter client. It gets you exposure to all the basics along with UI and network communication. You can work up from there. Just don't start with something so overwhelming that you can't figure it out and want to give up. That's not going to get you anywhere.

Justin Niessner
+5  A: 

The best advice is: work on a project that you have personal interest in. Something based on your hobbies, maybe.

If that doesn't work, make a blogging / CMS engine. Or an online photo album. Or an eStore. The world doesn't really need another of any of these things, but it will give you some good practical experience with JavaEE.

Another benefit of "re-inventing the wheel" (for learning) is that you have probably already used systems like these described above, and you have a good idea of how it can work, and maybe you have your own ideas of how it could work better. That can make requirements much simpler, and also will give you a sort of benchmark so you can see how close you can come to building a tool like the "real" ones out there. And if yours is really great, well, maybe release it and see what happens. ;)

FrustratedWithFormsDesigner
A: 

There are many Java-based projects on SourceForge. Tinker with one you find interesting.

Leif Carlsen
A: 

I've implemented either a betting pool or a Baccarat game in almost every language I've learned.

This type of software covers:

  • Dates and times, with calculations
  • Currency types and things that can be converted to and from currency.
  • A discrete set of rules that is easy to test
  • States, transition between states and multiple entities responsible for state transition
  • Multiple users with different views of the same model End conditions
  • Multiple player blackjack and poker would work also.

One caveat is that in my day job I work on financial systems and there is a huge overlap between things to consider when writing a multiplayer game of chance and a trading system.

sal
A: 

build an address book. the concept is simple, so you're not stuck on "what" to write. You can focus on learning your chosen language. You get experience in working with a database, java ( insert any language here), and UI design.

when you decide to learn another language you can create the same thing. Since the database has been created already, you can focus on the language itself.

the concept of inputting data, storing data, and retrieving data is central to a lot of applications.

rxn
A: 

Have a look around http://openhatch.org/ for a project that sounds interesting.

Novelocrat