안녕하세요. 글쓴이 입니다.

2008.12.14일에 Retrotranslator 1.2.8 버전이 릴리즈 되었습니다.
1.2.8에서 구글 안드로이드 플랫폼 지원 기능 등 이 삭제되는 등
약간의 마이너 업데이트가 있었습니다.

참고 부탁드리겠습니다. (2009.1.7 추가)


기고인 : JCO 사무국장 김정태 (자바스터디 부운영자)

Java 1.3 / 1.4, Java 5, Java 6 등 자바(JDK)의

Major 버전 업데이트가 있을 때마다 Java 언어는
크거나 작은 문법적인 변화를 겪어 왔습니다.

특히 Java 1.4에서 Java 5(혹은 Java 1.5)로 넘어가면서
Generics, Annotations 등 다소 혁신적인 문법적 변화로 인해
찬반 논란을 낳기도 하였습니다.

대다수의 활발한 자바 오픈소스 프로젝트들은
최신 버전의 자바 버전에(Java 5 등) 대응하여 릴리즈 되고 있기 때문에
이전 버전(1.4 / 1.3)과의 호환성 문제가 발생하게 되었습니다.


1. Retrotranslator

Java 5 / 6 환경 등 에서 작성된 어플리케이션, 라이브러리 등을
Java 1.4 혹은 1.3 환경에서 구동해야 하는 상황이 생겼다면
Java 버전간의 문법적 차이로 인한 재작업(소스 수정)에
많은 시간이 소요될 것입니다.

이러한 Converting 작업을 수작업이 아닌 Tool을 통하여
쉽게 해 줄 수 있도록 한 것이 바로 Retrotranslator 입니다.

Retrotranslator 는 Taras Puchko 라는 프로그래머에 의해
소스포지(http://retrotranslator.sourceforge.net/)에서
오픈소스 프로젝트 로 진행되고 있습니다.

2005.11월 경부터 현재의 "1.2.7" 버전에 이르기까지 꾸준히
버전업중이며 Java 6 까지 지원하고 있습니다.

또한 Generics, Annotations 등 Java 5의 문법을 지원하지 않았던
구글 안드로이드 모바일 플랫폼 지원을 위한 라이브러리도 포함하고 있습니다.


C언어 등과 달리 이러한 byte code 라는 중간 코드를 생성하는
VM 언어(자바, 닷넷 등)의 특성으로 인해 byte code 조작을 통해
문제 해결을 하기 위한 기술로 AOP 등 여러 기술들이 등장한 바 있습니다.

Retrotranslator 역시 이러한 Java byte code 조작 기술에 기반하여
Java 5 로 작성된 어플리케이션을 소스 수정없이
Java 1.4 / 1.3 환경에서 구동할 수 있게 해 줍니다.

그리고 Retrotranslator는 다른 오픈소스 프로젝트들을 활용하고 있는데
byte code 조작을 위해 ASM(http://asm.objectweb.org/)이라는 framework를,
Java 5.0 의 concurrency 기능을 Java 구 버전에서 지원하기 위해
backport(http://backport-jsr166.sourceforge.net/)라는 오픈소스를 사용하고 있습니다.

Retrotranslator와 유사한 프로젝트로는
Retroweaver(http://retroweaver.sourceforge.net/) 등이 있습니다.


Retrotranslator는 Java 5 의 주요 문법적 특성들을
지원하고 있으며 그 목록들은 아래와 같습니다.

  • Generics
  • Annotations
  • Reflection on generics and annotations
  • Typesafe enums
  • Autoboxing/unboxing
  • Enhanced for loop
  • Varargs
  • Covariant return types
  • Formatted output
  • Static import
  • Concurrency utilities
  • Collections framework enhancements


2. 따라하기

(1) JDK 5 API를 이용하여 작성된 Java 소스 파일을
JDK 5 환경(혹은 Java 6)에서 컴파일 합니다.
예) C:\workspace\Retro\Test03>javac StaticImportEx1.java


(1-1) Java 5에서 컴파일된 파일을 JDK 1.4에서 구동하게 되면 아래와 같은
UnsupportedClassVersionError 에러가 발생합니다.

(2) (프로젝트) 홈페이지에서 바이너리 파일(bin)을 다운 받습니다.
(2008.12 현재 1.2.7)
- http://sourceforge.net/project/showfile ··· 3D153566
- Retrotranslator-1.2.7-bin.zip


(3) 다운받은 파일의 압축을 풉니다.
예) C:\workspace\Retro_exam\


(4) 압축을 풀면 아래와 같은 파일들이 있습니다.

(5) (압축이 풀린 경로로 이동후) Retrotranslator를 이용하여 .class 파일들을 변환합니다.
* 파일명의 1.2.7은 버전번호로로 추후 바뀔 수 있습니다.
* 추가적인 Retrotranslator 옵션들은 홈페이지를 참조하세요.
예) C:\workspace\Retro\Retrotranslator-1.2.7-bin>java -jar retrotranslator-transform er-1.2.7.jar -srcdir C:\workspace\Retro\Test03

(6) Retrotranslator를 통한 byte code 변환 작업후 실행한 화면입니다.

1-1에서 UnsupportedClassVersionError 에러가 났던 것과는 달리
아주 잘 실행되는 것을 볼 수 있습니다.
* 혹시 구동이 되지 않는다면 retrotranslator-runtime-n.n.n.jar,
backport-util-concurrent-n.n.jar의 classpath를 지정해 주시면 됩니다.

3. 결 론

Retrotranslator가 Java 5 에서 Java 1.4 / 1.3 등 으로의
100% 완벽한 Converting Tool은 아니지만,

Retrotranslator를 통해 Java 5 / Java 6로 작성된 대다수의 어플리케이션,
라이브러리들을 별도의 코드 작업(수정 등) 없이 그대로 Java 1.4 / 1.3 환경에서
구동할 수 있게 해 준다는 것은 매우 고무적인 일 입니다.

"창조적인 프로그래머의 생산적인 게으름"을 도와 줄 수 있는
이러한 프로젝트 들이 더욱 많이 나오길 기대하며

Retrotranslator의 소개를 마치도록 하겠습니다.

4. 글쓴이에 대해



김정태
onjozero at korea.com

현재 JCO 사무국장 및 자바스터디 부운영자로 활동하고 있으며,
Java ME 등 모바일 어플리케이션 개발자로 일하고 있다.


[참고자료]
Retrotranslator 홈페이지 http://retrotranslator.sourceforge.net/

Retrotranslator (Wikipedia) http://en.wikipedia.org/wiki/Retrotranslator

ASM Java bytecode manipulation Framework http://asm.objectweb.org/

Backport Library http://backport-jsr166.sourceforge.net/





"Java SE" 카테고리의 다른 글

2009/01/02 15:37 2009/01/02 15:37

TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/706

  1. network+coding-으로 이어질 블로그링

    Tracked from blogring.org  삭제

    network+coding-에 관한블로그를 요약한 것입니다.

    2009/01/10 13:06

댓글을 달아 주세요

  1. http://onjo.myid.net/   수정/삭제  댓글쓰기

    안녕하세요. 글쓴이 입니다.

    2008.12.14일에 1.2.8 버전이 릴리즈 되었습니다.
    1.2.8에서 구글 안드로이드 플랫폼 지원 기능 등 이 삭제되는 등
    약간의 마이너 업데이트가 있었습니다.

    참고 부탁드리겠습니다.(2009.1.7 추가)

    2009/01/07 15:06
[로그인][오픈아이디란?]

◀ Prev 1  ... 157 158 159 160 161 162 163 164 165  ... 806  Next ▶