본문 바로가기
연구하기/Computer Engineering

Java 2 Standard Edition 5.0 간단한 사용 소감

by 썰렁황제 2004. 11. 12.

  J2SE 5.0 은 아시는 분이라면 익히 아시겠지만, 이전에 자바의 스탠다드 에디션 1.5 버전으로 개발되던 바로 그것이다. J2SE 1.4 가 자바의 전반적인 속도 향상과 시스템에 대한 더욱 직접적인 접근을 가능하게 하는 방향으로 발전되었다면, 이번 5.0 은 기존에 불편하게 사용되었던 문법적인 부분과 그에 따라 프로그램 구동 시 발생하는 퍼포먼스 코스트를 개량하는 방향으로 이루어졌다.

  일단 그런 부분에 대한 세세한 이야기는 나중에 하도록 하고, 실제적으로 기존에 작성했던 Eternal Dream 의 클라이언트 어플리케이션을 돌려본 결과는 다음과 같다.

  1. 어플리케이션의 Launching Speed 는 이야기와는 달리 그다지 빨라지지 않았다. 물론 Eternal Dream 의 경우 Launching 부분에 이미지 로딩이 들어가 있어서, 엄밀히는 정확하게 Launching Speed 를 평하기는 조금 어려우며, 실제적인 속도 향상은 업데이트 모듈에 적용해봐야 알 수 있지만, 생각만큼 빠르지는 않다.

  2. 그래픽 부분에 대해서는 별다른 속도 향상이 없다. 사실 더 속도 향상을 할 만한 구조적인 부분 변경 수단이 더 이상 없을 가능성이 크다. 1.4 에서 워낙 직접적인 접근이 가능하게 만든 것이 사실이기 때문에... 다만 1.5 부터 적용된다는, 컴포넌트에서 생성된 것이 아니라, 일반적인 생성자로 생성된 BufferedImage 도 비디오 메모리를 사용할 수 있게 된다는 점은 아직 테스트 해 보지 못했다. Eternal Dream 클라이언트 어플에서는 속도 문제로 인해 이 부분을 거의 채용하지 않았다. (유일하게 스크린 캡처 부분에만 채용)

  3. 확실치 않으나, 연속적 자료구조, 즉 Hashtable, Vector 등의 개체들에 대한 액세스 및 메모리 할당속도 혹은 참조의 스택 트레이싱 둘 중 하나 또는 둘 다의 속도 향상이 상당히 높게 이루어졌다. Eternal Dream 클라이언트 어플에서, 엄청난 양의 개체를 생성하고 해시테이블의 잦은 접근을 수행하게 되는 덱 에디터 및 컬렉션 인터페이스의 생성 작업 수행 시 약 40-50% 정도의 속도 향상이 이루어졌다. (1.4의 경우 5.2 - 5,8, 5.0 의 경우 2.8-3.5) 코딩 시 5.0의 신규 문법을 전혀 적용하지 않고, 1.4 의 문법을 그대로 사용한 코드에, 1.4 환경에서 컴파일 한 클래스를 그대로 사용했음에도 불구하고 이 정도 퍼포먼스를 보인다는 것은, JVM 의 내부적인 수준에서 메모리의 할당과 접근 부분에 대해 대단한 성능 향상을 이루었다는 의미일 것이다. 단지 외부적인 요소 (문법의 변경 등) 뿐만 아니라 내부적인 부분에서도 적지 않은 변경이 수행된 듯 하다.

  4. 아직 확실치 않으나, 몇몇 로케일에서 어플리케이션의 동작속도가 심각하게 저하되던 부분이 사라졌다. Eternal Dream 의 경우 동일한 코드를 가지고 대만 OS 에서 실행 시 속도가 심각하게 저하되었었는데 (요소는 정확치 않으나 문자열과 그래픽 처리 부분에서 문제가 발생한 것으로 추정하고만 있다) 이런 문제가 5.0 으로 수행시에는 사라졌다. 정확히 어떤 이유로 인해 사라졌는지는 아직 파악하지 못하고 있다.

  아무튼 사용해 본 결과 일단 기대 이상의 성능을 보여서 상당히 만족하고 있다. 다만 기존의 1.4 처럼 치명적인 버그가 나오지 않기를 바란다. 1.4의 경우 기존에 비해 워낙 많은 변경사항으로 인해 이런저런 치명적인 버그들이 산재했으며, 고버전으로서는 드물게 x.x.2_06이라는 버전까지 등장할 정도였다. (특히 1.4.2_04 에서 발생한, 폰트 액세스 실패로 인한 구동 불가 문제는 치명적이었고, 덕분에 아주 적은 인터벌로 _05 버전을 볼 수 있었다) 자바를 사용하는 프로그래머로서, 앞으로 자바가 더욱 발전할 수 있기를 기대해 본다.

반응형