본문 바로가기

프로그래밍 이야기

이제 마음 놓고 Java 프로그래밍을..

사용자 삽입 이미지

지금까지 Java에 대한 매우 좋지 않은 인식 덕분에 Java에 거의 손을 대지 않았었습니다. FOSS(Free/Open Source Software,자유/오픈소스 소프트웨어)가 아닌 도구를 사용하지 않게 된지 거의 5-6년 정도 된 것 같습니다. 저의 주된 프로그래밍 도구들은 Emacs, C/C++ (GCC), GDB, Python, PHP, BASH 등의 것들입니다. 프로그래머 생활을 처음 시작할 때에는 Visual C++로 대표되는 마이크로소프트의 개발도구들도 사용했었지만 언젠가부터 전혀 사용하지 않게 되었습니다.

SUN에서 드디어 자바를 GPL로 풀기로 결정했다고 합니다. Free Java가 탄생하는 겁니다. 적당한 타이밍에서 10년 정도 뒤쳐진게 아닌가 싶은 생각이 들기는 하지만 지금이라도 Java가 자유롭게 되었으니 다행이라고 생각합니다. 이제야 저도 자바로 뭔가 장난을 쳐보고 싶은 생각이 듭니다. ^_^

자바에 대해 좋지 않은 저의 인식은 주로 몇가지 말초적이고도 이데올로기적인 이유였습니다. 이유들을 간략하게 생각해 봤습니다.

1. “느려~”
이건 첫 인상에 대한 것일수도 있지만 제게는 자바가 너무 느립니다. 특히나 느려터진 브라우저에서 초기화 하는데 하루 종일 걸리는 애플릿들은 정말 충분히 안좋습니다. 열혈 자바 프로그래머들은 자바가 느리다고 하면 절대 그렇지 않다고 일장 연설을 해댑니다만, 자바 느립니다. 몇몇 사용 분야에서 자바가 어느 정도 괜찮은 퍼포먼스를 낸다는 사실은 인정하지만 그래도 자바는 느립니다. 특히나 사용자의 눈과 손가락과 직접 만나는 부분들을 자바로 만들어 놓으면 도대체 이게 뭐 하자는 프로그램인지 모를 지경이 되는 경우가 많습니다. 물론 개념 없이 만들어진 C++ 프로그램보다 개념을 가지고 만든 Java 프로그램이 더 퍼포먼스가 좋기는 합니다.

2. “이거 어린이용 C++인가?”
C++과 거의 비슷하지만 약간씩 다른 문법이 마음에 안듭니다. 어차피 포인터 같은 부분 사용자들이 못쓰게 할 계획이었고 축소 스펙의 언어를 만들려고 마음을 먹었다면 Perl이나 Python 처럼 화끈하게 간단하게 만들던가, 아니면 Basic 같은 쉬운 초보자 대상의 언어의 문법을 가져다 만들었다면 Java를 조금 더 좋아하게 되었을지도 모르겠습니다. 특히 안좋은 점이라고 생각하는 점은 {} 괄호(curly brace)를 그대로 사용하게된 겁니다. {} 괄호들은 베테랑 C/C++ 프로그래머들도 타이핑 하기에 손가락이 힘든 글자들이라는걸 누구나 인정하는데 이걸 그대로 따라한건 21세기 지향 언어로서 참 못할 짓을 한거 같습니다.

3. SUN Microsystems의 삽질.
삽질도 이런 삽질이 없습니다. MS가 자바를 망가뜨리니 MS가 자바에 손대지 못하게 해달라고 소송을 하다니요. 덕분에 MS가 만든 (당시로서는)고성능의 JVM이 윈도우에서 빠져버리게 되었고, 결과적으로 윈도우에서 자바를 사용하기가 한층 더 어려워 졌습니다. 쓰더라도 SUN에서 만든 한글도 잘 안나오고 걸핏하면 죽어버리는 JVM을 설치해야만 했습니다. 지금은 어떤지 잘 모르겠습니다만… 정확한 통계 같은건 없겠지만 이 바보같은 사건으로 잠재적인 자바 프로그래머가 상당수 떨어져 나갔을 겁니다. 웹상에서 이제는 플래쉬에게 추월을 당하는 신세가 됐습니다. 예전같았으면 자바로 작성했을만한 것들이 플래쉬로 만들어져 나옵니다. 윈도우에서도 Java 쓰기가 어렵고 리눅스에서도 apt-get install sun-java 하면 설치가 되었으면 좋겠는데 라이센스 문제로 이것도 안됩니다. 도대체 왜 이런 삽질을 하는지 모르겠습니다.

