

Where to start - programming for mobile phones - farmerwu

I am not an engineer, I am a finance guy, but I did some coding in high school and college (so I'm not all bad). I do a lot of work with the wireless industry, and I am frustrated that there are more worthwhile mobile applications. I have gotten so frustrated that I want to start writing my own simple applications. How do I learn to program for Android? Where should I start? What programming language should I use? Can anybody recommend a good book on that language for beginners?
======
sark
If you want your app to run on majority of cell phones out there J2ME (Java 2
Micro Edition) is currently your best bet. It may not be as feature rich as
IPhone SDK or Google Android but it is probably the most ubiquitous platform
for cell phones today. You can download a free WTK (Wireless Tool Kit) from
java.sun.com and there are good tutorials on the same site for J2ME beginers.

One thing to remember is if you make use of any of the even a little bit fancy
functionality of the cell phone through J2ME (SMS send/receive, Phone book
integration or location based services) your app probably won't work on real
handset outside the emulator - at least in US. All cell phone carriers here
are control freaks and they have turned off all those permissions for any "not
officially blessed" third party app. This is the main reason for the lack of
any worthwhile mobile applications in the first place!

~~~
mpfefferle
In theory J2ME has wide distribution, but in reality, the platform is highly
fragmented.

I agree that the platform is pretty tightly locked down, and both of these
issues make the platform useless for real development. If you want to write
anything other than a Tetris clone, stick with an open platform.

------
bprater
Consider focusing on one platform like iPhone or Android. Much frustration has
come from engineers that are developing for an assortment of phones, it just
sucks the life out of you.

Android is going to push you towards "Java". And iPhone will hook you with
Objective-C. (Unless you focus on doing web-based apps, which may be a good
way to get your feet wet.)

------
bdfh42
You might not like the idea but Windows Mobile is reasonably well represented
as a phone platform and that gives you a reasonable choice of languages
(probably) targeting the .NET Framework - certainly C# and Visual Basic. At
least that would be a well documented and feature rich platform (although it
does have it's lumps and bumps).

Attractive though Android is there is no shipping phone and thus a zero market
(at the moment anyway) [We have developed an Android app but it's sitting on
the shelf while we wait and see what happens].

------
aleo
I wrote a couple of programs in Python for my Nokia. It was fun.

<http://opensource.nokia.com/projects/pythonfors60/>

------
lpgauth
Started reading 'The Objective-C 2.0 Programming Language'
([http://developer.apple.com/documentation/Cocoa/Conceptual/Ob...](http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf))
today for an iPhone library I have to write and I was wondering if there was a
big difference between objective-c 1.0 and 2.0 (I can't seem to find any books
on 2.0 at my university library).

Also, can anyone recommend a good cocoa book?

~~~
boucher
Objective-C 2.0 introduced garbage collection and "properties", as well as a
new enumeration syntax.

The best beginning Cocoa book is "Cocoa Programming for Mac OS X", found here:
[http://www.amazon.com/exec/obidos/ASIN/0321503619/bignerdran...](http://www.amazon.com/exec/obidos/ASIN/0321503619/bignerdranch-20)

It's a great book, and a huge number of mac developers got started with it.
The new version (which has Obj-C 2.0, Leopard, and other updates) just came
out a few weeks ago.

------
mcormier
For information on android take a look at the videos from the google i/o
conference.

<http://sites.google.com/site/io/>

------
mpfefferle
This is the only Android book I'm aware of. I haven't read it though so I can
vouch for it's quality.

<http://pragprog.com/titles/eband/hello-android>

The only supported language on Android is Java, so I'd stick with that.

~~~
yawn
There's this book too:

<http://commonsware.com/Android/index.html>

------
dazzawazza
I had to write a Java ME game two years ago and I learned nearly everything
from the Sun Java ME site and Nokia's developer tools/docs/forums.

Good luck.

------
jhancock
The latest is <http://www.sproutcore.com/>

Its not mobile specific but is the new framework that Apple is using for its
mobile me apps. This would allow you to dev apps for workstation or handhelds.

The easy language to get started with sproutcore is ruby ;)

