javacro'14 - hybrid mobile apps – deploy java web application on android to run offline –...
Upload: hujak-hrvatska-udruga-java-korisnika-croatian-java-user-association
Post on 28-Nov-2014
907 views
DESCRIPTION
Hybrid mobile apps are combination of online web application and native application which is usually web browser wrapper for web application. This concept is commonly used to expose native resources of mobile device to web application and to skip developing web application from scratch as native app. But what to do when Android has no access to web application server? Can you deploy also Java web application to Android device to work offline? In this presentation we will share our experience with building small Java servlet server and with deploying Java servlet application to work on Android. Does it work ok? Are there any limits? Find answers on this presentation.TRANSCRIPT
Hibridne aplikacije -Upogonite Java web aplikacijuna Androidu da radi offlineMatija TomaškovićMatija TomaškovićDaniel Strmečki
POSLOVNE WEB APLIKACIJE13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Java web aplikacije - arhitektura
Web browser Web application server Database
SQLJava
Servlet
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 2 | 13.05.2014.
SQLDB
Java web app
WAR
Servlet server
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 1 - prilagodba dizajna
Desktop Mobile
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 3 | 13.05.2014.
Ne zaboraviti: responsive design / CSS
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
APK
KORAK 2 – pakiranje linka
WebView
Icon Name URLWeb application server
Servlet server
Java web app
WAR
SQL DB
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 4 | 13.05.2014.
WebView serverWAR
DB
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 2 – pakiranje linka
Android SDK Toolsandroid update project
Apache Ant
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 5 | 13.05.2014.
Android Base Wrapper
Apache Antant clean ant release
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
APK
KORAK 3 – izlaganje native funkcionalnosti
WebView
Icon Name URLWeb application
Servlet server
Java web app
WAR
SQL DB
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 7 | 13.05.2014.
WebView
JavaScript proxy
Native features
serverWAR
DB
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 3 – izlaganje native funkcionalnosti
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 8 | 13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
APK
KORAK 4 – offline deployment
WebView
Icon Name URLWeb application
Servlet server
Java web app
WAR
SQL DB
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 9 | 13.05.2014.
WebView
JavaScript proxy
Native features
serverWAR
DB
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
APK
KORAK 4 – offline deployment
WebView
Icon Name URL
Servlet server
Java web app
WAR
SQL DB
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 10 | 13.05.2014.
WebView
JavaScript proxy
Native features
serverWAR
DB
SYNC sa online sustavom
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 4 – offline deployment
implements/
extends
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 11 | 13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 4 – offline deployment
Instancira EF AppServlet
Binda listening socket
Context path "/evolution_framework"
Webapp dir
Započinjelistening loop
InstanciraServletConfig
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 12 | 13.05.2014.
Create ServletContextinstance
listening loop
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
KORAK 4 – offline deployment
Starta thread
Referenca nainput/output
InstancaHttpServletRequest
InstancaHttpServletResponse
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 13 | 13.05.2014.
Čita HTTP request: GET/POST line, HTTP
header, content
input/output socket streams
a) šaljeresource file
b) poziva servlet doGet/doPost
Servlet piše u ServletOutputStream
Šalje HTTP header icontent
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Offline webapp wrapper – on desktop
Priprema Java web aplikacije
compile & create JAR
Java classes & EF modules
zip EF java web app
copy app package
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 14 | 13.05.2014.
EF Offline Wrapper Builder
android update project
SDK Tools & Ant
add to base wrapper
ant clean, ant release
zip EF java web app
Android Base Wrapper
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
JARs
APKbuild
create
copyclasspath
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 15 | 13.05.2014.
APK
Assets
copy
builddeploy
zipcopy
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Offline webapp wrapper – on Android device
Kopiranje APK na Android Web app funkcionira offline
Samo
Ako nijepokrenut
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 16 | 13.05.2014.
Instalacija APK
Poketanje EF mobile wrapper app Unzip EF web app
Start servlet server
Samoinicijalno
DEMO
Offline Java web aplikacija
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr
Offline Java web aplikacija
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Zaključak
� bazirani na istom engine, Chromium od Android 4.4., HTML 5 support� WebView je po defaultu ograničen, potrebno ga je podesiti prema potrebama� za rad sa učitavanjem stranica, formama – koristiti WebViewClient� za napredniji rad sa JS i eventima – koristiti WebChromeClient� pure Java baza: HSQLDB
WebView vs Chrome
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 18 | 13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Zaključak
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 19 | 13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Zaključak
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 20 | 13.05.2014.
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Zaključak
<button type="button" value="someValue"
JS -> Java
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 21 | 13.05.2014.
<button type="button" value="someValue"
onclick="window.ok.performClick(this.value);">OK</button>
Java -> JS
HIBRIDNE APLIKACIJE - UPOGONITE JAVA WEB APLIKACIJU NA ANDROIDU DA RADI OFFLINE
Zaključak
� bolja ergonomija pokretanja� prisutnost na marketu� izbjegava se dupli razvoj istih funkcionalnosti u web i native mobile obliku
� (barem duplo) manji troškovi razvoja� manji potrebni know-how
� moguće je napraviti native wrappere za više platformi, iskoristive za više web aplikacija� mogu se iskoristiti native funkcionalnosti uređaja� može se iskoristiti snagu HTMLa(5), JavaScripta, CSSa
ZA HIBRIDNE APLIKACIJE:
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 22 | 13.05.2014.
� može se iskoristiti snagu HTMLa(5), JavaScripta, CSSa� mogući offline deployment Java web aplikacija na Androidu
PROTIV:� performanse� ergonomske prilagodbe / responsive design
� drag'n'drop� doubleclick
� treba napisati native wrapper� za offline aplikacije staviti u pogon (svoj/3rd party) Android servlet server