iProcessing is a fascinating little free app and framework for the iPhone that makes it easier to develop visual apps using Processing.js (the JavaScript port of Processing). First, the good news:

  • It’s a great illustration of what’s possible with HTML5’s canvas and JavaScript; namely, high-performance animations supported within the browser framework rather than in a separate plug-in.
  • You do get access to native iPhone/iPod touch (and soon iPad) features, “such as multitouch, accelerometer, orientation, location, sound play/record, app state saving and so on.” Basically, this is possible on the iPhone by wrapping around those native calls. (The same is possible via WebKit on Android.)
  • It’s a good proof of concept and prototype of how you might generally wrap those features on multiple platforms; I’m going to look at it for the same reason to see how they treat the syntax.
  • It’s a terrific tool for prototyping – the team that built it use it for that purpose.
  • You even get Xcode projects out of the box.

There are, however, some significant caveats to consider. They don’t make this less appealing; they’re just worth examining, because it means that this is one in a number of Processing-related tools. I have some reasons to remain more excited about the Android port, which is a truly “native” version of Processing running on a mobile device – which this, make no mistake about it, is not.

  • You may not actually be able to write apps this way. The creators observe, “It is unknown as to whether apps created using the framework will be approved if submitted to the App Store.” Of course, you can still use it as a prototyping tool, as the creators suggest.
  • This will only work with Xcode. Processing on the Android will support coding right from the standard Processing development environment, the simplified sketchpad, or any environment you choose. I really like that Processing sketchpad, even as others don’t – and that’s coming from a dedicated Eclipse user.
  • Because this is Processing.js, and not Processing, there are limitations. You don’t get OpenGL support, for one. Processing on Android will be a fully native version of Processing, with 3D support (via GLGraphics). And because Processing is written in Java, the Java Processing (on Android, Mac, Windows, and Linux) can easily interoperate with the wealth of other available Java libraries out there.

Don’t get me wrong – I’m becoming a huge fan of what the Processing.js folks have done, because it is browser based. It’s more about appreciating these as a set of complementary tools, all using the same syntax, making it easy to sketch in code in a variety of contexts.

Mostly, the appearance of iProcessing is a reminder to me that I never did fully research a question a lot of folks have been asking, which is just how much is possible inside the browser. For instance, could you do a browser Processing.js implementation that would allow those JavaScript sketches to run in Mobile Safari and access some of these features? What about in similar WebKit-based browsers on new Palm, Symbian, and Android devices?

I am truly impressed with this, and since I’m trying to work a bit more with Processing.js, I’ll be downloading this, for sure. I just tend to look at this and see the potential for a cross-platform browser solution, even without Java, and not only the iPhone.

I know we have some WebKit and JavaScript experts out there, so as I work on that larger project, let me know if you have ideas or want to point me in the right direction.

Check out the solution:

Teaser: Processing is Coming to Android

  • I love the idea of running Processing in browsers and experimented with processing.js in Safari on the iPhone some time ago:&nbsp ;http://www.rockitbaby.de/experiments/processingjs-on-iphone – Here are some of the standard processing examples translated for the iPhone http://www. rockitbaby.de/experiments/iphone/processing/
    I think there is some cross-platform potential in mixing http://phonegap.com/ with Processing.js

  • Peter Kirn

    Thanks, Michael!
    I guess the question is, what is access like for:

    more than one touch point?
    accelerometer / location

    <div>I think some mobile implementations do provide some of this functionality. I know it may vary from phone to phone.</div>
    <div>Somewhere I think I have notes someone sent me ages ago, too. :)</div>
    <div>Obviously, there are still going to be advantages to doing what they've done here — and the browser is necessarily going to be less functional. But then, the ability to point someone to a URL on *any* phone would be awesome. Even on Android, where you don't have the app distribution issue, there are times when you'd rather give someone a web page and have the app appear immediately, without an apk file. :)</div>

  • me too i tried processing.js on the iphone some time ago using the embedded safari browser; i'll definetly try iProcessing ' cause it looks pretty handy when it come to rapid prototyping or speed-porting code.
    in the same spirit (with good control over the hardware) people should check out also the openframeworks port.

  • Peter Kirn

    Well, right, exactly, and the openFrameworks port is a bit better-suited to that kind of application. We have seen people successfully distribute oF-based software, too.
    I have seen indications, though, that Java could perform well, too, and with the NDK it's still possible to use native code on Android. openFrameworks could probably run on Android, but I think it'd be overkill and not as well-suited to the task. (oF on the N900 must be nice, though; has anyone tried that?)

  • A couple thoughts:
    1. The iProcessing developers (Luckybite) used the iProcessing framework to develop their BirdBox app, which is available on the App Store. Given that, wouldn't it make sense to assume that merely using this framework wouldn't prevent an app from being accepted?
    2. My assumption is that you'd still need the $99 iPhone Developer SDK to be able to build apps for your own device, just like any other native iPhone apps. Correct?
    The mere fact that this is available is really exciting. It certainly opens up new avenues for artists, designers, and coders who use Processing, as well as new ways to build apps for the iPhone family of devices.

  • Peter Kirn

    1. I'm hopeful, at least. SOME things have been accepted.
    2. Yes, you'd need the SDK in order to deploy your apps.

    I think one of the nice things about getting x project on platform y, even if it's not the most direct way to work with it, is the kind of things you learn along the way.  For example, getting OF on the iphone involved abstracting the windowing toolkit, which allows OF to run as a full fledged cocoa app or headless, etc.  The same thing of getting processing.js on iphone — there's quite alot of interesting bridge work being done there.    At the moment, I'm researching OF on adroid NDK at the moment, not because it's an ideal fit (by any means) but because sometimes fitting a square peg through a circular hole leads to curious discoveries, and the more options and devices that your sketches and code can run on, the better.    I haven't looked at the N900, but we've got a few at the school I teach in, might be interesting to see how that works.
    Anyway, I'm psyched about projects like this and ingenuity involved.   Had the same feeling as when I saw seriality:
    with a little bit of glue, hooking anything to anything is possible 🙂

  • Joe Zydeco

    Luckybite used iProcessing to prototype the app, not build the final app.

  • Well It's good I tried it on safari on iphone what I like about this is It’s a good proof of concept and prototype of how you might generally wrap those features on multiple platforms.

  • While this news is not quite at the "Max for Live" level of CDM excitement, it is pretty exciting!
    So, if iProcessing/Processing.js can prototype, do cool animations on multitouch devices, and cross the iPhone/Android divide (and if we can work out those little HTML5 issues), does this put a nail in the Flash coffin, so to speak?  (at least until CS5 comes out . . .)

  • Peter Kirn

    SkyRon: I wouldn't nail any coffins, but it means that between JavaScript and old-fashioned Java, you can target just about anyone using Processing. (You'll need Java for old browsers that don't support HTML5.)
    I can also say that for *me*, Processing long ago eliminated any desire to use Flash. That's just me, though.

  • Pingback: Make iPhone apps using Processing? : SAI()

  • Pingback: Enlaces sobre el iPad()

  • I just posted an Android app that renders processing scripts over Webview. Check this out: http://code.google.com/p/my-processing/