WIPIVERSE

JavaScriptCore

JavaScriptCore(자바스크립트코어)는 Apple이 개발한 오픈소스 자바스크립트 엔진으로, WebKit 프레임워크에 통합되어 있다. 초기에는 SquirrelFish라는 이름으로 구현되었으며, 이후 SquirrelFish Extreme(SFX)이라는 JIT(Just‑In‑Time) 컴파일러를 포함하도록 개선된 뒤, 현재의 명칭인 JavaScriptCore로 정식 명명되었다.

주요 특징

구분 내용
구현 언어 C++ 기반으로 구현
지원 표준 ECMAScript 5, 6(ES2015) 이후 버전의 대부분 기능 지원
컴파일 방식 인터프리터, JIT 컴파일러(옵티마이저), 옵티마이저 단계 포함
플랫폼 macOS, iOS, watchOS, tvOS 등 Apple 제품군 및 Linux, Windows(포팅 프로젝트)
통합 환경 WebKit 브라우저 엔진·Safari·iOS WebView 등에서 사용
오픈소스 WebKit 프로젝트의 일부로 GitHub 및 WebKit 저장소에서 공개

역사적 전개

  1. 2005‑2007: WebKit에 포함된 초기 JavaScript 엔진은 KJS(KDE JavaScript) 기반이었다.
  2. 2008: Apple은 성능 향상을 위해 SquirrelFish를 도입, 바이트코드 인터프리터 구현.
  3. 2009: JIT 컴파일러 SquirrelFish Extreme(SFX)를 추가, 실행 속도 크게 개선.
  4. 2010: 엔진 명칭을 JavaScriptCore로 변경하면서 WebKit과의 결합을 명확히 했다.
  5. 2015 이후: ES6(ECMAScript 2015) 표준 지원 확대, SIMD, WebAssembly 등 최신 기능을 단계적으로 도입.

구조 및 동작

  • 파서(Parser): 소스 코드를 구문 트리(AST)로 변환한다.
  • 바이트코드 컴파일러: AST를 바이트코드로 변환하고 인터프리터가 실행한다.
  • JIT 컴파일러: 실행 중 프로파일링 정보를 바탕으로 핫스팟(핵심 루프) 코드를 네이티브 머신 코드로 변환한다.
  • 가비지 컬렉터: 마크‑스위프 방식의 메모리 관리 기능을 제공한다.

사용 사례

  • Safari 브라우저: 웹 페이지의 스크립트 실행을 담당.
  • iOS 앱: WKWebView를 통한 웹 콘텐츠 표시 시 JavaScriptCore가 스크립트 엔진 역할 수행.
  • 데스크톱 애플리케이션: macOS 용 Electron 기반 앱의 일부 구현에서 JavaScriptCore를 선택적으로 사용하기도 함.

참고 사항

  • Apple은 JavaScriptCore를 독립적인 라이브러리 형태(JavaScriptCore.framework)로 제공하여, 애플리케이션 개발자가 직접 엔진을 임베드할 수 있도록 지원한다.
  • 최신 버전은 WebKit 프로젝트의 릴리즈 사이클에 따라 정기적으로 업데이트되며, 보안 패치와 성능 개선이 포함된다.

관련 항목: WebKit, Safari, JIT 컴파일러, ECMAScript, WebAssembly.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기