![]()
태초에 자바는 애플릿을 얼굴마담삼아
‘웹페이지에서 HTML과 Javascript로는 구현 불가능한 강력한 Rich client를 구현한다’
는 희망찬 메세지를 들고 나왔다.
당시에는 많은 환상과 오해를 낳긴 했지만 어느정도 씨알은 먹혔고
html에 applet 이라는 태그를 사용할 수 있는 특혜(object나 embed 대신)도 얻었다.
지금은 븅신같은 startup time 때문에 applet을 사용하는 페이지나 서비스는 별로 없지만
당시는 전설적인 MS VM덕에(MS의 JVM은 정말 속도가 빨랐다) 그리고 애플릿 자체의 신비함에 가려 startup time 문제는 드러나지 않았다.
문제를 인식한 사람들도 초기도입기라 그런거고 곧 해결되리라 생각 하였을 것이다.
그렇게 그때는 애플릿의 활성화에 startup time은 문제가 아니었다.
하지만 Sun은 MS JVM이 Windows 전용기능을 제공하고 권장한다는 이유로 소송을 제기했다.
상대를 잘못 보고 덤볐다가 MS에서 Java 2(Swing을 포함한)는 결국 나오지 않았고(나중엔 그나마 MS VM은 OS에서 제거된다).
AWT는 너무 기능이 미비했고 애플릿에서 Swing을 쓰려면 실제 애플릿보다 더 큰 Swing library를 번들해야 하는 엽기적인 상황이 되었다.
그렇게 자바애플릿은 쇠락을 맞는다.(다들 알겠지만 서버측에서의 자바는 완전 잘나가고 있으며 mobile 환경에서는 썩 좋진 않아도 쓸만하다)
후에 Sun은 Java Plugin을 만들고 브라우져에서 직접 JVM을 제공하지 않아도 Sun의 최신 VM을 사용해 애플릿을 구동할 수 있게 되었다.
OS에 JVM이 pre-install 되어있는 상황보다는 불편하지만 수백메가의 동영상을 한번 보고 지우는 세상이 되었기에
VM 정도 받아서 설치하는건 그럭저럭 쓸만하다. 이 상황이 2007년 10월 20일 오늘까지의 상황이다.
아직도 Java applet을 주 사업아이템으로 쓰는 회사가 있기는 하지만 자바 애플릿은 long startup time을 대표로 많은 문제점을 안고 있어 비호감 RIA 환경의 대명사가 되어있다.
그런데…
요즘 Sun은 그 어느때보다 desktop java(client java)에 신경을 쓰고있는듯 보인다.
jvm 파일들을 cache에 prefetch해 두는 옵션을 제공하는 Java Quick Starter나
인스톨 크기를 최소화하는 Java Kernel,
Direct3D를 통한 하드웨어 가속
기능등을 개발하고 있으며 이를 java 7까지 기다리지 않고 java 6에도 지원하겠다는
Java SE 6 update N(원래 Consumer JRE라는 이름으로 진행되었지만 ‘이 기능들을 java 6에다 넣겠다’라는 의도를 잘 이해 못해서 바꾼듯하다) 프로젝트도 진행중이다.
뿐만 아니라 Java Plugin이 완전 새로구현된다는 소식이 들린다.
- Sun has rewritten the browser Java plugin
- Ken Russell on the new Java Plugin
- UpdateN will include a rewritten Java-Plugin
나에겐 Java 6 Update N 보다 New Java Plugin이 더 흥미로운데 핵심은 기존에 Browser process에 dll로 로드되서 기생하는 방식에서 벗어나서
별도의 process를 갖게 된다는 점이다.
브라우져 창 안에서 별도의 프로세스가 가진 UI가 나타난다는 것이 이상하게 생각될 수는 있지만 PowerPoint에 Excel을 embed해서 activate 시켜보면 excel.exe가 뜨는것을 확인 할 수있다.
이렇게 자바가 브라우져와 별도의 프로세스를 사용하게 되면 중요한 문제점들이 해결된다.
먼저 애플릿이 브라우져의 메모리 제약을 받지 않게 된다. 이는 ThinkFree Office 애플릿에서 겪게되는 심각한 문제중 하나다.
자바 플러긴이 할당받는 java heap size 자체가 크지 않을뿐 아니라 java control panel 에서 이를 수동으로 크게 잡아 준다고 해도
Browser에서 최대값을 제한하기 때문이다. 더욱 안 좋은 점은 애플릿이 잘못되면 Browser가 crash나 hang되기도 한다는 점이다.
또 다른 중요한 점은 Vista의 UAC(User Account Control)문제를 해결할 수 있다는 점이다. Vista에서 UAC기능을 켜 둔 경우에 현재는 Signed applet이라고 할 지라도 File/Registry Virtualization 이라는 제약에 막혀서 원하는 위치에 파일을 저장하지 못하게 된다.
이를 제대로 처리하려면 elevation이라는 승급절차를 받아야 하는데 이는 프로세스가 생성되기 직전에 일어나기 때문에 자바 플러긴이 별도의 프로세스로 실행되어야 한다.(이 부분은 정확치 않을 수 있으니 무단복제시 참고하세요).
실제 구현된 걸 봐야 알겠지만 만약 쓸만하게 구현되었다면
한컴(씽크프리)의 주가는 오를것이다. ^^
