라이노 (자바스크립트 엔진)

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기
라이노
Inicio de ldp para 260px50px moziyarinocrnt.jpg
개발자 모질라 재단, 모질라 코퍼레이션
최근 버전 1.7.7.2 / 2017년 8월 24일 (13달 전)(2017-08-24)
개발 상태 개발 중
프로그래밍 언어 자바
운영 체제 크로스 플랫폼
플랫폼 자바 가상 머신
종류 자바스크립트 엔진
라이선스 MPL
웹사이트 www.mozilla.org/rhino

라이노(Rhino)는 온전히 자바로 작성된 자바스크립트 엔진의 하나로, 모질라 재단오픈 소스 소프트웨어로 관리하고 있다. 모질라에서 하나 더 개발하고 있는 C++로 작성되고 모질라 파이어폭스에 사용되는 스파이더몽키 엔진과는 구별한다.

역사[편집]

라이노 프로젝트는 1997년 넷스케이프에서 시작되었다. 당시 넷스케이프는 완전히 자바로 작성된 넷스케이프 내비게이터 버전을 개발할 예정이었으며 이에 따라 자바로 작성된 자바스크립트 구현체가 필요하였다. 넷스케이프가 자바게이터(Javagator)에 대한 작업을 착수하면서 이른바 라이노 프로젝트가 자바스크립트 엔진으로서 완성되었다. 그 이후로 썬 마이크로시스템즈를 포함한 일부 주요 기업들은 자사의 제품에 라이노를 사용하기 위해 라이선스하였고 넷스케이프에 지불하여 작업을 계속해나갔다.

원래 라이노는 모든 자바스크립트 코드를 생성된 자바 클래스 파일자바 바이트코드로 컴파일하였다. JIT 컴파일과 더불어 종종 자바스크립트의 C++ 구현체에 버금갈 정도로 최고의 성능을 뽐냈지만 두 가지 결점에서 고통을 받았다. 첫째로 바이트코드를 생성하는데 컴파일 시간이 길었고 생성된 클래스를 불러오는 것이 리소스를 많이 잡아먹는 과정이었다. 또, 대부분의 자바 가상 머신(JVM)이 사용되지 않은 클래스라든지 클래스 파일 로드의 결과로 억류된 문자열수집을 하지 못했기 때문에 메모리 누수가 발생하였다. (자바의 나중 버전에서 변경되었다.)

그 결과, 1998년 가을 라이노는 인터프리트 모드를 추가하였다. 클래스파일 생성 코드는 선택적인 동적 적재 패키지로 이동되었다. 컴파일 속도는 더 빨라졌고 스크립트를 더 이상 사용하지 않을 때 다른 모든 자바 객체처럼 수집이 가능하다.

라이노는 1998년 4월 모질라 재단에 릴리스되었다. 원래 라이노 클래스파일 생성은 출시 때부터 제한되었다. 그러나 라이노의 라이선스 제공자가 클래스 파일 생성을 포함한 라이노 전체를 오픈 소스로 릴리스하는 것에 동의하였다. 오픈 소스로 릴리스된 이후 라이노는 다양한 용도로 사용되었고 수많은 사람들이 코드에 기여하고 있다.[1] 프로젝트는 오라일리 미디어의 자바스크립트 책의 커버의 동물의 이름을 가져왔다.[2] 1.7R1 버전을 기준으로, 라이노는 자바 4 이상을 지원하며, 버전 1.7의 자바스크립트를 지원한다.[3]

이용[편집]

라이노는 자바스크립트 스크립트를 클래스로 변환한다. 라이노는 컴파일인터프리트 모드로 동작한다. 서버 사이드 애플리케이션에 사용하기 위해 고안되었으므로 자바스크립트에 연관되는 웹 브라우저 오브젝트 자체 지원은 없다.

라이노는 라이노 을 사용함으로써 디버거로 사용할 수 있다. 자바스크립트 셸은 배치 모드나 탐색 프로그래밍을 위한 인터랙티브 환경에서 스크립트를 실행하는 단순한 방식을 제공한다. 라이노를 임베드함으로써 애플리케이션에 사용할 수 있다.

라이노 1.6r2의 사소한 수정판이 썬 마이크로시스템즈 릴리스 자바 SE 버전 6에 번들되어 있으며, 2006년 12월에 출시되었다. 이를 통해 자바스크립트가 자바 프로그램의 일부로 통합되면서 자바스크립트에서 자바 리소스에 더 쉽게 접근할 수 있다. 자바 6의 다른 구현체들은 차이가 있을 수 있다.

같이 보기[편집]

각주[편집]

  1. “Rhino History”. 모질라 재단. 2008년 3월 20일에 확인함. 
  2. O'Reilly's Javascript book, inspiration for the Rhino name
  3. “New in Rhino 1.7R1”. Mozilla Foundation. 2008년 3월 20일에 확인함. 

외부 링크[편집]