기글 하드웨어 소프트웨어 포럼
Internet Explorer 는 대충 다 아실 것 같습니다. IE10 이 아직 Windows 7 에서 release 되지는 않았지만 1달 안에 release 될 것으로 봅니다. 3월 중순까지 나오겠죠. Release Preview 보다는 좀 나아지겠지만 어쨌든 호환성이 조금이라도 무너지는게 있을 겁니다. 어쨌든 ActiveX 와 같은 browser 추가 기능이 계속해서 범용적으로 활용될 자리가 사라지고 있는 것은 분명합니다.
Chrome 은 계속해서 변화하고 있지만 사용자에게 큰 변화의 느낌을 주지는 못하고 있는 것 같습니다. 저는 그동안 JavaScript 성능의 엄청난 개선을 보면서 놀랬었지만 이제는 그것도 한계가 온 것 같네요. 이것도 제가 programmer 이기 때문에 관심이 갔었던 것이고, 보다 보편적인 사용자들은 체감을 못하고 있을 겁니다. 하여간 지금 Chrome 에 탑재된 V8 JavaScript engine 은 single thread 에서 가장 빠른 script 언어일 겁니다. JavaScript 는 multithread 가 없기 때문에 그것은 논의할 수가 없죠.
하지만 체감을 하든 못하든 Chrome 은 계속해서 발전하고 있습니다. 여러가지가 있겠지만 가장 큰 두가지 흐름을 말하자면 첫번째는 Chrome OS 이고, 두번째는 JavaScript 를 대체하는 Dart 일겁니다. Dart 는 나중에 이야기하기로 하고, OS 에 대해서 말하자면... 우리가 체감하고 있지 못하는 사이에 web 은 http 에서 https 로 계속해서 전환되고 있습니다. 이제 기업은 내부 감사를 위해서 https 를 감시하는 기술을 도입하고 있거나 이미 마쳤죠. 그리고 기반기술인 TCP 역시 조금씩 최적화되고 있고, 전체 network traffic 을 원할히 하는 기술 역시 개선되고 있습니다. 이런 것은 모두 Google 이 주도하고 있고, 사용자는 알아차리기 어렵습니다. 이런 것 말고도 Chrome 은 native code 를 가동시키는 NaCl(Native Client) 도 계속 발전시키고 있습니다. 이런 것은 web browser 가 곧 OS 수준의 platform 이 되고 있음을 보여줍니다. 이것은 모두 Cloud 기술이라는 더 큰 흐름에 속해 있습니다. 다만 DRAM 을 상당히 많이 쓰고 있다는 문제는 있습니다. 이런 모든 변화가 모여서 언젠가 Chrome 이 사용자에게 다시 한번 새로운 것을 보여줄 거라고 기대합니다.
Mozilla Firefox 는 독자생존을 계속 잘 해나가고 있습니다. 한때 인력부족문제가 심각하게 이야기된 적도 있지만 Rapid Release Schedule 을 잘 해나가고 있는 것을 보면 어려움을 잘 극복하고, 그 이상을 해낸 것 같습니다. 사용자 인터랙션을 담당했던 Aza Raskin 도 떠났고, jQuery 를 만든 John Resig 도 떠났지만 Firefox 는 계속 발전했고, 지금은 전체적으로 Chrome 을 능가했다고 봐도 무방할 것 같습니다. Version 18 과 19 에서 큰 수준의 JavaScript 개선을 해냈고, Chrome 의 V8과 비교해도 체감하기 어려운 수준까지 진입한 것 같습니다. 현재 Beta 인 version 20 에서는 Safari 와 유사한 panel based download manager 를 보여주었고, 개발자 도구에서 profiler 및 UI 개선을 선보였습니다. 다만 앞으로의 roadmap 이 모두 없어졌습니다. https://wiki.mozilla.org/Features/Release_Tracking . 아무래도 Firefox 역시 사용자에게 체감할 수 있는 새로운 변화에 대한 전망이 없어진것 같습니다. 예전에 가끔씩 계획하다가 취소했던 Austrailis 를 보여줄 수도 있을지는 모르겠네요. Google Chrome 의 변화를 계속해서 잘 쫓아가고 있기도 합니다. Google 이 공개한 기술들을 모두 구현하고 있고, mobile, OS 분야도 시도를 하고 있습니다. Mobile web browser 는 군웅할거 시대인데 Firefox 는 늦게 출발했지만 여전히 무시할 수 없습니다. OS 는 아직 분명히 말할 수 있는 것은 없네요. 기술적 측면을 이야기해보자면 C++ 위주의 내부를 완전히 개선하고자 하는 움직임이 있습니다. Mozilla 에서 만들고 있는 Rust 는 programming 언어에 관심이 많은 개발자 사이에서 가장 뜨거운 관심을 모으로 있습니다. 이 언어는 기본적으로 Firefox 에서 C++ 로 작성된 것을 개선하고자 만들었습니다. 단시간 내에 이루어질 수 있는 것은 아니지만 상당히 흥미로운 project 가 아닐 수 없습니다. 그 외에 Mozilla 는 기업인 Google 에서는 아무래도 관심이 적을 수 밖에 없는 사생활 보호기술 Do Not Track 같은 기술을 선도하기도 했습니다.
Opera 는 mania 들 사이에서 대단히 관심을 받았지만 계속해서 발전이 늦어졌습니다. 그리고 Opera 는 자사의 rendering engine 인 Presto 를 버리고, WebKit 을 사용하기로 결정했습니다. Opera 가 조금 느린 start up time 과 close time 를 보여주었던 것을 제외하고는 매우 뛰어난 성능과 호환성을 보여주었던 web browser 인데 이런 결정을 했다는 것은 놀라운 일이 아닐 수 없습니다. 어쨌든 현재 대세가 된 WebKit 을 도입하겠다는 것은 선택과 집중을 하겠다는 것이고, 좋은 결과가 있기를 기대합니다.
Safari 는 딱히 할 이야기가 없군요. Safari 6 release 와 더불어 Apple 의 OS 이외에 지원이 사라졌습니다. Mountain Lion 과 Lion 에서 차이를 보여주는 Safari 6 라는 점을 생각해보면 Internet Explorer 와 Windows 처럼 어느정도 OS 와 강결합이 생긴 것이 아닐까 생각해봅니다.
현재 web 의 중심인 programming 언어는 역시 JavaScript 입니다. 그런데 여기에 대한 새로운 방향성이 제시되고 있습니다.
Google 이 제시한 Dart.
Mozilla 가 주도하고 있는 Harmony(ECMA Script 6th Edition).
MS에서 제시한 TypeScript.
Dart 가 가장 빠르게 release 되고 있지만 여전히 Chrome 에는 Dart VM 이 탑재되지는 않았고, Harmony 는 표준이고 Firefox 와 Chrome 에서 구현되고 있습니다. TypeScript 는 가장 늦게 나왔지만 가장 뛰어난 JavaScript 와의 호환성을 강점으로 제시하고 있습니다.
Dart 는 Jython, IronPython 등을 만들었던 Jim Hugunin 이 참여하고 있고, Harmony 는 JavaScript 를 만든 Brenden Eich 가 직접 작업하고 있습니다. TypeScript 는 C# 을 만든 Anders Hejlsberg 가 작업하고 있습니다. 모두 뛰어난 언어 개발자들이죠.
재미있는 점은 가장 뛰어난 JavaScript engine 을 만든 Google 의 Dart 가 가장 JavaScript 와 거리가 있다는 점입니다 Google V8 팀은 JavaScript 를 싫어한다는 이야기가 있기도 하지요. Java 와 가장 가깝고, 보다 전통적인 접근을 하고 있습니다.
누가 승리하든 JavaScript 를 단기간에 대체할 수는 없겠지만 분명 JavaScript 에는 한계가 있고, 새로운 전환점이 있을 거라는 것은 분명할 것으로 보입니다.
그래도 모바일에선 크롬이 나름 편했는데 (잘못 터치시 확대기능등) 불여우는 모바일에선 폰트 조절이라던가 검색쪽 칸 누를때 작동 여부등 여러가지 불편한게 많은걸 보면 불여우는 정말 많은 개선이 필요한 것 같아요
그래도 과거 익스 6 처럼 발전없는 독재시기가 아닌 여러 웹브라우져가 경쟁하면서 엄청나게 기술이 성장하는 것을 보면 정말 좋은 것 같아요
Dart 는 기존의 JavaScript 에서 paradigm 전환을 시도하고 있고, 그에 대한 역호환성을 위해 Dart -> JavaScript compiler 를 제공합니다. Chrome 은 앞으로 Dart VM 과 JavaScript VM 두개 모두를 탑재하게 되죠. Programmer 는 Chrome 에서 Dart VM 으로 돌릴 Dart code 와 다른 browser 에서 돌릴 JavaScript 두개를 준비해야 합니다. Dart programming 도구는 Dart code 를 JavaScript 로 변환해주는 것을 제공해주고요. 마지막으로 Dart VM 이 있는 browser 냐 아니냐에 따라 동작시킬 code 를 선택하는 분기흐름이 있어야 합니다.
Harmony 는 JavaScript 의 version up 입니다. Programmer 는 역호환성을 위해 browser 가 제공하는 Harmony 기능들을 확인해가면서 동작흐름을 분기하는 형태로 처리해야 합니다. 지금도 browser 마다 호환성이 달라서 하는 것을 동일하게 하면 되는 것이지요.
TypeScript 는 언어는 JavaScript version up style 에 가까운데 구동방식은 JavaScript 로 변환 후 처리하는 것입니다. 그러면 무슨 이점이 있는가? 모든 JavaScript 는 TypeScript 로 해석될 수 있습니다. 즉 TypeScript 는 JavaScript 의 완벽한 superset 인 거지요. 여기에 TypeScript 는 JavaScript 가 갖지 못했던 특징들을 덧붙이고 있습니다. 즉 Dart 와는 달리 기존 JavaScript code 에서 출발해서 작업해나갈 수 있다는 장점이 있는 것입니다. 그리고 실제로 동작시키는 code 는 다시 JavaScript 이기 때문에 현재의 어떤 browser 든 상관이 없이 동작시킬 수 있습니다. 현재로서는 이런데 앞으로는 알 수 없지요. TypeScript 가 널리 쓰이면 TypeScript VM 이 등장할지도 모릅니다.
재미있는 점은 Harmony 와 TypeScript 의 개발과정은 모두 node.js 의 덕을 보고 있는데 이것은 Google 의 JavaScript engine 인 V8 을 browser 밖에서도 쓸 수 있게 만든 것입니다. Google 은 JavaScript 싫다고 Dart 를 만들었는데 말이죠.
Breden Eich 는 자신의 blog 에서 이렇게 말했습니다.
'논리는 개념과 실제를 분리한다. 따라서 논리 그 자체가 진리가 될 수는 없다.'
Computer 역사에서 Worse is Better 를 대단히 철학적으로 서술한 말이 아닐 수 없습니다.
이 양반도 선(불교의 종파)에 재미들린 모양이더군요.
즉 3개의 새로운 언어는 JavaScript 문제와 전환에 대해서 다음과 같이 생각하는 것 같습니다.
Dart: JavaScript 는 programmer 의 대규모 작업에도 성능에도 도움이 안된다. 아예 새로 시작하자.
Harmony: 아예 새로 시작하는 것이야말로 programmer 한테 도움이 안 되고, 보급에도 문제가 있다.
변환과정이 없는 기존 작업방식을 그대로 쓸 수 있는게 중요하다.
TypeScript: 지금 가장 중요한 문제는 대규모 작업에서의 programming 편의니까 그것만 집중하자.
변환이 요구되는 것은 대규모 작업에서는 그렇게 중요한 문제가 아니다.
이미 GWT(Google Web Toolkit: Java -> JavaScript 변환) 이 그걸 증명하지 않았는가.
JavaScript 에 새로운 언어의 기능을 더해서 필요한 곳에 보급시키는게 중요하다.