최근 수정 시각 : 2024-10-14 23:13:12

WIPI

원피에서 넘어옴
1. 개요2. 장점3. 문제점4. 의무화 폐지 전후5. 코드 예시6. 기타7. 에뮬레이터

1. 개요

Wireless Internet Platform for Interoperability의 약자. '위피'라고 읽으며 Wi-Fi와는 관련이 없다.

상호운용성을 위한 무선 인터넷 플랫폼이라는 뜻을 지니고 있다. 휴대폰끼리 무선인터넷 기본 플랫폼이 달라서 생기는 컨텐츠 호환성의 문제를 해결하고자 만든 플랫폼. 쉽게 말하면, 폰게임이 어느 기종 전용이라 다른 기기에서는 못 하는 상황을 방지하기 위한 규약이다.

한국무선인터넷표준화포럼(이하 KWISF) 모바일플랫폼특별분과가 2001년 7월에 생긴 후 그해 9월에 이통사 3사가 공통 요구 사항을 제시하였고, 2002년 이후에 본격적으로 정식버전인 '위피 1.0' 규격이 발표되어 2003년 6월 LG전자에서 위피 탑재 폰을 최초로 출시하였다. 위피 및 국내 콘텐츠 업체의 해외 진출을 위해 당시 상당한 점유율을 차지하고 있던 자바와의 호환성이 필요하다는 판단에서 2004년 2월 자바표준화단체의 표준 규격인 J2ME CLDC/MIDP와 호환성을 갖춘 '위피 2.0' 규격을 발표했으며, 그 후 2005년 4월 1일 위피 탑재 의무화가 발표되었다. 이후 극소수를 제외한 모든 국산 핸드폰들은 위피를 탑재하고 출시되었다. 심비안 등의 운영 체제를 사용하는 스마트폰에는 탑재되지 않는 경우도 있었으나 Windows Mobile 기반인 오즈 옴니아에도 위피가 탑재되는 등 당시의 휴대폰에 광범위하게 탑재되었다.

사용할 수 있는 프로그래밍 언어는 C/ C++(일부 제한 있음), Java였다. 단 J2ME와는 달리, Java로 작성된 프로그램(Jlet)이라고 해도 JVM을 이용해 구동하는 게 아니라 통신사 COD서버에서 컴파일된 바이너리를 휴대폰에 제공하는 방식이다. [1]

2. 장점

  • 모바일 앱 개발 플랫폼이 비교적 통일되었다. 물론 WIPI 내부에서도 파편화가 상당히 이루어지기는 하였으나, WIPI 도입 전의 상황에 비하면 애교 수준에 불과하다. 예를 들면, WIPI 시대 이전에 SK텔레콤에서 쓰던 SKVM과 KTF에서 쓰던 BREW는 API 차이는 고사하고 사용하는 프로그래밍 언어부터 달랐다. 이 때문에 개발자들은 주로 1위 사업자인 SK텔레콤 휴대폰을 타겟으로 앱을 만들었고, KTF, LG텔레콤 휴대폰용 앱 시장은 소외되는 문제가 있었다. WIPI의 등장은 이 문제를 상당히 완화시켰다.
  • Java로 개발한 애플리케이션을 휴대폰에서 JVM을 띄워 구동하는 게 아니라, 통신사의 Compile-On-Demand (COD) 서버에서 컴파일된 바이너리를 받아서 구동시켰기 때문에 성능면에서 장점이 있었다.

3. 문제점

  • 민간 업자들이 나서서 해야 할 표준 플랫폼 개발을 정부 주도로 하게 되었다. 그런데 당시 다른 업체들은 둘째치고 SK텔레콤와 KTF의 자존심 싸움 때문에 정부가 끼어든 것이다.
  • 위피에 Java 기술이 사용된 탓에 썬 마이크로시스템즈(현 오라클)에게 특허료를 지불해야만 했다.[2] 그러나 국내 개발 환경을 썼다면 그건 그거대로 갈라파고스 소릴 들었을 것이다.
  • 호환성을 위해 도입한 COD(Compile On Demand)는 최종 사용자가 애플리케이션을 다운로드 받을 때 그 휴대폰 플랫폼에 맞게 컴파일해서 다운로드 되게 하는 방식이었는데, 애플리케이션 개발자들이 개발할 때 제대로 개발됐는지 컴파일해서 확인해 보는 과정이 필요해 거기서 약간의 개발 시간이 추가됐다.
    • 그러나 위피라는 공통 플랫폼이 있더라도 통신사마다 제공하는 개발 환경이 달랐기에 개발자들에게는 결국 매한가지였다. 통합 플랫폼이지만 SKT-WIPI, KT-WIPI, LGT-WIPI의 형태로 다시 나눠져 버린 꼴이 됐다.(위피 이전 이통사별 개발 환경은 SK텔레콤(GVM, SK-VM), KTF(BREW), LG텔레콤(JavaStation)였다.) 그러나 위에 썼듯, WIPI 도입 전의 상황에 비하면 애교 수준에 불과하다.
    • 게다가 휴대폰의 해상도에 따라서 프로그램 호환이 되지 않는 호환성 문제도 있었다. 당시에는 해상도가 기껏해야 176×220, 240×320 정도로 작아서 UI를 픽셀 단위로 하드코딩하기도 했다. 다만 이는 Microsoft Windows용 앱에서도 볼 수 있었던 문제.
  • 국내에서 판매되는 휴대폰에 WIPI를 탑재 의무화하면서 모토로라를 제외한 외산폰의 도입이 사실상 막혔다. 하지만 플랫폼 표준화를 위해 탑재 의무화가 요구되었다는 반론도 있다. 국제 표준이 있었음에도 불구하고 따르지 않았다면 논란이 더 커졌겠지만 당시 피처폰용 소프트웨어에 관해선 국제 표준도, 사실상의 국제 표준도 없었기 때문에, 외산폰 도입을 막았다는 비판은 어쨌든 결과론적인 이야기이다.

