brunch

You can make anything
by writing

C.S.Lewis

by 박두산 Oct 30. 2020

Java의 역사와 동작 과정

Java 코드가 화면에 출력되기까지 기본 과정

Java의 역사

컴퓨터는 사람과 데이터를 저장하는 방식이 다르다. 사람은 이미지는 이미지대로, 동영상은 동영상대로, 음성은 음성대로 기억 속에 저장한다. 그러나 컴퓨터는 이 데이터들을 오로지 1과 0으로 저장한다. 때문에 컴퓨터와 사람은 사용하는 언어가 다를 수밖에 없다. 컴퓨터가 사용하는 언어를 기계어라고 생각하면 좋겠다. 

기계어란 CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰여진 컴퓨터 언어를 통틀어 말한다.


기계어는 말한 것처럼 1과 0으로 쓰여 있기에 사람이 이를 해석하기가 쉽지 않다. 따라서 중간에서 기계어와 사람의 언어를 통역하는 언어가 또 존재하는데 이를 프로그래밍 언어라고 한다.

Java는 이 프로그래밍 언어의 일종이다.


세상에는 수많은 프로그래밍 언어가 있다. 그러나 Java는 뭐가 다르기에 개발자가 아닌 사람들조차 들어보게 되는 것일까?


Java는 James Arthur Gosling이라는 사람이 썬 마이크로 시스템에 다니던 때 만들었다.

James Arthur Gosling

당시 썬 마이크로시스템즈는 모든 하드웨어에 적용 가능한 객제 치향 언어 체제를 만들기를 원했다. 이 당시 썬 마이크로시스템즈의 Green Project Team에 소속돼 있던 James는 모든 전자 제품에 적용이 가능한 객체 지향 언어인 Oak를 개발하게 된다.

* Green은 문 사무실의 문이 초록색이라 Green으로 지었다고 한다.

* Oak는 사무실 바깥의 오크나무에서 따다 Oak로 지었다고 한다.


처음에 Oak를 개발했으나 Oak란 이름이 이미 사용 중인 것을 알고 평소에 좋아하던 커피의 이름인 Java를 프로그래밍 언어로 결정했다고 한다.



Java의 특징

Java의 가장 큰 특징은 어떤 운영체제에서든 실행이 가능하다는 점이다. 운영체제는 Windows, Mac, Linux 등 그 종류가 다양하다. 이 때문에 원래는 각 운영체제에 맞게 다른 식으로 코드를 만들어줘야 한다. 현재 안드로이드 앱이 아이폰에서 동작하지 못하는 것과 마찬가지다. 똑같은 작업을 각각의 운영체제마다 새로 만들어야 하는 이 번거로움을 Java가 해결해줬기 때문에 엄청난 혁신이었다고 말할 수 있다.


이처럼 Java가 운영체제가 달라도 같은 코드를 이용할 수 있는 이유는 VM(Virtual Machine), 즉 가상머신 덕분이다. Java는 컴퓨터의 운영체제에 맞는 VM에 코드를 올려 그 코드가 운영체제에 맞게 해독하도록 변경해준다.


Java의 동작 과정을 도식화하면 다음과 같다.

1. 먼저 소스코드를 작성하고 저장한다. 필자는 편의상 메모장에 작성하고 저장했다.

2. 컴파일러로 컴파일을 진행한다. 컴파일 전에는 소스코드 형태로 *.java 파일로 저장된 상태다. 컴파일을 커치게 되면 소스코드가 바이트코드로 전환되며 *.class파일로 저장된다. 

3. 바이트코드로 바뀌면 이제 VM에 코드를 띄울 수 있게 된다. VM에 코드를 띄우기 위해 명령어로 [java Hello]를 입력했다.

4. Java가 OS에 맞는 VM을 선정한다. VM은 *.class에 저장된 바이트코드를 기계어로 번역한다.

5. VM이 번역해준 기계어를 OS가 번역하여 CPU에 전달되고 결과적으로 화면으로 출력되게 된다.


Java는 이처럼 VM이 중간에 한 단계로 삽입되게 되면서 편의성을 극대화 시켰다고 볼 수 있다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari