I am quite proficient in C and know some C++, but never touched Java. Recently I got an idea for an app which I think has potential, and I want to develop it.

I am planning to go Android first, cause it doesn't require a mac/iPhone.

So my question is: can I go straight to learning Android development, picking up the Java syntax as I go along and need it (after all I don't think it's much different from C/C++), or should I take a couple of weeks to learn the basics of Java first and then start with Android development?

  • 17
    Miyagi say: First learn walk, then learn fly daniel-san. – Joel Etherton Jan 19 '12 at 13:37
  • Check this and show me your big grin oreilly.com/android/index.html – Chiron Jan 19 '12 at 22:26
  • 4
    Short answer: Learn Java first before you jump into Android programming. It may seem simple enough for your basic hello world app but anything more complicated than that and you'll run into problems when debugging just because you're not aware of some of the quirks. I'll try to post a longer answer (pointing out a few of the rookie mistakes I come across on SO) when I get some time. – Marvin Pinto Jan 20 '12 at 0:10
  • You want to get somewhat proficient in Java. So spend a few months learning OOP. Java is an object oriented language. So if you learn OOP, you'll quickly grasp java: Take the "Master Object Oriented Design" course on eliminatecodefear.com - One of the best resources for learning practical object oriented design and development with HW assignments – Tazo Man Feb 8 '16 at 4:35

Personally I suggest to study Java first so you won't spend a lot of time googling this and googling that. That will kill your productivity.

And if I'm allowed to suggest some books then I suggest Head First Android Development and/or Programming Android.

On the other hand and since you are proficient in C and knowledgeable in C++, iOS development should really be easier to you to pick since Objective-C is a minimal programming language built on C. But of course, it is your call.

| improve this answer | |
  • Yeah I am considering iOS as well. I just didn't want to purchase a Mac, but I guess I could get a Mini to get going. – Daniel Scocco Jan 19 '12 at 13:43
  • @daniels Yes indeed, Mac Minis are capable, fine and huggable machines. – Chiron Jan 19 '12 at 13:48
  • In addition, by learning Java first you familiarize yourself with basics APIs you will use anyway in Android. – Kemoda Jan 20 '12 at 8:35
  • Is Head First Android actually available other than the online preview (which is reportedly a mess)? – Eoin Carroll Sep 21 '12 at 8:11

I think you should just jump right in. Java is similar enough to C++ that all you will have to get over is the syntax hump. You should just get a good reference like the dietel how to program book and just go for it. You will learn what you need as you go along. Your programming experience will help you get up to speed quicker on creating your apps.

I would also suggest The Busy Coder's Guide to Android and the newly designed Android Developer Guide

The book is worth purchasing as the writer of the book is very active and can help you alot through your learning curve.

Hope this helps

| improve this answer | |
  • 29
    Java is similar enough to C++ What the ... Oh, you mean syntactically. No it's not, unless for loops are the apogee of your career. – yannis Jan 19 '12 at 12:07
  • "unless for loops are the apogee of your career". That is a good line :) – Daniel Scocco Jan 19 '12 at 13:34
  • 2
    @ZaphodBeeblebrox: Ironically, if loops are the apogee of a career then they are also likely the perigee of that career. – Joel Etherton Jan 19 '12 at 13:41
  • Isn't this `Busy Coder's Guide' somewhat dated? It's 4 years old – Konrad Morawski Sep 29 '12 at 13:13
  • 1
    @YannisRizos : C++ has one form of writing for-loops, Java has two. So even a C++ person totally focused on using for-loops should assume they only know 50% of Java. :D – Viliam Búr Apr 22 '13 at 9:34

I would have a play around with Java for a few days just to see if you like it, then just jump right in no better way to learn than get your hands dirty.

Your programming background will help you. There's a lot of good tutorial sites that can ease you into android and java at the same time just try googling for them. Most of all ENJOY!

| improve this answer | |
  • 3
    I'll add that you can probably get away with 1-2 days solid effort on this front or grabbing a book such as Head First Java (there's also a Java for C++ programmers title out there as I recall). It's key to remember that Android != Java, you use a lot of the same syntax, but it's a different VM that runs the code, some things are allowed/restricted, others aren't etc – Martijn Verburg Jan 19 '12 at 12:04

should I take a couple of weeks to learn the basics of Java first and then start with Android development?

Given that you target Android, it makes sense to simply pick their official tutorial of Getting Started kind and start studying it. If it is necessary / desirable to study Java along the way, you can expect this to be mentioned in this tutorial.

Per my recollection early versions of Android tutorials were of acceptable quality. I didn't work with it for quite a while though.

| improve this answer | |

Answering to a rather old thread, but just had to, since none of the answers or comments highlighted what I believe is a very important point i.e. "learning Object Oriented Programming (OOP)". Especially so, in the light of what OP wrote:-

... quite proficient in C and know some C++, but never touched Java...

That might indicate, that OP's Object Oriented Programming (and potentially Design) skills might need some propping up. At least, it did so in my case, and I'd have made a very similar statement.

I'd suggest learning what is called "Core Java", and becoming proficient and then, the switch to Android programming would seem much easier. The benefit of that approach is that Java forces OOP, in following ways --

  • Clean (as in Puritan sense)
  • Easy to grasp (as in simplicity)
  • The only way (instead of having non-OOP alternative)

Also, "Core Java" can be learned pretty quickly for someone already fairly familiar with C/C++.

| improve this answer | |

I decided to jump straight to Android and to learn Java as I go. Start is usually easy - you can get Android Developer Tools from the Android developers site, where you will also find some tutorials to help you make the first steps.

However, without proper Java knowledge, Android development soon becomes overwhelming (at least it did for me). Luckily, there are tutorials for those, who want to learn Java solely for Android development. You can find them here (they are designed for people who already know another language like C++/VisualBasic/etc.).

One way to check if you have enough knowledge to develop in Android is to sign up for an Android MOOC (like this one) and check out the assignments. The logic behind this approach is: Since Android development is what you really aim at, you can give it a go immediately. This way will help you realise what you can do and what you still need to learn. Plus you can always take some time out to brush up your Java skills.

Good luck picking the most effective for you way!

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.