4. 의무화 폐지 전후

2008년 9월 7일 이통사 3사는 '위피 3.0' 규격에 합의하고 기술 개발에 착수했음을 알렸다. '위피 3.0'은 3G, 와이브로(4G)를 지원하고 심비안, 윈도모바일 등 범용 운영 체제 기반에서 가동될 수 있도록 할 것이라고 발표했지만 # 시기상 이미 늦었으며[3] 2008년은 무엇보다 애플이 7월에 아이폰3G와 앱스토어를 선보였던 해이다.(최초 아이폰은 2007년 1월 발표 6월 출시.)

의무화 폐지가 본격적으로 논의되기 시작한 건 iPhone이 국내출시를 저울질하던 2009년 초 시점이며 WIPI로는 아이폰의 기능을 커버할 수도 없고, App Store가 무용지물이 되는 이유 때문에 삼성전자와 LG전자의 해외 출시 기기들도 국내에는 출시가 안 되는 문제점이 공론화되었다. 따라서 아이폰 같이 성능이 좋은 외산 스마트폰을 원하는 극히 일부 소비자들에 의해 WIPI 폐지를 요구하는 여론이 생기고, 또 WIPI가 한국 이동통신 시장의 갈라파고스화를 부추기고 있다는 판단에 따라 결국 2009년 4월 1일에 완전히 폐지되었다. 관련 기사 #2

사실 폐지 쪽으로 여론이 기울어 갈 즈음에도 게임 회사 측에서는 반대한다는 의견이 많았다. 주된 이유는 플랫폼의 분열이 심해져 개발이 더 힘들어질 것이라는 것이었다. 기사의 첫번째 댓글 참조, 당시 한 블로그. 이때는 스마트폰 쪽도 iPhoneOS를 비롯하여 Windows Mobile, 블랙베리 OS, 심비안 등의 여러 모바일용 운영 체제가 춘추전국시대처럼 난립하던 시기여서 이런 우려가 당시 기준으로는 틀린 것은 아니었다.

그러나 2009년 11월 28일 iPhone 3GS가 KT를 통해 한국에 정식 출시되고, 2010년대 초반 이후 스마트폰이 대중화되자 iOS만 살아남고 다른 운영 체제는 점유율이 바닥을 치게된다. 그리고 다른 모바일 운영 체제들이 급속도로 쇠퇴하는 동안 혜성처럼 새롭게 등장한 구글 안드로이드 오픈 소스를 무기로 급성장하면서 두 운영 체제의 양강 구도로 정착하게 된다. 그리고 이 시점에선 스마트폰 초창기 iOS와 경쟁하던 수많은 모바일 운영 체제들이 사실상 도태된 상태였기에 결과적으로 게임사들의 우려는 기우에 그쳤다. 2009년 이후 모바일 게임계는 전례 없는 호황기를 맞고 있다.

5. 코드 예시

import org.kwis.msp.lwc.*;
import org.kwis.msp.lcdui.*;

public class HelloWorld extends Jlet {
protected void startApp(String[] args) {
ShellComponent shell = new ShellComponent();
LabelComponent label = new LabelComponent("Hello, World!");
shell.addComponent(label);
shell.show();
}

protected void pauseApp() {}
protected void resumeApp() {}
protected void destroyApp(boolean b) {}
}
}}} #include "WIPIHeader.h"

MC_GrpContext context;
MC_GrpFrameBuffer buffer;

void startClet(int argc, char* args[]) {
buffer = MC_grpGetScreenFrameBuffer(0);
MC_grpInitContext(&context);
}

