웹 전쟁을 점화시킬 수 있는 확실한 한 가지 방법은 한 프로그래밍 언어가 다른 프로그래밍 언어보다 낫다고 말하는 것이다. ‘자바의 아버지’ 제임스 고슬링(James Gosling)은 누구보다 이 말을 잘 이해한다.그런 고슬링이 자신의 블로그를 통해 최근 불붙고 있는 자바와 스크립팅 언어 논쟁에 뛰어들었다.‘역동적인’ 언어로도 알려져 있는 PHP와 Python 등 스크립팅 언어는 자바에 비해 배우기가 쉽고, 특히 웹 페이지 개발자들 사이에서 인기가 높다. 최근 들어 기존 자바 지지자들을 포함해 수많은 사람들이 자바의 영향력을 약화시키고 있는 스크립팅 언어와 오픈소스 컴포넌트인 LAMP 스택 사용을 놓고 논쟁을 벌이고 있다. 현재 썬 개발자 제품 그룹 CTO를 맡고 있는 고슬링은 누가 뭐랄 것도 없이 자바로 기울어진 사람이지만 최근의 이같은 논쟁에도 눈을 떼지 않고 있다. 그는 블로그에서 “지금 단계는 우리가 실제로 자바로 무엇을 할 수 있는지를 탐험하는 여정 중에서 1/3 정도에 도달한 상태다. 자바는 아직도 이용할 수 있는 부분이 많다”고 밝혔다.CNET 뉴스닷컴이 고슬링을 만나 프로그래밍 언어를 둘러싼 끊임없는 논쟁, 이번 논쟁의 긍정적 측면, 그리고 자바의 미래에 대해 들어봤다.프로그래밍 언어로서 자바의 이점에 관한 논쟁이 불붙고 있다. 대부분의 사람들은 스크립팅 언어가 자바를 대체하고 있다고 주장하는데. 자바의 영향력이 약해진 것인가? 자바가 너무 오래돼 이제는 볼품없이 초라해져버린 것인가?실제로 그렇게 되기를 바라는 사람은 바로 나다. 내 삶이 더 편안해질 테니까 말이다. 하지만 이반스 데이터나 다른 자바 관련 자료를 찾아봐도, 그리고 자바를 이해하는 수많은 사람들을 만나 얘기를 나눠봐도 자바가 쇠약해졌다는 징후는 찾을 수가 없다. 자바가 내리막길을 걷기를 바라는 사람이 많다는 것도 알고 있다. 하지만 나를 가장 매료시키는 것은 바로 이런 논쟁이 다양성으로 향하는 과정이라는 점이다. 자바가 볼품없이 초라해지기를 바란다는 것은 무슨 뜻인가?그동안 이 분야에서 매우 오랫동안 일했다. 가끔은 “잠시 쉬고 싶다”는 생각을 한다.내가 최근 작성한 블로그에 추가되는 댓글을 보는 것도 재미있다. 그리고 모호한 논쟁 주제에 대해서조차 거리를 유지하기 위해 많이 노력한다. 하지만 내 성격 탓인지는 몰라도 블로그세계에서 논쟁이 불붙기 전에 발을 들여놓게 된다. 처음에는 한 발짝 뒤로 물러나 별다른 생각을 하지 않으려고 노력했다. 그리고 논란의 중심에 아무도 없으면 사람들이 모욕이라고 느낄 것으로 생각했다. 하지만 이런 논란의 이면에는 나의 방어를 강력하게 지지하는 수많은 사람들이 또한 존재한다. 이런 상황이 나를 흐뭇하게 만든다.최근 자바의 건강상태를 체크할 수 있는 가장 좋은 척도는 우리가 전 세계적으로 실시하고 있는 개발자 교육이다. 이 프로그램은 규모가 더욱 확대되고 있으며, 참여하는 사람들도 늘고 있다. 특히 중국, 인도, 브라질에서는 가히 폭발적이다.최근 제기된 몇 가지 문제를 짚어보자. 이반스 데이터(Evans Data) 발표자료에 따르면 지난 2년 6개월 동안 아시아 지역에서는 자바 사용이 증가한 반면 북미 지역에서는 감소했다. PHP와 다른 스크립팅 언어가 더 인기를 끌고 있고, 많은 웹 2.0 기업들이 스크립팅을 포함한 AJAX를 사용하는 것 같다.AJAX는 더 발전된 무언가를 구축하기 위해 자바를 사용하는 스타일에 불과하다. 꽤 근사한 툴이지만 문제점도 있다.맞는 말이다. 그런데 ‘자바, 그 이상을 향해’라는 책에서는 자바가 어떤 부분에 대해서는 훌륭한 언어지만 웹 개발 측면에서는 다른 개발 언어와 프레임워크가 더 낫다고 주장했다. 적절한 평가라고 생각하나?PHP는 웹 페이지 생성을 위해 개발된 웹 개발에 특화된 언어다. 따라서 웹 페이지 생성이라는 측면에서 보면 PHP가 상당히 우수하다. 하지만 PHP는 JSP(Java Server Pages)의 복제판이나 마찬가지다. 즉 순수한 웹 페이지 생성이 아니라 웹 페이지 이상의 다른 작업을 하려고 할 때는 문제가 발생한다는 말이다. 다른 종류의 컴퓨팅 작업과 더불어 더 많은 분석이나 통합을 수행하려 하면 곧바로 어려움에 봉착한다. 웹 페이지 생성에만 특화돼 있기 때문이다.종종 발견하는 사실이 하나 있는데 사람들이 웹 페이지를 생성할 때는 PHP를 사용하고, 백엔드 데이터를 분석할 때는 자바 코드를 사용한다는 것이다. 기술은 대부분 한 기술이 다른 기술을 대체하기보다는 서로 보완 관계를 유지한다.서버에서는 자바를 사용하고, 프론트 엔드에서는 스크립팅을 사용하는 추세가 확대된다면 자바에 문제가 있다는 말 아닌가?내가 항상 고민하는 것은 세계의 컴퓨팅 업무라는 차원에서의 웹 프론트엔드 부분이다. 웹 프론트엔드가 더 직접적이고 단순화될 수 있도록 하려는 것이다. 사람들은 자바의 범주 내에서 자바 스크립트, 그루비(Groovy), J/Python, J/Ruby 등 수많은 스크립팅을 사용한다. 종종 간과되는 사실 중 하나는 자바가 실제로는 2레벨 언어라는 점이다. 자바는 가상 머신이면서 동시에 ASCII 언어이기도 하다. 그러나 실제로 흥미로운 마술은 가상 머신에서 발생하기 때문에 사람들은 확인할 수가 없다. 가상 머신의 상층부에는 헤아릴 수 없이 많은 종류의 언어가 존재한다.자바 가상 머신과 관련된 스크립팅을 사용하고자 하는 이유는 무엇인가?스크립팅 언어를 이런 방법으로 사용할 때 얻을 수 있는 이점 중 하나는 거대한 도구 창고에 즉각 접속이 가능하고, 성능과 상호호환성이 뛰어나다는 점이다. 물론 그루비를 이용해 POS 터미널, 스마트카드, 데이터베이스 등에 접속할 수도 있다. 자바는 분산 컴퓨텅을 위해 설계됐으며, 일반적으로 복잡한 업무를 처리하는 데 사용된다. 자바가 지금보다 더 간단한 컴퓨팅 분야에도 사용될 필요가 있나?역사적으로 보면 자바는 더 간단한 컴퓨팅 업무를 수행할 때 더 나은 성능을 발휘했다. 일종의 교환인 셈인데, 예를 들어 무언가를 만드는데 정말 쉬운 일부터 시작하면 나중에 더 큰 문제가 닥치면 감당하지 못하는 것이나 마찬가지다. 지난 몇 년 동안 일반적인 자바 설계 방향은 과도할 정도로 고성능 분야에 치중됐다. 일례로 거대 은행이 하나 있다고 치자. 이 은행이 하룻밤에 1000억 달러를 처리하는 트랜잭션 서버를 운영하고 싶고, 이 일을 수행할 충분한 인력도 보유하고 있다면 자바 세계의 모든 인프라스트럭처는 이 업무를 감당해낼 수 있다. 그러나 대형 업무에는 모든 종류의 모호한 것들이 존재하기 때문에 대형 업무만을 처리하다보면 단순성은 사라진다. 따라서 고성능 세계에 실제로 존재하는 분야만을 처리하게 된다.사용 편리성 문제가 계속 자바의 발목을 잡고 있는데. 이 문제를 해결하기 위해서는 어떤 노력을 하고 있나?사실 자바를 수정할 생각은 없다. 한 언어가 단순한 언어로 변화되면 기존에 갖고 있던 고성능 처리 능력은 파괴되는 경우가 많기 때문이다. 하지만 툴에 대한 단순성을 확보하려는 시도는 하고 있다. 예를 들어 자바 스튜디오 크리에이터(Java Studio Creator)는 AJAX 컴포넌트를 드래그앤드롭으로 끌어와 데이터베이스에 액세스하고, 웹페이지도 매우 신속하게 구축할 수 있도록 해준다. 툴 생성과 관련해 우리가 지금까지 해왔던 방식 중 괜찮은 것 하나는 모든 복잡한 작업이 반드시 필요하다는 사실이다. 툴이 페일오버(failover), 원격 관리가 가능한 거대한 리던던트 클러스터 상에 배치할 수 있도록 굳이 공들이 필요가 없다. 모두 무료이기 때문이다.하지만 시간이 지나면 더 복잡해지고 거대해지지 않나?물론 더 거대해지고 복잡해진다. 또 결과적으로 이 문제와 관련된 모든 것을 포기하는 ‘실패한’ 트랜지션 포인트로 끝나기도 한다. 그렇게 만들기 위해 노력하고 있다. 따라서 이 툴을 이용해 아주 초보적인 단계부터 시작할 수 있다. 하지만 스케일이 확대될수록 툴이 더 복잡해진다는 사실을 알게 된다.지난 몇 년 동안 개발 스택으로서의 LAMP(리눅스 소프트웨어 조합)에 대한 관심이 많았다. 하지만 몇 년 전에는 J2EE와 MS 닷넷 2가지 주요 스택이 존재한다는 주장이 나왔는데. LAMP가 자바 이외의 세계에서 실용적인 옵션이라고 생각하나?LAMP가 실용적인 툴로 변하고 있는 것은 확실하다. 그리고 자바는 리눅스, 아파치, MySQL, PHP가 포함된 LAMP 세계에서 완벽하게 동작한다. 자바는 실제로 이런 조합에 잘 적응하고, 일반적으로도 이런 조합에서 사용된다.나는 철학적인 측면에서 마켓플레이스의 다양성을 추구한다. 하지만 개인적으로는 이 부분에서 별다른 차이점을 발견하지 못했다. 루비온 레일스(Ruby on Rails), PHP, LAMP 등이 더 확대된다 해도 크게 신경 쓸 필요가 없다는 말로 들린다. 자바의 범주에 속하지는 않지만 그래도 쓸만하다는 뜻인가?실제로 PHP 같은 툴은 멋진 툴이라고 생각한다. 이런 툴은 모두 함께 동작하며, 특히 JVM에 루비를 구현하는 J/루비 등 루비는 더 근사한 툴이다. 스크립팅 언어 개발자들에게 한 가지 바라는 것이 있다면 평균 수준에서 그리 벗어나지 않았으면 하는 것이다.무슨 뜻인가?스크립팅 언어의 프로세스를 보면 자바 프로세스와 상당히 유사하다는 점을 발견할 수 있을 것이다.진정으로 무언가 다른 것을 개발하고 싶다면 실제 자바에는 존재하지 않는 다른 어떤 것을 개발해야 한다는 말인가? 내가 보기에는 사람들이 실제로 혁신적이고 흥미 있는 것들을 할 수 있는 공간이 무수히 많다. 그런데 대부분은 표면에서 겉돌고 있다는 생각이다.자바는 원래 목적인 언어와 플랫폼으로 남게 되나, 아니면 모바일이나 서버에 특화될 예정인가?그 부분에는 수많은 모순이 존재한다. 한편으로는 특화를 통해 더 많은 파워를 확보할 수 있다. 그러나 또 한편으로는 지금 상태로 놓아두고, 다양한 장소에서 작동하는 환경이 구현될 때 더 많은 파워를 얻을 수 있다. 이런 점이 우리에게는 상당한 힘이 된다.이면에 숨어있는 몇 가지 모습 중 하나는 사람들이 기술에 집중하는 경향이 있다는 점이다. 그러나 기술 자체가 아니라 개발자들의 기술 셋에 집중하게 되면 개발자들이 자바를 배울 수 있게 된다. 그리고 이들 개발자들은 자바를 습득해 애플리케이션 서버, 트랜잭션 서버, 네트워킹 프로토콜 서버, 휴대폰의 애플리케이션 서버, 공장 자동화를 일부 통제하는 애플리케이션 서버, 스마트카드의 애플리케이션 서버에서 작업을 수행할 수 있다. 궁극적으로는 단지 휴대 가능한 기술이 아니라 휴대성이 고도로 강화된 기술 셋을 확보할 수 있게 된다. 루비온 레일즈 개발자들은 자신들이 사용하는 툴이 생산적이라는 점 때문에 이 툴에 열광한다. 이에 비해 사람들은 자바가 웹 개발 측면에 있어서는 루비온 레일즈 정도의 생산성을 제공하지 못한다고 주장하는데. 자바가 이런 생산성을 담보할 수 있을 때까지 기다려야 하는 특별한 이유가 있나?그렇게 말하는 사람들은 대부분 고성능 자바 툴을 실제로 사용해보지 않은 사람들일 것이다. 이런 사람들은 자바 스튜디오 크리에이터 같은 고성능 툴을 시도해볼 필요가 있다. 이번 논쟁에서 한 가지 재미있는 사실은 이들이 목소리가 크기 때문에 언론에서 주목한다는 점이다.개발 세계는 사람들이 서로 공격하는 경향이 있는데. 자바가 유행을 따르기를 기대하나?8~9년 전에 자바는 하나의 유행이었다. 아니, 유행을 초월한 어떤 것이었다. 그러나 이제 자바는 어느 하나가 아닌 다양한 것들의 집합체다. 이같은 변화가 재미있지 않나.J2EE(서버 소프트웨어)는 이제 완벽한 주류로 자리잡았고, 중요하다는 점이 입증됐기 때문에 유행과는 반대 방향에 서있다. J2EE는 매우 집합적인 툴이고, 시장에서의 험난한 경쟁을 거쳐 안전성이 완벽하게 입증됐다.몇 가지 단계 중 하나의 과정일 뿐이다. 나는 유행을 선도하는 자바 세계의 일부가 존재한다고 생각한다. 내가 말하는 유행은 한창 유행중인 패션인 글리터진의 의미가 아니라 대중적이고 흥미를 유발하는 그런 종류의 유행이다. 휴대폰 개발, 넷빈스(NetBeans), 크리에이터(Creator), 수많은 툴, 그리고 JAX-WS 같은 다양한 종류의 API 스택 등 이 모든 것들이 현재 유행하고 있다고 생각한다. 그러나 견고한 부분은 여전히 존재한다. 이런 툴은 신뢰할 수 있고, 산소처럼 꼭 필요한 존재이기도 하다. 당신이 만약 이런 산소같은 존재를 진정으로 필요로 할 때 그 존재가 떠나버린다면 정말로 화가 치밀 것이다. @