보통 자바 클래스들을 배포할 때에는 JAR로 묶는 경우가 많다.
효과적인 Archive 방법을 이용하여 용량을 크게 줄이는 방법을 제시한 이 논문을 보자.

Jazz는 중복을 제거기 위해서 자바 클래스의 특징을 이해하였다. 모든 Constant pool을 한 공간에 할당하고, Constant pool에 대한 Huffman Table을 생성하며, 비슷한 Method들을 분류하고, 나머지 필드등을 각각 클래스별로 압축하는 방법을 사용하는 File Format을 가지고 있다.

Jazz 압축은 다음과 같은 전략을 가지고 있다.

1. Huffman codes are used for constant pool indices.
2. A unified constant pool is used for all classes in the Jazz archive.
3. Strings, opcodes, and arbitrary data compressed with Zip.
4. Start-step-stop code are used for instruction and string lengths; they are also used to encode the tables of Huffman codes.
5. Redundant constant pool entries are eliminated.

(Start-step-stop 인코딩 방법, 허프만 방식은 공부를 더 해야하는 부분이다. 추후, 이 부분에 대한 공부를 더 할 계획이다.)

이런 Jazz 압축을 통해서, uncompressed JAR 파일에 비해서, 대략 1/4정도로 줄여주는 특징이 있다. compressed JAR에 비해서 약 2배정도의 압축 효율이 있음을 알 수 있다.
메모리 공간차지와 속도에 대한 자료는 전혀 나와 있지 않으나, 논문 저자들은 속도에 큰 오버헤드는 존재하지 않는다고 밝혔다. 그리고, 압축을 풀어 소스를 decoding할때는 예전소스와는 약간 다르게 소스가 생성된다고 하였다. 그리고, 동작은 잘 동작된다고 하였다.

약간의 los가 있지만, 동작의 신뢰성이 보장되며, 효율이 좋은 형태로 저장될 수 있는 Jazz 파일 포맷을 쓰는 것은 참 매력적이다.

'After reading article or paper' 카테고리의 다른 글

마소의 의도록 수련을 보고  (0) 2006.07.20
마소의 마켓 중심의 개발자가 되는 길  (0) 2006.07.20
Licklider의 꿈.  (0) 2006.07.20
The Emperor's old Clothes-Hoare  (0) 2006.07.20
Iterative communication  (0) 2006.07.20
Posted by '김용환'
,