void paintClet(int x, int y, int w, int h) {
MC_grpDrawString(buffer, 0, 10, "Hello, world!", -1, &context);
}

void pauseClet() {}
void destroyClet() {}
void resumeClet() {}
}}}

6. 기타

안랩에서 위피 기반 백신을 출시한 적이 있다. 다만 해외와 달리 홈브루 소프트웨어 설치가 원천 차단된 특성상 큰 의미는 없었다.

2007년에도 WIPI가 탑재되지 않은 논위피폰이 출시된 적이 있다. 팬택의 P-U5000, LG전자의 KH1200이 대표적인 예. 이 때 WIPI 개발자들을 중심으로 반발이 많았는데, 결국 절충안으로 휴대폰 인터넷 서비스와 이를 이용한 서비스를 탑재하지 않는 기종에 한해서만 WIPI 미탑재를 허용하기로 했다. 그래서 휴대폰 메신저 등의 사용이 불가능. 그런데 이 기종에 WIPI 기반의 휴대폰 게임을 다운받아서 무료로 할 수 있다는 것이 알려지면서 논란이 된 적이 있다. 후에 자바 앱 추가가 불가능하게 업데이트 되면서 사용자 중 논란이 있던 적도 있었다. 원인 제공은 WAP 서비스의 수익 감소가 두려운 KT일지도... 물론 구형 기기는 보유만 하고 있다면 아직도 가능. 다만 상단바가 숨겨지지 않아 일부 게임의 아래쪽 메뉴 등이 잘리는 경우가 많다. 또 오페라 미니도 설치 가능하다. 인터넷 연결을 허용하겠습니까? 하는 안내가 뜨지만 실제로 작동되지는 않는다. 아마 출시 전에 빠졌거나 WAP 게이트웨이 설정이 없어서 안되는 걸지도... 네트워크 설정은 있다. 아무래도 제한적인 인터넷 연결(블루투스 테더링 아니면 전화접속 네트워킹) 때문에 빠졌을지도... 다른 웹 지원 게임들도 메시지만 출력될 뿐 작동은 안되었으니...

이 플랫폼과 WAP를 헷갈려하는 사람들이 있는데 우리가 피처폰의 무선인터넷을 지칭하는 것들은 WAP이다.

전혀 다른 개념인 Wi-Fi와도 혼동하는 경우가 많다. 과거 국내에 출시되었던 폰들은 통신사들의 갑질로 Wi-Fi가 제거되어 발매되는 편이었고, 있다고 하더라도 인터넷 전화(...) 전용이라든지, 지정된 통신사 AP(그마저도 수신감도가 개떡같다)에만 접속해 한정된 기능만을 수행하는 게 전부였다.

놀랍게도 게임의 불법 복제가 가능했다. DFS, QPST등의 툴을 이용해 게임을 복사할 수 있었으나 모든 기종들이 툴을 지원하는 것도 아니었고 상기했듯 WIPI의 호환성 자체가 좋지 못했으므로 동일한 통신사에 동일한 기종이 아니면 화면이 잘린다든가 구동이 안 된다든가 하는 문제가 있어 불법 복제가 그닥 활성화되지는 않았다. 통신사 역시 불법 복제를 가만히 두고 보지만은 않아서 KTF의 경우 __env__ 폴더 안 기기별 고유 파일이 있어야 동작하도록 하여 불법 복제를 차단했다.

2010년 극초반에 WIPI 게임 중 일부 게임들은 안드로이드로 이식되기도 했다. 안드로이드 앱으로 이식된 WIPI 게임의 특징은 다중 사운드를 지원한다는 것이다. 일부 게임은 WIPI 음원에서 편곡해 수록되기도 했다. 하지만 안드로이드 12 기준으로는 일부 WIPI 이식 게임만 플레이할 수 있으며, APK 파일을 구해 직접 설치해야 한다. 게다가 안드로이드 14 이후는 안드로이드로 이식된 WIPI 게임은 플레이하기 어렵다.

7. 에뮬레이터

WIPI 게임을 컴퓨터나 스마트폰[4] 등 다른 기기에서 돌릴 수 있는 방법은 한동안 존재하지 않았다. 물론 WIPI 프로그램을 만들 때 동작 확인을 위한 에뮬레이터 같은 것은 있지만, 이것은 소스 코드가 있는 개발 도중에나 사용하는 것이지 이미 휴대폰용으로 컴파일된 게임 파일을 실행할 수 있는 에뮬레이터가 아니다.

