SlideShare a Scribd company logo
Web plus Native
   in 2012
 @jhugman – James Hugman
Who is this guy?

    • Software Engineer
    • Programming: 20y, Mobile: 4y
    • Won awards for apps
    • Technology agnostic



@jhugman
Order of
           Ceremonies
    • Latest results in Web v Native
    • Issues in cross platform
      development
    • Interesting projects
    • Predictions


@jhugman
Web vs Native


    • Web: Developer friendly           (except, when it’s not)




    • Native: User friendly   (except, when it’s not)




@jhugman
Web
    • Cross platform*
    • Existing libraries
    • Faster to develop*
    • Buzzword compliant
    • Massive developer mindshare


@jhugman                   * Caveat emptor
Native


    • Better user experience
    • Tight device integration




@jhugman
Gartner Hype Cycle
                 Peak of Inflated Expectations



                                     Plateau of Productivity


                            Slope of Enlightenment
              Trough of
              Disillusion
 Technology
 Trigger

@jhugman
Cross-platform
              fallacies


    • “Write Once, Run Anywhere”
    • HTML5 is the answer




@jhugman
Web based UIs


    • PhoneGap
    • Trigger.io




@jhugman
Building UI with
            HTML

    • Webkit fragmentation
    • Desktop ≠ Mobile
    • High profile failures




@jhugman
Write Once, Run
              Anywhere

    • UI metaphors differ between
      platforms
    • Negative messages to users:
      • “We don’t care [enough] about
        you”


@jhugman
Important
           exceptions

    • When app is document focused
    • When utility trumps usability
    • Games




@jhugman
Why Cross
            Platform?
    • For developers:
      • Less to learn
      • Less code to write
    • For business:
      • Lower cost of ownership


@jhugman
Why Cross
    Platform*… Sucks?

    • For developers            fewer tools




    • For users   UX is compromised




    • For designers          Design is compromised




@jhugman
Something better

    • Native, platform specific UIs
    • Share as much other code as
      possible




@jhugman
Architecture Sketch

             Presentation Layer


           Application Logic Layer



              Native API Layer



@jhugman
Architecture Sketch


    • Implementation language
    • Execution language




@jhugman
Technologies
    • Titanium
                            JS
    • Ejecta                     UI in code

    • Kirin       Portable Biz
                     Logic

    • Calatrava
    • j2ObjC


@jhugman
Javascript based
Building UI in Code
           Presentation Layer
           implemented in Javascript



           Application Logic
                  Javascript



               Native APIs
                    Native




@jhugman
Titanium

    • The big hitter
    • Implement everything in Javascript
    • Execute UI in native




@jhugman
Titanium
    + Good coverage of native APIs
    + Reasonable docs
    - Implement UI in JS, so crappy tools
    - Lists are hard to get right
    - Not easy to style


@jhugman
Ejecta

    • HTML <canvas> and <audio> APIs
    • Implement in Javascript
    • Executed using native OpenGL and
      OpenAL



@jhugman
Ejecta
    + Lots of existing libraries (e.g.
      Three.js, processing.js)
    + Faster than WebView’s <canvas>
    - Incomplete APIs for Graphics &
      Audio
    - iOS and Web only

@jhugman
Honourable
            mention


    • MonoTouch & MonoDroid




@jhugman
Mixed languages
Heterogenous
              Teams

    • Multiple people
    • Different skill sets
    • Only small overlaps in skill sets




@jhugman
Shared App Logic
           Presentation Layer
            implemented in native



           Application Logic
                   shared



              Native APIs
                   Native




@jhugman
Shared App Logic
     Obj-C      Java       HTML




             Application
               Logic
                shared




@jhugman
Calatrava

    • Application logic in Javascript
    • Rubyist & Web developers version
    • Progressively enhance screens




@jhugman
Calatrava
    + Start with HTML. Switch to native
      when needed.
    - Limited interaction between JS &
      Native
    - Not very extensible
    - Limited access to APIs
    - Bundles a JS engine per app

@jhugman
Shared App Logic
   Your Obj-C     Your Java




     Calatrava
                 Your Shared
                  Javascript



@jhugman
Shared App Logic
   Your Obj-C    Your Java




       Kirin
                Your Shared
                 Javascript



