우리나라 상용 소프트웨어 프로젝트에서 가장 많이 사용되는 언어는 Java다. 공공기관 업무용 웹사이트, 민간 상업용 웹사이트, 웹서비스 등 시스템간 연동, 뱃치성 작업 등 단순 업무 프로그램, 또한 안드로이드 모바일 앱 등에서 완전 "갑"이다.
단적으로는 Java의 캐치프레이즈인 “엔터프라이즈” 지원을 바탕으로 한 상업적 성공으로 인해 그 밖의 언어는 상대적으로 훨씬 열세를 보이고 있다. 그런데 그 와중에 민간 상업용 웹사이트, 민간 커뮤니티 웹사이트 등에서 상당한 점유율을 보이는 언어가 PHP다.
미국 등에서는 이러한 분야에서 Python, JavaScript, Ruby 등이 발군의 성과를 보여주고 있지만 우리나라 및 외국도 여전히 일부에서는 PHP가 꾸준히 힘을 발휘하고 있다.
그럼 Java는 왜 그렇게 성공한 것이고 PHP는 어떻게 꾸준히 사랑받고 있는 것일까? 이글은 그동안 내가 두 언어를 모두 접해보면서 든 개인적인 생각을 남겨보고자 한다.
Java의 성공
Java는 일반적으로 컴파일 언어로 분류되고 있으며 따라서 원시 코드 작성 / 빌드 / 배포를 거쳐야 하는 포멀한 프로그램 개발 방식으로 인해 공공 기관에서 특히 선호하는 언어가 됐다. 공공 기관은 일정한 업무 체계를 갖추는 것을 좋아하고 개발자의 자유도를 높이 사지 않으므로 Java의 형식성이 상당한 강점이 된다.
Java는 개발 공정에 있어서 뿐 아니라 프로그램 구조(또는 아키텍처)에 있어서도 포멀한 방향을 지향하는 면이 있다. Java는 태생적으로 OOP, 즉 객체 지향 프로그램 언어로 프로그램 대상 모델을 객체화, 모듈화하여 설계하게 되며 이러한 모델링 또는 설계가 특히 잘 인정받은 프레임웍 위에서 개발되는 것이라면 규모 확장성 또는 기능 확장성은 상당히 높아지게 된다. 공공 기관이나 대규모 민간 기업에서 Java를 선호하는 것은 이러한 확장성에 대한 선호로 인한 것도 크다. (이러한 확장성이 Java만 강하다는 것은 아니다. Java가 체계적인 확장성을 갖출 수 있는 것 만큼이나 다른 언어도 잘 짜여진 기반 위에서는 얼마든지 확장성이 높을 수 있다. 다만 Java는 이러한 생태계가 좀더 상업적으로 잘 갖춰진 것이라고 나는 생각한다.)
Java는 상업적 생태계가 잘 갖춰져 있다. Java 자체가 Sun이라는 대기업에서 출발한 것이며 IBM, Oracle 등의 지원을 통해 대규모 애플리케이션 개발에 적합한 기능 추가, 프로그램 도구 개발, 라이브러리/프레임웍 개발이 잘 진행돼왔다.
예를 들어 우리나라 Java 개발자라면 거의가 Eclipse를 사용한다. 데스크탑앱, 웹앱, 웹서비스, 모바일앱, 모델링 등 Java로 할 수 있는 거의 모든 것을 Eclipse 안에서 해결할 수 있다. 또한 Spring, Tomcat, Maven, jBoss 등등 수 많은 라이브러리/프레임웍이 개발자의 매일매일에 한 순간도 빠지지 않을 만큼 일상화가 돼 있다.
마지막이지만 가장 중요한 면인 언어 자체의 강점도 크다. Java는 꾸준한 버전업을 통해 언어 규격이나 성능 등이 진화해왔고 개발자나 고객의 만족도가 클 수 밖에 없다. Java 프로그램은 운영 체제에서 직접 실행되는 것이 아니라 JVM(자바 가상 머신) 위에서 실행됨에도 불구하고 예를 들어 JIT(Just In Time) 컴파일러가 등장한 이후에는 어떤 경우 C/C++ 컴파일러가 만들어낸 네이티브 코드보다 더 우수한 성능을 보여주기도 한다. 최근에 발행된 인터넷 기사에서도 Java의 성능은 최고임을 볼 수 있다. 언어 규격이나 지원에 있어서도 Java 5의 generic, enum, Java 6의 Web Start, JConsole, Java 7의 새로운 try 구문, 문자열 switch 문 등 편의성, 생산성이 계속 좋아지므로 만족도가 높아진다.
PHP의 선전
PHP는 원시 코드가 바로 실행되는 스크립트 언어다. 따라서 코딩 - 시험 과정이 쉽고 빠르게 진행될 수 있으므로 개발자가 마음만 먹으면 시험 환경이 아닌 운영 환경에서조차 일부 실수가 있더라도 빠르게 프로그램을 코딩, 수정할 수 있다.
CMS나 블로그 등 일부 애플리케이션 분야에서 PHP가 절대적인 위치인 반면 Java는 명함도 잘 못 내미는 이유가 그런 것이다. CMS, 블로그 등의 특성상 수많은 사람이 접하는 애플리케이션일수록 빠른 대응이 절대적이고 PHP와 같은 빠른 개발 속도만이 이런 분야를 감당할 수 있다.
또한 PHP는 Java와 마찬가지로 C 언어 계열이긴 하지만 유닉스 셸 언어, Perl 등 다른 언어의 구문 형식을 일부 가져와서 똑같은 결과를 다른 구문으로 작성할 수 있다. 즉 개발자의 코딩 스타일이 다양하게 드러나는 언어다. 따라서 PHP는 보수적인 환경의 공공 기관보다는 속도와 변화를 추구하는 민간에서 더 환영 받았으며 특히 개인 개발자나 소규모 팀이 자신의 스타일을 유지하면서 빠르게 프로토타입을 만들어내야 하는 환경에서 인기가 많을 수 밖에 없다.
코딩 스타일이라는 개인적인 취향에서만이 아니라 언어 규격 자체가 클래스, 상속 등을 지원하므로 OOP 방식의 프로그램을 개발할 수도 있고 순수하게 절차적인 프로그램을 개발할 수도 있게 프로그램 모델을 선택할 수 있다. 그 위에 PHP라는 오픈 소스 생태계를 통해 지원되는 수많은 라이브러리가 PHP 개발의 다양성을 훨씬 풍부하게 하고 있으므로 오픈소스 커뮤니티에서는 가장 대표적인 개발 환경 중 하나가 될 수 있었다. Java의 상업적인 생태계보다는 라이브러리들이 소규모 팀/개인에 의해 개발되고 상업적 목적이 덜하다는 차이가 있을 것이다. 그런데 바로 이런 점이 주로 독립적인 민간 개발사/개발자를 끌어모으는 원동력이 된다.
요즘 많은 오픈 소스 언어가 그렇긴 하지만 PHP도 멀티 플랫폼으로 성장해왔다. 즉, 윈도, 리눅스, 유닉스 등을 공식적으로 지원한다. PHP는 C로 개발되었으므로 처음부터 멀티플랫폼을 기반으로 하는 Java에 비해 훨씬 이식성이 낮지만 PHP 개발자들의 노력에 의해 어느 환경에서나 사용할 수 있는 언어로 성장해왔기 때문에 또한 성공할 수 있었던 것이다.
맺음
이상으로 두 가지 언어의 성공에 대한 내 생각을 정리해봤다. 성공 요인이 더 있을지 모르겠으나 현재 가장 성공적인 언어라는 것은 분명하다.
이러한 성공이 얼마나 더 이어질지는 모른다. 수많은 개발자가 두 가지 언어에 매달려있는 지금 우리나라에서 Java와 PHP는 아무튼 절대적인 위치이며 앞으로도 상당 기간 지속될 것이다. 우리나라 개발자들도 두 언어의 발전에 일정 부분 기여하고 있는 것으로 아는데 그 범위가 더 커지길 기대해보는 것으로 글을 마친다.