WIPI는 기본적으로 인터페이스를 표준화해서 공개한 것이고, 이를 실제로 구현하는 것은 제조사들의 몫이다. 따라서 휴대폰마다 각각 WIPI가 구현되어 있는데, 위에서 말한 Windows 용 에뮬레이터는 Windows를 마치 하나의 휴대폰으로 보고 Windows 용 WIPI를 구현한 개념이다. 그리고 WIPI는 기본적으로 COD(Compile on Demand) 방식을 사용하기 때문에, 게임 파일은 모두 이미 컴파일된 상태로 배포된다. 이 컴파일 타겟이 KT/SKT/LGT 등의 제조사별로 나뉘는데, 여기에 에뮬레이터까지 포함해서 KT/SKT/LGT/Windows 등의 타겟으로 빌드를 할 수 있는 것으로 생각하면 된다. 따라서 이 에뮬레이터는 오직 Windows 용으로 빌드된 프로그램만을 실행할 수 있으며(애초에 dll 같은 Windows 실행 파일 형태로 빌드가 된다) 실제 휴대폰에서 추출한 게임 파일 등은 실행할 수 없다. 심지어 인터넷에 있는 것들은 거의 다 WIPI 1.1 용 에뮬레이터이므로 더더욱 의미가 적다.

즉 엄밀히 말해서 저것은 에뮬레이터라고 부를 수 없고, 안드로이드에 비유하자면 PC에서 실행하는 x86 용 안드로이드 같은 물건으로 생각하면 된다. PC에서 ARM 용 안드로이드를 QEMU로 명령어 에뮬레이션까지 해서 실행하는 것은 엄밀한 의미에서도 에뮬레이터라고 할 수 있지만, 그냥 x86 용으로 빌드된 안드로이드 시스템을 PC에서 실행하는 것은 에뮬레이터가 아니라 그냥 안드로이드라는 프로그램을 PC에서 실행하는 것 뿐이다. 다만 안드로이드는 플랫폼에 종속되지 않는 바이트코드로 컴파일되므로(NDK 등 네이티브 라이브러리가 포함되는 건 제외하고) PC에서도 모바일용 앱을 실행할 수 있는 것이지만 WIPI는 각 플랫폼 타겟별로 빌드를 하기 때문에 그럴 수 없다는 차이점이 있을 뿐이다.

실제 피처폰 게임 에뮬레이터를 개발하기 위해서는 피처폰의 KT/SKT/LGT 등의 제조사별 WIPI의 구현을 그대로 모방해야 할 필요성이 있는데[5], 사실 기술적으로 엄청 복잡하냐고 하면 그 정도는 아니기 때문에, 해외라면 양덕 해커들이 어렵지 않게 할 수 있는 작업이지만 당연하게도 WIPI 에뮬레이터를 만들 요인은 우리나라 사람이 아니면 없는데, 우리나라에서 이런 작업을 할 수 있으면서, 동시에 이런 잉여짓(?)에 시간을 쓰는 사람이 있어야 하는데 그런 사람이 적기 때문에 지금까지 나오지 않았던 것이다.

따라서 피처폰 시절 게임을 하려면 해당 게임이 설치된 휴대폰을 중고로 구매하는 수밖에 없었다. 중고장터에서는 명작 게임들이 많이 설치된 휴대폰이 고가에 거래되기도 한다. 다만 해외에 출시된 일부 게임들은 영문판을 JavaME 에뮬레이터로 구동할 수 있지만 내수용 WIPI 게임은 구문 오류와 호환성 문제로 구동 자체가 안된다.

하지만 2023년 연말, Github에 WIPI 에뮬레이션을 위한 개인 프로젝트가 등장했다. 현재는 개발 초기 단계여서 SKT와 KT의 일부 게임만이 작동하며, 오디오가 구현되지 않았고 일부 게임들이 작동하지 않는 문제가 있다. #

[1] 따라서 해외의 피쳐폰처럼 jad 파일을 통해 통신사에서 인증하지 않은 프로그램(어플리케이션)을 구동하는 것은 불가능 했다. [2] 특허료는 퀄컴(단말기당 3달러 정도)의 1/10인 30센트 정도였다고 한다. # 또한 향후 '위피 2.0' 공동 개발과 썬이 위피를 사용할 경우 반대로 SK텔레콤, KTF, LG텔레콤에 특허료를 주는 상호 라이선스 계약 체결 및 세계 시장 공조 등에 합의했다고 한다. # [3] 당시 서울대 홍성수 교수는 "너무 늦은 위피 3.0 로드맵 계획, 시스템 소프트웨어 전문인력 및 노하우 부족 등의 이유로 위피 세계화가 현실적으로 어렵다며 오픈소스 진영 참여가 필요하다는 입장을 밝혔다. # [4] 일부 게임은 개발사에서 직접 포팅했는데, 대다수가 WIPI 코드는 거의 그대로 사용하며 터치 조작 인터페이스만 추가된 것이였다. 이 때문에 WIPI 코드 실행을 위해 전용 DRM 앱 설치가 필요했다. [5] 정확히는 실제 코드상에서 호출하는 몇몇 인터페이스만 구현하면 충분하다.