Tuesday, October 02, 2007

The best mobile development platform for hobbyist programmer - II

Just did not realize that the post would be on slashdot, and now I am scared to go though the comments there.  I was looking for 5-6 comments on my blog but I've got a lot more than I wished for. There was quite a lot more that I wanted to add in that post, but that would be for some other day. Since I saw a lot of people visiting the blog I wanted to know a little about what you guys think about the best mobile development platform. Also are there any more crazy people out there (besides me)  who even think about programming their mobile phones?

Just to answer a few comments on the blog post I missed out Maemo 'cause I was talking about software development on the mobile phone. And as far as comparing iPhone which is supposed to be "hardware" I meant the OS on iPhone as a platform for development.

"You forgot Nokia's Python implementation for their Series 60 line of phones. As far as joy in programming goes things won't get much better than with Python. Besides, you don't need a huge SDK like Visual Studio to get started, any text editor will do."

I have used Python on Symbian and it is quite interesting. Its great to get going on the Symbian but again its not the easiest thing to start with if you have no idea about Python.

Let me give you a personal perspective on the mobile development scene. I bought my first phone in 2002-03 and the only reason I bought it was 'cause it had J2ME. I even got the whole environment setup and after dabbling in it for a while I soon realized that I was trying my hand at MIDP 2.0 while my phone was MIDP 1.0, after a few hiccups and not being able to transfer the final jar file onto my phone I gave up on the idea. At that time there were hardly any phones with MIDP 2.0, the same thing is with the Sun Java Wireless Toolkit 2.5.1 for CLDC today. I have no idea of any phone that supports it but that the one on the top if I want to download the toolkit today. But the scene is quite different today and the Java ME platform offers quite a lot of things today, and its easy to startup and deploy things.

The second phone I bought was the Motorola A780 and it had Linux so without looking for a SDK or tools I bought it for $550+ the moment it was launched. When I finally got the phone I realized there was nothing much I could do with it. There was no easy way to develop a native application. The only supported platform was J2ME and that made the whole experience a little crippled. I never went beyond the "hello world" applications. Though it was easy to develop using J2ME but still not something what I was looking for.

Finally this year I bought a Symbian S60 3rd edition based E61i, and realized no easy way of developing for this platform either. The whole certificate clamp down was enough to scare me. I finally settled with python for a few quick programs but bundling a 2+ MB runtime with a 100Kb script seems like an overkill.  I again looked at J2ME, the development platform is good and I don't think I had anything to complain about.

Recently I got a WM6 based phone and just to start with it I played around with the compact .net framework. The first concept application was ready in less than a hour. It was nothing big just fetching information and displaying it. The whole experience was amazing and fast. Not that this is the best way of developing applications. But the fact that I could run the application on the mobile unmodified was amazing.

Let me take some more comments. The more I read these comments on my blog the more scared I am to go through comments on slashdot.

"regarding JavaME and the wireless toolkit 2.5.1 (wtk) I have to point out that before writing about the tool author should've read at least users's guide. He would find out that wtk2.5.1 allows to develop for all phones with java. Even if the main feature of wtk2.5.1 is support of MSA (jsr248) it allows also development for JTWI based phones or plain CLDC 1.0 MIDP2.0 based phones. And where did you find swing for Java ME in wtk?"

After going through this comment I really felt like an idiot but could you please run this sample provided with the the WTK http://vivekjishtu.googlepages.com/BasicJButtonDemo.jar . This is first sample I started with this time around.

// Source File Name:   BasicJButtonDemo.java

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintStream;
import javax.microedition.xlet.*;
import javax.swing.JButton;

But I do see javax.swing.JButton in the profile I had chosen. This demo is meant for a mobile phone but I was not able to run it on any of my phones. I eventually got a sample running but the whole experience was not something I liked. Plus its not my job its just my hobby so no point in RTFM. Though eventually I had to go through the manual :P. Let me go to the next comment.


