Desktop Applications Using HTML & JavaScript (and Python & Ruby


Published on

1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Desktop Applications Using HTML & JavaScript (and Python & Ruby

  1. 1. Desktop ApplicationsUsing HTML and JavaScript (and Python and Ruby)Jeff Haynie@jhaynie
  2. 2. JEFF HAYNIECEO, AppceleratorOpen Source DeveloperTwitter: jhaynieBlog:
  3. 3. Why?Why would I want to build a desktop applicationinstead of a web application?
  4. 4. The experienceFor the same reasons you’re building a mobileapplication instead of running it in the browseron the device
  5. 5. The user experienceThe experience is richer Drag and Drop Filesystem Notifications True offline Backgrounding App-to-app interaction
  6. 6. The interactionDesktop applications typically have deeperinteraction and user affinity
  7. 7. Desktop DevelopmentWindows: Win32 API, MFC, AFC, .NETMacintosh: Cocoa, CarbonLinux: GTK+Cross-platform toolkits:Java Swing, Eclipse SWT, Mono, GTK+Adobe AIR *
  8. 8. Why web technologies?Speed (and thus, cost) of developmentLots of people know them Why not?Great toolingLots of librariesHTML/CSS are good enough for UIPlenty of online resources, trainingMix of great languages: JavaScript, Python, Ruby
  9. 9. Appcelerator Titanium• Open source SDK, Tools (Apache)• Cross-platform (Win32, OSX, Linux)• Based on WebKit• Modular and extensible• Supports JavaScript, Python, Ruby (more coming)•
  10. 10. 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
  11. 11. 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
  12. 12. Titanium Architecture X495) G"/22) *22#"1/04.) T<F) >$B45A)#4/=)89.0($) UG<F) /.=)<4=9#$%)"S).4)#41/#) >$) 6V) W44) ,.%/##$5) CVV) <4=9#$) </."S$%) V/5)*22#"1/04.)4.1$)89.0($) F$K$.=) /.=)<4=9#$%)25$%$.) 5$Y9"5$=) 4204./#) *11$%%)(4=9#$%)7"/)6VL)89:&)/.=)+&;4.) G"/."9()89.0($)/.=)<4=9#$%)6/7/%15"2) +#/345() -,) <$="/) +541$%%) C9%4()P) 89:&) !"#$%&%$() *22) >40?1/04.) >$B45A) C9%4()Q) +&;4.) *+,) *./#&01%) @$%A42) <4.A$&) C9%4()R) C4((4.)D:E$1)F/&$5) G;"5=H2/5&)F":5/5"$%))I$JKJL)M$:N"O)
  13. 13. 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: •
  14. 14. 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”
  15. 15. 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)
  16. 16. HTML 5 ++• Database support (we also have Sync DB API)• CSS animation, transitions, gradients• Custom CSS scrollbars• Web workers• Custom Fonts (@font-face)• SVG
  17. 17. 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
  18. 18. Performance• Titanium runs on various architectures (Intel, PPC, 32-bit, 64-bit)• Running on EFIKA 5200 B (PPC 128MB) •• Yahoo Sideline port uses 1/4 memory of AIR app• Pandora AIR app pegs CPU at 100%, Titanium 8-10%
  19. 19. Demo• It’s usually easier to demonstrate
  20. 20. Where to get it?• Download: •• Currently Preview Release 3• Beta coming very soon
  21. 21. Please talk to me• Looking for feedback, input and help•• @jhaynie• #titanium_app on
  22. 22. Big Thanks!• Thanks to Jonathan Snook for demo code and inspiration•• @snookca