하이브리드 플랫폼 (Hybrid App) 1 - 안드로이드 웹앱

2014. 2. 18. 14:59Programing/Android / Java

하이브리드 플랫폼 (Hybrid App)

 

하이브리드 플랫폼은 왜 만들어 졌을까?

스마트폰이 보급되기 시작해서 대중회 된지 벌써 4년째가 되었다. 

안드로이드 폰이 출시가 되고, 아이폰이 국내에 유입이 되기 시작하면서 급격히 스마트폰 시작이 증식되기 시작했던거 같다.

지금에 와서 보면, 많은 사람들이 다양한 스마트폰 앱을 사용하고 있다.

안드로이드, iOS, 윈도우폰, 블랙베리, 바다 플랫폼 등이 이용되고 있는 것이다.

여기서 가장 불편한 점은, Native Code를 사용해서 개발하는 경우 호환이 되지 않아, 각 OS에 맞게 새로 프로그래밍을 해야 한다는 것이다.

개발 환경을 배우고, 코딩을 맞게 다시해서 구현을 하고.....

이게 귀찮아서 일부 개발자들은 하나의 OS만 정해서 개발을 하는 경우도 많이 있다.

그럼 하나의 앱을 각 OS에 모두 구동이 되게 하면 되지 않을까?

그렇게 하기 위해서는 어떤 방법이 가장 좋을까?

이러한 생각들이 모여서 만들어지게 된 것이 하이브리드 앱 기술이다.


그렇다면 그 답은 어디에 있을까?

아이폰에서도 되고! 안드로이드에서도 되고! 윈도우 폰에서도 되고! 심지어 PC에서까지 되는 것은??

우리가 흔히 사용하고 있는 인터넷이다.

다시 쉽게 이야기를 바꾸면? 모바일을 앱 형태로 만들면 된다는 거다.


좀 더 기술적으로 이야기를 해보면,

하이브리드 모바일 어플리케이션 개발 기법은 최근 주목 받는 멀티 스마트폰 플랫폼 기반의 앱 개발 방법이다.

WebKit 기술을 바탕으로 HTML5 + CSS3 + JavaScript 로 만들어지며, 뛰어난 확장성과 호환성을 제공한다.

대부분의 모바일 플랫폼은 웹킷을 사용해 구현된 웹 브라우저를 탑재하고 있으며, 

하이브리드 앱 또한 웹킷을 바탕으로 구현된 웹 브라우저 컴포넌트를 기반으로 작동한다. 

이를 통해, 하이브리드 앱은 다양한 스마트폰에서 실행할 수 있다.


예를 들어서 이야기 해보라고 한다면, 

난 네이버 앱을 받아서 실행해서 화면을 보고, 인터넷 브라우저로 http://m.naver.com/에 접속해서 비교해 보라고 말을 하고 싶다.

네이버 블로그 앱을 받아서 실행해서 화면을 보고, 인터넷 브라우저로 http://m.blog.naver.com에 접속을 해서 자신의 블로그를 보라고 말을 할 수도 있겠다.

보통 주변 사람들에게 이정도 이야기하고, 보여주면 이해를 했었다.

 

잠시 딴 이야기로, 웹킷 기술을 바탕으로 한다는데,,,, 그럼 웹킷은 멀까?

WebKit 이란?

    WebKit은 웹 브라우저를 만드는 기반 기술로써, 애플이 관련 코드를 오픈 소스로 공개를 했다.

    사파리, 크롬, 오페라 등이 다양한 웹 브라우저가 웹킷 엔진을 사용해 구현되었으며, 

    www.webkit.org 에서 소스 코드를 다운 받을 수 있다.

  


 

스마트폰 플랫폼의 진화

안드로이드와 아이폰의 보급을 기점으로 급격한 스마트폰 플랫폼의 진화가 시작되었다.

이러한 플랫폼들은 대부분 다른 개발 언어와 개발 환경을 제공하고 있다.

대표 플랫폼의 개발환경을 비교해 보면, 아래와 같다.

 

 플랫폼 구분

개발 언어

개발 툴 

   아이폰

   Objective-C

   XCode, Mac OS Only 

   안드로이드

   Java 

   Android SDK, Eclipse, Windows/Mac/Linux 

   윈도우폰7/8

   C# 

   Sliverlight/XNA, Visual Studio,    Windows Only 

   바다

   C/C++  

   바다 SDK, Eclipse, Windows


 

하이브리드 앱의 등장과 현황

모바일 소프트웨어 플랫폼 환경에서 애플리케이션을 개발하는 방식은 크게 세 가지로 구분된다. 


- 네이티브 어플리케이션 : 플랫폼이 제공하는 개발 환경만을 이용하여 만든 어플

    가장 빠른속도와 최적화된 기능 구현이 가능하다는 장점을 갖는다. 

    개발방식은 해당 스마트폰 플랫폼에 따라 상이한데, 아이폰이면 맥OS/Objective-C 언어를 학습하고 XCode 개발 환경을 이해 한 후 iOS의 각종 SDK까지 익혀야 한다. 

    안드로이드인 경우에는 Java/Android 언어를 학습하고 Eclipse 환경에서 개발해야 한다. 

    즉, 다양한 플랫폼이 서로 다른 개발환경으로 개발 생산성이 낮다.


- 웹 어플리케이션 : 스마트폰에 탑재 된 웹 블라우저와 웹 기술을 이용하는 웹 어플

   호환성과 높은 생산성을 요구하는 애플리케이션 개발에 적당하다.

   이 방식은 모바일 웹 브라우저를 생각하면 이해하기 쉽다. 

   각 스마트폰의 브라우저에서 특정 URL을 입력하면 웹 페이지를 접속할 수 있다. 

   이런 구조이기 때문에 웹 브라우저가 탑재된 모든 스마트폰 플랫폼에서 작동이 가능한 애플리케이션을 손쉽게 개발할 수 있다. 

   다른 방식에 비해 상대적으로 인력/교육에도 유리하지만 스마트폰 플랫폼의 하드웨어 제어가 어렵고, 앱 실행 속도가 느리다는 단점을 갖고 있다.


- 하이브리드 어플리케이션 : 네이티브 어플과 웹의 장점을 동시에 갖는 어플

   웹킷 기반의 웹 컴포넌트(WebView) 기술과 HTML5 기반의 웹 기술로 네이티브 애플리케이션의 성능과 웹 애플리케이션의 호환성을 동시에 만족한다. 

   이 방식은 하드웨어 제어 및 비즈니스 로직과 유기적인 연계가 가능하며 동일한 소스 코드를 사용해 

   다양한 플랫폼에서 작동하는 애플리케이션을 손쉽게 개발할 수 있도록 지원한다.


 구분

네이티브 

웹 

하이브리드 

   그래픽 UI 성능 

하 

상 

   앱스토어 판매 

가능 

불가능 

가능 

   웹서비스 매쉬업 

불가능 

가능 

가능 

   멀티플랫폼 지원 

어려움

용이

용이 

   스토리지 

로컬 

서버, 클라우드 

로컬, 서버, 클라우드 

   디바이스 제어 

용이 

불가능 

용이 

   다중 사용자 작업 

불가능 

가능 

가능 



- 이 내용은 "하이브리드 모바일 앱 개발을 위한 PhoneGap"의 자료를 일부 참조하였습니다.