"Typical of most Indian "developers" I know -- thinks he knows everything, in fact knows nothing."


I have no idea how I should answer this one. This is the kind of comments I am scared of on slashdot. Again this is not my job I am just looking for a platform where I can work on as a hobby and learn something new.


"You might want to double-check your facts about the Motorola A780. It only supports third party Java apps, but Moto is happy to provide both a Java SDK and the Linux source code for the phone."


They do provide source code to the Linux kernel under GPL but they have no SDK to develop native Linux applications, and if I remember clearly they released the kernel code after a few people persuaded Motorola to release the code.


"You can not use the Visual Studio Express to create Windows CE and Pocket PC apps. You must buy $$$ at least the Standard edition to use the Windows Mobile 6 SDK.
In contrast, you can download the Netbeans 5.51 IDE for free and start programming J2ME CLDC and CDC mobile apps
."


This is the inconvenient truth and I hate saying it, I did have access to Visual Studio so it was easy for me to develop the application. If I just had the SDK and had to use another editor to develop the application it would take a lot longer to develop it. For someone new Java ME with Netbeans wins hands down. Earlier Microsoft used to bundle up a special VC++ and VB Embedded IDE in the SDK but I could not find any such thing online now (Correct me if I am wrong on this one).


"...or want to develop for the huge installed base of the Palm OS?
For that matter, if you're a hobbyist programmer, why would you develop for anything other than the one you have? Are you looking to buy a platform to do mobile computing? Or seeking to develop an app that you hope "just works" on a platform that you *don't* have?
"


Yeah! you are right about this :), but lately I've not seen too many people with Palm OS based mobiles.


"http://en.wikipedia.org/wiki/Access_Linux_Platform
It's been around since 2006. I can say I've seen 700-series Treos running this."


This comment left me thinking for a while if I really had made a blunder and Plam had already launched their Linux based platform. But this next comment answers the question.


"Ummm... Where the heck did you see a 700 running ALP? As a palm developer I can say this as a fact:
ALP doesn't run on the 700 or any 7xx :-) Are you thinking of Hackndev linux? (
hackndev.com)
Furthermore, Palm will NEVER run ALP. Palm and ACCESS are on rought terms at best.
Palm is developing its own LinuxOS, which accordingy to Ed Colligan (CEO, Palm Inc) will be available by the end of the '08.
Seriosuly, if you show me a 700 running ALP, i'll lop off my arm.
"


"Blackberries are programmable in Java , beside J2ME it has its own GUI API. RIM has a full development environment that you can download for free from their site, that includes emulators etc.
I programmed blackberry for almost 2 years and I have to say their developer support is fantastic.
"

Thanks for the insight.


And now for the final word on this topic.

13 comments:

Martin! said...

You should not be scared of comments. Sure, some are good, some are bad, and some are pointless... You expessed an opinion on some programming platform for mobile device that a "hobbyhist" could use. You had some criteria implied in your evaluation. We don't know all of these (one was : must not have to read a manual, as I got from your blog).

Anyhow, I thank you for your articles. This will help me chose my next mobile device, as I'd like programs some tools (for fun)

Martin!

Clay Dowling said...

Nuts to the negative comments. If you found a platform that is working for you, I don't see any need to defend it just because of some negative comments. What works for you works. As you said, it's not your day job, so go with what causes you the least pain.

Chris said...

As to the comments, take the good, leave the bad.

As someone who has worked in ALL of the above technologies, I tend to agree with you. You can develop REALLY complex applications for windows mobile devices really quickly. Alot of my gripes with J2ME involve the nearly completely "roll your own" nature of developing J2ME applications. For example, if I want a really slick/nice looking app, I have to write code to raw gfx calls to draw and manage buttons, menus, ui context, the list goes on. That said, if you are happy with very basic controls, there are some to work with, but if you want a truly professional looking application, forget about it.

