본문 바로가기

Blog/기타

SWF를 렌더링 하는 자바스크립트 엔진 mozila Shumway

Tamarin & Shumway Project

예전 어도비가 모질라에게 AVM2를 기부했습니다. 아시겠지만 AVM2actionscript3.0을 해석하는 엔진 입니다. 이후 Tamarin 프로젝트로 이름이 바꾸고 기존 파이어폭스에서 사용하던 Javascript 엔진(SpiderMonkey)과 통합하여 JIT(just in time) 컴파일 기능이 있는 ECMAScript4 엔진을 만드는 것을 목표로 프로젝트가 진행되고 있었습니다. Adobe는 이 프로젝트가 완성되면 JIT 기능으로 인해 javascript 실행 속도가 최소 10배 이상 빨라질 것이라고 얘기하기도 했습니다.

Tamarin : http://www-archive.mozilla.org/projects/tamarin/

이 프로젝트가 씨앗이 되어 대단한 프로젝트가 파생되는 것 같습니다.
모질라에서는 SWF 파일 렌더링을 네이티브 코드 도움 없이 실행되도록 Shumway 프로젝트를 진행한다고 합니다. 프로젝트는 원시 코드에 의존하지 않는 자바 스크립트의 SWF 플래시 플레이어 구현을 목표로 하기 때문에 결국 플러그인 없이 리치 미디어를 처리 ​​있는 방법이 생기게 된다는 얘기입니다. 물론 오픈소스로 진행됩니다.

따라서 프로젝트가 성공하는 시점은 모질라가 어도비의 협력 없이표준만으로 플래시 호환성을 구현해 낼수 있을 때일 것입니다.

Shumway is an HTML5 technology experiment that explores building a faithful and efficient renderer for the SWF file format without native code assistance. Our goal is to create a general-purpose, web standards-based platform for parsing and rendering SWFs. Integration with Firefox is a possibility if the experiment proves successful.

Shumway : http://mozilla.github.com/shumway/

데모는 아마 firefox에서 봐야 할 것 같습니다. 제 경우 IE에서는 안열리는 군요. 아직 결함이 많고 기능이 별로 없단 주석도 보이고요. 이 프로젝트가 성공적으로 완료가 된다면 firefox 브라우져에 통합될 거라는데 그럼 결국 IOS에서도 플래시 컨텐츠를 볼 수 있다는 얘기가 되네요. 기대가 많이 됩니다.

이 프로젝트가 갖는 의미는 이전에 플래시 플레이어에서만 가능했던 플래시 기능을 브라우져 스택에서도 사용 가능하도록 하는것과 어도비 독점적인 플레이어에서 벗어나 SWF 뿐만 아닌 다른 리치 미디어 포맷 형식에 대해서도 런타임 프로세서를 제공할 수 있다는 것입니다. 플러그인 방식이 아니라는것은 두말할것도 없구요.

SWF가 오픈 되어있는 포멧이였다 해도 Player를 쥐고 있는 어도비에 의해 자유로울 수만은 없었던게 사실인지라 이 기술의 성공 여부에 따라서 HTML5가 풍부한 브라우져 경험을 가져다 줄 것이라는 기대에 성큼 다가서는 계기가 될 것으로 보입니다. 정말 아이러니하게도 플래시를 대체할 것이라는 HTML5가 플래시 플레이어 기술로 그것을 증명하게 될 수도 있겠네요

기술적 보안상에 많은 이슈가 있긴 하지만 아무튼 플러그인을 배제한 상태에서 플래시 컨텐츠를 사용할 수 있다는 것 자체가 매우 희망적인 소식이라 할 수 있겠습니다. JIT 엔진 자체가 자바스크립트나 액션스크립트에 최적화된 엔진이니 만큼 다른 파급 효과도 기대해 볼만 하겠네요.

참고로 SWF를 브라우져에 표시하기 위한 기술로 리눅스에 Lightspark and Gnash (브라우져 플러그인 swf Player), Google에 Swiffy (SWF를 HTML5로 컨버팅) 정도가 있는데 Shumway 프로젝트의 경우가 보다 본질적인 문제해결에 더 가까운것 같습니다.

참고

The Shumway Open SWF Runtime Project

Shumway demo 

https://github.com/mozilla/shumway/wiki
https://github.com/mozilla/shumway/wiki/Running-the-Examples
https://github.com/mozilla/shumway/wiki/Building-Firefox-Extension