Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
TiConf EU Amsterdam
INGO MUSCHENETZ
Sr. Director of Platform and Tooling, Appcelerator
@bingomar
About Me
Currently responsible for all “Client” products
Led design of Aptana, an open-sourceWeb IDE
Aptana acquired by Ap...
We can’t build it alone…
TheTitanium Community
A FORCE FORGOOD
TITANIUM IS GROWING UP
NUMBER OF UNIQUE MOBILE DEVICES
250,000,000
NUMBER OF REGISTEREDTITANIUM DEVELOPERS
604,000
NUMBER OF CLOUD API REQUESTS
30,000,000,000
FORTUNE 100 COMPANIES USINGTITANIUM
68% of F100
The road ahead
UpcomingTitanium Release
3.3.0 – targeted for mid-July
800+ issues addressed (50% bugs, 50% features)
Continued performanc...
Ti.include()
[gone!]
*
*deprecated in 3.3.0.Will go away in 3.4.0
Alloy
CustomTSS queries
<Annotation> tag support in maps, plus data-binding for
annotation generation
Widget themes
Custom...
Demo: Alloy
CUSTOM TSS QUERIES
CustomTSS Queries
'#boydlee': {
image: '/boydlee.jpg',
width: '75%',
top: 10,
borderWidth: 3
}
/* CUSTOM TSS QUERIES */
'#...
CLI
Windows Hybrid
Project templates
Consolidated module projects
deploy.json is baked into the APK
No more version number...
SDK
NSURLConnection
AppCompat library
CoreMotion module
View Clipping/View Shadows
Full-text search of documentation
Black...
Studio
Push to device is default (no iTunes sync)
Improved Studio Packaging (smaller, more robust)
Configuring Studio prox...
Active Committers
• Opened up Appcelerator
Community
• Reduced active PRs backlog
by 50%
• Invited Open-Source module
comm...
Automation andTesting
ti-mocha
Framework for running Mocha-based unit tests inTitanium
Beta stage
https://github.com/tonyl...
That was the first half (H1) of 2014.
How about H2…or H6?
Ti.Next
Next major release ofTitanium (aka 4.0)
Significant re-architecture ofTitanium
(Mostly) same API
Huge performance ...
Ti.Next Foundation
Foundation ofTi.Next is a new compiler, built from
the ground up for performance, extensibility
Open So...
Hyperloop fundamentally changes game
Hyperloop will allow mixed modes of integration:
Titanium traditional (all-in)
Titani...
What is Hyperloop?
Hyperloop turns JS code into native code by mapping the
native APIs into JS syntax
Hyperloop will be (m...
Hyperloop iOS Example
“use hyperloop”
var view = new UIView(CGRectMake(100,100,50,50));
view.backgroundColor = UIColor.red...
Hyperloop Front-end
Front-end turns JS code into an AST and then
performs transformations on the code to make it
more suit...
JavaScript to Native
Ti.Current
app.js
Titanium
SDK (JS)
Titanium
SDK
(Native)
Ti.Next (Dev-Time)
app.js
Titanium
SDK (JS)...
Example Generation
app.js:
var b = 1;
HL_jscode.mm:
// variable:12
auto b = JSValueMakeNumber(ctx,1);
auto var13 = JSStrin...
JavaScript to Native Compilation
Ti.Current Future
Improved Heuristics
Hyperloop
(H1)
Hyperloop
(H6)
JavaScript
Native
Jav...
Hyperloop Back-end
Back-end generates C/C++ code for target platform
~90% of the back-end code is reusable for all
platfor...
Hyperloop Metabase
Defined platform APIs in JSON format
Automatically generated for all platforms supported
Complete tree ...
Hyperloop Android Metabase example
"java.lang.String": {
"package": "java.lang",
"interfaces": [
"java.io.Serializable",
"...
Hyperloop iOS Metabase example
"NSString": {
"metatype": "interface",
"framework": "Foundation",
"superClass": "NSObject",...
HyperloopWindows Metabase example
"Platform.String": {
"methods": {
".ctor": [
{
"attributes": [
"public",
"hidebysig",
"s...
Hyperloop JS engine
Unified JS engine for all platforms based on
JavaScriptCore
iOS 7.0+ comes with engine installed
Port ...
Hyperloop code re-writing
Huge blocks of code are optimized into pure native
code generation
No penalty for “JS bridge” li...
Hyperloop Experimentation
git clone
https://github.com/appcelerator/hyperloop.git
git checkout v2.0.0
./setup.sh
cd hyperl...
Hyperloop Run (iOS)
cd <project directory>
hyperloop clean library compile package
launch --src=. --arch=i386
Interesting ...
Demo: Hyperloop On Android
GENERATION 6 COMPILER (H6)
Demo: Hyperloop OnWindows
GENERATION 6 COMPILER (H6)
Ti.Next
Titanium APIs are being implemented using Hyperloop and
compiled using Hyperloop compiler
Titanium APIs (and nativ...
Ti.Next Modules
Migration path for modules (still trying to determine)
Packaging likely will change and modules will be
ex...
Hyperloop inTi.Current
Hyperloop is already being used inTi.Current!
URLSession API inTitanium 3.2
CoreMotion API inTitani...
When?
Gen6 compiler close to release:
Almost have enough completed for all 3 major
backends (iOS, Android,Windows) beforeT...
iOS 8
Similar approach to iOS 7. Pre-releases track public betas
In planning stages now. Gathering feedback on areas of
in...
TO NEW ADVENTURES
ThankYou
INGO MUSCHENETZ
@bingomar
TiConf EU 2014
TiConf EU 2014
TiConf EU 2014
TiConf EU 2014
TiConf EU 2014
TiConf EU 2014
Upcoming SlideShare
Loading in …5
×

TiConf EU 2014

3,588 views

Published on

Keynote presentation by Ingo Muschenetz for Titanium Conference EU held on June 28-29, 2014.

Published in: Software, Technology, Education
  • Be the first to comment

TiConf EU 2014

  1. 1. TiConf EU Amsterdam INGO MUSCHENETZ Sr. Director of Platform and Tooling, Appcelerator @bingomar
  2. 2. About Me Currently responsible for all “Client” products Led design of Aptana, an open-sourceWeb IDE Aptana acquired by Appcelerator. Aptana folded into Titanium Studio 10+ years fostering vibrant open source communities Architected web-based framework for secure DoD healthcare applications (acquired by Humana)
  3. 3. We can’t build it alone…
  4. 4. TheTitanium Community A FORCE FORGOOD
  5. 5. TITANIUM IS GROWING UP
  6. 6. NUMBER OF UNIQUE MOBILE DEVICES 250,000,000
  7. 7. NUMBER OF REGISTEREDTITANIUM DEVELOPERS 604,000
  8. 8. NUMBER OF CLOUD API REQUESTS 30,000,000,000
  9. 9. FORTUNE 100 COMPANIES USINGTITANIUM 68% of F100
  10. 10. The road ahead
  11. 11. UpcomingTitanium Release 3.3.0 – targeted for mid-July 800+ issues addressed (50% bugs, 50% features) Continued performance & parity improvements
  12. 12. Ti.include() [gone!] * *deprecated in 3.3.0.Will go away in 3.4.0
  13. 13. Alloy CustomTSS queries <Annotation> tag support in maps, plus data-binding for annotation generation Widget themes Customizing the Android ActionBar using the <Menu> tag Creating Date/Time pickers Keyboard and returnkey type shortcuts
  14. 14. Demo: Alloy CUSTOM TSS QUERIES
  15. 15. CustomTSS Queries '#boydlee': { image: '/boydlee.jpg', width: '75%', top: 10, borderWidth: 3 } /* CUSTOM TSS QUERIES */ '#boydlee[if=Alloy.Globals.isTalliPhone]': { image: '/boydlee0.jpg', borderColor: '#4682b4' } '#boydlee[if=Alloy.Globals.isGalaxyS5]': { image: '/boydlee1.jpg', borderColor: '#70a050' }
  16. 16. CLI Windows Hybrid Project templates Consolidated module projects deploy.json is baked into the APK No more version number formatting for iOS and Android Display iOS logging when running app on device Genymotion officially supported (includes debugging)
  17. 17. SDK NSURLConnection AppCompat library CoreMotion module View Clipping/View Shadows Full-text search of documentation BlackBerry updates
  18. 18. Studio Push to device is default (no iTunes sync) Improved Studio Packaging (smaller, more robust) Configuring Studio proxy configures CLI proxy Alloy productivity features: Jump to event/class/id definitions from controller class Create event/class /id definitions from controller class Create new view and style files through context menu
  19. 19. Active Committers • Opened up Appcelerator Community • Reduced active PRs backlog by 50% • Invited Open-Source module committers • Move wiki guides public and invite comments • Prettify public spaces
  20. 20. Automation andTesting ti-mocha Framework for running Mocha-based unit tests inTitanium Beta stage https://github.com/tonylukasavage/ti-mocha tio2 Framework for runningTi-mocha tests on emulators and devices and reporting results Alpha stage https://github.com/appcelerator/tio2
  21. 21. That was the first half (H1) of 2014. How about H2…or H6?
  22. 22. Ti.Next Next major release ofTitanium (aka 4.0) Significant re-architecture ofTitanium (Mostly) same API Huge performance boost and reduction in app size Improved extensibility Windows support
  23. 23. Ti.Next Foundation Foundation ofTi.Next is a new compiler, built from the ground up for performance, extensibility Open Source under Apache Public License v2 http://github.com/appcelerator/hyperloop Over a year of R&D already on Hyperloop (6th generation compiler under development)
  24. 24. Hyperloop fundamentally changes game Hyperloop will allow mixed modes of integration: Titanium traditional (all-in) Titanium in Native Native inTitanium Titanium in other frameworks (Phonegap, Xamarin) Pure Native (Hyperloop only)
  25. 25. What is Hyperloop? Hyperloop turns JS code into native code by mapping the native APIs into JS syntax Hyperloop will be (mainly) used byTitanium platform developers to buildTitanium APIs or modules A more traditional compiler architecture: Front-end (parse and transform JS AST) Back-end (generate native, platform specific code) +Metabase (metadata about target platform)
  26. 26. Hyperloop iOS Example “use hyperloop” var view = new UIView(CGRectMake(100,100,50,50)); view.backgroundColor = UIColor.redColor(); var window = new UIWindow(); window.addSubview(view); window.makeKeyAndVisible() Need to revist (dn’t pollute the global namespace)
  27. 27. Hyperloop Front-end Front-end turns JS code into an AST and then performs transformations on the code to make it more suitable for native generation.
  28. 28. JavaScript to Native Ti.Current app.js Titanium SDK (JS) Titanium SDK (Native) Ti.Next (Dev-Time) app.js Titanium SDK (JS) Ti.SDK (Native) Ti.Next (Runtime) Ti.SDK (Native) app.js (JS) app.js (Native) Ti.SDK (JS)
  29. 29. Example Generation app.js: var b = 1; HL_jscode.mm: // variable:12 auto b = JSValueMakeNumber(ctx,1); auto var13 = JSStringCreateWithUTF8CString("b"); JSObjectSetProperty(ctx,object,var13,b,0,exception); CHECK_EXCEPTION(exception);
  30. 30. JavaScript to Native Compilation Ti.Current Future Improved Heuristics Hyperloop (H1) Hyperloop (H6) JavaScript Native JavaScriptCore
  31. 31. Hyperloop Back-end Back-end generates C/C++ code for target platform ~90% of the back-end code is reusable for all platforms supported 10% is basically specific syntax for things like calling methods, properties, etc. and other platform specific nuances (differences in file extensions, etc.)
  32. 32. Hyperloop Metabase Defined platform APIs in JSON format Automatically generated for all platforms supported Complete tree of a platform’s public API (classes, functions, types, etc.) Supports C and platform-specific languages (Objective- C, Java, etc.) Uses Clang (+platform specific tools) to generate Rich metadata about the platform
  33. 33. Hyperloop Android Metabase example "java.lang.String": { "package": "java.lang", "interfaces": [ "java.io.Serializable", "java.lang.Comparable", "java.lang.CharSequence" ], "superClass": "java.lang.Object", "attributes": [ "final", "public" ], "metatype": "class", "methods": { "<init>": [ { "exceptions": [], "args": [], "name": "<init>", "attributes": [ "public"
  34. 34. Hyperloop iOS Metabase example "NSString": { "metatype": "interface", "framework": "Foundation", "superClass": "NSObject", "protocols": [ "NSCopying", "NSMutableCopying", "NSSecureCoding" ], "name": "NSString", "methods": { "length": [ { "name": "length", "metatype": "method", "instance": true, "selector": "length", "returnType": "unsigned int", "returnSubtype": "NSUInteger", "requiresSentinel": false, "args": []
  35. 35. HyperloopWindows Metabase example "Platform.String": { "methods": { ".ctor": [ { "attributes": [ "public", "hidebysig", "specialname", "rtspecialname", "instance", "runtime", "managed" ], "returnType": "void", "name": ".ctor", "args": [] } ], "modopt": [ { "attributes": [
  36. 36. Hyperloop JS engine Unified JS engine for all platforms based on JavaScriptCore iOS 7.0+ comes with engine installed Port forWindows and Android Performance testing showed JSC was basically native speed
  37. 37. Hyperloop code re-writing Huge blocks of code are optimized into pure native code generation No penalty for “JS bridge” like inTi.current JS engine runs on main UI thread: No thread context switching / creation overhead Will provide background worker for asynchronous non-blocking tasks
  38. 38. Hyperloop Experimentation git clone https://github.com/appcelerator/hyperloop.git git checkout v2.0.0 ./setup.sh cd hyperloop-cli sudo npm link
  39. 39. Hyperloop Run (iOS) cd <project directory> hyperloop clean library compile package launch --src=. --arch=i386 Interesting options: --dump-ir .hyperloop file, add { "obfuscate": false }
  40. 40. Demo: Hyperloop On Android GENERATION 6 COMPILER (H6)
  41. 41. Demo: Hyperloop OnWindows GENERATION 6 COMPILER (H6)
  42. 42. Ti.Next Titanium APIs are being implemented using Hyperloop and compiled using Hyperloop compiler Titanium APIs (and native APIs) will be first-class JS objects Goal is to generate API interfaces, test cases from API documentation Full Node.js require implementation Will likely deprecate platform specific APIs and provide a compatibility module Likely will reduce size of overall API Titanium APIs will use module design
  43. 43. Ti.Next Modules Migration path for modules (still trying to determine) Packaging likely will change and modules will be expressed in Hyperloop syntax Possibility of a module compatibility shim
  44. 44. Hyperloop inTi.Current Hyperloop is already being used inTi.Current! URLSession API inTitanium 3.2 CoreMotion API inTitanium 3.3 https://github.com/appcelerator/hyperloop/wiki/Us ing-Hyperloop-code-in-Ti.Current-SDK Probably our compatibility layer (so API will be same to developer, implementation different)
  45. 45. When? Gen6 compiler close to release: Almost have enough completed for all 3 major backends (iOS, Android,Windows) beforeTi.Next API framework design can start Likely 6+ months from this point Target is beta before end of year…could be sooner Likely Windows Developer Preview Release first
  46. 46. iOS 8 Similar approach to iOS 7. Pre-releases track public betas In planning stages now. Gathering feedback on areas of interest Capability of adding interactive widgets to the notifications area Health Kit / Home Kit Adding Extensions to the Share Sheet Multiple keyboards Camera APIs /Touch API
  47. 47. TO NEW ADVENTURES
  48. 48. ThankYou INGO MUSCHENETZ @bingomar

×