Programming On Hand Helds

HandHelds can be used to do programming - not just compiling on a desktop using eVC/eVB, Waba, etc, then installing on a HandHeld - but actually programming on them directly and running the code. When waiting at the airport, movie to start, doctors office, coffee shop, bus, etc, after checking email, surfing around for a while, writing notes, or playing games, eventually one feels like doing something relatively productive. The interpreters below allow this. First did it with a PalmPilot back in 1996 with a crude version of BASIC. It was amazing to be in the middle of nowhere and realize you were actually doing (albeit simple) programming and seeing it run.

If all one has with them is a HandHeld it can be fun to do this. People might stare at why you are scribbling or tapping so intensely into your PDA, but why not take advantage of the time, given there are several interpreters in various languages? Your code can often be transferred back to a desktop environment and used in a "real" project with little modification, depending on which language you use. Often you just want to figure out a particular algorithm, function, or SpikeSolution. It is a great way to test ideas when you have nothing else to do and are away from a desktop or laptop.

Examples: Toolkits for ProgrammingOnHandHelds

BorlandCorp downloads at http://www.borland.com/downloads/mobile_sdks.html


PowerUsage aspects

Power(energy) is a scarce commodity. And getting more critical as some addons (e.g. GPS) are power hungry.

So programmers need to be extremely careful about any code that require any hardware component (including waking up the processor) to do work. See article on how WindowsMobile v5 (PocketPc) have switched to using persistent storage to conserve power (ref: http://blogs.msdn.com/windowsmobile/archive/2005/07/14/438991.aspx)

Also see DoesJavaWorkOnHandheldDevices.

There are many HandHeld JavaVirtualMachines but none of them currently allow you to write java on the HandHeld itself and compile/interpret it straight away as far as I can tell. You have to create a class file on the desktop then download to the device. It should not be that difficult to write a RecursiveDescent Parser (could be generated from the JavaCompilerCompiler) for a subset of java to do so - could be written in any language. Or if there is an Eval() function in Java similar to JavaScript a Java desktop program could be made to read a text file on the device and interpret it. So far I have only gotten PersonalJava to work on a PocketPC as a free download all other versions (J2ME or JSDK) are commercial or fixed period trial.

Often, the java compiler (javac) is implemented as a java program itself. For example, sun.tools.javac.Main. I've been able to compile and run java programs on my SharpZaurus using this technique under both the Jeode evm (http://www.esmertec.com/products/products_jeode.shtm) and Sun's Personal Java cvm (http://developer.java.sun.com/developer/earlyAccess/pp4zaurus/). The latter is free, AFAIK.
I've often thought handhelds offer the chance to get away from clunky text-oriented programming languages and into something much more abstract and potentially cooler. Whereas on a conventional computer, it is easier to type than to draw, the reverse is true on most handhelds. I'd love to see a programming environment on a handheld where you program by doodling little flowcharts with boxes and arrows, rather than pecking out the letters for text languages. It should be much easier than typing, and perhaps might stimulate creativity in a way that text languages don't. Has anybody seen this concept implemented before? -- RickSamuels

I tried a visio-like program on Windows CE 2 PocketPC couple years back. It was pretty slow and buggy. The processors are a challenge still they are getting better and faster with version 3/2002/2003, Palm OS 5, XScale. See also GraphicalProgrammingLanguage.
A simple way to program directly on newer Palms and PocketPcs? without installing a lot of extra languages is to use JavaScript that comes with the browsers of these HandHelds. Make an html page that can eval() JavaScript from a text field (that you can edit - see end of JavaScript page), put it on a webserver (even one on a local network) go to it with the HandHelds browser, and bookmark it. It will stay in cache (assuming you don't set cache size to 0), and you can program JavaScript even object-oriented ie as in http://www.sitepoint.com/article/470 which is not available in PocketC or easily in LispMe) and run it from memory without having to re-connect (cancel if it tries to). I can do this with both my iPaq and Sony UX-50 out of the box (I also have Java, PocketC and LispMe but thought this was neat - the SimplestThingThatCouldPossiblyWork).
Frink (http://futureboy.homeip.net/frinkdocs/) is a calculating tool and programming language that is implemented in Java and will work on any JVM Version 1.1 or later. (Although not on some CLDC/MIDP profiles because it requires floating-point math and the BigInteger class.) It's an extremely practical calculator, tracking units of measure through calculations, so you can, say, add feet and meters, and get the right answer. In addition, it's a full-featured programming language with perl-like text manipulation, even object-oriented programming. It even has a Java introspection layer so you can call any Java code from a Frink program, and interface with any Java library you want to use. It can be rather slow to start up on an underpowered handheld, but by reducing the huge standard data file, you can run with less memory and less time. Since it's very easy to read data from HTTP or FTP in Frink, you can easily make little tools in Frink that gather information important to you (stock prices, weather, etc.) if you have a handheld with wireless capability.


Comments on Palm-based environments purely from point of view of really being able to develop on the Palm, not assuming any use of desktops.

Comparing speeds informally, I checked out a Doodle program built with some of the above, seeing how smoothly it managed to draw freehand lines tracking the mouse. On a IIIxe, the compiled Quartus program and LispMe's interpreted one were almost identical in smooth response. Plua did quite well but was noticeably lagging and TinyLogo rather sad and wanted me to wait for the turtle :-)

AndyDent June 2004


ProgrammingOnHandHelds QuickQuestions

Q I need a quick update on BlackBerry. Is it only a Java based enduser environment? (If so, VbClassic, or even MicrosoftDotNet is ruled out as development environments). What competitors exist for this technology? Do the applications perform reasonably on current day (Aug04) handhelds?

BTW, source of my query based on story at http://builder.com.com/5100-6387_14-5265422.html?tag=crm --dl
While programming on handhelds helps hone programming skills (at least enhances programming problem solving even if you don't have a full desk-top environment), sometimes I wonder what it would be like to have a suite of simulation programs for other computer-related tasks. Simulation of unix shells or windows, configuring routers. These might be some of the toy programs one could make when looking for programming "topics". Yes you can put all sorts of how-tos in a HandheldWiki? to remember and refresh how to configure dns on bsd or how to setup a firewall on linux or vpn on win2000 server but isn't it more fun to make skeleton programs that behave sort of like the real thing. You can also put linux on ipaqs and such but what I am thinking is if you have a palm but need to work with various environments on the wider network then simulate them on the palm. It would not even involve real network programming, though you could do that too with many of the environments above. To paraphrase Sun then the handheld computer would "be" the network.
CategoryHandheld

Is the information above all outdated? What current models are good for programmers?

EditText of this page (last edited July 23, 2009) or FindPage with title or text search