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 저장소에서 공개 |
역사적 전개
- 2005‑2007: WebKit에 포함된 초기 JavaScript 엔진은 KJS(KDE JavaScript) 기반이었다.
- 2008: Apple은 성능 향상을 위해 SquirrelFish를 도입, 바이트코드 인터프리터 구현.
- 2009: JIT 컴파일러 SquirrelFish Extreme(SFX)를 추가, 실행 속도 크게 개선.
- 2010: 엔진 명칭을 JavaScriptCore로 변경하면서 WebKit과의 결합을 명확히 했다.
- 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.