devlog of ShinJe Kim

[Java] 자바 환경변수 설정이 필요한 이유?

|

자바 환경변수 설정이 필요한 이유?

구글에 검색해보면 자바 환경변수를 설정해야 하는 방법을 찾아 따라하면 누구나 설정할 수 있다. 따라서 이 부분은 생략하고 환경변수를 왜 설정해야하는지 그리고 환경변수를 설정할 때 나오는 개념들에 대해 정리해보겠다.

운영체제란 하드웨어를 사용할 수 있게끔 해주는 프로그램이다. 운영체제가 없으면 하드웨어 위에 어플리케이션을 올릴 수 없다. (운영체제가 아닌 프로그램은 모두 어플리케이션이라고 한다.) 이 때 운영체제가 컴퓨터의 어떤 경로에서든 특정 파일(파일의 형식으로 되어있는 어플리케이션)을 인식할 수 있도록 환경변수를 등록하는 것이다.(환경변수를 설정하지 않았을 때 cmd 창에서 java를 사용할 수 없었던 경험은 한 번쯤 있을 것이다.)

환경변수란?

위키백과에 따르면 환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다. 인터넷에서 조금더 찾아봤더니 ‘운영체제가 참조하는 변수’라는 정의가 있다.

환경변수를 설정할 때 jdk의 경로가 필요하다. 왜일까? 자바를 다운로드 받아 디렉토리로 들어가보면 jdk와 jre라는 두 가지 경로가 있다. jdk는 개발과 실행이 동시에 가능한 디렉토리이고, jre는 실행만 가능한 디렉토리다. 우리는 개발을 할 것이기 때문에 jdk의 경로를 환경변수로 설정해주어야 하는 것이다.

그런데 한 가지 더 궁금한 것이 있다. 환경변수를 설정할 때 jdk의 bin 디렉토리 경로까지 넣는 이유는 무엇일까? 그 이유는 bin에 실행파일이 있기 때문이다. 그렇다면 실행 파일은 또 무엇인가? 특정 프로그램을 실행하려면 아주 많은 파일이 필요하다. 하지만 프로그램이 실행되도록 해주는 프로그램은 단 하나이다. 자바에서는 bin에 그 실행 파일이 있기 때문에 환경변수를 설정할 때 bin경로까지 설정하는 것이다. 실행 파일은 보통 .exe, .com, .bat 확장자로 끝난다고 한다.

환경변수를 설정하고 나면 우리는 javac라는 명령어를 명령 프롬프트에 입력하여 설정이 제대로 되었는지 확인한다. 그런데 java라는 명령어도 써본적이 있지 않은가? javacjava의 차이점은 무엇일까?

javac.java 파일을 .class 파일로 변환시켜주는 컴파일러를 의미한다. 그래서 Hello.java파일이 있다는 가정하에 javac Hello.java라는 명령어를 입력하면 Hello.class라는 파일이 생성될 것이다. 이와 다르게 javajavac로 컴파일된 .class 파일을 실행하는 명령어이다. 그래서 java Hello.java라는 명령어를 입력하면 Hello.java파일 안의 내용이 실행된다.

Comments