SlideShare a Scribd company logo
Mobile Development
Java Everywhere
• Android is pretty direct: Android apps are already written in Java
– Only a few considerations to worry about with Android’s runtime, par for the
course in Android development
• iOS is trickier: Java is not the native language, but tooling exists
– First tool: RoboVM
• Ended up at Microsoft, who axed it
• Open-source forks exist, but are at a disadvantage (no debugger)
– New solution: Multi-OS Engine
• Purchased and cultivated by Intel, then released fully as open source
• Very capable, actively developed
Darwino Environment
• For the most part, everything works just the same way
• DarwinoApplication
– DarwinoMobileApplication
• DarwinoIOSHybridApplication
• etc.
• Test DarwinoApplication.isMobile()
• DarwinoContext
– DarwinoMobileContext
• Generally, the top-level objects do what you need, but accessing the more-
specific kinds can be useful in cases
Darwino Environment (Cont’d)
• Contain important status information like connectivity state
– .hasConnection()
– .getConnectionMode()
– .switchToMode(…) or .switchToLocal()/.switchToRemote()
Darwino Environment (Cont’d)
• The environment is very analogous to the Notes client/Domino server split
• While the server is multi-user, the mobile client is single-user, but the APIs
are the same
• All normal services exist in mobile-friendly forms: HTTP client, logger,
scheduler, etc.
– I’d be wary about doing too much scheduling on mobile for battery reasons, but
it’s there
– In general, be wary to not overload a mobile device: if there are tons of bells and
whistles that only make sense to activate on a server, don’t run them on mobile
Darwino Environment (Cont’d)
Android
• In general, this is straightforward: Android apps are already Java, and have
the same considerations
• There’s a bit of an IDE problem: Darwino Studio uses Eclipse, while Google
moved to IntelliJ
• Fortunately, this is surmountable:
– Darwino Studio is not required for Darwino development: IntelliJ should work
fine
– For now, the ADT still works if you have it already
– Eclipse has Andmore, a new replacement for ADT, acting as a drop-in
replacement
iOS: Multi-OS Engine
• Compiles Java bytecode to native iOS applications
• Adds bindings for native iOS controls: UITableViewController, UIInput, and so
forth
• Allows for creating “as native as you like” iOS applications in Java
• More details later this morning
iOS: Multi-OS Engine (Cont’d)
CGRect tableViewBounds = CoreGraphics.CGRectMake(0.0, 64.0, 320, 416);
UITableView tableView = UITableView.alloc().initWithFrame(tableViewBounds);
tableView.setContentMode(UIViewContentMode.ScaleToFill);
setTableView(tableView);
// Add items to list where they will be retrieved when to display
this.newsViewController = NewsViewController.alloc().init();
String[] cat = NewsManifest.getCategoryLabels();
for (String element : cat) {
menuList.add(new MenuListItem(element));
}
createTopbar();
createToolbar();
tableView().registerClassForCellReuseIdentifier(
new org.moe.natj.objc.Class("UITableViewCell"),
MY_CELL_IDENTIFIER);
Desktop Applications
• Desktop apps use standard Java toolkits
• Darwino has particular support for SWT (Eclipse’s toolkit), providing a hybrid
app shell
– You could use others either in addition to or instead of SWT, though you may be
on the hook to replace some behaviors
• This has all the traits of mobile apps: shared web UI, offline data access,
native hooks
• We’re investigating tools to avoid the need for the JVM
– In the mean time, it’s possible to embed a JVM, at least on a Mac (the examples
have this configured in the pom.xml)
Hybrid vs. Native applications
• Two main routes for mobile development: “hybrid” and native
• “Hybrid” refers to an app that is primarily a web view containing an HTML
application, most often the same web UI used in a JEE server
• Truthfully, it’s a gradient: a primarily-web UI can call to and use native
components as desired
– Darwino does this by default: the settings screen uses native code and file
attachments use native file-open handlers
Hybrid Applications
• Hybrid apps use an embedded web server on the device
• The same services standard in Darwino and added custom in your code run
on-device without changes
• This method involved minimal work to get your application running offline
on mobile
– As long as the shared web UI is mobile-friendly, the standard hybrid shell will do
the heavy lifting for you
• If desired, the bridge to the native layer is extensible: you could add native
components to a hybrid app bit by bit
Native Applications
• Similar to normal native development, especially for Android
• There are still base Darwino services to extend, and the data layer and
settings can still exist “for free”
– Just hook into the commands in the same way as the starter applications
• At this point, all options are open: use existing native tools and layouts
• iOS involves a bit of extra indirection, but MOE makes that work, and is ever-
improving
Offline Access
• “Notes-like” offline access brought to mobile devices
• All logic remains the same when disconnected: documents are accessed in
the same way
• Replication can run on a schedule or manually
• Data can be encrypted on-device
Settings Screen
• Common Darwino settings used on mobile and desktop
• Will be extensible with custom settings in the future
• Covers server connections, local database encryption, and replication
schedules
• Internally, it is an abstract UI representation with a native face on each
platform
• In theory, this could be a good example of structuring a cross-platform native
UI
– I should really get on fleshing that aspect out
Thank you for your attention!