4. Java 프로그래머들…
Java 개발자들은 보통 두가지 부류로 나뉩니다. C/C++을 사용하던 와중에 좀 더 나은 툴을 찾는 와중에 자바를 발견해서 사용하는 프로그래머와 처음부터 자바만 배운 프로그래머. 한때 웹 열풍을 타고 대량으로 쏟아져 나온 Java 개발자들은 프로그래머에 대한 매우 좋지 않은 이미지들을 심어주기에 충분했다고 봅니다. UNIX 프로그래머들의 기본적인 문제 해결 방식이 K.I.S.S.(Keep It Simple Stupid)인데요, 가능한한 문제를 잘게 쪼개어 최대한 심플하고 직설적인 방법으로 문제를 해결한다는 사고 방식입니다. 어떤 Java 프로그래머들은 문제를 가능한한 복잡해 보이고 뭔가 있어보이는 방식으로 해결하려고 하는걸 볼 수 있습니다. 적당한 비유가 될런지 모르겠지만, 프로그래밍 언어와 그 주변의 라이브러리들은 문제를 해결하기 위한 도구에 불과합니다. 뭔가 일을 할 때, 도구들은 땅바닥에 수평적으로 대충 늘어놓고 적당한 도구들을 줏어서 쓰는 것이 편리하지 수평/수직/트리구조의 깔끔하게 짜여진 진열장에 빼곡히 예쁘게 정리해놓고 나서 상하좌우 관계를 따져 꺼내 쓴다는건 너무 불편한 일 아닌가요? 객체지향의 완결성보다 문제의 해결이 더 중요한 경우도 있다는 점을 알아주면 얼마나 좋을지 모르겠습니다.

5. 고슬링 재수 없다.
이건 근원을 따지자면 우울했던 80년대에 Richard Stallman이 만들어낸 Emacs의 코드를 Gosling이 가져다가 상용으로 팔아먹었던 것으로부터 시작될겁니다. (물론 그 코드 그대로는 아닙니다) 암튼, 그 이후의 고슬링, 참… 재수 없습니다… 특히나 SUN의 CTO로 떵떵거리던 시절 몇몇 인터뷰에서 오픈소스/자유 소프트웨어 진영을 깎아 내리던 그의 발언들은 많은 순수한 마음을 가진 프로그래머들의 가슴에 상처를 주기에 충분했습니다.

6. 진한 커피향?
Java라는 이름도 참… Java의 처음 프로젝트 이름은 오크(Oak)? 뭐 그런 비슷한 이름이었는데요, 갑자기 뜬금 없이 자바라는 이름을 가지게 되다니… 착취당하는 경제식민지의 전형적인 예 중 하나가 커피 산업이라고 하는데, 일단 그게 연상되어 마음이 언짢습니다. 저임금에 커피 수확하는 불쌍한 인도네시아 노동자 몇을 깔고 앉아 한가롭게 커피 향기 맡아가며 프로그래밍 하고 있는거 같은 이미지가 자꾸만 떠오릅니다. -_-; Java가 커피의 향이니 뭐니 하는 이야기를 들으면 엔지니어로써 “그럼 C는 납땜 인두의 향인가?”하는 생각에 “불끈~!”하게 됩니다.

그럼에도 불구하고 Java는 SUN의 강력한 마케팅과 시대적 필요성에 의해 탄생하고 성장해서 소프트웨어 역사에 한 획을 그었습니다. 수많은 소프트웨어들이 자바를 이용하여 만들어지고 있고요. 날이 갈수록 그 사용 범위는 넓어져 갈겁니다. 게다가, SUN의 자바 오픈 발표로 인해 다음 발전 단계로 나아가게 되었습니다. SUN이 마음대로 콘트롤하던 답답한 자바에서 시원시원한 자바로 변모해갈 것입니다.

자유/오픈소스 소프트웨어 프로그래머들의 품에 안기게 된 자바를 진심으로 환영합니다.


320x100