desktop applications using html and javascript (and python and ruby)
DESCRIPTION
Appcelerator's Titanium allows to build and deploy desktop applications which run seamlessly on Windows, OSX and Linux desktops using Javascript and HTML. Jeff Haynie explains how Titanium works, how to build apps and how it compares to Adobe Air. Watch a video at http://www.bestechvideos.com/2009/12/24/developing-javascript-desktop-applicationsTRANSCRIPT
Desktop ApplicationsUsing HTML and JavaScript (and Python and Ruby)
Jeff Haynie@jhaynie
JEFF HAYNIE
CEO, Appcelerator
Open Source Developer
Twitter: jhaynie
Blog: blog.jeffhaynie.us
Why?
Why would I want to build a desktop application instead of a web application?
The experience
For the same reasons you’re building a mobile application instead of running it in the browser on the device
The user experience
The experience is richer
Drag and Drop
True offlineNotifications
Filesystem
App-to-app interaction
Backgrounding
The interaction
Desktop applications typically have deeper interaction and user affinity
Desktop Development
Windows: Win32 API, MFC, AFC, .NETMacintosh: Cocoa, CarbonLinux: GTK+
Cross-platform toolkits:Java Swing, Eclipse SWT, Mono, GTK+
Adobe AIR *
Why web technologies?Speed (and thus, cost) of developmentLots of people know themGreat toolingLots of librariesHTML/CSS are good enough for UIPlenty of online resources, trainingMix of great languages: JavaScript, Python, Ruby
Why not?
Appcelerator Titanium
• Open source SDK, Tools (Apache)
• Cross-platform (Win32, OSX, Linux)
• Based on WebKit
• Modular and extensible
• Supports JavaScript, Python, Ruby (more coming)
• http://github.com/marshall/titanium
What about AIR?
• Adobe AIR is a great product
• Different architecture
• Not open source
• Very strong (and rigid) security model
• Mature
• Requires Flash
• Requires pre-installed Runtime
Desktop API
• Filesystem - read, write
• Process - start/stop/control
• UI - menus, trays, drag-drop, etc
• Media - sound, video, camera, mic
• Database - online, offline
• Notifications - user notifications
• Network - robust access and protocols
Titanium Architecture
!"#$%&%'$()
*+,)
-,)
*./#&01%)
*22)
+#/345()6/7/%15"2')
89:&)
+&';4.)
<$="/)
>40?1/04.)
@$%A'42)
+541$%%)
>$'B45A)
<4.A$&)
C4((4.)D:E$1')F/&$5) G;"5=H2/5'&)F":5/5"$%))I$JKJL)M$:N"'O)
C9%'4()P)
C9%'4()Q)
C9%'4()R)
<4=9#$)
</."S$%')
G"/22)
T<F)
UG<F)
6V)
CVV)
W44')>$')
,.%'/##$5)
>$'B45A)#4/=)89.0($)
/.=)<4=9#$%)"S).4')#41/#)
V'/5')*22#"1/04.)4.1$)89.0($)
/.=)<4=9#$%)25$%$.')
X495)
*22#"1/04.)
*11$%%)(4=9#$%)7"/)6VL)89:&)/.=)+&';4.)
G"'/."9()89.0($)/.=)<4=9#$%)
5$Y9"5$=)
4204./#)
F$K$.=)
Kroll microkernel
• Cross-platform C++
• Small boot kernel which dynamically loads modules
• Cross-language, in-process binding technology (C++, JS, Ruby, Python)
• All APIs in Titanium are kroll modules
• Separate Github open source project:
• http://github.com/jhaynie/kroll
You focus on app
• We’ll focus on complexities of packaging, installation, updating, analytics, etc
• Apps are packaging in a cross-platform specific manner
• Developers control their packaging
• Apps look and feel “native”
Your happy place
• You can use your-favorite-javascript-framework
• JQuery, Dojo, Mootools, Prototype, etc.
• Capuccino, ExtJS, Entourage, etc.
• Import existing modules/gems (Py/Ruby)
• Even Flash/Flex, Silverlight (and maybe Java/Java FX)
HTML 5 ++
• Database support (we also have Sync DB API)
• CSS animation, transitions, gradients
• Custom CSS scrollbars
• Web workers
• Custom Fonts (@font-face)
• SVG
Titanium Apps
• Focus on writing HTML/JavaScript etc which runs natively on the desktop machine
• Resources are bundled with application and are local (but can remotely use resources)
• No cross-domain restrictions (except remote resources origin touching Titanium)
• Benefit from shared runtime
• Supports Flash, Silverlight and other plugins
Performance
• Titanium runs on various architectures (Intel, PPC, 32-bit, 64-bit)
• Running on EFIKA 5200 B (PPC 128MB)
• http://www.genesi-usa.com/efika
• Yahoo Sideline port uses 1/4 memory of AIR app
• Pandora AIR app pegs CPU at 100%, Titanium 8-10%
Demo
• It’s usually easier to demonstrate
Where to get it?
• Download:
• http://titaniumapp.com/download
• Currently Preview Release 3
• Beta coming very soon
Please talk to me
• Looking for feedback, input and help
• @jhaynie
• #titanium_app on irc.freenode.net
Big Thanks!
• Thanks to Jonathan Snook for demo code and inspiration
• http://snook.ca
• @snookca