More Related Content

What's hot

Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
JWORKS powered by Ordina
 
Introduction to Ionic framework
Introduction to Ionic frameworkIntroduction to Ionic framework
Introduction to Ionic framework
Shyjal Raazi
 
Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript
Serge van den Oever
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
Entrepreneur / Startup
 
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
Cross-Platform Desktop Apps with Electron (CodeStock Edition)Cross-Platform Desktop Apps with Electron (CodeStock Edition)
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
David Neal
 
Hybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic Framework
Bramus Van Damme
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
Wan Muzaffar Wan Hashim
 
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotionFrom Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
Michael Denomy
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONICDeveloping Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
Fuat Buğra AYDIN
 
Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyond
rsebbe
 
Architecting iOS Project
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS Project
Massimo Oliviero
 
Electron
ElectronElectron
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
Cristián Cortéz
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
Jad Salhani
 
Better Career with Java
Better Career with JavaBetter Career with Java
Better Career with Java
Mert Çalışkan
 
Native Script Overview
Native Script OverviewNative Script Overview
Native Script Overview
Baskar rao Dsn
 
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 Core Java Programming
Introduction to Core Java ProgrammingIntroduction to Core Java Programming
Introduction to Core Java Programming
Collaboration Technologies
 

What's hot (19)

Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
 
Introduction to Ionic framework
Introduction to Ionic frameworkIntroduction to Ionic framework
Introduction to Ionic framework
 
Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript Building an Ionic hybrid mobile app with TypeScript
Building an Ionic hybrid mobile app with TypeScript
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
 
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
Cross-Platform Desktop Apps with Electron (CodeStock Edition)Cross-Platform Desktop Apps with Electron (CodeStock Edition)
Cross-Platform Desktop Apps with Electron (CodeStock Edition)
 
Hybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic Framework
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotionFrom Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 
Developing Hybrid Applications with IONIC
Developing Hybrid Applications with IONICDeveloping Hybrid Applications with IONIC
Developing Hybrid Applications with IONIC
 
Xcode, Basics and Beyond
Xcode, Basics and BeyondXcode, Basics and Beyond
Xcode, Basics and Beyond
 
Architecting iOS Project
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS Project
 
Electron
ElectronElectron
Electron
 
Ionic Framework
Ionic FrameworkIonic Framework
Ionic Framework
 
Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016Your choices for building a mobile app in 2016
Your choices for building a mobile app in 2016
 
Better Career with Java
Better Career with JavaBetter Career with Java
Better Career with Java
 
Native Script Overview
Native Script OverviewNative Script Overview
Native Script Overview
 
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 Core Java Programming
Introduction to Core Java ProgrammingIntroduction to Core Java Programming
Introduction to Core Java Programming
 

Viewers also liked

11 advanced replication
11   advanced replication11   advanced replication
11 advanced replication
darwinodb
 
13 deploying cloud applications
13   deploying cloud applications13   deploying cloud applications
13 deploying cloud applications
darwinodb
 
09 business apis
09   business apis09   business apis
09 business apis
darwinodb
 
05 darwino db
05   darwino db05   darwino db
05 darwino db
darwinodb
 
06 web applications
06   web applications06   web applications
06 web applications
darwinodb
 
15 darwino script & command line
15   darwino script & command line15   darwino script & command line
15 darwino script & command line
darwinodb
 
10 domino integration
10   domino integration10   domino integration
10 domino integration
darwinodb
 
02 configuration
02   configuration02   configuration
02 configuration
darwinodb
 
04 darwino concepts and utility classes
04   darwino concepts and utility classes04   darwino concepts and utility classes
04 darwino concepts and utility classes
darwinodb
 
07 darwino rest services
07   darwino rest services07   darwino rest services
07 darwino rest services
darwinodb
 
