2022. 5. 2. 00:20ㆍBE/Linux
java를 잠깐 사용할 일이 생겼다.
2학년 java 강의에선 당연히 이클립스를 사용했다.
하지만 짧게 사용하는데 이클립스를 설치하기는 싫었다.
그래서 vim과 터미널을 이용해서 java를 컴파일하고 실행하는 방법을 찾아보았다.
Java Compiler, Java Virtual Machine
java는 기계 중립적이다.
자바 바이트코드는 플랫폼에 독립적이다.
모든 자바 가상 머신은 자바 가상 머신 규격에 정의된 대로 자바 바이트코드를 실행한다.
따라서 표준 자바 API까지 동일한 동작을 하도록 구현한 상태에서는 이론적으로 모든 자바 프로그램은 CPU나 운영 체제의 종류와 무관하게 동일하게 동작할 것을 보장한다.
출처 : https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0
java 컴파일하고 실행하기
1. java 코드를 작성하고 저장한다. 확장자는 .java다.
vim hello.java
2. java compiler로 컴파일한다.
javac hello.java
컴파일이 완료되면 .class 확장자의 자바 바이트 코드 파일이 생성된다.
3. 바이트 코드(.class)를 JVM(자바 가상 머신)에 전달하고 실행한다.
java hello
이때 확장자 .class는 입력하지 않는다.
4. 빠밤! 끝!
23.09.07 추가
macOS jdk 버전 변경하기
//1. JDK 버전 확인
java --version
//2. 설치되어 있는 Java Virtual Machines 목록을 확인
/usr/libexec/java_home -V
//3. macOS에서 JDK 위치
cd /Library/Java/JavaVirtualMachines/
//4. JDK 버전 변경
vim ~/.zshrc // 또는 vim ~/.bash_profile
//다음으로 수정 (없으면 추가)
export JAVA_HOME=$(/usr/libexec/java_home -v 11) //11버전 선택
//5. 변경 사항 적용
source ~/.zshrc
//또는
source ~/.bash_profile
//또는
//터미널 재부팅
23.09.08 추가
패키지
package 컴파일 및 실행하기
❯ pwd
/Users/dmlrms4598/Desktop/Study_JavaSpring/project/calc_2/src/calc_1
❯ ll
total 56
drwxr-xr-x 9 dmlrms4598 staff 288 9 7 20:11 .
drwxr-xr-x 4 dmlrms4598 staff 128 9 7 20:11 ..
-rw-r--r-- 1 dmlrms4598 staff 165 9 7 20:11 CalAdd.java
-rw-r--r-- 1 dmlrms4598 staff 186 9 7 20:11 CalDiv.java
-rw-r--r-- 1 dmlrms4598 staff 163 9 7 20:11 CalMul.java
-rw-r--r-- 1 dmlrms4598 staff 164 9 7 20:11 CalSub.java
-rw-r--r-- 1 dmlrms4598 staff 103 9 7 20:11 ICalculator.java
-rw-r--r-- 1 dmlrms4598 staff 350 9 8 13:13 MainClass.java
-rw-r--r-- 1 dmlrms4598 staff 211 9 8 13:13 MyCalculator.java
이렇게 생겨먹은 디렉터리 구조에서 /Users/dmlrms4598/Desktop/Study_JavaSpring/project/calc_2/src/calc_1 아래에 있는 *.java 파일들은 모두 하나의 패키지다.
이들을 패키지 째로 컴파일하고 실행하는 법.
❯ pwd
/Users/dmlrms4598/Desktop/Study_JavaSpring/project/calc_2/src/calc_1
❯ ll
total 56
drwxr-xr-x 9 dmlrms4598 staff 288 9 7 20:11 .
drwxr-xr-x 4 dmlrms4598 staff 128 9 7 20:11 ..
-rw-r--r-- 1 dmlrms4598 staff 165 9 7 20:11 CalAdd.java
-rw-r--r-- 1 dmlrms4598 staff 186 9 7 20:11 CalDiv.java
-rw-r--r-- 1 dmlrms4598 staff 163 9 7 20:11 CalMul.java
-rw-r--r-- 1 dmlrms4598 staff 164 9 7 20:11 CalSub.java
-rw-r--r-- 1 dmlrms4598 staff 103 9 7 20:11 ICalculator.java
-rw-r--r-- 1 dmlrms4598 staff 350 9 8 13:13 MainClass.java
-rw-r--r-- 1 dmlrms4598 staff 211 9 8 13:13 MyCalculator.java
❯ pwd
/Users/dmlrms4598/Desktop/Study_JavaSpring/project/calc_2/src/calc_1
❯ javac -d . ./*
❯ ll
total 56
drwxr-xr-x 10 dmlrms4598 staff 320 9 8 14:25 .
drwxr-xr-x 4 dmlrms4598 staff 128 9 7 20:11 ..
-rw-r--r-- 1 dmlrms4598 staff 165 9 7 20:11 CalAdd.java
-rw-r--r-- 1 dmlrms4598 staff 186 9 7 20:11 CalDiv.java
-rw-r--r-- 1 dmlrms4598 staff 163 9 7 20:11 CalMul.java
-rw-r--r-- 1 dmlrms4598 staff 164 9 7 20:11 CalSub.java
-rw-r--r-- 1 dmlrms4598 staff 103 9 7 20:11 ICalculator.java
-rw-r--r-- 1 dmlrms4598 staff 350 9 8 13:13 MainClass.java
-rw-r--r-- 1 dmlrms4598 staff 211 9 8 13:13 MyCalculator.java
drwxr-xr-x 9 dmlrms4598 staff 288 9 8 14:25 calc_1
❯ ll calc_1
total 56
drwxr-xr-x 9 dmlrms4598 staff 288 9 8 14:25 .
drwxr-xr-x 10 dmlrms4598 staff 320 9 8 14:25 ..
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:25 CalAdd.class
-rw-r--r-- 1 dmlrms4598 staff 318 9 8 14:25 CalDiv.class
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:25 CalMul.class
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:25 CalSub.class
-rw-r--r-- 1 dmlrms4598 staff 140 9 8 14:25 ICalculator.class
-rw-r--r-- 1 dmlrms4598 staff 530 9 8 14:25 MainClass.class
-rw-r--r-- 1 dmlrms4598 staff 941 9 8 14:25 MyCalculator.class
- javac -d [target directory] [src file]
❯ javac ./*
❯ ll
total 112
drwxr-xr-x 16 dmlrms4598 staff 512 9 8 14:28 .
drwxr-xr-x 4 dmlrms4598 staff 128 9 7 20:11 ..
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:28 CalAdd.class
-rw-r--r-- 1 dmlrms4598 staff 165 9 7 20:11 CalAdd.java
-rw-r--r-- 1 dmlrms4598 staff 318 9 8 14:28 CalDiv.class
-rw-r--r-- 1 dmlrms4598 staff 186 9 7 20:11 CalDiv.java
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:28 CalMul.class
-rw-r--r-- 1 dmlrms4598 staff 163 9 7 20:11 CalMul.java
-rw-r--r-- 1 dmlrms4598 staff 283 9 8 14:28 CalSub.class
-rw-r--r-- 1 dmlrms4598 staff 164 9 7 20:11 CalSub.java
-rw-r--r-- 1 dmlrms4598 staff 140 9 8 14:28 ICalculator.class
-rw-r--r-- 1 dmlrms4598 staff 103 9 7 20:11 ICalculator.java
-rw-r--r-- 1 dmlrms4598 staff 530 9 8 14:28 MainClass.class
-rw-r--r-- 1 dmlrms4598 staff 350 9 8 13:13 MainClass.java
-rw-r--r-- 1 dmlrms4598 staff 941 9 8 14:28 MyCalculator.class
-rw-r--r-- 1 dmlrms4598 staff 211 9 8 13:13 MyCalculator.java
- -d 옵션을 사용하지 않으면 이렇게 됨. .class와 .java가 섞임.
❯ ll
total 56
drwxr-xr-x 10 dmlrms4598 staff 320 9 8 14:25 .
drwxr-xr-x 4 dmlrms4598 staff 128 9 7 20:11 ..
-rw-r--r-- 1 dmlrms4598 staff 165 9 7 20:11 CalAdd.java
-rw-r--r-- 1 dmlrms4598 staff 186 9 7 20:11 CalDiv.java
-rw-r--r-- 1 dmlrms4598 staff 163 9 7 20:11 CalMul.java
-rw-r--r-- 1 dmlrms4598 staff 164 9 7 20:11 CalSub.java
-rw-r--r-- 1 dmlrms4598 staff 103 9 7 20:11 ICalculator.java
-rw-r--r-- 1 dmlrms4598 staff 350 9 8 13:13 MainClass.java
-rw-r--r-- 1 dmlrms4598 staff 211 9 8 13:13 MyCalculator.java
drwxr-xr-x 9 dmlrms4598 staff 288 9 8 14:25 calc_1
❯ java calc_1.MainClass
result : 15
result : 5
result : 50
result : 2
- java [package].[main class]
클래스 패스
2024년 1월 1일 추가
동작하는데 필요한 .class 파일의 위치를 전달하는 법.
'BE > Linux' 카테고리의 다른 글
2022-05-03 Daemon 실행 (0) | 2022.05.03 |
---|---|
2022-05-02 백그라운드 실행 (0) | 2022.05.03 |
2022-05-01 file을 찾는 방법 (0) | 2022.05.01 |
2022-04-23 Shell_script_조건문_사용 (0) | 2022.04.23 |
2022-04-22 Shell_script_4 (0) | 2022.04.22 |