구글판 액티브X 막을 대항마 납시오!

모질라, 개방형 웹기술 asm.js 개발 박차

일반입력 :2013/12/27 14:56    수정: 2013/12/27 15:36

웹애플리케이션(이하 '앱')을 빨리 돌리는 방법이 웹기술 분야에서 화두로 떠올랐다.

최근에는 크롬 브라우저에 포함된 '포터블 네이티브클라이언트(PNaCl)'가 구글판 액티브X란 별명으로 먼저 알려진 가운데, 파이어폭스를 만드는 모질라가 asm.js라는 기술로 맞대응하는 구도가 형성됐다.

모질라는 상대적으로 개방적인 기술을 앞세워 구글과의 경쟁을 준비중이다.

27일 업계에 따르면 모질라는 asm.js라는 자바스크립트 서브셋(문법 축약판)을 한창 개발 중이다. 브라우저에서 asm.js로 쓰인 코드를 '네이티브 앱' 코드처럼 빨리 돌릴 수 있게 만드는 것이 목표다.

asm.js가 성숙될 경우 구글 PNaCl처럼 무거운 웹앱을 처리하는 시간을 줄여줄 것으로 기대된다. 보편적인 기술로 확산될 가능성이 높다는 평가에 관심이 쏠린다. asm.js를 쓰는 방법은, 일단 개발자가 네이티브 개발 언어 C나 C++로 코드를 짜서 asm.js 형식의 자바스크립트 코드로 바꾼 뒤 이를 브라우저에서 돌리는 것이다. 다만 asm.js 코드는 사람이 직접 읽고 쓰기에 어려운 형식을 취하기 때문에 별도 컴파일러(변환기)를 써야 한다.

모질라는 C와 C++ 코드를 asm.js 코드로 바꿔줄 수 있는 '엠스크립튼(emscripten)' 컴파일러 프로젝트도 진행중이다. asm.js 코드는 모질라 파이어폭스 뿐 아니라 구글 크롬을 포함한 타사 브라우저에서 일반 자바스크립트처럼 실행돼, PNaCl같은 호환성 문제는 없다.

asm.js가 주목받는건 성능 때문이다. 최신 파이어폭스 브라우저에서는 asm.js 코드를 다른 브라우저보다 빠르게 실행할 수 있다. 파이어폭스22 버전 이후 탑재되기 시작한 자바스크립트 엔진(처리기) '오딘몽키'가 asm.js를 더 빠르게 처리하는 가속기 역할을 겸하고 있기 때문이다.

몇몇 웹기술 관련 블로그의 설명에 따르면 오딘몽키를 탑재한 파이어폭스는 asm.js 코드를 '특수하게 처리된 자바스크립트'로 인식, 이 코드가 브라우저를 돌리는 시스템에서 어셈블리 언어로 바뀌어 실행하는 과정을 최적화해 주는 것으로 묘사된다.

실제로 파이어폭스가 asm.js 코드를 처리하는 속도는 일반적인 브라우저의 자바스크립트 실행 성능 대비 빠르다는 평가다. 지난 3월 IT블로그 익스트림테크에 올라온 글에 따르면 일반 브라우저의 자바스크립트 코드 처리 시간은 네이티브 코드보다 20~30배 길다.

그런데 이 사이트는 오딘몽키를 탑재한 파이어폭스22 브라우저가 asm.js 코드를 실행하는 시간은 비등한 네이티브 코드 실행 시간에 비해 2배 수준에 불과하며 (같은 코드를) 오딘몽키가 없는 파이어폭스가 처리하는 시간은 12배, 크롬 브라우저의 경우 10배에 달한다고 설명했다.

그리고 최근 파이어폭스의 asm.js 처리 성능은 더 향상된 것으로 보인다. 모질라는 지난 20일 공식 기술블로그를 통해 네이티브 코드 실행보다 2배 가까이 걸렸던 asm.js 처리 시간을 (네이티브의) 1.5배 수준으로 줄였다고 밝혔다.

당시 이를 보도한 미국 지디넷은 모질라의 최신 벤치마크 결과는 asm.js 성능 면에서 올해 앞서 나왔던 수치보다 확실히 나아졌음을 보여 준다며 모질라의 성능 개선은 자바스크립트 엔진과 엠스크립튼 컴파일러를 조율함으로써 달성된 것이라고 전했다.

모질라 asm.js는 개발자가 C와 C++같은 언어로 프로그래밍을 하고 웹브라우저에서 그걸 돌려 네이티브 코드의 빠른 실행 속도를 이점으로 얻으려는 기술이란 점에서 구글 PNaCl과 근본 목적이 같다. 하지만 확산 측면에서는 모질라 기술이 구글기술보단 유리할 것으로 보인다.

파이어폭스의 asm.js는 모질라의 최적화 엔진 오딘몽키를 탑재한 브라우저에서 실행 시간을 단축할 수 있고, 그렇지 않은 경우라도 일반 자바스크립트처럼 처리될 수 있다. 오딘몽키 엔진에 담긴 asm.js 처리기술을 도입하면 타 브라우저 업체라도 성능 이점을 얻을 수 있다.

반면 PNaCl은 '페퍼'라는 구글의 전용 플러그인 처리환경을 탑재하지 않은 브라우저에서 아예 실행되지 않는다. 다른 브라우저에서 PNaCl 앱을 돌리려면 개발자가 '페퍼JS(pepper.js)'라는 별도 라이브러리를 추가해야 한다. 타 브라우저 업체가 PNaCl을 기본 지원하는 방법은 알려져 있지 않다.

업계는 구글이 크롬 브라우저의 시장 점유율에 기대고 크롬OS 점유율의 확산을 꿈꾸면서 PNaCl이라는 자체 기술을 밀고 있는 모습에서 과거 윈도와 인터넷익스플로러(IE)로 OS와 브라우저 시장을 장악했던 마이크로소프트(MS)를 떠올린다. PNaCl이 구글판 액티브X라 불리는 이유다.

구글판 액티브X라는 별명은 원래 PNaCl 이전에 나온 '네이티브클라이언트(NaCl)'에 붙은 것이었다. NaCl 기술이 x86과 ARM 칩 단말기 환경을 구별했던 것과 달리, 지난달 등장한 PNaCl은 개발자가 그 차이를 무시하게 해줬다. 페퍼JS를 지원한 시점도 이 때부터다.

관련기사

타 브라우저와 호환성을 유지하면서 파이어폭스에 서 성능 향상을 지원하는 asm.js는 한마디로 '구글판 액티브X에 대한 모질라의 반응' 정도로 요약되는 분위기다.

웹개발자 데본 고베트도 자신의 기술블로그에 쓴 asm.js 관련글을 통해 NaCl은 당장 어디서나 쓰이지 못하는 반면 asm.js는 이미 구현된 공식 지원 엔진 없이도 어디서나 돌릴 수 있다며 이는 확실히 모질라가 asm.js로 구글의 샌드박스 환경에서 웹기반으로 컴파일된 코드를 돌리려는 NaCl 프로젝트에 답한 것으로 보인다고 평했다. 그는 소셜미디어 관리솔루션 업체 '라이브파이어'에 인수된 큐레이션 플랫폼 업체 '스토리파이' 소속 엔지니어다.