Resumen prensa general asemip 060611
Resumen prensa general asemip 060611Resumen prensa general asemip 060611
Resumen prensa general asemip 060611
kidetza
 
HEAVY MACHINERIES ASSINGMENT
HEAVY MACHINERIES ASSINGMENTHEAVY MACHINERIES ASSINGMENT
HEAVY MACHINERIES ASSINGMENT
SITI UMAIRAH MOHAMAD SALLEH
 
Leveraging the 7Stones Framework
Leveraging the 7Stones FrameworkLeveraging the 7Stones Framework
Leveraging the 7Stones Framework
Bryan LeBlanc
 
Tis tareapoint111
Tis tareapoint111Tis tareapoint111
Tis tareapoint111
Sandrita Tlv
 
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer   OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
NETWAYS
 
Blogginnlegg Turnustjeneste - Fysioterapeuten
Blogginnlegg Turnustjeneste - FysioterapeutenBlogginnlegg Turnustjeneste - Fysioterapeuten
Blogginnlegg Turnustjeneste - FysioterapeutenSteinar Heiberg
 
Derechos del niño 4°
Derechos del niño 4°Derechos del niño 4°
Derechos del niño 4°
Carmen Araceli Villegas Rojas
 
33548 12 ppsimpresionanteataque
33548 12 ppsimpresionanteataque33548 12 ppsimpresionanteataque
33548 12 ppsimpresionanteataque
Alejo Ldu
 
Rie dalsgaard - Tid til ledelse nu
Rie dalsgaard - Tid til ledelse nuRie dalsgaard - Tid til ledelse nu
Rie dalsgaard - Tid til ledelse nu
Ledernes KompetenceCenter
 
Trabajo depresiã³n
Trabajo depresiã³nTrabajo depresiã³n
Trabajo depresiã³n
Alejandra Curin R
 

Viewers also liked (20)

11 advanced replication
11   advanced replication11   advanced replication
11 advanced replication
 
13 deploying cloud applications
13   deploying cloud applications13   deploying cloud applications
13 deploying cloud applications
 
09 business apis
09   business apis09   business apis
09 business apis
 
05 darwino db
05   darwino db05   darwino db
05 darwino db
 
06 web applications
06   web applications06   web applications
06 web applications
 
15 darwino script & command line
15   darwino script & command line15   darwino script & command line
15 darwino script & command line
 
10 domino integration
10   domino integration10   domino integration
10 domino integration
 
02 configuration
02   configuration02   configuration
02 configuration
 
04 darwino concepts and utility classes
04   darwino concepts and utility classes04   darwino concepts and utility classes
04 darwino concepts and utility classes
 
07 darwino rest services
07   darwino rest services07   darwino rest services
07 darwino rest services
 
Resumen prensa general asemip 060611
Resumen prensa general asemip 060611Resumen prensa general asemip 060611
Resumen prensa general asemip 060611
 
HEAVY MACHINERIES ASSINGMENT
HEAVY MACHINERIES ASSINGMENTHEAVY MACHINERIES ASSINGMENT
HEAVY MACHINERIES ASSINGMENT
 
Leveraging the 7Stones Framework
Leveraging the 7Stones FrameworkLeveraging the 7Stones Framework
Leveraging the 7Stones Framework
 
Tis tareapoint111
Tis tareapoint111Tis tareapoint111
Tis tareapoint111
 
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer   OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
OSMC 2016: Open Monitoring Distribution 2016+ by Gerhard Laußer
 
Blogginnlegg Turnustjeneste - Fysioterapeuten
Blogginnlegg Turnustjeneste - FysioterapeutenBlogginnlegg Turnustjeneste - Fysioterapeuten
Blogginnlegg Turnustjeneste - Fysioterapeuten
 
Derechos del niño 4°
Derechos del niño 4°Derechos del niño 4°
Derechos del niño 4°
 
33548 12 ppsimpresionanteataque
33548 12 ppsimpresionanteataque33548 12 ppsimpresionanteataque
33548 12 ppsimpresionanteataque
 
Rie dalsgaard - Tid til ledelse nu
Rie dalsgaard - Tid til ledelse nuRie dalsgaard - Tid til ledelse nu
Rie dalsgaard - Tid til ledelse nu
 
Trabajo depresiã³n
Trabajo depresiã³nTrabajo depresiã³n
Trabajo depresiã³n
 

Similar to 08 mobile development

Android - Anroid Pproject
Android - Anroid PprojectAndroid - Anroid Pproject
Android - Anroid Pproject
Vibrant Technologies & Computers
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
amaankhan
 