@jhugman
Kirin

    • Native mobile developers version
    • Designed for multi-disciplinary
      teams
    • Designed to be friendly to both
      ecosystems


@jhugman
Kirin

    + Very extensible
    + Built on top of node.js and npm.
    - Limited access to APIs (currently)




@jhugman
Shared App Logic
           Presentation Layer
            implemented in native



           Application Logic
                   shared



              Native APIs
                   Native




@jhugman
j2ObjC

    • Java -> Objective C compiler
    • Google 20% project
    • Write in Java, execute natively on
      two platforms



@jhugman
j2ObjC + GWT

    + Great tooling
    + Very extensible
    - Alpha release; Buggy
    - Not a tool suite



@jhugman
Predictions
    • HTML5 on mobile will get better,
      slowly
    • Good but not great cross-platform
      solutions continue in small shops
    • Building multiple native clients will
      be accepted as the cost of doing
      business

@jhugman
Summary

    • Business need will drive cross-
      platform
    • HTML UIs still difficult to make nice
    • Fertile ground for experimentation



@jhugman
Thanks
James Hugman – @jhugman
Links
    • Titanium: appcelerator.com
    • Ejector.js: impactjs.com/ejecta/
      overview
    • Calatrava: calatrava.github.com
    • Kirin: github.com/kirinjs/kirin
    • j2objc: code.google.com/p/j2objc

@jhugman
Questions?



@jhugman

More Related Content

What's hot

Famo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a dayFamo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a day
Debnath Sinha
 
Nightmapper's presentation
Nightmapper's presentationNightmapper's presentation
Nightmapper's presentation
Badoo
 
Js foo famo.us- build native quality apps using html5 within a day
Js foo  famo.us- build native quality apps using html5 within a dayJs foo  famo.us- build native quality apps using html5 within a day
Js foo famo.us- build native quality apps using html5 within a day
Debnath Sinha
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
Waqqas Jabbar
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
Sambhu Lakshmanan
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
Ramesh Nair
 
WappZapp Pitch Node JS Meetup
WappZapp Pitch Node JS MeetupWappZapp Pitch Node JS Meetup
WappZapp Pitch Node JS Meetup
Wienke Giezeman
 
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia
lorinbeer
 
Phonegap
PhonegapPhonegap
Phonegap
Tim Kim
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
Brainhub
 
Android development war stories
Android development war storiesAndroid development war stories
Android development war stories
Lope Emano
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
William Grosso
 
Gradle and Your Android Wearable Projects
Gradle and Your Android Wearable ProjectsGradle and Your Android Wearable Projects
Gradle and Your Android Wearable Projects
CommonsWare
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?
Mark Russell
 
Building Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGapBuilding Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGap
Prajyot Mainkar
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react native
Dani Akash
 
When Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable AppsWhen Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable Apps
CommonsWare
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With React
Eric Nograles
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
Mobile development with JBoss Tools
Mobile development with JBoss ToolsMobile development with JBoss Tools
Mobile development with JBoss Tools
Gorkem Ercan
 

What's hot (20)

Famo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a dayFamo.us - build native quality apps using html5 within a day
Famo.us - build native quality apps using html5 within a day
 
Nightmapper's presentation
Nightmapper's presentationNightmapper's presentation
Nightmapper's presentation
 
Js foo famo.us- build native quality apps using html5 within a day
Js foo  famo.us- build native quality apps using html5 within a dayJs foo  famo.us- build native quality apps using html5 within a day
Js foo famo.us- build native quality apps using html5 within a day
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Introduction to PhoneGap
Introduction to PhoneGapIntroduction to PhoneGap
Introduction to PhoneGap
 
WappZapp Pitch Node JS Meetup
WappZapp Pitch Node JS MeetupWappZapp Pitch Node JS Meetup
WappZapp Pitch Node JS Meetup
 
PhoneGap: a brief history and apologia
PhoneGap: a brief history and apologiaPhoneGap: a brief history and apologia
PhoneGap: a brief history and apologia
 
Phonegap
PhonegapPhonegap
Phonegap
 
React Native in a nutshell
React Native in a nutshellReact Native in a nutshell
React Native in a nutshell
 
