아래 블로그 내용을 참고 하였습니다.

https://intotherealworld.tistory.com/59

감사합니다.

 

JAVA 자체는 C기반으로 만들어져 있기 때문에 CPU에 따라 다른 바이너리를 받아야 합니다.

어떤 것을 받아야 하는지 확인 하기 위해 CPU 아키텍쳐를 확인해야 합니다.

$ uname -m
aarch64

라즈베리파이 CPU는 ARM 계열임을 확인 할 수 있습니다.

인텔칩 기반에 우분투를 설치 했다면 x86_?? 같은 문자열이 출력 될 것입니다.

(시스템의 CPU 아키텍쳐를 확인하는 방법 ☞ https://www.sangchul.kr/831)

 

JDK 21 릴리즈 ☞ https://github.com/adoptium/temurin21-binaries/releases

설치 일자 기준 21.0.5_11 버전 릴리즈(2024.10. 17)가 최신 인 것 같습니다.

다운로드 링크에 오른쪽 마우스클릭 해서 링크 주소를 복사 해서 설치할 기기에 다운 받습니다.

$ wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.5_11.tar.gz

 

다운로드가 완료 되었으면 압축을 해제 합니다.

$ tar zxvf OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.5_11.tar.gz

 

압축 해제가 완료 되었으면 배치할 디렉토리로 옮겨 줍니다.

여기서는 /usr/local/jvm 아래에 배치 하고 alternative 패키지 관리자로 JDK 버전 관리를 할 예정입니다. (본인이 원하는 디렉토리를 선택 해도 무방하고 기존에 JVM이 설치 되어 있다면 그곳에 같이 배치 하는 것이 장기적으로 관리에 도움이 될 것 입니다.)

이렇게 하면 필요에 따라 여러개 버전의 JVM 을 배치해서 여러개의 Java 버전을 동시에 쓸 수 있는 장점이 있습니다.

$ sudo mkdir /usr/local/jvm

참고 1. /usr/local 디렉토리는 root의 소유이기 때문에 디렉토리를 만들 때 super user 권한으로 만들어 줘야 합니다.

참고 2. jvm은 보안 문제로 root 소유로 하지 않는 것을 권장하기 때문에 해당 디렉토리는 향후 어플리케이션을 관리할 계정에게 소유를 넘기는 것이 좋습니다.

참고 3. 기존에 사용하던 것의 소유권을 변경 하는 것은 안정성에 문제가 없는지 충분히 검토를 한 후 변경하시길 권합니다.

$ sudo chown -R 사용자계정:사용자그룹 /usr/local/jvm
$ ls -al /usr/local
total 48
drwxr-xr-x 12 root      root      4096 Feb 23 21:49 .
drwxr-xr-x 11 root      root      4096 Oct  8 02:11 ..
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 bin
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 etc
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 games
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 include
drwxr-xr-x  2 사용자계정 사용자그룹 4096 Feb 23 21:49 jvm
drwxr-xr-x  3 root      root      4096 Oct  8 02:12 lib
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 libexec
lrwxrwxrwx  1 root      root         9 Oct  8 02:11 man -> share/man
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 sbin
drwxr-xr-x  6 root      root      4096 Oct  8 02:12 share
drwxr-xr-x  2 root      root      4096 Oct  8 02:11 src
$

 

압축을 해제한 JDK 이동

$ ls
OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.5_11.tar.gz  jdk-21.0.5+11
$ mv jdk-21.0.5+11 /usr/local/jvm
$ ls /usr/local/jvm
jdk-21.0.5+11
$

 

이제 JDK를 사용 할 수 있도록 alternative로 패키지 관리 설정을 하겠습니다.

$ sudo update-alternatives --install /usr/bin/java java /usr/local/jvm/jdk-21.0.5+11/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/local/jvm/jdk-21.0.5+11/bin/javac 1

 

등록된 패키지 확인

$ sudo update-alternatives --config java
There is 1 choice for the alternative java (providing /usr/bin/java).

  Selection    Path                                   Priority   Status
------------------------------------------------------------
* 0            /usr/local/jvm/jdk-21.0.5+11/bin/java   1         auto mode
  1            /usr/local/jvm/jdk-21.0.5+11/bin/java   1         manual mode

Press <enter> to keep the current choice[*], or type selection number:
$

아무것도 없는 빈깡통에 설치를 했으므로 방금 등록한 java만 리스트에 나옵니다.

 

버전 확인

$ java -version
openjdk version "21.0.5" 2024-10-15 LTS
OpenJDK Runtime Environment Temurin-21.0.5+11 (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.5+11 (build 21.0.5+11-LTS, mixed mode, sharing)
$ javac -version
javac 21.0.5
$

 

환경변수 등록 (필요에 따라 하세요)

$ sudo vi /etc/profile
export JAVA_HOME=/usr/local/jvm/jdk-21.0.5+11
export PATH=$PATH:$JAVA_HOME/bin
... 생략 ...

맨위에 추가 했습니다.

 

재로그인 하거나 /etc/profile를 재로드 하고 제대로 반영 되었는지 확인해 봄니다.

$ source /etc/profile
$ echo $JAVA_HOME
/usr/local/jvm/jdk-21.0.5+11
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/jvm/jdk-21.0.5+11/bin

 

간단한 프로그램을 작성해서 제대로 컴파일이 되고 실행이 되는지 확인해 보겠습니다.

$ vi HelloWorld.java
public class HelloWorld {
        public static void main(String [] args) {
                System.out.println("Hello World!");
        }
}
~
~
~
$ javac -d . HelloWorld.java
$ ls
HelloWorld.class  HelloWorld.java
$ java HelloWorld
Hello World!
$

컴파일도 잘 되고 실행도 잘 되고 있습니다.

 

끝.

+ Recent posts