Android OS
Android OSAndroid OS
Android OS
Nitin Ramchandani
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
Joe Jacob
 
Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introduction
Guido Magrin
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
sparkfabrik
 
Intro to android (gdays)
Intro to android (gdays)Intro to android (gdays)
Intro to android (gdays)
Omolara Adejuwon
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
Vibrant Technologies & Computers
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
Kunjan Thakkar
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
Doris Chen
 
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
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
Nick Landry
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with java
ssuser471dfb
 
Windows 10 IoT-Core to Azure IoT Suite
Windows 10 IoT-Core to Azure IoT SuiteWindows 10 IoT-Core to Azure IoT Suite
Windows 10 IoT-Core to Azure IoT Suite
David Jones
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
Sasha dos Santos
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development Platforms
Barcoding, Inc.
 
Android development
Android developmentAndroid development
Android development
mkpartners
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Applitools
 

Similar to 08 mobile development (20)

Android - Anroid Pproject
Android - Anroid PprojectAndroid - Anroid Pproject
Android - Anroid Pproject
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
 
Android OS
Android OSAndroid OS
Android OS
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
 
Xamarin.iOS introduction
Xamarin.iOS introductionXamarin.iOS introduction
Xamarin.iOS introduction
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
Intro to android (gdays)
Intro to android (gdays)Intro to android (gdays)
Intro to android (gdays)
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
iOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET GuyiOS Development Survival Guide for the .NET Guy
iOS Development Survival Guide for the .NET Guy
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
Android Architecture design programming with java
Android Architecture design programming with javaAndroid Architecture design programming with java
Android Architecture design programming with java
 
Windows 10 IoT-Core to Azure IoT Suite
Windows 10 IoT-Core to Azure IoT SuiteWindows 10 IoT-Core to Azure IoT Suite
Windows 10 IoT-Core to Azure IoT Suite
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
An overview of mobile html + java script frameworks
An overview of mobile html + java script frameworksAn overview of mobile html + java script frameworks
An overview of mobile html + java script frameworks
 
Post Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development PlatformsPost Windows Mobile: New Application Development Platforms
Post Windows Mobile: New Application Development Platforms
 
Android development
Android developmentAndroid development
Android development
 
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
Shifting landscape of mobile automation, and the future of Appium - Jonathan ...
 

More from darwinodb

17 open ntf-v30-darwinoorg
17   open ntf-v30-darwinoorg17   open ntf-v30-darwinoorg
17 open ntf-v30-darwinoorg
darwinodb
 
16 endeavour reporter
16   endeavour reporter16   endeavour reporter
16 endeavour reporter
darwinodb
 
14 integrating watson services
14   integrating watson services14   integrating watson services
14 integrating watson services
darwinodb
 
12 ibm connections integration
12   ibm connections integration12   ibm connections integration
12 ibm connections integration
darwinodb
 
01 introduction to darwino
01   introduction to darwino01   introduction to darwino
01 introduction to darwino
darwinodb
 
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
darwinodb
 

More from darwinodb (6)

17 open ntf-v30-darwinoorg
17   open ntf-v30-darwinoorg17   open ntf-v30-darwinoorg
17 open ntf-v30-darwinoorg
 
16 endeavour reporter
16   endeavour reporter16   endeavour reporter
16 endeavour reporter
 
14 integrating watson services
14   integrating watson services14   integrating watson services
14 integrating watson services
 
12 ibm connections integration
12   ibm connections integration12   ibm connections integration
12 ibm connections integration
 
01 introduction to darwino
01   introduction to darwino01   introduction to darwino
01 introduction to darwino
 
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
IBM ConnectED SPOT104: Lightning-Fast Development of Native Mobile Apps for I...
 

Recently uploaded

Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
Karya Keeper
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 

Recently uploaded (20)

Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Project Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdfProject Management: The Role of Project Dashboards.pdf
Project Management: The Role of Project Dashboards.pdf
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 