Android development war stories
Android development war storiesAndroid development war stories
Android development war stories
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Gradle and Your Android Wearable Projects
Gradle and Your Android Wearable ProjectsGradle and Your Android Wearable Projects
Gradle and Your Android Wearable Projects
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?
 
Building Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGapBuilding Hybrid Applications using PhoneGap
Building Hybrid Applications using PhoneGap
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react native
 
When Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable AppsWhen Microwatts Are Precious: Battery Tips for Wearable Apps
When Microwatts Are Precious: Battery Tips for Wearable Apps
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With React
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
 
Mobile development with JBoss Tools
Mobile development with JBoss ToolsMobile development with JBoss Tools
Mobile development with JBoss Tools
 

Similar to Web and Native in 2012

Make Cross Platform Apps that Suck Less
Make Cross Platform Apps that Suck LessMake Cross Platform Apps that Suck Less
Make Cross Platform Apps that Suck Less
jhugman
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software Developers
Kinoma
 
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
Sacha Leprêtre
 
Language Matters: JavaScript 
from IoT Product Concept 
to Production
Language Matters: JavaScript 
from IoT Product Concept 
to ProductionLanguage Matters: JavaScript 
from IoT Product Concept 
to Production
Language Matters: JavaScript 
from IoT Product Concept 
to Production
Kinoma
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
Heiko Voigt
 
Kirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UIKirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UI
jhugman
 
Future of Mobile
Future of MobileFuture of Mobile
Future of Mobile
Brian LeRoux
 
From Web to Mobile with Stage 3D
From Web to Mobile with Stage 3DFrom Web to Mobile with Stage 3D
From Web to Mobile with Stage 3D
Jean-Philippe Doiron
 
Writing Frameworks for Fun and Profit
Writing Frameworks for Fun and ProfitWriting Frameworks for Fun and Profit
Writing Frameworks for Fun and Profit
jhugman
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
IT Arena
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Autodesk
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
Richard Rodger
 
Introducing chrome apps (ogura)
Introducing chrome apps (ogura)Introducing chrome apps (ogura)
Introducing chrome apps (ogura)
Kazuhiro Ogura
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
webprogr.com
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Development
thedumbterminal
 
Current state of mobile development february 2013
Current state of mobile development february 2013Current state of mobile development february 2013
Current state of mobile development february 2013
59offers
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
Igalia
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
Richard Rodger
 
Android Development...Using Web Technologies
Android Development...Using Web TechnologiesAndroid Development...Using Web Technologies
Android Development...Using Web Technologies
CommonsWare
 

Similar to Web and Native in 2012 (20)

Make Cross Platform Apps that Suck Less
Make Cross Platform Apps that Suck LessMake Cross Platform Apps that Suck Less
Make Cross Platform Apps that Suck Less
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software Developers
 
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
Chrome Dev Summit Summary 2013 part 1 - what’s hot ?
 
Language Matters: JavaScript 
from IoT Product Concept 
to Production
Language Matters: JavaScript 
from IoT Product Concept 
to ProductionLanguage Matters: JavaScript 
from IoT Product Concept 
to Production
Language Matters: JavaScript 
from IoT Product Concept 
to Production
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Kirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UIKirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UI
 
Future of Mobile
Future of MobileFuture of Mobile
Future of Mobile
 
From Web to Mobile with Stage 3D
From Web to Mobile with Stage 3DFrom Web to Mobile with Stage 3D
From Web to Mobile with Stage 3D
 
Writing Frameworks for Fun and Profit
Writing Frameworks for Fun and ProfitWriting Frameworks for Fun and Profit
Writing Frameworks for Fun and Profit
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Forge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the BrowserForge - DevCon 2016: Implementing Rich Applications in the Browser
Forge - DevCon 2016: Implementing Rich Applications in the Browser
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
Introducing chrome apps (ogura)
Introducing chrome apps (ogura)Introducing chrome apps (ogura)
Introducing chrome apps (ogura)
 
Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Development
 
Current state of mobile development february 2013
Current state of mobile development february 2013Current state of mobile development february 2013
Current state of mobile development february 2013
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)Update on the open source browser space (16th GENIVI AMM)
Update on the open source browser space (16th GENIVI AMM)
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Android Development...Using Web Technologies
Android Development...Using Web TechnologiesAndroid Development...Using Web Technologies
Android Development...Using Web Technologies
 

