엔진/웹 브라우저
1. 개요
단독으로 엔진으로 불리는 경우는 거의 없으며, 대부분 '렌더링 엔진' 또는 '레이아웃 엔진'으로 불린다. 내용 정보인 HTML, XML과 서식정보인 CSS, XML 등을 읽어들여 사람이 읽을 수 있는 문서로 표시하는, 웹 브라우저의 핵심기능을 담당하는 부분이다. '코드'를 호출시에만 읽고서 해석을 한다는 점에서 인터프리터라고도 볼 수 있다.
VT와 WWW의 결정적인 차이점을 대변하는 부분이기도 하다. VT환경은 그냥 문자정보만 받으면 되기 때문에 거창한 엔진이 필요없다. 하지만 WWW 환경은 그림을 표시하며 서식을 지정하는 등 완전한 문서를 표시해야 하기 때문에 엔진을 중심으로 구성된 웹 브라우저가 사용되는 것이다. 최근에는 문서로서뿐만이 아니라 프로그램적인 성격인 사용자의 입력에 대한 반응을 위해 웹 브라우저에는 자바스크립트 엔진 등이 추가로 들어간다.
2. 현역 웹 엔진 목록
브라우저의 기본이기 때문에 브라우저의 성능은 이것에 큰 영향을 받는데 유독 인터넷 익스플로러의 존재가 엔진이 전부는 아님을 보여주는 예가 되고 있다.
- Gecko: 모질라 재단에서 후원하며 오픈소스로 개발되는 엔진이다. 넷스케이프 시대부터 개발되던 엔진이라서 오래된 웹과도 잘 호환되는 편이고, 웹표준을 준수하는 편이며 개발 단계부터 짜임새있게 만들어졌다. 모질라 파이어폭스, 모질라 썬더버드, 씨몽키 등과 파이어폭스의 변종들이 사용하고 있으며 엔진의 저작권은 GPL, LGPL, 모질라 공용 허가서[1] 다. 이 엔진을 이용하여 스마트폰 운영체제 FirefoxOS를 만들다가 포기했다.
- 서보(Servo): 모질라 재단의 차세대 엔진이다. 2019년 기준으로 현재도 개발중이다. 안전한 브라우징과 병렬처리 특화를 목표로 하고 있다. 프로그래밍 언어 Rust를 먼저 만들고 그것을 기반으로 엔진을 제작중이다. 언제 나올지 알수 없으며 삼성전자가 협력하고 있다.[2] 웹킷과 경쟁하는 엔진이며 현 시대에 맞도록 설계한다고 한다. Rust와 servo 소개
- WebKit: KHTML 엔진에서 파생되어 애플에서 개발한 오픈소스 엔진. 2013년 기준으로 렌더링 엔진 분야를 지배했었다. 대표적으로 Safari와 구글 크롬이 이걸 쓴다. 하지만 2013년에 결국 애플과 구글은 엔진을 서로 분기(fork)하면서 파편화 되었다. 애플은 웹킷2, 구글은 블링크로 갈라졌으며 이들은 프로세스 구조가 다르다. 특히 블링크는 웹킷 코드베이스에서 7천 개의 파일을 삭제했고 앞으로도 최적화를 진행한다고 한다. 지금 당장은 호환에 큰 문제는 없겠지만 앞으로 나올 규격에도 호환이 될지는 장담할 수 없다. 왜냐하면 애플과 구글은 서로 견제하는 상황이기 때문이다. 그 와중에 삼성전자에서 기본 브라우저 삼성 인터넷으로 블링크 엔진을 사용하면서 제일 빠르게 보급되고 있다. 구글 크롬은 iOS 한정으로 지금도 WebKit 엔진을 사용하고 있다. 애초에 iOS는 Webkit 엔진이 아니면 전부 퇴짜를 맞기 때문.
- 프레스토(Presto): 오페라 소프트웨어가 개발한 엔진. 오페라에 사용된다. 엔진 특유의 가벼움과 낮은 점유율 덕에 스마트폰과 같은 휴대용 기기, 게임용 콘솔과 같은 환경에서는 메이저인 엔진이다. 개발버전으로 ACID3을 최초로 통과하는 등, 자체 버그를 제외한다면 웹표준을 깐깐하게 준수하는 편에 속한다. 2013년 7월 2일 데스크탑용 오페라와 오페라 모바일에 탑재된 프레스토 엔진이 제거되고 블링크로 대체 되었고, 현재도 오페라 미니나 TV에서 사용중이라고 한다. http://blogs.opera.com/desktop/2014/03/opera-developer-22/#comment-1315204458
- EdgeHTML: 윈도우 10의 기본 브라우저인 마이크로소프트 엣지의 엔진이다. 아래에 기재된 트라이던트의 포크로 시작된 마이크로소프트의 엔진으로, 인터넷 익스플로러 및 트라이던트와의 하위호환을 완전히 포기하고 WebKit을 집중적으로 흡수하면서 개발하고 있었다. 개발속도가 굉장히 빨랐으며 현대의 웹 환경에 어울리는 브라우저를 뒷받침하기 위해 타사 브라우저를 빠른 속도로 따라잡다가 2019년 들어서는 엣지의 엔진을 아예 구글의 블링크로 대체하는 행보를 보이고 있다. 추구하는 개발방향이 크롬의 블링크와 딱히 다를 바가 없었기 때문이라고 한다.
3. 퇴역 웹 엔진 목록
- 모자이크: 모두의 시작.
- 스파이글래스: 스파이글래스(회사이름)가 모자이크에서 가져온 소스를 마이크로소프트가 스파이글래스로부터 가져온(...) 엔진. IE의 초기버전에서 사용되었던 엔진이다.
- 넷스케이프: 게코 엔진이 여기서 갈라져 나왔다.
- 타즈만(Tasman): Mac OS용 인터넷 익스플로러에서 사용된 엔진이었다. Mac OS용 IE 4까지는 이 엔진이 사용되지 않았는데, 왜 트라이던트 안 쓰고 새로 개발했는지는 불명. 매킨토시용 IE5에 사용되었으며 이후로는 브라우저에 사용된 이력이 없다. 현재의 OS X에서 구동이 어느 정도 가능은 하지만 버림받은 엔진.
- 트라이던트(Trident): 악명 높았던 인터넷 익스플로러의 엔진. mshtml.dll을 연결하면 다른 프로그램의 내부에서 이 엔진을 불러와서 사용[3] 할 수 있기 때문에 브라우저가 아닌 프로그램이 이 엔진을 쓰는 경우가 많다. 현재 웹표준 구현에 가장 뒤쳐진 엔진이다. 남들은 한참 예전부터 다 하던 ACID2는 IE8에서야 통과하고, ACID3도 IE9 정식버전이 돼서야 통과했다. 사실상 Microsoft Windows 전용이라는 단점도 있다. 호환성을 이유로 2019년 현재에도 여전히 쓰이고는 있지만 웹브라우저 점유율을 참고해보면 사실상 퇴역이나 다름없는 상태가 되었다.
[1] GPL의 변형, MPL (Mozilla Public License)라고 한다.[2] http://www.mozilla.or.kr/community/blog/1214 [3] HTML문서를 출력할 필요가 있을 때 별도로 기능을 개발할 필요없이 이런식으로 흔하게 사용한다.