All of My Records

[Java] 프로그래밍과 자바 :: 비전공자가 처음 접한 프로그래밍과 자바의 세계

by 캐떠린

본 포스트는 <Do it! 자바 프로그래밍 입문> 도서의 '프로그래밍과 자바' 파트와 <채쌤의 자바 프로그래밍 핵심> 도서의 '자바의 특징' 파트 대부분을 인용하여 작성함을 알려드립니다. 내용이 비전공자가 이해하기에 너무 최적이라 저의 뇌가 까먹기 전에 꼭 정리하고 싶어서 작성합니다.

 

프로그래밍이란 무엇인가?

  • 프로그래밍(programming): 컴퓨터 프로그램을 만드는 일
  • 프로그래머(programmer): 프로그램을 만드는 사람
  • 프로그램(program): 컴퓨터에게 일을 시키는 명령의 집합. 소스 코드 집합 + 컴파일된 결과물

 

그렇다면 프로그래밍을 한다는 것은? 컴퓨터가 일을 하도록 컴퓨터 언어로 명령을 만들고 컴퓨터로 하여금 그 명령을 실행하게 하는 것을 말한다. 따라서 우리는 프로그래밍 언어를 사용하여 명령 집합을 만든다.

 

앞으로 내가 공부할 자바(Java)는 프로그래밍 언어이고, 자바 개발 환경을 설치하면 컴파일러도 함께 설치된다.

 

프로그램이 작성되고 실행되는 과정을 알아보자!

컴퓨터가 이해할 수 있는 언어란?
컴퓨터는 0과 1로 구성된 데이터만 읽고 처리할 수 있다. 이때 0과 1의 조합으로 구성된 코드를 바이너리(binary)코드, 기계어라고한다.
프로그래밍 언어는 사람이 이해하기 쉬울수록 고급 언어, 컴퓨터가 이해하기 쉬울수록 저급 언어이다.
자바(Java)는 고급 언어이며 대표적인 저급 언어에는 어셈블리어(Assembly language)가 있다.

 

1. 프로그램 언어를 이용하여 프로그램을 작성할 때는 가장 먼저 소스 파일이라는 것을 작성한다.

더보기
소스 파일 예시
HelloWorld.java
public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

 

개발자에 의해 작성된 소스 코드는 개발자인 '사람'만 이해할 수 있고 '컴퓨터'는 이해할 수 없다.

즉, 소스 코드는 사람을 위한 코드일 뿐 컴퓨터를 위한 코드는 아닌 것이다.

따라서 사람이 작성한 코드를 컴퓨터가 이해하도록 하기 위해 컴퓨터가 이해할 수 있는 언어인 '기계어'로 변환해야 한다.

 

소스 코드를 바이너리 코드(기계어)로 변환하는 과정을 컴파일이라고 한다.
소스 코드를 컴파일할 때 사용하는 또 다른 프로그램을 컴파일러라고 한다.

 

2. 컴파일러를 사용하여 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 변환한다.

 

3. 컴퓨터가 명령을 이해하고 실행할 수 있다.

 

그러나 여기서 문제가 발생한다!

 

윈도우 운영체제에서 개발한 프로그램을 컴파일하여 컴퓨터가 이해할 수 있는 기계어(실행 파일)가 만들어지면 윈도우 환경에서는 실행이 가능하다. 하지만 이 실행 파일을 리눅스 운영체제에서는 실행할 수 없다. 리눅스 운영체제에서 실행하려면, 리눅스 환경에서 다시 컴파일해서 리눅스 운영체제에 맞는 실행 파일을 새로 만들어야 한다.



이를 일상생활에서 찾을 수 있는 사례를 들어 설명하자면 다음과 같다.

만약 내가 프랑스를 여행중이라 한국어-프랑스어 번역기를 사용하여 “안녕하세요?” → (번역기) “bonjour?” 로 번역을 하여 프랑스인과 대화를 할 수 있다고 가정하자.

 

만약 내가 프랑스가 아닌 다른 여러 국가를 여행 할 경우, 한국어-프랑스어 번역기가 아니라 각 나라별 번역기를 사용해야 할 것이다. 이런 식이면 구매해야 하는 번역기가 늘어날 수밖에 없으며, 수많은 번역기를 항상 들고 다니는 문제도 발생한다.

 

이런 문제를 해결하는 가장 쉬운 방법이 바로 한글을 중간 언어인 영어로 번역하는 것이다. 한글을 영어로 번역하여 외국인에게 보여주면 당연히 영어를 모르는 외국인은 이해할 수 없다. 하지만 그 외국인이 영어를 본인의 나라 언어로 번역하는 번역기를 가지고 있다면 중간 언어인 영어를 자신의 언어로 번역하기만 하면 된다.

 

 

한글로 작성된 쪽지를 자바 언어로 작성한 소스 코드라고 생각하자. 먼저 한글로 작성된 쪽지를 영어로 번역한다. 자바로 작성된 파일도 컴파일러를 통해 이 과정을 수행한다. 그러면 중간 언어에 해당하는 영어 쪽지가 만들어진다. 자바도 중간 언어 개념의 바이트 파일이 만들어진다.

 

위에서 만들어진 파일을 바이트 코드라고 하는데 이는 완벽한 실행 파일이 아니다. 다시 말하면 운영체제에 맞는 완벽한 기계어가 아닌 중간 기계어이다. 이 바이트 코드를 실행하려면 운영체제에 맞는 자바 가상 머신이 필요하다. 운영체제에서 직접 실행하는게 아니라 가상 머신에서 먼저 실행하고, 이 가상 머신이 운영체제에 맞는 완벽한 실행 파일로 바꿔준다. 즉 *.class 파일을 만들어 두면 운영체제에 맞는 가상 머신을 이용하여 어느 환경에서나 실행할 수 있다.

 

그러고 나서 프랑스 사람이 영어 쪽지를 자신이 해석할 수 있는 프랑스어로 변환하는 번역기를 실행한다. 자바에서는 이 과정을 바이트 파일을 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정으로 이해할 수 있다. 그리고 이 과정에서 사용되는 프로그램이 바로 JVM(Java Virtual Machine)이다.

 

*글 작성에 참고한 내용: 학원 쌤의 열정적인 수업

*글 작성에 참고한 도서: 'Do it! 자바 프로그래밍 입문', '채쌤의 자바 프로그래밍 핵심'

블로그의 정보

All of My Records

캐떠린

활동하기