티스토리 뷰

java 커맨드라인 실행은 지극히 기본적인 것이다.
하지만 우리는 이클립스의 노예이기 때문에 커맨드라인에서 컴파일하고, 실행하는게 매우 낯설고 어렵다.

나도 어렴풋이 알기만 했었는데, 이번에 JFlex와 JCup을 이용하여  학교 컴파일러 텀프로젝트를 해보며 알게 되었고
알게 된 김에 정리하기로 했다.

일단 기본적으로 컴파일은  javac를 이용한다.

>javac ~~~.java

 
이렇게 실행하면 ~~~.class가 생성된다.
.class 파일이 생성되는 경로는  직접 지정할 수 있다.

컴파일 되어 생성된 .class 파일을 java를 이용해 실행한다.

>java ~~~.class


이렇게 하면 컴파일된 .class 파일이 실행되게 된다.


여기서 주의할 점은 java명령어를 실행하는 위치이다.

프로젝트 환경에서 패키지 별로 폴더가 생성되고, Main 메소드가 있는 클래스가 어떤 패키지에 속해 있다면
그 위치에서 바로 실행할 수는 없고 프로젝트의 bin 파일의 root 디렉토리에서
다음과 같이 실행한다.

>java 패키지명.~~~.class


 
여기서 자바의 컴파일 구조를 생각해 볼 수 있는데,
자바의 장점이라 하면 플랫폼에 종속적이지 않다는 점을 들 수 있다.
일단 코드가 중간코드(바이트코드)로 컴파일 되고,
그 중간코드가 각각의 플랫폼에 종속적인 인터프리터에 의해 실행되게 된다.
즉 Hybrid compile 방식을 띄고 있다.

정리해보면,
javac는 컴파일러이고 소스를 받아 중간 코드(바이트코드)로 변환하며 모든 플랫폼에 동일하다.
그리고 java는 인터프리터이고 중간 코드를 받아 각 machine과 os에 의존적이므로 플랫폼마다 다른 구조를 띌 것이다.
 
댓글