개발/Spring

자바(Java)의 역사

728x90

온라인 환경의 출현에 맞추어, 자바는 고도의 분산형 구조에 적합한 능률적인 프로그래밍 방식을 제공한다. 자바는 1991년, Sun Microsystems의 제임스 고슬링(James Gosling,) 패트릭 노튼(Patrick Naughton), 크리스 와츠(Chris Warth), 에드 프랭크(Ed Frank), 그리고 마이크 쉐리든(Mike Sheridan)에 의해 창안되었다.

 

 

플랫폼 독립적인 언어를 만들자!

 

초기에 이 언어는 Oak라 명명 되었으나 1995년에 Java로 바뀌었다. 다소 놀라운 일이지만, 원래 자바는 인터넷을 통한 웹 서비스 또는 Android와 같은 모바일 환경을 위해 개발된 것이 아니었다.

자바가 지향했던 것은 토스터, 전자레인지, 리모콘 등의 가전제품에 내장될 소프트웨어를 위한 플랫폼(platform) 독립적인(Independent) 언어였다. 대충 짐작할 수 있듯이 중심 제어기로 사용되는 CPU는 매우 다양하다. 문제는 대부분의 컴퓨터 언어가 특수한 아키텍쳐나 OS에 맞게 컴파일 되도록 설계된다는 것이였다.

 

Write Once Run Anywhere! (WORA)

 

가령 C++를 예를 들어 보자. C++ 프로그램은 모든 종류의 CPU에 맞게 컴파일될 수 있지만, 그것을 위해서는 해당
CPU에 맞는 C++컴파일러가 필요하다. 하지만, 각각의 환경의 컴파일러를 위한 비용은 비싸고 개발하는데 시간이 너무 많이 소요되는 문제가 있다.

좀 더 나은 방식을 찾기 위해 James Gosling 과 그 동료들은 다양한 환경의 CPU에서 실행 되는 코드를 생성 할수 있는, 이식성이 뛰어난 Cross Platform 언어의 개발에 착수 했다. 이러한 배경을 바탕으로 Write Once, Run Anywhere와 같은 철학을 가지고 있는 자바의 탄생으로 이어 지게 된 것 이다.

 

인터넷과 자바의 만남

 

자바의 세부적인 부분이 개발되고 있을 무렵, 2차적이긴 하지만 자바의 미래를 결정지을 만큼 중요한 요인이 나타났다. 바로 월드 와이드 웹(WWW) 의 출현 으로, 만일 자바가 개발되던 시기에 웹이 형태를 갖추지 못했다면, 자바는 가전제품의 프로그램 개발에만 쓰이는 언어로 남았을 것이다.

 

그러나 이식 가능한 언어를 요구하는 웹의 출현으로 인해 자바는 당시 컴퓨터 언어 설계 프로젝트의 선두로 부상하게 된다.

대부분의 프로그래머는 초기 경험을 통해 이식성이 좋은 프로그램은 그만큼 구현하기가 어렵다는 것을 깨닫게 된다. 효율적이며 플랫폼 독립적인 이식성이 뛰어난 프로그램 개발에 대한 요구는 거의 프로그래밍이라는 학문 자체 만큼이나 오래 계속 되어 오긴 했지만, 지금까지는 다른 문제들에 의해 뒷전으로 밀려나 있었다.

 

그러나, 인터넷과 웹의 출현으로 이식성의 문제가 다시 전면으로 떠올랐다. 아무튼, 인터넷은 다양한 컴퓨터, 운영 체제, 그리고 CPU로 넘쳐나는 광대한 분산형 시스템인 것이다.

 

한 때는 성가시기만 하고 우선 순위에서도 밀려나 있었던 문제가 이제는 명백하게 가장 중요한 사안이 되어버렸다. 1993년 경, 자바 팀은 임베디드(Embeded) 제어기에서 사용할 코드를 개발할 때 자주 나타나던 이식성의 문제가 인터넷을 위한 코드를 개발할 때도 나타난다는 사실을 알게 되었다.

 

이리하여 자바의 초점은 가전제품에서 인터넷으로 옮겨지게 된 것이다. 따라서 자바 언어 설계에 최초의 영감을 제공한 것은 아키텍처 중립적인 프로그래밍 언어에 대한 요구이지만 궁극적으로 자바가 대성공을 거두도록 이끈 것은 인터넷이라고 해야 할 것이다.

 

 

자바의 발전

 

인터넷은 자바가 프로그래밍 세계의 전면으로 부상하도록 했으며 자바는 인터넷에 큰 영형을 미쳤다. 이유는 간단하
다. 자바가 가상 공간을 자유롭게 돌아 다닐 수 있는 객체의 세계를 확장 했기 때문이다. 네트워크에는 서버와 PC사이에 전송 되는 두 가지 객체 영역이 존재하는데, 수동적 정보와 동적이고 능동적인 프로그램이 그것이다.

 

예를 들면, e-메일을 읽는 것은 수동적 정보를 보는 것이다. 프로그램을 다운로드할 때도 그것을 실행하기 전까지는 프로그램 코드는 수동적 정보가 된다. 하지만 또 다른 형태의 객체가 PC 컴퓨터에 전송될 수 있는데, 그것이 바로 동적인 자가 실행 프로그램이다. 이러한 프로그램은 서버에 의해 시작되지만 클라이언트 컴퓨터에서 실행된다. 그 예로 서버가 보내는 정보를 클라이언트 컴퓨터의 화면에 표시하기 위해 서버가 제공하는 프로그램을 들 수 있다.

 

네트워크 상에서 동작하는 프로그램이 동적일수록 보안이나 이식성의 문제가 심각해진다. 자바 이전의 가상 공간은 현재에 존재하는 실체들의 절반에게만 열려 있었다. 자바는 이 문제에 관심을 가졌고, 이 과정에서 애플릿 이라는 새로운 형식의 프로그램을 정의하게 되었다.