5월 09, 2022

[Java] 환경변수 설정 및 java의 프로그램 실행 순서

 javac.exe : 컴파일러

java.exe : JVM구동 명령

자바 컴파일러를 다른 디렉토리에서도 접근할 수 있게 환경변수(path)에 bin 경로를 등록해주려 합니다.

https://nobacking.tistory.com/76 을 그대로 따라해보았으나

source로 적용해주려 하면 


해당 오류가 뜨고 echo $JAVA_HOME으로 확인해보아도 아무것도 뜨지 않습니다.


echo $PATH로 확인했을때 


Javapath는 뜨긴하는데요..


https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_$JAVA_HOME_%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98_%EC%84%A4%EC%A0%95

해당 링크를 참고하여



로 환경변수를 등록해주고 


echo $JAVA_HOME으로 확인해줍니다.



Java의 소스 작성부터 프로그램 실행까지의 순서는 다음과 같습니다

1. java 소스를 작성합니다(~.java)
2. javac.exe를 통해(컴파일러) 바이트코드 파일(~.class)을 만듭니다.
3. 이를 JVM(java.exe)을 통해 기계어로 변환하고, 이를 실행합니다

이때, 기계어로 변환하고 실행하는 과정을 LINK과정이 라고 표현합니다.

이는 PC가 프로그램이 실행될 수 있게 메모리를 로딩하고, 실행을 준비하고, 실행을 결정한 이후, 초기화 까지 하는 과정을 의미합니다.
개발자가 이 전반적인 과정에서 하는 일은 1. java 소스를 작성하는 일 밖에 없습니다.




이 과정을 알아서 해주는 Eclipse없이, 직접 해보도록 하겠습니다.

우선 Javaworld.java 파일을 직접 만들고 Hello World를 프린팅하는 코드를 짭니다.




이를 javac Javaworld.java 로 컴파일 해줍니다

그러면 Javaworld.class 파일이 생성됩니다.

이를 JVM을 통해 실행해주어야 합니다.


? 안됩니다. 

??



아!  .class 확장자를 빼고 실행해줘야 하는군요.  



마지막으로 Garbage Collector 에 대해 알아보고 끝내겠습니다.

C계열의 C,C++등은 Unmanaged 언어로써, 사용자가 직접 하드웨어(CPU와 메모리)를 관리해야 합니다.
그러나 java를 포함한 Managed 언어는 프로그램 자체에 메모리를 관리하는 코드가 내장되어 있기에 개발자가 이에 접근할 수 없습니다.
이때, 가비지 콜렉터는 Managed 언어에서, 불필요한 메모리를 회수해서 최적화를 실행합니다.