Media Log

SwingX 라는 오픈소스 프로젝트가 있는데, 꽤 오랫동안 0.9대 버전으로 개발되어 오다가 이번에 1.0 버전이 릴리즈되었다.

SwingX는 java의 기본 swing을 랩해서 조금 더 기능이 풍부한 UI 구현들을 제공하는 프로젝트이다.
java로 데스크탑 애플리케이션을 만드는 경우는 그렇게 많지 않지만, 만약 그런 일을 접하게 되면
기본 swing으로 뭔가 부족하다 싶을 때 swingx에 혹시 원하는 기능이 있는지 찾아보고 그런 기능이 있다면 직접 구현하는 수고를 덜 수 있다.

JRE 1.6.10부터 제공되는 Nimbus 룩앤필(개인적으로는 스윙에서 처음으로 그나마 봐줄만한) 역시 이 swingx 프로젝트에서 시작해서 JRE에 통합되었다.


이미 기존에 만들어둔 GUI애플리케이션이 있다면 룩앤필을 설정하는 코드 몇 줄만 추가함으로써 별 다른 수고 없이 더 보기좋은 UI로 탈바꿈 시킬 수 있다.

MFC로 GUI 프로그래밍을 하게되면 객체에 변경을 가하기 위해 주로 상속을 하거나 서브클래싱을 하게되는데 swing에서는 인터페이스를 구현하는 방법이 많이 사용된다.

C++ 프로그래밍을 하게 되면 COM같은 특수한 분야를 다루지 않는 이상 인터페이스를 구현하는 일이 그다지 많지 않지만, 자바에서는 곳곳에서 쉽게 찾아볼 수 있다.

인터페이스를 설계 및 구현하고 또 변경하고 싶은 기능들만 오버라이딩하여 잘 동작하게 될 때의 기쁨은 어쩌면 객체 지향 프로그래밍의 가장 큰 즐거움 중에 하나일 것이다.
나는 C++을 하는 동안 그런 느낌을 한 번도 느껴보지 못했는데, 자바로 프로그래밍을 하면서 많은 것을 배우고 재미를 느끼는 중이다.

인터페이스가 뭔지 혹은 가상함수가 뭔지에 대한 내용은 어려운 내용이 아니라서 쉽게 배울 수 있지만
인터페이스를 언제 사용해야 할지, 왜 사용해야 하는지에 대한 깨달음은 실제로 많이 사용해봐야만 얻을 수 있는 것 같다.

그런 면에서 객체 지향 프로그래밍을 배우기에는 확실히 C++보다는 자바가 좋은 선택이다.