좋은 인연, 좋은 발견

자바에 대해 알아봅시다. 본문

it

자바에 대해 알아봅시다.

dohwankim 2018. 5. 1. 20:47

자바언어는 1991년 6월 셋톱 프로젝트를 위해 제임스 고슬링이 만들었습니다.

자바라는 단어는 우연히 만들어지게 됩니다. 원래 제임스 고슬링은 사무실 근처에 있던 오크 나무의 오크, 또는 녹색(green) 이라 칭하려 했었습니다. 그러다 수많은 단어를 나열하여 자바가 선택되어지게 됩니다.


 제임스 고슬링이 자바언어의 컨셉을 C/C++ 언어와 비슷한 스타일과 가상머신을 구현하도록하는 것이었습니다.

첫 버전이 공개된건 1995년의 자바 1.0이었습니다. 공개하면서 "write Once, Run Anywhere"라 하는 약속을 하였으며 이 후 인기 플랫폼에 무료 Runtime을 제공하였습니다. 공개된 자바 1.0은 높은 수준에 안정성과 보안시스템은 여러 설정을 통해 네트워크 및 파일 접근을 통제할 수 있었습니다. 그리고 대부분 브라우저에서 자바 애플릿을 웹 페이지 안에 삽입/실행할 수 있어 자바의 인기는 하늘을 찌르게 되었습니다.


 이 후 자바 2(JDK 1.2 ~ 1.4)의 출현은 다양한 여러 플랫폼에서 사용할 수 있는 설정을 만들 수 있었습니다.

가령, J2EE는 엔터프라이즈 애플리케이션을 구동할 수 있었으며, J2ME는 모바일 애플리케이션을 구동할 수 있었습니다.

또, J2SE는 스텐다드 에디션으로 지정되게 됩니다. 2006년에는 마케팅용으로 Java EE, Java ME, Java SE 순으로 명칭을 변경하게 됩니다.


 썬 마이크로 시스템즈 사(이하 썬 사)는 1997년 ISO/IEC JTC1 표준화 그룹, 그리고 이 후 ECMA International 그룹과 접촉하여 정식 승인을 받고자 했으나 곧 철수하게 됩니다. 사실상 자바의 표준이며 자바 커뮤니티 프로세스를 통해 관리가 되고 있습니다.

썬 사는 자바의 대부분을 무료로 배포하였으나 오픈은 하지 않은 사유 소프트웨어로 했습니다.


 2006년 11월 13일, 썬 사는 자바 라이선스를 GPL로 하고 대부분의 소스를 오픈을 시작하여 2007년 5월 8일에 모든 과정이 완료 되었습니다.

썬 사는 권한을 갖지 않은 코어부분을 대부분 오픈하였고 2009년 4월 20일 썬 사는 오라클 사에게 인수되어 모든 권리가 오라클 사에 귀속되게 됩니다.


자바언어는 객체 지향 언어(Object-Oriented Language)입니다.

하지만, 완벽한 객체지향 언어는 아닙니다. 프리미티브(primitive)타입은 객체로 취급하지 않기 때문입니다.
모든 것을 객체로 취급하는 언어를 순수 객체지향(pure object oriented)이라 하며 이를 지원하는 언어는 SmallTalk가 대표적입니다.
C# 언어가 이에 해당되겠습니다.

 자바언어와 C,C++언어의 차이점이라면 C는 포인터 등을 활용한 로우 레벨 시스템 프로그래밍에 강점을 가지며,
C++은 C의 강점을 거의 그대로 가져오면서 거기에 객체 지향과 같은 하이 레벨 기능을 포함하였다는 것입니다.
문제는 여기서 발생됩니다. 저수준 메모리 액세스를 허용하면서 하이레벨 기능들을 죄다 포함하려다 보니 디자인적인 측면에서도 좋지 못하게 되고, 실제로 상당히 복잡한 언어가 되어 버렸습니다. 다만, 반대로 잘만 사용하면 엄청난 언어임에는 틀림없습니다.
그래서 C++언어를 제대로 다룰 줄 아는 프로그래머는 흔치 못합니다.
이제 자바언어에 대한 이야기를 하자면 자바언어는 포인터라는 강력한 기능을 과감히 포기하고 OOP와 같은 하이레벨 부분에 보다 집중하여 언어적 완성도를 높였습니다.

 자바언어의 가장 큰 특징은 플랫폼에 독립적인 언어라는 점입니다. 소스 코드를 기계어로 직접 컴파일하여 링크하는 C,C++언어의 컴파일러와 달리 자바언어의 컴파일러는 바이트코드인 클래스파일(.class)을 생성하고, 이 파일의 바이트코드를 읽은 뒤 기계어로 바꾸어 실행하는 Java Virtual Machine(JVM)을 별도로 두어 실행되게 합니다.

 가령, C 언어 계열은 윈도우에서 빌드한 프로그램을 그대로 리눅스, Mac OS에서 실행하여 하면 일반적으로 오류가 나지만, 자바언어로 작성된 프로그램은 플랫폼에 맞는 JVM만 설치되어 있다면 문제 없이 동작합니다. 이는 자바언어의 코드가 플랫폼 종속적이 아닌 가장머신 종족적이라는 점 때문이고 프로그램 실행의 주체가 운영체제가 아닌 JVM이기 때문입니다. 그래서 자바언어는 플랫폼 종족성이 낮은 언어라고 표현되기도 합니다.

 JVM 기반의 프로젝트에서는 하나의 언어만을 고집하지 않습니다. 스크립트 언어처럼 간결하고 짧은 소스코드가 필요한 곳은 Groovy로 작업을 하면서, 함수형 언어가 필요한 부분은 Scala로 작업을 합니다. 또, 견고한 인터페이스와 대규모 통합이 필요한 곳은 자바언어로 작업한 뒤 이들을 서로 합쳐서 운영하는게 가능합니다.

 실제로 현업에서는 자바언어와 통합해서 몇몇 인기 언어가 자주 사용되므로 장단점을 잘 알아두어 어떤한 환경이나 주어진 작업의 특정에 따라 적합한 언어를 선택할 수 있는 지혜가 필요합니다.


Comments