I saw Bert Grantges of Appcelerator speak on Titanium which is a framework for mobile development. Using Titanium, cross-platform JavaScript is crafted which will be compiled into deployable packages for Android, iOS, and Mobile Web (HTML5 internet browser apps) platforms. The JavaScript works with the native code of iOS and Android allowing for one to work natively in both without enormous pain. It works sort of like Node.js under the hood and eventually it is to run on top of Node.js in version three of its release later this year. I remember attending a geek lunch perhaps a half of a year ago with Josh Arnold and Jeremy Miller of Surgery Logistics in which they asserted that they were building all of their mobile stuff in HTML5 as trying to build natively in two very different environments (iOS and Android) would have been madness. In contrast, Bert Grantges suggested that one can build natively in both environments without writing wildly different code bases and that Titanium is the tool for the job.
Notes:
- Bert asserted that his team does not want to "write once and suck everywhere" with a single rendering context. Instead there is a "write once and be adaptive everywhere" philosophy in play.
- Mobile form factors come in many shapes and Titanium can fit them all by interfacing with them natively so that tab groups looks like iOS tab groups on an iPhone and like Android tab groups on an Android. The Titanium namespace within Titanium is a binding layer between JavaScript and the native API of a given form factor abstracting way the particulars of native code from the coder and allowing the coder to just stay heads down in JavaScript. Debugging for the native languages is included and this takes the pain out of trying to debug code to do with a camera or geo-locator in an emulator where such may be otherwise painful.
- The IDE is Titanium Studio which is built on top of Eclipse. One may run apps in emulators from Titanium Studio.
- There is support for the @2x.png image convention for iPhone.
- Version three of Titanium is to support Blackberry 10 and Windows Phone.
- An MVCesque front end framework called Alloy is coming with version three. Presently there is no separation between styling and the rest of the code one writes in Titanium.
- There is no DOM to interface with in Titanium. This means that Titanium really needs to interface with JSON-laden APIs. When interfacing with SOAP and getting back XML, the only way Titanium can make good is to fake a DOM to be able to wrangle the XML.
- One may also work with mobile web stuff and make apps that run in the browsers of devices in HTML5. What is more, and really exciting, is that one may have hybrid apps of both native and HTML5 hodgepodges. From a native app, one may launch a browser and have more of the app come up in the browser. From an HTML5 app, one may spin up a native window overtop of the browser. A geo-location example of this was given in the talk. A map was placed over top of a web page. Only locally stored web pages may have native content spliced into them like this, so pages that live in the world have to be scraped and then cached locally to create the illusion of them being manipulated in this manner.
- Drillbit is a test harness and there will be a new test harness coming in version three of Titanium.
- The compilation folder for an app will have different deployable packages for iOS, Android, and MobileWeb.
This event was of AustinJS and was hosted at Frog Design as per the norm.
I ran into Kassandra Perch at this event and she recommended the book: Learning JavaScript Design Patterns by Addy Osmani.
Wow - thanks for the detail on capturing this!
ReplyDeleteOne correction I would make is around Blackberry 10 and Windows 8 - these will be supported shortly after their release in the wild - not with our 3.0 Launch of the product.
Thanks again for coming out for the talk and hope it got you thinking about developing mobile apps on Titanium :)
I've been meaning to download Titanium and play it. I'll move it up on my to-do list since you wrote me. :)
ReplyDelete