Java란 무엇인가

Java란?

 

자바는 [표준 스펙]과 [구현]으로 나눌 수 있다.

자바의 표준 스펙이란, "자바는 이렇게 만들어야 한다."는 설계도이자 문서이다.
이 표준 스펙을 기반으로 여러 회사에서 실제 작동하는 자바를 만든다.

이 구현들은 실제 동작하는 것은 같지만, 최적화 등의 부분에서 약간의 차이가 있다.

 

 

컴파일과 실행

 

자바 프로그램은 [컴파일][실행]이라는 두 가지 단계를 거친다.

 

[컴파일]

 

개발자가 소스 코드를 작성하면,

자바 컴파일러는 자바가 제공하는 'javac'라는 프로그램과 .java 파일을 이용해 .class 파일을 생성한다. 이러한 과정을 컴파일 과정이라고 한다. 컴파일 과정을 거치면 hello.java 파일을 이용해 hello.class라는 파일이 생성된다.

 

컴파일 과정을 거치는 이유

 

컴파일 과정을 통해,

자바 소스 코드를 바이트 코드로 변환한다. 이를 통해 소스 코드가 자바 가상 머신(JVM)에서 더 빠르게 실행될 수 있게 최적화하고, 소스 코드의 문법 오류를 검출한다.

 

[실행]

 

자바가 제공하는 'java'라는 프로그램을 사용해 자바 가상 머신(JVM)을 실행시키고,

.class 파일을 자바 가상 머신에서 실행시켜 프로그램이 작동한다.

 

[인텔리제이에서 초록색 화살표를 누르면 바로 코드가 돌아가던데?]

 

인텔리제이가 자바의 컴파일과 실행을 자동으로 해준다.

원래 자바 코드를 컴파일 하려면 javac라는 프로그램을, 자바를 실행하려면 java라는 프로그램을 사용해야 한다.

하지만 인텔리제이를 통해 자바 코드를 실행하면, 컴파일과 실행을 자동으로 처리해 준다. 이때 컴파일된 .class 파일은 out이라는 디렉토리에 저장된다.

 

 

운영체제 독립성

 

일반적인 프로그램은 다른 운영체제에서 실행할 수 없다. 윈도우 게임은 맥이나 리눅스에서 돌아가지 않는다. 왜냐하면 윈도우 프로그램은 윈도우 OS가 사용하는 명령어들로 구성되어 있기 때문이다. 이 명령어들이 다른 OS와 호환되지 않기 때문에 다른 OS에서 실행할 수 없다.



하지만 자바 프로그램은 자바가 설치된 모든 OS에서 실행할 수 있다. 따라서 자바 개발자는 특정 OS에 맞춰서 개발하지 않고 자바에 맞춰서 개발하면 된다. OS에 대한 호환성 문제는 자바가 해결해 준다. 각각의 OS에 맞는 자바가 해당 OS의 명령어들로 구성되어 있다.