Pages

Monday, February 15, 2010

모바일 프로그래밍이란...

http://www.izmi.net에서 발췌

============================================================

모바일을 시작하는 분들께 제가 가장 많이 듣는 얘기가
'어떤것을 시작해서 어떻게 공부방향을 잡아 나아가야 하나?' 입니다.
저 역시도 이것을 아는데 상당한 시간이 걸렸구요..
다 표준이 제대로 되있지 않은 혼란스러움 때문이지요..
그래서 프로그래밍하시는 분들만 더 힘들게 되구요..ㅠ.ㅠ

하지만 쉽게 생각한다면 모바일분야도 웹분야와 별로 다를것이 없습니다.
다만 이동통신사마다 사용하는 플랫폼이 다를뿐이지요..

보통 웹쪽을 공부한다고 하면...처음에 사용자에게 보여지는 틀이라고 할수 있는..
마크업언어인 HTML을 시작으로 해서
내부적으로 여러가지를 처리해주는 언어인 ASP,PHP,JSP등을 공부하고
그 다음에 DB랑 연동해서 DB를 공부하고..그담에 컴포턴트, 자바애플릿..이런식이지요.

그럼 모바일은 어떻게 되느냐..(우리나라 현황 기준으로 보겠습니다)
웹분야의 HTML과 대응되는것이 모바일에서는 WML, mHTML, HDML입니다.
이들이 바로 모바일페이지에서 사용자에게 보여지는 화면을 구성하는 언어인
마크업 랭귀지들입니다. 서버스크립트 언어로는
모바일에서도 웹과 동일한 ASP,PHP,JSP등을 사용하구요..
웹분야에 자바애플릿과 대응되는것이 모바일에서는 MIDlet라고 하는 애플릿(정확히는 미들릿?)입니다..

이렇게 보면 우선 큰줄기는 비슷하지요?

그럼 이제 조금 혼란스러운 안쪽을 조금 들여다볼까요..
큰 줄기는 비슷하지만 세부적으로는 먼가가 좀 복잡하죠?
웹에서는 HTML하나가지고 마크업은 끝인데 왜 모바일은 세개나 되냐등등..

우선 WML은 세계 100여개업체가 참가한 WAPFORUM에서 모바일을 목적으로
XML에 기반을 두고 제정한 모바일 마크업 언어입니다
또, mHTML은 MS에서 제정한 마크업 언어이며
HDML은 phone.com(현 Openwave)에서 지정한 마크업 언어입니다.

현재 011,017에서는 SK-WML을 사용하고 있으며
019에서는 UP-WML, 016,018에서는 mHTML를 사용합니다.

SKT나 019나 둘다 WML인데 조금 다릅니다.
UP-WML이 왑포럼에서 발표현 정식 WML 규격으로 생각하시면되고
SK-WML은 SKT에서 자체적으로 SKT의 핸드폰에 맞게 조금 규칙을 수정한 것입니다.
그래서 이둘은 거의 호환되지만 100% 호환되지는 않습니다.
(이에 대한 질문도 심심치않게 올라오지요 WML로 작성했는데 핸드폰마다 다르게보이신다고..)

이정도면 좀 머리속에 정리가 되시는지 모르겠네요..말이 좀 횡설수설인거같은데..^^;;

ASP,PHP쪽은 HTML과의 연동이나 WML,mHTML과의 연동이나
헤더추가하고, 약간의 제약이 있는것 빼고는 다를게 없습니다.
즉, 모바일에 적용한다고 특별히 따로 공부해야 할 것이 없다는 얘기입니다.

지금까지 알아본것은 컨텐츠서비스 제공을 위한 것들이였구요
다음은 어플리케이션플랫폼쪽을 보겠습니다.
요즘은 멀티팩이다 머다해서 서버에서 다운받아서(예를들면 모바일포트리스같은 모바일게임)
자신의 핸드폰에 프로그램을 설치해놓고 이용하는 방식이 점차 확산되고있습니다
마치 일반 PC로 게임을 다운받아서 하드에 설치하는것과 같지요.
그럼 이런 어플리케이션은 무엇으로 개발하느냐?

