views:

288

answers:

2

Hello,

I've done a little research, and am interested in developing for Android. I've never programmed before, and have no idea how to go from zero experience to developing for a mobile device. My interest is in eventually making some sort of 2d game.

Is there a lesson plan for starting from the ground up? I would think one would need to learn the Java language to start. Looking at the Sun website, it's a bit daunting. Is there a book, specifically, that would wrap up this knowledge in a bit of a directed lesson plan?

I'm not sure if opengl-es is what would be required for 2d games. I've done a little research on this, and it's even far more daunting than Java itself. I can't even begin to figure out where to start with even just opengl, sans -es. My best guess would be that I need further knowledge in Java to continue with this, but even still, is it possible to learn concurrently with Java?

A: 

For learning Java I would recommend a book like Big Java or Core Java. Only once you are comfortable with the language would I recommend moving on to mobile development. I have never done any Android development myself, but recently worked on a J2ME project and I found that books weren't much help. Instead it was best to just start working on tutorials you can find online then gradually work your way into developing small simple apps for yourself. Build your app bit by bit learning as you go.

Probably the most confusing part of it all is learning how the langauge all ports to the new platform and getting your head around building and deployment. But if you start off with small samples you will come across these hurdles early on while it is still easy enough to work out what you need to know, and then you can come back here with specific questions and no doubt there will be a number of people who can help.

DaveJohnston
_Head First Java_ is also a popular introductory Java text. With respect to 2D games, OpenGL is not required -- that is for 3D games. For 2D games, you will need to learn how to use Android's `Canvas`. But, I would definitely start with Java *outside* of Android first for a bit, enough to be comfortable with classes/objects, extends/implements, public/private, package/import, java.io/java.util, threads, and exceptions.
CommonsWare
A: 

The typical answer from experienced programmers is that one should start with Java before moving on to Android-specific code, but I disagree. I think the most important thing for a new programmer is to be able to see the fruits of their work quickly and in a context that feels useful to them. In other words, you need to have some sort of personal project that you're trying to complete. This gives you more motivation than working on some random program in a textbook, and you learn by overcoming the specific obstacles en-route.

Now I must add that I am not an experienced programmer, and I have never tried to teach anyone to program. In that sense, CommonsWare's comment should hold more weight as he has written multiple books on the issue and thus has experience as an instructor. However, I speak as someone who has taught himself to program in Android-Java essentially from scratch. I had dabbled in a few languages like VB (for Excel macros) and C, but I never wrote anything more than about a hundred lines of code long and didn't know anything about object oriented programming.

Of course, doing things this way will be messy. You'll often read tutorials and be confused by why they are doing things the way they are, or for example, what they mean by a "private static" integer or class inheritance. You'll also program with poor style, solving problems with a clumsy or inefficient manner. However, I think these problems are outweighed by the benefits of personal motivation. It's much easier to study something if you know why it matters to you.

The trick however is to make sure you choose easy projects to start with. You must realise that programming anything useful will appear complicated and difficult. Trying to start with a 2d game will not work; there is just too much to learn first. The best place to start is the tutorials on the Android Developer's website. Work with those and see if you can modify them a bit to do different things.

After that, see if you can find some simple things that irritate you with your phone (note: I'm assuming you actually have an Android phone), or things that would make life easier. In my case, I wrote a few very basic programs to do things like change the volume of my ringtone at one press, to go from silent to mid-volume and vice-versa.

Once you've done that, you can tackle bigger projects. Of course, eventually you're going to have to knuckle down and read the 'proper' Java tutorials as you can't bumble along half-blind forever. But to reiterate the point, I think it's much easier to learn if you know why it matters.

Above all, be patient and persevere! It's fun once you're past the initial bewilderment!

Steve H