Good review, but don't write off J2ME yet. My next fun project will be in J2ME simply because of the widespread adoption...

conr2286 said...

Please ignore the negative comments as most of our products aren't exactly defect-free either. ;-)

Peter Rawsthorne said...

Keep going Vivek, it was really insightful to read your postings on this subject. Thank-you, I agree with the others, ignore the postings that add no value, particularly the ones where people make generalizations about groups of people. Some people really don't understand the issues our world faces. Keep up the great work!

Timothy Trimble said...

Excellent set of articles. As a professional developer, who ran a PDA Software development business, I've worked with many of the platforms. I also worked with the Apple Newton, which I loved.

I agree with the "ignore the bad comments", and go with the good. Personally, I've worked with newton script, java, C, C++, and BASIC on Newtons, Pocket PC's, Palm OS, and Blackberry. I agree that if I was to work on the next killer application, I would go with the Java environment. But, I too, am just a tinkerer on the PDA platforms now. (I now focus on FileMaker development.)

My tinkering tool of choice? NSBASIC. I still carry a Palm device (Treo) and I like the ease of use of NSBASIC for building a quick application. It supports PalmOS, Windows CE, Windows desktop, and they still support the Newton. It's not free, but the price is low, in comparison with many of the other priced development tools out there.

Again, good job, and keep the articles flowing.

Timothy Trimble
The ART of Software Development
http://artofsw.blogspot.com

Anonymous said...

I liked your post and you rule. By the way, (as I'm sure you know) Indian people are cool. The guy who commented on them that you quoted was just being a troll.

Anonymous said...

J2ME development with just the plain MIDP2 libraries is a pain because the platform does not provide good widgets and the actual widgets used depends on the phone. You need to use a third party library that implements widgets from scratch so they are always the same; then it gets much easier. Try J2ME Polish (just Google it), I've found that to be quite helpful.

Chris said...

J2ME Polish == money or an agreement to share money made off of application/let someone else market the application developed using their tools: http://www.j2mepolish.org/licenses.html

While I would love to commercialize one of my "tinkerer" apps some day, I generally won't buy libraries when I can write my own and have them pretty nice. I have some good button, menu, and table classes developed already. Of course, when I write handheld apps for work, I always try to get my employer to buy the useful libraries.

Wendong said...

As a hobby mobile developer, your post shows that you have read a lot about mobile platforms.

The Java ME example you pointed out (BasicJButtonDemo) is an Xlet application. It is for Java ME CDC handsets. I doubt it is provided by Java WTK for CLDC. Although Java ME CLDC/MIDP handsets dominate the market, there are only very few CDC handsets right now.

http://www.blueboard.com/javame/intros.htm
http://blueboard.rimlife.com/javame/devices.htm

If you choose a mobile platform for a hobby mobile developer, BREW is definitely out. You can not install your application without buying a certificate from Verign. You can make your application downloadable to other people without going through carriers.

Anonymous said...

"I finally settled with python for a few quick programs but bundling a 2+ MB runtime with a 100Kb script seems like an overkill."

Gotta correct this. The PyS60 1.4.0 runtime package is a 530 to 570 kilobyte SIS package depending on the target platform version.

On S60 3rd edition it uncompresses to 885 kilobytes on the phone since the executables are kept compressed even on the phone. On older platforms the executables aren't compressed and there the size on the phone is closer to 2 MB.

Anonymous said...

Chris said: "J2ME Polish == money or an agreement to share money made off of application/let someone else market the application developed using their tools"

J2ME Polish is also licensed under GPL (dual licensing model). If you publish your source code under GPL, it is free to use. So for hobbyists it is free, commercial users have to pay.

Henrik said...

Thanks Vivek
You have done a good work with your writing about Mobile Development. This is a very complex world with more and more fragmentation. Many of us work hard to make it easier to develop for mobilephones
Henrik Mobile Sorcery