이것도 여러갈래로 갈라집니다.
011,017은 J2ME(자바)기반과 GVM이라는 C기반의 플랫폼을 동시에 사용하고
(즉 핸드폰이 자바머쉰탑재핸드폰과 GVM탑재핸드폰이 따로 있음)
019는 J2ME(자바)기반의 플랫폼만을 사용하며
016,018은 브루라는 C++기반의 플랫폼을 사용합니다.
막말로 얘기해서 하나의 게임을 개발해서 SK와 KTF에 둘다 서비스등록하고싶으면
같은 어플리케이션을 자바로도 짜고 C로도 짜야된다 이소리죠..-_-;;

좀 더 세부적으로 보겠습니다.
자바를 하신분은 아시겠찌만
자바라는것이 VM에서 돌아가는데
모바일자바..J2ME는 KVM이라는 모바일자바의 가상머쉰 기반에서 돌아갑니다.
J2ME라는것이 KVM기반으로 CLDC위에 MIDP가 돌아가는 방식인데..
이것도 SK(011,017)와 LG(019)가 이 MIDP를 그냥 사용는게 아닙니다

SK에는 SK-VM이라는 자체적으로 구현한(정확히는 XCE에서 개발) VM을 사용하며
이 버츄얼머신의 API은 SUN사의 CLDC규격의 MIDP와 100%호환되면서
SKT-Service API라는것이 탑재된 자체적인 API를 사용합니다.
(즉 SUN사의 MIDP로 구현한 프로그램은 SK-VM에서도 돌아가지만
SK-VM API로 작성한것은 MIDP에서 실행되지 않죠..이해되시죠?)

또한 LG는 ez-JAVA라는 것을 사용하는데요..
이것또한 CLDC규격의 MIDP기반으로 MMPP라는 API가 추가된 형태입니다

이렇듯 자바를 기반으로 하는 SK와 LG이지만 조금씩 차이가 있습니다
자세한것은 각 이통사의 API 문서를 살펴봐야하겠습니다.

그럼 이번엔 MS랑 친한 KTF-_-;;
어플리케이션 플랫폼도 자바를 쓰지 않습니다.
바로 컬퀌사의 Brew라는것을 사용하는데요. 이는 C++기반의 플랫폼입니다
제가 C쪽은 잘 몰라서 자세히는 말씀 못드리겠네요..아무튼 그렇답니다-_-;;

그리고 SKT는 SK-VM이라는 자바기반의 버츄얼머신뿐 아니라 GVM이라는 버츄얼머신도 있습니다.
GVM은 우리나라의 신지소프트에서 개발한 플랫폼으로
SK-VM과 달리 C기반으로 구현된 플랫폼이며
현재 가장 큰 시장을 가지고 있는 버츄얼머신 플랫폼이기도 합니다.

자 이정도로 한번 마크업언어부터 어플리케이션플랫폼까지 한번 쭉 알아보았습니다
보신 여러분들이 어떻게 정리가 되셨는지가 모르겠네요..
글솜씨가 워낙 허접해서 더 혼란스럽지나 않을까 걱정입니다.

공부방향이라하면 컨텐츠하실분은 마크업언어쪽을 중점두시면 되구
어플리케이션개발하시는분들은 J2ME나 C를 공부하시면 되는데..
두개 다 하시려면 웹처럼 마크업부터해서 어플릿쪽으로 넘어가는게 좋습니다
마크업언어를 하면서 여러가지 개념들이 잘 잡히니까요..

모든 프로그래밍이 그렇지만 개념제대로 잡는것이 정말 중요합니다.
이 글도 보시구 여러가지 정보를 접하시면서 개념을 제대로 잡으세요

요즘 뉴스보면 WAP 2.0이 발표되면서 xHTML이 마크업언어의 표준이된다느니
우리나라이통사들 전부 MS랑 손잡고 통합되서 C#으로 다 옮겨간다는둥..
여러가지 말이 많습니다.. 이것을 하나하나 분석하고 자세히 살펴보아
자기의 지식으로 확실히 만드는것이 중요하다고 생각합니다.

No comments: