이클립스와 같은 개발도구를 이요하지 않고 자바로 만든 프로그램을 컴파일하고 실행하는 방법
직접 컴파일하고 실행하는 것은 사용중인 운영체제에 대한 많은 지식이 필요할 수 있다.
자바가 동작하는 흐름
1. Compile : java 확장자가 붙은 소스코드를 class 확장자가 붙은 실행파일로 변환
2. Run : class 확장자가 붙은 파일을 'Java'로 실행
3. Input : 실행할 때, 입력값에 따라서 다르게 동작하여 출력값을 만들어 보자
(3가지 실습)
1. Program.java 파일을 컴파일하여 실행가능한 Program.class 파일로 만든 후, 'java'를 이용해서 프로그램을 실행
// Program.java
public class Program {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
}
}
2. OkJavaGoInHome.java 파일을 컴파일하여 실행 - 클래스 import
Elevator 클래스는 코드 내에 있지 않고, [org>opentutorials>iot] 디렉토리 하위에 Elevator 클래스가 존재한다.
따라서 OkJavaGoInHome.java 를 실행시키기 위해서는 org.opentutorials.iot 의 Elevator.java 파일을 '로딩'해야 실행할 수 있다.
// OkJavaGoInHome.java
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;
public class OkJavaGoInHome {
public static void main(String[] args) {
String id = "JAVA APT 507";
// Elevator call
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1);
// Security off
Security mySecurity = new Security(id);
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();
Lighting floorLamp = new Lighting(id+" / floorLamp");
floorLamp.on();
}
}
3. OkJavaGoInHomeInput.java 파일을 컴파일하여 실행 - Arguments
args 라는 변수를 이용해 사용자가 입력한 정보를 가져와서 출력해주고 있다. 즉, 실행할 때 어떻게 입력값을 받을 수 있는지 알아보자
// OkJavaGoInHomeInput.java
import javax.swing.JOptionPane;
import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;
public class OkJavaGoInHomeInput {
public static void main(String[] args) {
// paramter, 매개변수
String id = args[0];
String bright = args[1];
// Elevator call
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1);
// Security off
Security mySecurity = new Security(id);
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();
Lighting floorLamp = new Lighting(id+" / floorLamp");
floorLamp.on();
DimmingLights moodLamp = new DimmingLights(id+" moodLamp");
moodLamp.setBright(Double.parseDouble(bright));
moodLamp.on();
}
}
실행환경
각 운영체제에서 자바를 컴파일하고 실행할 때, 전체적인 프로그램의 순서와 의미를 이해하고 넘어가자
구체적으로 운영체제에서 어떻게 하는지는 검색을 통해서 알아가자
자바를 컴파일 하기 위해서는 명령어를 이용해야한다. 각 운영체제별 명령어를 실행시킬 수 있는 프로그램을 이용
- Windows - (윈도우키 + R : 실행창) cmd
- MacOS - (Command + space : spotlight) Terminal
javac
'javac'를 통해서 컴파일을 한다. 터미널에 'javac'를 입력하면 사용법을 볼 수 있다.
▶ javac 가 있는 위치?
- Windows - C:\Program Files\java\jdk-xxx\bin 폴더 하위에 java.exe 와 javac.exe 프로그램이 cmd창에서 java 와 javac 명령을 쳤을 때 실행되는 파일이다.
- MacOS - /usr/libexec/java_home 라고 명령어를 치면 java 프로그램이 설치된 위치를 알 수 있다.
bin 디렉토리에 java와 javac 실행파일이 있다.
- Linux(Ubuntu) - which java , which javac 명령을 통해서 설치된 경로를 확인할 수 있다.
▶ 터미널의 어느 경로에 있던지 java, javac 가 실행되는 이유는 ?
PATH 라는 환경변수 때문이다.
각 운영체제별 환경변수 확인
Windows
[내 PC] 우클릭 > 속성 > 고급 시스템 설정 > 환경변수 > [사용자 변수] 사용중인 계정에만 셋팅된 설정 값, [시스템 변수] : 이 시스템을 쓰는 모든 유저에게 적용되는 셋팅 (*아마 사용자 변수의 설정이 우선순위가 높을 것이다. )
Path 에 설치한 자바의 디렉토리 경로의 bin 디렉토리가 자동으로 세팅된다.
cmd창에서 java 명령을 치면 운영체제는 현재 명령을 내린 위치의 경로에 java가 존재하는지를 확인 후, 없다면 Path 를 참조해서 Path 목록의 디렉토리를 하나하나 찾아보면서 java 파일을 찾는다. (모든 Path 경로 내에 java 가 없다면, 시스템은 '파일을 찾을 수 없습니다.'라고 error를 띄우게 된다. ) 자바가 실행이 안된다면 이 Path 환경변수를 추가해주면 된다.
MacOS, Linux
터미널에서 echo $PATH 명령으로 지금 등록되어있는 모든 경로를 확인할 수 있다.
java가 실행되지 않는다면 직접 $PATH 환경변수에 java 실행파일의 경로를 추가해주자
nano ~/.bash_profile 파일을 편집
nano : 커맨드라인에서 사용하는 에디터
~/ : 사용자 홈 디렉토리
export PATH=$PATH:/java실행파일경로 내용 추가
'코딩공부 > JAVA' 카테고리의 다른 글
[13] 자바 문서 보는 법 & 자바의 구조 (클래스, 인스턴스, 상속) (0) | 2019.10.21 |
---|---|
[12] JAVA 직접 컴파일하기(2) - 컴파일과 실행 동작원리 (0) | 2019.10.18 |
[10] 입력과 출력 (0) | 2019.10.18 |
[9] 디버거 (0) | 2019.10.17 |
[8] 프로그래밍 이란? (0) | 2019.10.17 |