JAVA 라는 프로그램 언어는 과거 만들어진 여러 다른 개발 언어와 비교하여 상당한 혁신성이 고려되어 만들어진 언어 이다.
그 중 가장 대표적인 것이 One Source Multi use = Platform Indepentent 의 개념 이다.
다만 이러한 개념을 구현하기 위해 필수적으로 필요한 것인 가상머신이라는 SW의 도입이다
지금까지도 JAVA의 찬성과 반대에 대한 많은 의견들이 있지만 장기적인 방향성에 있어서 시간이 지속될수록 JAVA 의 개념이 맞았다는 의견이 우세 할것이다.
java 의 Source 파일을 Compile 하면 class 파일 (= bytes code ) 가 생성된다
이렇게 생성된 class 파일이 JVM 에서 실행되는 구성인데 앞서 애기한 platform independent 한 특성은 이러한 특성이 JVM 실행 이전까지, 즉 개발자가 고려할 필요가 없다는 의미로 해석하는 것이 정확한 표현 일것 이다.
시스템 관리자는 해당 시스템의 특성에 맞는 JVM을 설치 해야 하고 각 특성에 따라 발생되는 여러가지 이벤트에 대응해야 한다.
시스템 구축의 인력 구조를 고려 했을 때 절대 다수의 개발자에 대한 장점이라고 볼수 있지만 시스템 관리자는 기존 C 프로그램 시절에는 없어던 JVM 의 튜닝과 G.C에 대한 풀기 어려운 숙제가 더해졌다고 할수 있다.
앞서 애기한 찬/반의 기원도 여기서 근원했다는 추측을 개인적으로 합니다.