2001년 9월 17일 - 9월 22일 자바 소식
지난 한주에는 유난히 새로운 소식들이 많았습니다.
우선 뉴스의 포문을 연 것은 톰켓 4.0의 정식 발표였습니다. 베타 버전 RC2까지 진행된 상태에서 뉴욕 대참사의 상처를 뒤로 한 채 아주 조용히 발표된 새로운 톰켓은 알려진대로 서블릿 2.3과 JSP 1.2의 표준 구현 컨테이너입니다.
한국인에게 관심을 끌만한 사항은 역시
서블릿 2.3의 편리한 국제화, 지역화 기능입니다. 국제화(Internationalization)은 말 그대로 컨텐츠를 모든 나라의 사람들이 볼 수 있도록 지원하는 것이고, 지역화(Localization)은 반대로 특정 나라(고로 특정 언어) 사람들에게 특화되어 볼 수 있게 하는 것입니다.
톰켓은 전부터 한글 지원을 비롯한 비 영어권(Non-Latin, Non-ISO-8859-1) 언어 지원에 상당히 골머리를 썩여왔었는데, 이번 서블릿 명세의 개편에 많은 비영어권 개발자들의 참여가 있었던지 다음과 같은 개념이 추가되었습니다.
request.setCharacterEncoding("EUC-KR");
|
이것을 request에서 매개변수를 뽑아내기 전에 실시하면 아예 EUC-KR으로 폼에서 넘어온 문자들이 디코딩되어 나옵니다. 예를 들어
에서 폼 내용을 post.jsp로 보내면
post.jsp
<%
request.setCharacterEncoding("EUC-KR");
%>
<%@ page contentType="text/html;charset=EUC-KR"%>
<%= request.getParameter("LINE1")%>
<%= request.getParameter("LINE2")%>
<%= request.getParameter("LINE3")%>
|
하면 전에처럼 톰켓 자체의 패치나 매개변수마다의 인코딩-디코딩을 반복할 필요 없이 서블릿 API차원에서 깔끔하게 한글이 처리되어 나옵니다. 물론 대부분의 경우 유틸리티 클래스를 쓰거나 별탈 없이 한글 처리를 하고 있지만, 서블릿 API의 표준 구현체로서의 톰켓이 이러한 방식을 지원하기 시작했다는 것은, 그만큼 자바 웹 플랫폼의 세계에서 비영어권의 발언권이 강해졌다는 현실을 보여주기도 합니다.
그간 베타만 한 1년 지낸 것 같는데, 이제 서블릿 2.3, JSP 1.2의 시대가 오겠군요. 저는 개인적으로 JDK1.4의 -server옵션과 잘 돌아가길 바랄 뿐입니다.
다음 소식은 J2EE관련입니다. 드디어 J2EE 1.3이 FCS로 나왔습니다. 함께 FCS로 나온 것은,
J2EE 1.3 FCS
J2EE IDE Toolkit 2.0 FCS
J2EE Platform 1.3 Spec FR(Final Release-최종 공개판)
J2EE Connector 1.0 Spec FR
EJB Spec 2.0 FR
입니다. 톰켓이 4.0 FCS로 나온 후 바로 J2EE도 1.3 FCS를 내는군요. 제가 깔아보고 바로 느낀 몇가지 점을 소개하면,
- 서블릿 2.3, JSP 1.2
- 클라우드스케이프(Clouscape) 순수 자바 기반 ORDBMS 4.0 기본 포함
- 포르테(Forte for Java 2.0 Community Edition)과의 결합
- 쉬워진 설치와 운용
- 명료해진 문서
입니다. 우선 J2SE 1.3.1_01와 포르테가 깔려고 있고 J2EE 1.3 FCS, J2EE IDE Toolkit 2.0을 깔면 딱이겠군요. 제 컴이 팬3 1기가에 램 512메가인데 그렇게 느려보이지 않았습니다. J2EE를 처음 공부하시는 분들에게는 체계적인 환경이 되지 않을까 싶군요. (게다가 무료. 기간 제한도 없음.)
톰켓과 J2EE의 정식 완료 선언과 함께 서블릿과 JSP의 명세도 각각 2.3, 1.1 최종 버전이 공개되었습니다.
JSR-000053 으로 가시면 PS와 PDF 포멧으로 받으실 수 있습니다. 자바독 스타일은
서블릿 다운로드와
JSP 다운로드 사이트에 받으실 수 있습니다. 이전 버블릭 리뷰버전과의 큰 차이는 없어보이지만, 제대로 확정된 버전이니 꼭 참고하시기 바랍니다.
또한 J2EE기술의 차세대 근저망이 될
자바 메시징 서비스(JMS)의 튜토리얼도 1.3으로 정식 배포되었습니다. 기본적으로 J2EE 1.3이 설치된 상태에서 JMS의 간단한 예제와 기본 개념을 설명하는 골자로 구성된 이번 썬의 JMS 홍보물은 그동안 실제적인 예의 부족과 JMS 운영 환경상의 까다로운 테스팅으로 자연스럽게 멀어졌던 많은 클라이언트/서버 개발자들의 관심을 다시 모을 수 있을지 주목됩니다.
아는 분이 웹 브라우저로 JVM의 설치 유무를 물어오셨는데, 다음과 같은 자바 스크립트가 있더군요.
if (!navigator.javaEnabled()) alert("No Java support");
|
서점 갔다가 자바 스크립트 백과사전 같은 책에서 찾았습니다. Internet Explorer(IE), Netscape Navigator(NN)에서 다 잘 먹습니다. 혹시 설치된 JVM의 버전을 알고 싶으신 분은, 이미 JVM이 설치된 상태니까, 애플릿으로 시스템의 정보를 얻어올 수는 있는데, 그에 합당하는 권한을 허가받아야하므로 인증이 필수이고, 만약 인증을 받았다면
String jdkVersion = System.getProperty("java.jvm.version");
String jreVersion = System.getProperty("java.runtime.version");
String specVersion = System.getProperty("java.specification.version");
String javaVersion = System.getProperty("java.version");
|
과 같이 다양하게 알아볼 수 있습니다. 참고로 JDK1.3.1FCS를 설치했을 때는 각각
1.3.1-b24
1.3.1-b24
1.3
1.3.1
|
앞의 2개 같은 것은 당연하고, 상당히 자세한 버전 정보가 나오는 반면, 명세 자체는 1.3이후 마이너 버전이 없고, 마자막 정보가 가장 일반적으로 보입니다. 필요하신 분들에게 참고가 되었으면 바라네요.
아주 조그맣게 나왔지만 흥미로운 JDK인 1.3.1_01a가
썬의 얼리 엑세스(Early Access)로 떴습니다. 이미 1.3.1_01이 나온 시점에서 아주 마이너한 a의 버전업은 그러나 실로 상당한 의미를 지니고 있습니다. 다름아닌 자바 플러긴의 지원 방식으로, 기존의 IE에 대한 객체 지원이 아닌 아예 IE의 JVM을 대체합니다. 따라서 기존의 애플릿들도 JDK1.3.1_01a나 JRE1.3.1_01a만 설치하면 자바2의 해택을 받을 수 있을 뿐더러 여태까지 짜증하게 해왔던 자바 플러긴 용 HTML변환도 필요없어집니다. 새로운 JDK나 JRE를 까는 과정중에는 IE와 Netscape용 플러긴을 설치한다는 명시적인 과정이 나오고, 설치 완료후 IE를 띄운 후 애플릿이 있는 페이지에 가보면 자바 커피가 트레이에 자리잡습니다. HTML변환이 필요없으니 어떤 애플릿이고 바로바로 자바2로 돌아갑니다.
이제야 썬이 좀 정신을 차리지 않았나 생각이 드는군요. XP가 공식적으로 JVM을 지원하지 않는 마당에 HTML컨버팅을 해야 돌아가는 자바 플러긴은 사실 무용지물이나 다름없었습니다. 이번 마이너 업그레이드는 일종의 긴급 로드 테스트 버전으로, 긍정적인 반응이 나와준다면 JDK1.4에는 물론 JDK.1.3대의 정식 마이너업그레이드에서도 효과를 발휘할 것입니다. 아직 베타이므로 완전하지는 않지만, 플러긴 설치만으로 모든 애플릿이 자바 2 기술의 혜택을 받을 날이 멀지 않아보입니다.
마지막으로 간단한 팁하나 소개하며 마칠까 합니다. JDK1.4에서
헤들리스(Headless) 자바 지원을 받으려면 java를 실행할 때,
java -Djava.awt.headless=true 클래스 어쩌구저쩌구...
|
처럼 -Djava.awt.headless=true 옵션을 붙여야한다고 썬의 Java2D FAQ 최신호에 올라왔더군요. 아니, JDK1.4 공식 문서에도 이런 정보는 없더니만, 아무튼 눈이 안아프면 얻는 것이 없군요.
테스트를 리눅스에서 해봅시다. 아래와 같은 예제를
import java.awt.image.*;
public class TestHeadless
{
public static void main(String[] args)
{
BufferedImage testImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
}
}
|
이걸 TestHeadless.java로 저장해서 컴파일하고 리눅스의 X윈도우 말고 시꺼먼 콘솔에서 실행시키면
X윈도우 접속이 어쩌고저쩌고... 해서 안되...
라는 영어 메시지가 나옵니다.
근데 실행시킬 때
java -Djava.awt.headless=true TestHeadless
|
하면
OK입니다.
서버측 이미지 프로세싱을 백그라운드 프로세스로 하실 분들에게는 절대절명으로 필요한 기능일 것입니다. JDK1.4beta2까지 써 본 바로는 괜찮습니다. 썬 스팍 머신에 솔라리스 운영체계에서 -server 옵션과 함께 쓰면 (자동적으로 64비트 모드) 환상적이지 않을까 싶군요. (울트라스팍을 사고 시포~)
올해는 놀랍게도 자바원 컨퍼런스가 2회에 걸쳐 열립니다. 이미 봄에 미국에서 한번 했고, 가을에는 11월 말 컨퍼런스 역사상 처음으로 미국 본토바깥인 일본 요코하마에서 거행됩니다. 한 해 한 해 돌아가면서 미국뿐만아니라 자바 기술이 숨쉬는 곳이라면 어디서든 자바원 컨퍼런스가 열리길 기대해봅니다. 특히나 내년인 2002년에는 가을 컨퍼런스를 한국에서 열 수 있기를 간절히 바랍니다.
- 이주의 에필로그
너는 누구?
-영화 "소피의 세계"중