Recently uploaded

RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 

Recently uploaded (20)

RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 

Web and Native in 2012

  • 1. Web plus Native in 2012 @jhugman – James Hugman
  • 2. Who is this guy? • Software Engineer • Programming: 20y, Mobile: 4y • Won awards for apps • Technology agnostic @jhugman
  • 3. Order of Ceremonies • Latest results in Web v Native • Issues in cross platform development • Interesting projects • Predictions @jhugman
  • 4. Web vs Native • Web: Developer friendly (except, when it’s not) • Native: User friendly (except, when it’s not) @jhugman
  • 5. Web • Cross platform* • Existing libraries • Faster to develop* • Buzzword compliant • Massive developer mindshare @jhugman * Caveat emptor
  • 6. Native • Better user experience • Tight device integration @jhugman
  • 7. Gartner Hype Cycle Peak of Inflated Expectations Plateau of Productivity Slope of Enlightenment Trough of Disillusion Technology Trigger @jhugman
  • 8. Cross-platform fallacies • “Write Once, Run Anywhere” • HTML5 is the answer @jhugman
  • 9. Web based UIs • PhoneGap • Trigger.io @jhugman
  • 10. Building UI with HTML • Webkit fragmentation • Desktop ≠ Mobile • High profile failures @jhugman
  • 11. Write Once, Run Anywhere • UI metaphors differ between platforms • Negative messages to users: • “We don’t care [enough] about you” @jhugman
  • 12. Important exceptions • When app is document focused • When utility trumps usability • Games @jhugman
  • 13. Why Cross Platform? • For developers: • Less to learn • Less code to write • For business: • Lower cost of ownership @jhugman
  • 14. Why Cross Platform*… Sucks? • For developers fewer tools • For users UX is compromised • For designers Design is compromised @jhugman
  • 15. Something better • Native, platform specific UIs • Share as much other code as possible @jhugman
  • 16. Architecture Sketch Presentation Layer Application Logic Layer Native API Layer @jhugman
  • 17. Architecture Sketch • Implementation language • Execution language @jhugman
  • 18. Technologies • Titanium JS • Ejecta UI in code • Kirin Portable Biz Logic • Calatrava • j2ObjC @jhugman
  • 20. Building UI in Code Presentation Layer implemented in Javascript Application Logic Javascript Native APIs Native @jhugman
  • 21. Titanium • The big hitter • Implement everything in Javascript • Execute UI in native @jhugman
  • 22. Titanium + Good coverage of native APIs + Reasonable docs - Implement UI in JS, so crappy tools - Lists are hard to get right - Not easy to style @jhugman
  • 23. Ejecta • HTML <canvas> and <audio> APIs • Implement in Javascript • Executed using native OpenGL and OpenAL @jhugman
  • 24. Ejecta + Lots of existing libraries (e.g. Three.js, processing.js) + Faster than WebView’s <canvas> - Incomplete APIs for Graphics & Audio - iOS and Web only @jhugman
  • 25. Honourable mention • MonoTouch & MonoDroid @jhugman
  • 27. Heterogenous Teams • Multiple people • Different skill sets • Only small overlaps in skill sets @jhugman
  • 28. Shared App Logic Presentation Layer implemented in native Application Logic shared Native APIs Native @jhugman
  • 29. Shared App Logic Obj-C Java HTML Application Logic shared @jhugman
  • 30. Calatrava • Application logic in Javascript • Rubyist & Web developers version • Progressively enhance screens @jhugman
  • 31. Calatrava + Start with HTML. Switch to native when needed. - Limited interaction between JS & Native - Not very extensible - Limited access to APIs - Bundles a JS engine per app @jhugman
  • 32. Shared App Logic Your Obj-C Your Java Calatrava Your Shared Javascript @jhugman
  • 33. Shared App Logic Your Obj-C Your Java Kirin Your Shared Javascript @jhugman
  • 34. Kirin • Native mobile developers version • Designed for multi-disciplinary teams • Designed to be friendly to both ecosystems @jhugman
  • 35. Kirin + Very extensible + Built on top of node.js and npm. - Limited access to APIs (currently) @jhugman
  • 36. Shared App Logic Presentation Layer implemented in native Application Logic shared Native APIs Native @jhugman
  • 37. j2ObjC • Java -> Objective C compiler • Google 20% project • Write in Java, execute natively on two platforms @jhugman
  • 38. j2ObjC + GWT + Great tooling + Very extensible - Alpha release; Buggy - Not a tool suite @jhugman
  • 39. Predictions • HTML5 on mobile will get better, slowly • Good but not great cross-platform solutions continue in small shops • Building multiple native clients will be accepted as the cost of doing business @jhugman
  • 40. Summary • Business need will drive cross- platform • HTML UIs still difficult to make nice • Fertile ground for experimentation @jhugman
  • 42. Links • Titanium: appcelerator.com • Ejector.js: impactjs.com/ejecta/ overview • Calatrava: calatrava.github.com • Kirin: github.com/kirinjs/kirin • j2objc: code.google.com/p/j2objc @jhugman

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. * caveat emptor\n
  6. This year, has been different. Both sides has given ground to the other, but most importantly the users needs have been taken into consideration\n
  7. Where is 3d printing? Drones?\nAugmented Reality, HTML5? \n\nMention \nFinancial Times measured success.\nfacebook HTML5 failure\n
  8. \n
  9. All with implementation languages/tools of HTML, CSS, JS.\nAll with execution languages of HTML, CSS, JS.\n\nVery popular, due to low barrier to entry. \n
  10. Are web UIs for mobile ready for building non-trivial apps yet?\n * Webkit fragmentation still a problem\n * Webkit on desktop browsers really good, so easy to mistake.\n * Touch events are still horrible\n * position: fixed still not widely implemented.\n * High profile failures. (Facebook)\n
  11. * UI metaphors differ between platforms.\n * Despite what your boss thinks, users notice and dislike this.\n * It&apos;s confusing. \n * It&apos;s jarring. \n * It says &quot;We don&apos;t care enough^H^H^H^H about *you*&quot;. \n * It&apos;s nothing positive.\n * This is a problem if you have a Buy button anywhere in your app.\n
  12. * Users will forgive stylised web pages \n * if web metaphors are very well established (e.g. document focused), and \n * the users&apos;/client&apos;s care about utility above every else. i.e. &quot;good enough&quot; is &quot;good enough&quot;.\n e.g. Google Maps versus iOS6 Maps. \n e.g. Any website you don&amp;#x2019;t care enough about their app.\n * Or you&apos;re building a game.\n * Or maybe your brand is so strong.\n
  13. \n
  14. * First generation Cross platform, including html\n\n
  15. \n
  16. \n
  17. Implementation Language: What language/tools does the app dev use? \ne.g. You write Titanium apps&amp;#x2019; UI in Javascript \nExecution Language: What language/tools does the underlying implementation use\ne.g. Ti UIs are rendered natively.\n
  18. All of these projects make claims about how much time\n
  19. Optimizes for javascript access. \nOften at the expense of the other language.\n
  20. UIs Implemented in code: \nPoor tooling compared to native.\n- e.g. Easy to get wrong for different screen sizes\nLots of traffic between JS &amp; native; either slow, or prone to memory leaks.\n
  21. \n
  22. Any time you&amp;#x2019;re implementing in JS, lists will be hard to get right.\nPromises WORA, although doesn&amp;#x2019;t do a great job\n\n\n
  23. \n
  24. This is really just for Games.\nPossible to extend, but not for the faint hearted.\nNo text. \n\nEarly days for the project.\n
  25. \n
  26. \n
  27. Stretch the skills of a single developer.\n
  28. Realistic \n
  29. \n
  30. Named after Santiago Calatrava, famous for his bridges.\n
  31. Very early stages of development\nDocs are not very good.\n\nContributions welcome.\n
  32. Calatrava is a very web centric.\n \nCurrently a very limited javascript to native bridge\nNeeds changes to the core to add extra features that use the bridge\n\nThis will make device access slow to add.\n
  33. Much more generalized js to native bridge.\n
  34. Named after the river creature from Japanese myth. A chimera with the body of dragon and a tail of a deer.\n
  35. Documentation lacking.\nContributions welcome.\n
  36. Realistic \n
  37. \n
  38. Currently a standalone compiler. Not a tool suite.\n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n