JAVA

프로그래밍 언어와 자바

hyebin Lee 2022. 12. 12. 03:10

프로그래밍 언어란 ?

컴퓨터가 이해할 수 있는 기계어는 우리가 일상생활에서 사용하는 언어와는 너무 다른 0과 1로 이루어진 2진 코드를 사용한다. 그렇기 때문에 우리는 사람과 언어 사이의 다리 역할을 하는 프로그래밍 언어가 필요하다. 

프로그래밍 언어는 고급언어와 저급 언어로 나뉜다. 고급 언어란 컴퓨터와 대화할 수 있도록 만든 사람이 쉽게 이해할 수 있는 언어이다. 따라서 고급언어로 만든 언어는 컴퓨터가 바로 이해할 수 있어, 컴파일 과정을 거쳐 기계어로 변환해야한다. 

 

프로그램 언어 작성 -> 소스파일을 컴파일 -> 기계어 파일 -> 컴퓨터가 이해함

 

프로그래밍 언어에는 다양한 언어가 존재하는데, 각 언어마다 실행하는 방법이 다르다. c, c++, c#은 소스파일을 컴파일을 통해 기계어로 만들어 실행하지만 자바는 조금 독특하다. 자바는 소스파일을 바로 컴파일러가 기계어파일로 만드는것이 아닌, 컴파일러가 바이트 코드 파일로 만든 후, 자바 가상머신이 해석 후 기계어로 만든다. 

파이썬은 소스파일을 바로 실행할 수 있는데, 인터프리터가 소스파일을 하나씩 해석해 기계어로 번역해 실행한다. 파이썬은 따라서 기계어 파일이 만들어 지지 않는다. 

 

바이트 코드와 자바 가상 머신

JDK 설치를 하면 자바 언어로 작성된 소스파일을 가지고 컴파일 할 수  있다. 자바 소스파일의 확장명은 .java 이다. 자바 소스파일을 컴파일을 하게 되면 바이트코드 파일이 생성된다. (컴파일 명령어는 javac 이다.) 생성된 컴파일 결과 확장자명은 .class 이다.

 

자바소스파일(.java) -> javac 명령어로 컴파일 -> 바이트 코드파일 ( .class)

 

컴파일로 만들어진 바이트 코드 파일은 완전한 기계어가 아니기 때문에, 바이트 코드 파일을 다시 기계어로 변환해주는 무언가가 필요한데, 이것이 바로 자바가상머신이다 (JVM) 

자바 가상 머신을 실행하기 위해서는 자바 명령어로 실행하면 된다. 이 명령어는 JDK와 함께 설치한 자바 가상 머신을 구동시켜 바이트 코드파일을 완전한 기계어로 변역하고 실행시킨다. 

 

바이트 코드파일 -> 자바 가상 머신 구동 -> 기계어 번역 후 실행 시켜줌

 

이때, 바이트 코드 파일은 운영체제와 상관없이 동일한 내용을 가지고 있다. 즉, 윈도우에서 컴파일 하거나 맥OS에서 컴파일 하더라도 바이트코드 파일은 똑같다. 자방 가상 머신이 기계어로 번역할 때는 해당 운영체제에 맞게 번역을 한다. 이 말을 운영체제별로 자바 가상 머신을 설치해야 된다. 즉, javac 명령어로 바이트코드를 해석하는데 이때 각 운영체제에 맞는 기계어로 번역해서 실행하는 역할을 한다. 

 

Java, JavaSE, JDK, JRE 용어 정리

Java - 일반적으로 자바 언어로 중점을 둘때

JavaSE - 자바 스펙 내용으로 중점을 둘 때

JDK - ( 자바 스펙을 구현해서 만든 것 ) 개발 도구에 중점을 둘 때

JRE - 실행 환경에 중점을 둘 때