우리회사는 자바 애플릿이 중요한 역할을 하는데 얼마전 눈길을 끄는 기사가 보였다.
Java 2 Browser Edition - Ethan Nicholas’s Blog - 2006/04

이 아저씨는 Ethan 이라는 야후직원인데 애플릿을 사용할때 Java가 설치되지 않은 사람들은 JRE를 다운로드 받게 되는데 그 크기가 너무 크다고 불평하고 있었다. 뭐 강력하고 복잡한 기능을 사용해야 하니까 느린건 어쩔 수 없다고 해도 실제로 애플릿에선 사용하지도 않는데 받는 클래스들이 너무(사용하는 것보다 더) 많은것이 불만인 것이다.
그런데 이 글이 Java Lobby나 RSS를 통해 퍼지기 시작했고 Sun의 레이더에도 포착되었다.
약 5달이 지나서 Ethan 아저씨의 블로그에 새 글이 올라왔다.
“Java Browser Edition”: New name, first steps - 2006/09
얼마에 계약되었는지는 몰라도 Sun의 Java Deployment team에 취직되어 이 작업을 진행하고 있었다. 참 거시기 하다^^.
Ethan은 이 기능을 ‘초기에는 Java Core만을 다운로드 받고 나머지는 On-demand로 받게하자’라는 개념으로 정의하고 ‘Java Kernel’이라는 새로운 이름을 붙여서 Java 7(Dolphin)에 포함시키기로 Proposal을 냈고 이는 accept되었다.(물론 Ethan이 개발하기로 하였다. 아름답다..ㅋㅋ)
사실 애플릿은 브라우져에서 실행되는 Client application 이기 때문에 Server Application과는 달리 Startup time이 중요하다. thinkfree에서도 이를 잘 알고 있었으며 Signed applet에서 변형된 Class Loader를 사용하여 on-demand loading을 하고 있다. (따라서 Ethan 아찌가 무슨 문제를 겪게 될지도 살짝은 예상된다)
Ethan은 println을 통해 ‘Hello World’를 출력하는 console program과 빈 java.awt.Frame을 하나 보여주는 GUI 프로그램(Applet extends Panel 이기 때문에 이 놈이 애플릿 환경과 비슷하다)을 만들어보고 이 때 사용되는 클래스들만을 묶으면 어느정도의 크기 개선이 있을지를 확인해 보았다.
- Java 6 Runtime Environment : 11.5MB
- “Hello World” JRE : 2.6MB
- java.awt.Frame JRE : 3.5MB
그런데 이는 Java Plug-in과 Web Start를 포함시키지 않은 것이고 다운로드 받지 않은 클래스를 사용하려고 하면 그냥 Fail 하는 예제란다(그냥 크기 예측을 위한 테스트이다)
물론 Java 7의 Proposal이 accept되었다고 꼭 포함되는것은 아니다. 하지만 Java Kernel이 꼭 성공해서 클라이언트 Java의 활성화에 기여했으면 한다. Flash 9의 경우 설치 파일 용량이 1메가 정도 밖에 되지 않는다. 그래서 Flash가 설치되어있지 않아도 감쪽같이 설치되고 실행되어 버리는데 이런 환경이 부러웠었다. Ethan 형님 화이팅이요~