As i remember the time when i was learning PHP, it was suggested to build a simple blog or a forum after reading the language fundamentals. I was told/read that this would cover everything that I would need to learn about PHP from a beginners book.
This advice was out there in a number of places, and after following and working with PHP it seems quite good advice.

Now, i am learning Java and reading the book "Thinking in Java" by Bruce Eckel. I wonder if there is any such set of similar, small projects that I could take up, that would cover all the essentials and most of what is covered in the book.

This question appears to be off-topic. The users who voted to close gave this specific reason:

"Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – MichaelT, GlenH7, Robert Harvey, Dan Pichelman, Dynamic

What would you like to make with Java? Why are you learning it? I bet you can answer your question yourself.
–
BernardSep 28 '12 at 19:41

I want to learn Java to move into android programming, but was not sure whether I wanted to start Java with an app. Want to do something simple first, but just with Java, before adding android to the mix. So I am pretty much open about the Java project. It just has to be interesting and cover the important parts that I am reading about in the book. I am sure I could answer the question and I have a few ideas too. I'm just not sure whether they would be "holistic" enough.
–
kapadSep 28 '12 at 19:43

I would suggest you follow what's covered in the book you are reading. Otherwise, you could always create a simple version of your favourite Android app.
–
BernardSep 28 '12 at 19:49

However, having a good understanding of data structures and algorithms in Java is also an important corner-stone which i definitely recommend to learn. A good recommended book for that is - Data Structures and Algorithms Using Java.

Thinking that each OO (and really, Turing complete) language needs to be "learned" separately is a bad approach. Trust me, I've started like that as well, and then I rethought the whole approach. The idea here is to familiarize yourself with the basic notions common to all programming languages, like how variables works, how references and pointers work, what's up with functions/methods, and then with data structures, classes and objects.

Then look into basic good coding practices: OO principles (at least the major ones), various kinds of automated tests for your code, etc.

Use the language you're already most familiar with to explore all these. Once you have a good grasp of these basic concepts, familiarizing yourself with a new language will be a breeze.

Yes, of course, each language has it's specifics, like they might treat functions or objects of variables slightly different between themselves, but they have a lot more in common than they have discrepancies.

And don't fall into the trap of thinking that learning a certain language mostly comes down to knowing by heart the APIs of the major 3rd party libraries and frameworks created for than language. Especially frameworks. This is something that Java and JavaScript suffer from. It's not their fault, it's how some people think to best approach them. This is another pitfall I fell into at some point. I used to be more worried about what new tricks the latest Spring Framework version can do rather than thinking about how to improve my general coding. This is less of a problem for languages such as C and CPP.

Liked your answer and I agree with most of it. The thing is I already know C, and have done basic(1st year college) courses in both Java and C++. Wanted some suggestions for a simple practice project like the ATM machine example from Mike 's answer.
–
kapadSep 29 '12 at 7:21

The NetBeans IDE has a good selection of example projects, everything from basic Java (an anagram game) to web stuff (servlets, JSPs, JSF) to web services and more. I often find it's easier to learn when I have a working project to play with, instead of wasting an hour or two hassling with the particular details of setting up a project for the first time.

Start with a small project. If you jump start with android programming, you will end-up spending more time for each simple things you need to do -on a later stage.

Start with a simple java project that uses command-line input, does some calculation and makes REST call to a php backend(this will be useful in android)
(for example: accept 2 numbers as argument, and operation as 3rd arg, and perform the operation(+, -, * or /) and post the result to some URL. you can search on using an API for REST calls.
display the result for REST call on CLI.

follow best practices and nice packaging/coding standards as stated on Oracle web sites. I think this will be good enough for your start-up

First of all , php and java are OOP. Since you are more familiar with php , you can try to transform your coding style in php as OOP0-ritten approach. That is, applying encapsulation and data abstraction by diving the programs into classes.

As for the learning, you have to make a clear objective purpose. If you are going to study Android later, you must have a clear mindset about the data structures and object references. Please trust me, I have been writing Android Applications and back-end applications using C# and java for more than one year.

If I were you, I will start learning language C . It is because learning the essence of pass-by-value and pass-by-reference when learning pointers. Once you have make this clear and successfully apply them, learning java and php is no longer a problem , even for Android.

A couple of thing for writing Android is that since you are going to implement a solution for your system using Android, you should handle the Android Activity life cycle and memory handling so that you can run the system smoothly and using the least amount of memory

I have studied C, and basic (1st year college) courses in Java and C++. I also know PHP. I wanted some suggestions on good starter projects. like the ATM machine example from @Mike 's answer
–
kapadSep 29 '12 at 7:19