08 mobile development

  • 2. Java Everywhere • Android is pretty direct: Android apps are already written in Java – Only a few considerations to worry about with Android’s runtime, par for the course in Android development • iOS is trickier: Java is not the native language, but tooling exists – First tool: RoboVM • Ended up at Microsoft, who axed it • Open-source forks exist, but are at a disadvantage (no debugger) – New solution: Multi-OS Engine • Purchased and cultivated by Intel, then released fully as open source • Very capable, actively developed
  • 3. Darwino Environment • For the most part, everything works just the same way • DarwinoApplication – DarwinoMobileApplication • DarwinoIOSHybridApplication • etc. • Test DarwinoApplication.isMobile() • DarwinoContext – DarwinoMobileContext • Generally, the top-level objects do what you need, but accessing the more- specific kinds can be useful in cases
  • 4. Darwino Environment (Cont’d) • Contain important status information like connectivity state – .hasConnection() – .getConnectionMode() – .switchToMode(…) or .switchToLocal()/.switchToRemote()
  • 5. Darwino Environment (Cont’d) • The environment is very analogous to the Notes client/Domino server split • While the server is multi-user, the mobile client is single-user, but the APIs are the same • All normal services exist in mobile-friendly forms: HTTP client, logger, scheduler, etc. – I’d be wary about doing too much scheduling on mobile for battery reasons, but it’s there – In general, be wary to not overload a mobile device: if there are tons of bells and whistles that only make sense to activate on a server, don’t run them on mobile
  • 7. Android • In general, this is straightforward: Android apps are already Java, and have the same considerations • There’s a bit of an IDE problem: Darwino Studio uses Eclipse, while Google moved to IntelliJ • Fortunately, this is surmountable: – Darwino Studio is not required for Darwino development: IntelliJ should work fine – For now, the ADT still works if you have it already – Eclipse has Andmore, a new replacement for ADT, acting as a drop-in replacement
  • 8. iOS: Multi-OS Engine • Compiles Java bytecode to native iOS applications • Adds bindings for native iOS controls: UITableViewController, UIInput, and so forth • Allows for creating “as native as you like” iOS applications in Java • More details later this morning
  • 9. iOS: Multi-OS Engine (Cont’d) CGRect tableViewBounds = CoreGraphics.CGRectMake(0.0, 64.0, 320, 416); UITableView tableView = UITableView.alloc().initWithFrame(tableViewBounds); tableView.setContentMode(UIViewContentMode.ScaleToFill); setTableView(tableView); // Add items to list where they will be retrieved when to display this.newsViewController = NewsViewController.alloc().init(); String[] cat = NewsManifest.getCategoryLabels(); for (String element : cat) { menuList.add(new MenuListItem(element)); } createTopbar(); createToolbar(); tableView().registerClassForCellReuseIdentifier( new org.moe.natj.objc.Class("UITableViewCell"), MY_CELL_IDENTIFIER);
  • 10. Desktop Applications • Desktop apps use standard Java toolkits • Darwino has particular support for SWT (Eclipse’s toolkit), providing a hybrid app shell – You could use others either in addition to or instead of SWT, though you may be on the hook to replace some behaviors • This has all the traits of mobile apps: shared web UI, offline data access, native hooks • We’re investigating tools to avoid the need for the JVM – In the mean time, it’s possible to embed a JVM, at least on a Mac (the examples have this configured in the pom.xml)
  • 11. Hybrid vs. Native applications • Two main routes for mobile development: “hybrid” and native • “Hybrid” refers to an app that is primarily a web view containing an HTML application, most often the same web UI used in a JEE server • Truthfully, it’s a gradient: a primarily-web UI can call to and use native components as desired – Darwino does this by default: the settings screen uses native code and file attachments use native file-open handlers
  • 12. Hybrid Applications • Hybrid apps use an embedded web server on the device • The same services standard in Darwino and added custom in your code run on-device without changes • This method involved minimal work to get your application running offline on mobile – As long as the shared web UI is mobile-friendly, the standard hybrid shell will do the heavy lifting for you • If desired, the bridge to the native layer is extensible: you could add native components to a hybrid app bit by bit
  • 13. Native Applications • Similar to normal native development, especially for Android • There are still base Darwino services to extend, and the data layer and settings can still exist “for free” – Just hook into the commands in the same way as the starter applications • At this point, all options are open: use existing native tools and layouts • iOS involves a bit of extra indirection, but MOE makes that work, and is ever- improving
  • 14. Offline Access • “Notes-like” offline access brought to mobile devices • All logic remains the same when disconnected: documents are accessed in the same way • Replication can run on a schedule or manually • Data can be encrypted on-device
  • 15. Settings Screen • Common Darwino settings used on mobile and desktop • Will be extensible with custom settings in the future • Covers server connections, local database encryption, and replication schedules • Internally, it is an abstract UI representation with a native face on each platform • In theory, this could be a good example of structuring a cross-platform native UI – I should really get on fleshing that aspect out
  • 16. Thank you for your attention!