@gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client •...
Transcript of @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client •...
![Page 1: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/1.jpg)
@gluonhq@johanvos #javamobile #devoxx
![Page 2: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/2.jpg)
@gluonhq@johanvos #javamobile #devoxx
Java on MobileJohan VosCo-Founder Gluon
![Page 3: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/3.jpg)
@gluonhq@johanvos #javamobile #devoxx
Java on the client• Java started on the client
![Page 4: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/4.jpg)
@gluonhq@johanvos #javamobile #devoxx
Java on the client• Targeting Set-Top Boxes, Video On Demand
– Premature busines models – Cable providers wanted all control
• Mobile phones no big business in 1995
![Page 5: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/5.jpg)
@gluonhq@johanvos #javamobile #devoxx
Then came the server• Java programming language turned out to be very suited for
enterprise/backend development– J2EE API’s– Third party frameworks (Hibernate/Spring/…)– IDE’s, devops
• Mature business model• Controlled environments• Known customers
![Page 6: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/6.jpg)
@gluonhq@johanvos #javamobile #devoxx
What happened to the client?• Desktop: Swing
• Mobile/PDA:– KVM/CVM– CDC/CLDC– MIDP/PDA/Foundation– Personal/RMI
![Page 7: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/7.jpg)
@gluonhq@johanvos #javamobile #devoxx
What happened to the mobile client?• Java:• Fragmentation. Swing on your phone?• Required Java on the device• No way to easily deploy to end consumers
• Android and iOS• Proprietary UI framework• Java 7 and Objective-C• But it works, looks great and is easy to deploy!
![Page 8: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/8.jpg)
@gluonhq@johanvos #javamobile #devoxx
What if we had Java on Mobile• Android and iOS• Proprietary UI API• Java 7 and Objective-C• But it works, looks great and is easy to deploy!
• Java– Standard UI API (desktop/mobile/embedded)– Java 9– It still works, looks great and is easy to deploy!
![Page 9: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/9.jpg)
@gluonhq@johanvos #javamobile #devoxx
Standard UI API: JavaFX • Part of the Java SDK 8• Open-source (OpenJFX project in OpenJDK)• Modern API, modern architecture, hardware acceleration• Leverages Java 8 (functional interfaces)• FXML markup language (optional)• Binding framework (model – view), allows MVC• CSS styling and skinning
![Page 10: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/10.jpg)
@gluonhq@johanvos #javamobile #devoxx
JavaFXPorts: JavaFX on Mobile• Uses the code in OpenJFX repository• Apply some Android/iOS specific changes• Open-source• Community-effort, maintained by Gluon• JavaFX SDK for mobile:• Public releases• Commercial support
![Page 11: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/11.jpg)
@gluonhq@johanvos #javamobile #devoxx
JavaFX needs Java on mobile• Android: Dalvik/ART (Java 7)• iOS: RoboVM AOT (leveraging Java 7 runtime)
• Mobile port of OpenJDK:• Java 9 on modern mobile devices• Project proposed by Oracle• On Android, iOS and Windows tablets
![Page 12: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/12.jpg)
@gluonhq@johanvos #javamobile #devoxx
Creating an app• There are some steps between javac and uploading an app• Bundle your application code and resources with Java and
JavaFX runtime• Gradle script• IDE plugins
![Page 13: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/13.jpg)
@gluonhq@johanvos #javamobile #devoxx
Creating an app• IDE plugins create IPA, APK• allows to run/test on desktop
and devices• 100% code reuse• Platform-specific code is
possible
![Page 14: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/14.jpg)
@gluonhq@johanvos #javamobile #devoxx
Demo
![Page 15: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/15.jpg)
@gluonhq@johanvos #javamobile #devoxx
Gluon• It’s not just spare time• Provide commercial support for Java on Mobile• Provide services and products on top of JavaFX• eco-system:
– Open source component need commercial support– Commercial company relies on open source component
• Gluon co-funds JavaFXPorts, other companies invited as well.
![Page 16: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/16.jpg)
@gluonhq@johanvos #javamobile #devoxx
Gluon• Free tools:
– Scene Builder– JavaFX SDK’s– IDE Plugin’s
• Commercial tools– Charm (client library, Material Design controls)– Gluon Cloud (data persistence/synchronization and access to
legacy/cloud systems)
![Page 17: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/17.jpg)
@gluonhq@johanvos #javamobile #devoxx
Look and feel• Java– Standard UI API (desktop/mobile/embedded)– Java 9– It still works, looks great and is easy to deploy!
• Consistent and compelling look and feel across devices• JavaFX Controls can be styled (css), skinned and customized
![Page 18: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/18.jpg)
@gluonhq@johanvos #javamobile #devoxx
Gluon Charm• Gluon Charm:– Client library– Add (iOS/Android) specific styling to existing JavaFX
Control– Add mobile Controls (with specific styling)– Allows MVC approach– Provides Flow API’s
• demo
![Page 19: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/19.jpg)
@gluonhq@johanvos #javamobile #devoxx
Charm Down• Open Source• Access native functionality in a cross-platform way• Examples:– Get location info– Caching API
• No Android/iOS/Desktop specific code needed • Runtime: bundle with charm-down-{ios/android/desktop}
![Page 20: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/20.jpg)
@gluonhq@johanvos #javamobile #devoxx
Charm Down• Code snippet for local file storage
import com.gluonhq.charm.down.common.Platform;import com.gluonhq.charm.down.common.PlatformFactory;
Platform platform = PlatformFactory.getPlatform();File privateStorage = platform.getPrivateStorage();
![Page 21: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/21.jpg)
@gluonhq@johanvos #javamobile #devoxx
Native API’s• Not everything is standardized in Charm-Down• Examples– Activity integration– Android watch notifications
• We use the platform-specific source directories for this• Demo
![Page 22: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/22.jpg)
@gluonhq@johanvos #javamobile #devoxx
Future plans• Java 9• Performance• More mobile widgets, great Look and Feel• More cloud/back-end integration
www.gluonhq.com@johanvos
![Page 23: @gluonhq@johanvos#javamobile #devoxx · @gluonhq@johanvos#javamobile #devoxx Java on the client • Targeting Set-Top Boxes, Video On Demand – Premature busines models – Cable](https://reader031.fdocuments.in/reader031/viewer/2022021808/5bef25dd09d3f25b348b7f33/html5/thumbnails/23.jpg)
@gluonhq@johanvos #javamobile #devoxx
Thanks For AttendingAny Questions?