HyWAI is an HTML5 based Hybrid Web Application platform that allows you to author native applications with web technologies and get access to APIs and app stores.
HyWAI leverages web technologies developers already know best... HTML and JavaScript.
3. 3
Introduction
q HyWAI is an HTML5 based Hybrid Web Application platform that
allows you to author native applications with web technologies
and get access to APIs and app stores.
q HyWAI leverages web technologies developers already know
best... HTML and JavaScript.
......
GPS
Contacts
Phone Call
Gallery
…
Internet
4. 4
History
q Version 0.5 (Dec 2009)
§ Support iOS 2.x, Android 1.x
§ Considering interoperable with W3C Device APIs
q Version 1.0 (Dec 2010)
§ Support iOS 3.x, Android 2.x
q Version 2.0 (Dec 2011)
§ Support iOS 5.x, Android 4.x
§ Implemented NFC API
q Version 2.1 (Dec 2012)
§ Support iOS 6.x, Android 4.x
§ Implemented NFC API, File API, Sensor API, Remote Access,
q Version 3.0 (Dec 2013)
§ Support iOS 7.x, Android 4.x
§ Partiality implemented Bluetooth API, WiFi API, Web of Things features
q Version 3.5 (Dec 2014)
§ Support iOS 8.x, Android 4.x
§ Full Restructuring, Web Bluetooth API
§ Considering browser based APIs
5. 5
Native App vs. Web App
Native App
Web App
Web page
Native
Web App
Hybrid Web App
(Cross Platform)
Multi-platform support
6. 6
Introduction - How HyWAI Works
qBuild your app once with web-standards
§ Based on HTML5, HyWAI leverages web technologies
developers already know best... HTML and JavaScript.
qWrap it with HyWAI
§ Using HyWAI or the free open source framework(e.g:
PhoneGap, Appspresso) build you can get access to native
APIs.
qDeploy to multiple platforms!
§ HyWAI uses standards-based web technologies to bridge web
applications and mobile devices.
7. 7
Smart Phone
HyWAI Native AppHyWAI Native App
Web BrowserWeb Browser
HTML page
CSS
Javascript
HyWAI APIs
Native Application
Created using the
Android SDK or Xcode.
Automated using HyWAI
Native Application
Created using the
Android SDK or Xcode.
Automated using HyWAI
Web Browser
Webkit on iPhone or
Android
Web Browser
Webkit on iPhone or
Android
Javascript & CSS
Sencha, jQuery
Mobile, jQTouch
HyWAI provide
system APIs for
access to native
features. Also it can
be use to external UI
frameworks to
provide better UX.
Javascript & CSS
Sencha, jQuery
Mobile, jQTouch
HyWAI provide
system APIs for
access to native
features. Also it can
be use to external UI
frameworks to
provide better UX.
App Store
Open API Mashup
External Open APIs
(e.g: Google Maps,
Twitter, Facebook…)
Open API Mashup
External Open APIs
(e.g: Google Maps,
Twitter, Facebook…)
HyWAI Technology
8. 8
HyWAI 2.1
Web ApplicationWeb Application
WebServerWebServer
HyWAI API (Java Script)HyWAI API (Java Script)
HyWAI BrokerHyWAI Broker
Native APINative API
Sync
Process
Async
Process
Ajax (Async)Ajax (Sync)
Notification
Ajax (Async)
10. 10
HyWAI 3.5
q Latest Platform support
§ iOS 8.X
§ Android 4.X
q Refactoring
q Web Bluetooth API support
11. 11
Android, iOS, Web 프로젝트 구성
기존 HyWAI 프로젝트 구성 새로운 HyWAI 프로젝트 구성
Android
- Jar 파일 형태로 라이브러리 구성
- Jar를 기존 샘플 프로젝트에서 생성하도록 되어
있음
- AAR (Android ARchieve) 파일 형태로 라
이브러리 구성
- AAR 을 빌드 할 수 있는 Module과 샘플
프로젝트를 빌드 하는 Module이 구별되
어 있음
- Gradle을 통하여 빌드정보를 관리함.
iOS
- .a (Archive) 파일 형태로 빌드하기 위한 별도 프로
젝트 라이브러리 구성
- HyWAI iOS 라이브러리를 사용하기 위해 개발자
가 .a 및 .h 파일을 알맞게 가져와 사용해야 함.
- framework 파일형태로 프로젝트 라이브
러리 구성
- 빌드 된 framework 파일은 .a 및 .h를 모
두 포함하는 형태이므로 개발자는
framework 파일을 프로젝트 설정에 추가
하는 것으로 HyWAI 사용 가능.
Web
- jQuery Mobile로 만들어진 샘플 프로젝트 소스와
명확히 구분되지 못하고 있음
- HTML, CSS, JS, Image 등 정적 파일이 모두 압축
되지 않은 형태임
- Lint 등 기본적인 코드 구성 확인에 대한 도구가
없어 디버깅 시 Native 프로젝트에 포함 시켜 확
인해야 함.
- Yeoman을 이용한 빌드 구성
> yo : 프로젝트 생성(스캐폴딩)
> grunt : 태스크 자동화
> bower : JS 라이브러리 관리
- Angular.JS를 이용하여 샘플 프로젝트를
구현하였지만 모듈을 명확히 분리하여 다
른 framework에서도 동작 용이
- grunt를 이용하여 JS Lint/ 빌드/ 테스트/
문서생성 태스크를 자동화
12. 12
Android Project
기존 HyWAI 새로운 HyWAI
구성
설명
- 위 스크린 샷은 기존 프로젝트를 현재 버전의
Android Studio(1.0 RC)에서 import 하였을 때 프로
젝트 구성이다.
- app/src/main/java 폴더에 라이브러리 및 샘플 프로
젝트 구별 없이 java 소스가 구성되어 있다. Jar 생성
을 위해서는 java 폴더내의 소스 중 라이브러리 관
련 소스만 분리하여 jar export를 수행해야 한다.
- assets/ 폴더에 html, css, js, image 등 웹용 리소스
파일이 위치하고 있다.
- Gradle 파일은 import 시 구성되었으나 프로젝트의
여러 곳에 혼재되어 존재 한다.
- app / hywai / Gradle Scripts 형태로 구성된다.
> app : 샘플 프로젝트를 생성하기 위한 모듈
> hywai : AAR을 생성하기 위한 모듈
è hywai 모듈을 빌드 하는 것으로 AAR 파일 생성
가능
> Gradle Scripts : app, hywai 모듈의 빌드를 관리하
기 위한 GradleScripts
è 소스와 분리하여 빌드 스크립트를 관리
13. 13
기존 HyWAI 새로운 HyWAI
구성
설명
- iOS 라이브러리 (.a)파일 빌드를 위한 별로 프로젝트
가 존재
- 빌드시 생성되는 .a파일과 프로젝트 내의 .h파일들
을 앱 프로젝트로 이동하여 사용
- HyWAI Workspace 안에 라이브러리 빌드를 위
한 프로젝트와 샘플 앱 프로젝트 빌드를 위한 프
로젝트로 구성
> hywai : hywai framework 프로젝트
è .h와 .a 파일을 모두 포함하는 framework를 빌
드하여 타 프로젝트에서 사용이 용이하게 함.
> hywai container : hywai 샘플 앱 프로젝트
è framework으로 분리된 라이브러리를 참조하
여 라이브러리 부분과 앱의 소스 구분이 명확
iOS Workspace
14. 14
기존 HyWAI 새로운 HyWAI
구성
설명
- 별도 구별 없이 Android, iOS 프로젝트에 포함
되어 있음
- HTML, CSS, JS, 이미지 리소스가 압축(minify)
되어 있지 않아 실 사용시 로딩 성능 문제 발생
소지 있음
- 릴리즈 용 소스와 테스트 용 소스가 명확하게
구분되어 있지 않음
- Yeoman을 이용한 빌드 구성을 갖는 별도 프로젝트
로 분리
> yo : 프로젝트 생성(스캐폴딩)
> grunt : 태스크 자동화
> bower : JS 라이브러리 관리
- Angular.JS를 이용하여 샘플 프로젝트를 구현하였지
만 모듈을 명확히 분리하여 다른 framework에서도
동작 용이
- grunt를 이용하여 JS Lint(jshint) / 빌드(concat,
uglifyjs, htmlmin, cssmin, imagemin, svgmin)/ 테스
트(karma) / 문서생성(jsdoc3) 태스크를 자동화
Web Project
15. 15
W3C FirefoxOS Chrome
Tizen
(Web API)
iOS
Android
(SDK)
HyWAI 3.5
블루투스 LE
지원
O O1 O X O O O
BR/EDR 전용
API 지원
X O O O X2 O O5
페어링 처리
기기 객체가
페어링 여부
확인
전역
아답터 객체
자동
전역
아답터 객체
자동
자동/
기기 객체
자동
LE 메시지
수신 처리
Promise와
GATT 객체
Promise와
이벤트 객체
Callback Funct
ion
Callback Obje
ct
Delegate Prot
ocol
Callback Obje
ct (Java)
Callback Funct
ion
LE 메시지
송신 처리
GATT
속성별 객체
GATT
속성별 객체
블루투스
전역 객체
N/A
기기 객체 /
전역 매니저
객체
기기별
GATT 객체
GATT
속성별 객체
BR/EDR
통신 방법
LE용 API 이용
Callback Funct
ion3
소켓 기반
통신
소켓 기반
통신
LE용 API 이용
소켓 기반
통신
소켓 기반
통신6
예외 처리
종류 및 처리
방법만 제시
Promise
이용
전역 런타임
에러 객체
에러 콜백
객체
콜백에 에러
객체 전달
Exception
객체
Promise
이용
서버 역할
지원
X LE BR/EDR BR/EDR LE BR/EDR, LE BR/EDR7, LE
1기존 OS에는 미탑재, API 표준 논의중. 기존 OS에는 승인된 Application만 사용 가능한 BR/EDR용 API만 있음
2Apple사의 MFi 프로그램을 통해 개발된 기기들을 중심으로 한정적인 지원
3특정 Profile들만 지원: HFP, A2DP, 등
4크롬 OS는 소켓 기반 통신만 지원.
5, 6, 7iOS기기는 BR/EDR 통신 API를 지원하지 않음.
Web Bluetooth API 구현 및 표준화
15