SlideShare a Scribd company logo
The Nativescript PUG
app Challenge
Transformation to single technology
EMEA PUG Challenge, 20-11-2014
Bronco Oostermeyer
Who are we?
Bronco Oostermeyer
OpenEdge since 1996, everything around Progress and more
Progress, UNIT4, WALVIS
Who are we?
Roel Lakenvelt
OpenEdge since 1989, version 5
VCD Software, Ceasar, Progress, Yonder and Flusso
Native iOS, Angular and many other
Who are we?
Flusso
• One of biggest OpenEdge consultancy firms in NL
• Progress technologies,
• Open Source (Java & ServiceMix, etc),
• Web Apps (Angular2, various app platforms)
• OutSystems
Agenda
-What is {N}
-Choices
-Examples from the field
What is NativeScript?
• Framework for building cross-platform native apps
• iOS & Android (Windows coming soon, for a while now)
• 1 code base for both platforms
• No DOM
• JavaScript
• No Objective C, Swift & Java
• No Cross Compiler (like Xamarin)
• Open source
What is NativeScript? {N}
• Maintained by Telerik
• 1.0 released may 2015
• A year in UI development seems a light year nowadays
• Current version 2.3
• Projected 100k+ npm downloads in 2016
• iOS 8+, Android API level 17, android 4.2
• Set of node.js CLI tools for various tasks
Why NativeScript?
• Native apps
• Javascript
• Consolidation of technology stack
• Direct access native API’s(*)
• No waiting for version X.Y for access newest API
• XML style markup, CSS-like styling
• Markup sort of XAML,
• No real CSS because no DOM
Declaring the UI
UI to Code
page.xml
page.js
JavaScript runtime (JavaScriptCore)
Android OS API (iOS API)
Architectural Overview
var time = new android.text.format.Time();
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
android
Android OS API
metadata
C++
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
C++
TimeJNI
Proxy
time
Modules / Plugins
• Modules abstract platform specifics:
Modules
• OK, one more
var http = require(“http”);
http.getJSON(“http://echo.jsontest.com/hello/world”).then(
result => { console.log(JSON.stringify(result)); }
);
Modules / Plugins
var firebase = require(“nativescript-plugin-firebase”);
firebase.init ({
persist: false
}).then( …
);
• Modules abstract platform specifics:
What do you need?
• node.js
• npm 3.x on windows (solves path problems)
• TypeScript (recommended)
• Emulator
• IDE (notepad won’t do)
• Maybe a framework (Angular2)
Why TypeScript?
Choices - TypeScript
• JavaScript (ES6) superset, Strongly typed
• Removes rough edges from JS
• Anders Hejlsberg (Turbo Pascal, Delphi, C#...)
• “JavaScript done right” from Microsoft
• Transpiler (emits JS)
• Build with tooling in mind
http://www.typescriptlang.org/
Choices - Visual Studio Code
• Sublime like text editor
• Plugins
• TypeScript, NativeScript
• Debugger (attachable)
• Windows, MacOS & Linux
• Electron based
• Free!
https://code.visualstudio.com/
Choices – development environment
• We chose the CLI tools & emulators
• npm install –g nativescript
• MacOS needed
• Alternative is Telerik Platform
• We did it the Open Source way
• TP gives “companion app” possibilities
Choices - Emulator
• Genymotion (android)
• Seems to be one of the fastest
• Visual Studio emulator Android
• iOS emulator for XCode
Experience
• Demo
• Agenda
• ListView
• Push Notifications
• Floorplan
• Local storage
• IOS 10
Agenda view
ScrollView (days)
ScrollView (timeslots)
ScrollView
(rooms)
ScrollView horizontal
ScrollView vertical
AbsoluteLayout
GridLayout
ListView
Sectioned ListView with sticky headers
• ListView (core)
• RadListView (nativescript-telerik-ui)
• nativescript-sectioned-list-view
• Create own/change existing module
• Fake headers and sections
ListView
Sponsortype
Sponsor
Header
Push Notifications
APNS
GCM
WNS
1. Registration
2.DeviceID
Own server
A. Message
B. Notification
3. DeviceID
General
Push
Notification
Server
UI
Push Notifications
• Homebrewn Apache ServiceMix based solution
• Telerik’s Everlive  no Typescript typings at that time
• Firebase
• Successor to Google Cloud Messaging (GCM)
• nativescript-plugin-firebase from Eddy Verbruggen
• Issues
• firebase.init() before application.start under iOS
• Install Google Play Services on Genymotion
• Push notifications will not work in the iOS emulator
Floorplan
• Pinch
• Pan
• Surprisingly easy
Floorplan
Local storage
• SQLite for text
• nativescript-sqlite
• Images as static files
• knownFolders.currentApp();
• knownFolders.documents();
• Tools
• Android device monitor
• Terminal on macOS
iOS 10
• Released on 13 September
• New Xcode version and new SDK’s
NSFileManager.defaultManager is not a function
• Many class methods changed into class properties
var fileManager = NSFileManager.defaultManager();
var fileManager = NSFileManager.defaultManager;
• Nativescript 2.3 on 20 September (core modules)
• nativescript-telerik-ui on 20 september
• nativescript-plugin-firebase on 21 September
• nativescript-sqlite this week
Conclusions
• Great way to build native(!) apps
• Search for modules
• https://plugins.telerik.com/nativescript
• http://nativescript.rocks/all.php
• Sooner or later iOS or Android knowledge needed
• Open Source: be prepared to invest time
• Read the manuals
• Always test on all (physical) devices
• One more thing, still waiting for Windows support
Questions?
This presentation @
Links
• {N} runtime explained: http://developer.telerik.com/featured/nativescript-works/
follow us on:

More Related Content

What's hot

Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
JSFoo-2017 Takeaways
JSFoo-2017 TakeawaysJSFoo-2017 Takeaways
JSFoo-2017 Takeaways
Mir Ali
 
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QAFest
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
pksjce
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
Rob Scaduto
 
TypeScript Jump Start
TypeScript Jump StartTypeScript Jump Start
TypeScript Jump Start
Mostafa
 
React Native
React NativeReact Native
React Native
Artyom Trityak
 
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Kharkiv JS  2015 - Creating isomorphic applications in React (en)Kharkiv JS  2015 - Creating isomorphic applications in React (en)
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Viktor Turskyi
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Idan Tohami
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the Cloud
Elton Stoneman
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
Docker at Cloud9 IDE
Docker at Cloud9 IDEDocker at Cloud9 IDE
Docker at Cloud9 IDE
lennartkats
 
The Architect Way
The Architect WayThe Architect Way
The Architect Way
Jan Jongboom
 
CI/CD at bol.com
CI/CD at bol.comCI/CD at bol.com
CI/CD at bol.com
Maarten Dirkse
 
Docker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetupDocker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetup
Juraj Kojdjak
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Travis van der Font
 
The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1
Haci Murat Yaman
 
Java Development EcoSystem
Java Development EcoSystemJava Development EcoSystem
Java Development EcoSystemAlex Tumanoff
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage build
Alexei Ledenev
 

What's hot (20)

Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
 
JSFoo-2017 Takeaways
JSFoo-2017 TakeawaysJSFoo-2017 Takeaways
JSFoo-2017 Takeaways
 
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
TypeScript Jump Start
TypeScript Jump StartTypeScript Jump Start
TypeScript Jump Start
 
React Native
React NativeReact Native
React Native
 
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Kharkiv JS  2015 - Creating isomorphic applications in React (en)Kharkiv JS  2015 - Creating isomorphic applications in React (en)
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the Cloud
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
 
Docker at Cloud9 IDE
Docker at Cloud9 IDEDocker at Cloud9 IDE
Docker at Cloud9 IDE
 
The Architect Way
The Architect WayThe Architect Way
The Architect Way
 
CI/CD at bol.com
CI/CD at bol.comCI/CD at bol.com
CI/CD at bol.com
 
Docker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetupDocker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetup
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1
 
Java Development EcoSystem
Java Development EcoSystemJava Development EcoSystem
Java Development EcoSystem
 
Presentation1
Presentation1Presentation1
Presentation1
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage build
 

Viewers also liked

NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke HollandNativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
Brian Rinaldi
 
Nativescript
NativescriptNativescript
NativeScript + Push Notifications
NativeScript + Push NotificationsNativeScript + Push Notifications
NativeScript + Push Notifications
Lohith Goudagere Nagaraj
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
tjvantoll
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
Joost van der Griendt
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Lohith Goudagere Nagaraj
 
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
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
Christoffer Noring
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
Dan Wilson
 

Viewers also liked (10)

NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke HollandNativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
 
Nativescript
NativescriptNativescript
Nativescript
 
NativeScript + Push Notifications
NativeScript + Push NotificationsNativeScript + Push Notifications
NativeScript + Push Notifications
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
 
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
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
 

Similar to PUG Challenge 2016 - The nativescript pug app challenge

Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
Syed Owais Ali Chishti
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
Yogesh_Lakhole
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Aaron Rosenberg
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
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
 
.NET7.pptx
.NET7.pptx.NET7.pptx
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
Marcel Offermans
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
Damir Beylkhanov
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
Kevin McMahon
 
SynapseIndia java and .net development
SynapseIndia java and .net developmentSynapseIndia java and .net development
SynapseIndia java and .net development
Synapseindiappsdevelopment
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
John M. Wargo
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
Jimit Shah
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Mark Leusink
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
brendankowitz
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu Vunvulea
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
MarcelLanz
 
Hyperloop
HyperloopHyperloop
Hyperloop
Conny Svensson
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Ryan Cuprak
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
Jibanananda Sana
 

Similar to PUG Challenge 2016 - The nativescript pug app challenge (20)

Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
.NET7.pptx
.NET7.pptx.NET7.pptx
.NET7.pptx
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
SynapseIndia java and .net development
SynapseIndia java and .net developmentSynapseIndia java and .net development
SynapseIndia java and .net development
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
 
Hyperloop
HyperloopHyperloop
Hyperloop
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
 

Recently uploaded

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
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
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 

Recently uploaded (20)

AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
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
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 

PUG Challenge 2016 - The nativescript pug app challenge

  • 1. The Nativescript PUG app Challenge Transformation to single technology EMEA PUG Challenge, 20-11-2014 Bronco Oostermeyer
  • 2. Who are we? Bronco Oostermeyer OpenEdge since 1996, everything around Progress and more Progress, UNIT4, WALVIS
  • 3. Who are we? Roel Lakenvelt OpenEdge since 1989, version 5 VCD Software, Ceasar, Progress, Yonder and Flusso Native iOS, Angular and many other
  • 4. Who are we? Flusso • One of biggest OpenEdge consultancy firms in NL • Progress technologies, • Open Source (Java & ServiceMix, etc), • Web Apps (Angular2, various app platforms) • OutSystems
  • 6. What is NativeScript? • Framework for building cross-platform native apps • iOS & Android (Windows coming soon, for a while now) • 1 code base for both platforms • No DOM • JavaScript • No Objective C, Swift & Java • No Cross Compiler (like Xamarin) • Open source
  • 7. What is NativeScript? {N} • Maintained by Telerik • 1.0 released may 2015 • A year in UI development seems a light year nowadays • Current version 2.3 • Projected 100k+ npm downloads in 2016 • iOS 8+, Android API level 17, android 4.2 • Set of node.js CLI tools for various tasks
  • 8. Why NativeScript? • Native apps • Javascript • Consolidation of technology stack • Direct access native API’s(*) • No waiting for version X.Y for access newest API • XML style markup, CSS-like styling • Markup sort of XAML, • No real CSS because no DOM
  • 11. JavaScript runtime (JavaScriptCore) Android OS API (iOS API) Architectural Overview var time = new android.text.format.Time();
  • 12. JavaScript runtime var time = new android.text.format.Time(); Android OS API
  • 13. JavaScript runtime var time = new android.text.format.Time(); Android OS API android Android OS API metadata C++
  • 14. JavaScript runtime var time = new android.text.format.Time(); Android OS API C++ TimeJNI Proxy time
  • 15. Modules / Plugins • Modules abstract platform specifics:
  • 16. Modules • OK, one more var http = require(“http”); http.getJSON(“http://echo.jsontest.com/hello/world”).then( result => { console.log(JSON.stringify(result)); } );
  • 17. Modules / Plugins var firebase = require(“nativescript-plugin-firebase”); firebase.init ({ persist: false }).then( … ); • Modules abstract platform specifics:
  • 18. What do you need? • node.js • npm 3.x on windows (solves path problems) • TypeScript (recommended) • Emulator • IDE (notepad won’t do) • Maybe a framework (Angular2)
  • 20. Choices - TypeScript • JavaScript (ES6) superset, Strongly typed • Removes rough edges from JS • Anders Hejlsberg (Turbo Pascal, Delphi, C#...) • “JavaScript done right” from Microsoft • Transpiler (emits JS) • Build with tooling in mind http://www.typescriptlang.org/
  • 21. Choices - Visual Studio Code • Sublime like text editor • Plugins • TypeScript, NativeScript • Debugger (attachable) • Windows, MacOS & Linux • Electron based • Free! https://code.visualstudio.com/
  • 22. Choices – development environment • We chose the CLI tools & emulators • npm install –g nativescript • MacOS needed • Alternative is Telerik Platform • We did it the Open Source way • TP gives “companion app” possibilities
  • 23. Choices - Emulator • Genymotion (android) • Seems to be one of the fastest • Visual Studio emulator Android • iOS emulator for XCode
  • 24. Experience • Demo • Agenda • ListView • Push Notifications • Floorplan • Local storage • IOS 10
  • 25. Agenda view ScrollView (days) ScrollView (timeslots) ScrollView (rooms) ScrollView horizontal ScrollView vertical AbsoluteLayout GridLayout
  • 26. ListView Sectioned ListView with sticky headers • ListView (core) • RadListView (nativescript-telerik-ui) • nativescript-sectioned-list-view • Create own/change existing module • Fake headers and sections
  • 28. Push Notifications APNS GCM WNS 1. Registration 2.DeviceID Own server A. Message B. Notification 3. DeviceID General Push Notification Server UI
  • 29. Push Notifications • Homebrewn Apache ServiceMix based solution • Telerik’s Everlive  no Typescript typings at that time • Firebase • Successor to Google Cloud Messaging (GCM) • nativescript-plugin-firebase from Eddy Verbruggen • Issues • firebase.init() before application.start under iOS • Install Google Play Services on Genymotion • Push notifications will not work in the iOS emulator
  • 30. Floorplan • Pinch • Pan • Surprisingly easy
  • 32. Local storage • SQLite for text • nativescript-sqlite • Images as static files • knownFolders.currentApp(); • knownFolders.documents(); • Tools • Android device monitor • Terminal on macOS
  • 33. iOS 10 • Released on 13 September • New Xcode version and new SDK’s NSFileManager.defaultManager is not a function • Many class methods changed into class properties var fileManager = NSFileManager.defaultManager(); var fileManager = NSFileManager.defaultManager; • Nativescript 2.3 on 20 September (core modules) • nativescript-telerik-ui on 20 september • nativescript-plugin-firebase on 21 September • nativescript-sqlite this week
  • 34. Conclusions • Great way to build native(!) apps • Search for modules • https://plugins.telerik.com/nativescript • http://nativescript.rocks/all.php • Sooner or later iOS or Android knowledge needed • Open Source: be prepared to invest time • Read the manuals • Always test on all (physical) devices • One more thing, still waiting for Windows support
  • 37. Links • {N} runtime explained: http://developer.telerik.com/featured/nativescript-works/