JavaScript의 한계는 어디까지일까요. Basic, Ruby, Smalltalk 를 구현한 데 이어 또 다른 언어를 구현했습니다.

John Resig 씨에 따르면, 일본의 Shibuya.JS 사용자 그룹에서 JavaScript로 JavaVM을 구현한 Orto [PDF, 일본어] 프로젝트를 진행하고 있다고 합니다. 보다 정확히 말하면 Java를 작성하고, bytecode로 컴파일한 뒤 Orto를 통해 실행해볼 수 있다는 것입니다(이 때 Orto에서 Java -> JavaScript로의 변환과정을 거칩니다).

생성되는 코드는 이런 형태로 사람이 읽을만한 모양은 아닙니다:
"java/lang/Thread 1316742099":function(){var orto333=orto245[0];
var orto336=orto350(orto333);
if(orto336.orto340!=orto310){orto223("java/lang/IllegalThreadStateException",null);
return ;
}
case 117:orto246[orto247-2]={high:(~orto246[orto247-2].high)
  &0xffffffff,low:(~orto246[orto247-2].low+1)&0xffffffff};
if(orto246[orto247-2].low==0){orto246[orto247-2].high++;
orto246[orto247-2].high&=0xffffffff;
orto246[orto247-2].low=0;
}break;

실행해볼 수 있는 예제로 테트리스가 있는데, 사람이 밀리는지 접속이 여의치 않네요.
Tetris

Orto에서 실행한 Tetris


다만, 몇 가지 부족한 부분도 있는데, 이를 테면 쓰레드 구현을 위해 setTimeout을 엄청나게 쓸 수 밖에 없었다와 같은 문제들입니다(JavaScript는 싱글스레드라서 어쩔 수 없는 문제입니다).

John Resig 씨의 블로그에 가보면 댓글에 iPhone에서도 작동했다는 얘기가 있습니다.

from Java in JavaScript from Ajaxian
Posted by 행복한고니 트랙백 0 : 댓글 0

댓글을 달아 주세요