Java 설치는 해도해도 이상하게 잘 기억나지 않고 또 귀찮고 번거롭다. 그래도 또 막상 찾아 해보면 쉽다. 매번의 찾는 과정을 반복하고 싶지 않아 여기에 기록해두기로 한다.
Java 설치엔 다음의 세 가지 과정이 필요하다.
- 설치 파일 다운로드
- Symbolic link 연결
- 환경변수 설정
java 11을 기준으로 하겠다. java 11 부터는 jdk/jre 의 구분이 없어졌다. java 설치 = jdk 설치 라고 보면 되겠다.
1 . 설치 파일 다운로드
유료 버전의 Java EE 를 쓰지 않을 거라면 OpenJDK 중 하나를 선택해서 설치해야한다. 문제는 너무 많은 OpenJDK가 있어서 무엇을 설치해야하는지가 생각보다 까다롭다는 점이다. 주로 쓰거나 확실히 아는 것이 없는 경우엔 Oracle에서 제공하는 공식 버전을 사용하면 되겠다. 이 공식 버전도 두 개가 있다. 일반인들에게만 무료로 제공하는 Java SE 버전이 있고 애초에 오픈소스로 제공하는 oracle OpenJdk가 있겠다. 별 생각 없을 때는 가장 안전한 oracle openjdk를 쓰면 되겠다.
- Java SE 다운로드 링크 ( 회원가입 및 로그인 필요 )
https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
- Oracle openjdk 다운로드 링크 ( 회원가입 및 로그인 필요 없음 )
https://jdk.java.net/java-se-ri/11
Java Platform, Standard Edition 11 Reference Implementations
Java Platform, Standard Edition 11 Reference Implementations The official Reference Implementation for Java SE 11 (JSR 384) is based solely upon open-source code available from the JDK 11 Project in the OpenJDK Community. This Reference Implementation a
jdk.java.net
무엇을 받아도 이후의 과정은 다르지 않다.
일단 설치 파일을 풀어주기로 한다. 어디에 풀어도 문제는 없지만 되도록이면 /usr/lib 파일에 놓는 것이 깔끔하다고 본다. 통상적으로 사용자 설치 프로그램들을 모아놓는 디렉토리다.
sudo tar xfvz jdk-11.0.11_linux-x64_bin.tar.gz --directory /usr/lib/jdk-11.0.11
2 . Symbolic Link 연결
이 과정은 java 나 javac 를 커맨드라인 명령어로 사용할 수 있게 해주는 작업이다. 링크를 거는 곳은 여러 옵션으로 있다. PATH 변수에 저장된 위치에 있는 실행 파일들은 곧바로 커맨드라인에서 실행시킬 수 있다. 하지만 굳이 직접 파일을 옮길 필요없이 심볼릭링크만 걸어주어도 똑같은 기능을 구현할 수 있다. 가령 usr/sbin/ 에는 shutdown 파일이 연결되어 있는데 이것으로 인해 어디 위치에서든 shutdown 커맨드를 곧바로 실행시킬 수 있다.
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
---
ubuntu@ip-172-31-3-67:/usr/sbin$ ls -alt | grep shutdown
lrwxrwxrwx 1 root root 14 Mar 17 21:36 shutdown -> /bin/systemctl
s 가 붙은 bin은 주로 시스템 관리를 위해 사용하는 프로그램이 위취하는 곳이다. 그러므로 무난하게 /usr/bin에 연결을 해주기로 한다. 연결 대상은 java 와 javac 다. 이렇게 해주면 어느 위치에서는 java와 javac를 실행할 수 있다.
sudo ln -s /usr/lib/jdk-11.0.11/bin/java /usr/bin/java
sudo ln -s /usr/lib/jdk-11.0.11/bin/javac /usr/bin/javac
3 . 환경 변수 설정
Java를 설치함에 환경 변수를 설정하는 일은 필수적이다. 웬만한 java 기반 프로그램들은 JAVA_HOME이라는 환경변수를 이용하여 java의 위치를 찾고, 그것으로 프로그램을 실행시키기 때문이다.
주의할 점은 JAVA_HOME으로 설정할 위치를 앞서의 심볼릭 링크와 혼동하면 안된다는 점이다. JAVA_HOME은 java 실행 파일의 위치가 아닌, jvm을 비롯한 java 환경 셋팅에 필요한 갖가지 라이브러리들을 모두 포함하고 있는 디렉토리로 지정해야 한다. 쉽게 말하자면 앞선 과정에서 압축을 풀어 얻은 폴더를 지정해야 한다.
홈디텍토리에 있는 .bashrc 파일을 열어서 찾기 좋은 곳에 밑의 문구를 적는다. 여기에 적힌 문구는 컴퓨터/서버가 부팅될 때마다 자동으로 읽혀서 실행된다.
cd ~
> .bashrc
### Environment Variables
export JAVA_HOME='/usr/lib/jdk-11.0.11'
이 상태에서 재부팅하면 환경 변수가 정상적으로 셋팅될 것이다. 하지만 굳이 재부팅하지 않고 곧바로 이를 적용하고 싶으면 아래의 명령어를 사용하면 된다.
source .bashrc
아래는 확인작업이다. env 는 시스템에 적용된 환경 변수들을 출력해주는 명령어다. 아래처럼 JAVA_HOME이 잘 출력된다면 환경 셋팅 과정이 끝난 것이다.
ubuntu@ip-172-31-3-67:~$ env | grep JAVA_HOME
JAVA_HOME=/usr/lib/jdk-11.0.11
+ ) 2번 과정(심볼릭 링크 연결)을 건너 뛰고, 환경 변수 PATH 에 Java 실행폴더를 추가시키는 경우가 있다. 이렇게 해도 java/javac를 커맨드라인 명령어로 곧바로 사용할 수 있다. 둘 뿐이 아니라 java 실행폴더 안의 모든 실행 파일을 곧바로 사용할 수 있다.
그런데 굳이 그렇게 할 필요는 없겠다. 이런 식으로 광범위하고 포괄적으로 적용하는 것보다 사용자가 통제할 수 있도록 좁게 적용하는 것이 훨씬 좋다. 또 이런 식으로 PATH의 경로를 늘리는 건 시스템 효율에도 별로 좋지 않겠다.
> .bashrc
export PATH=$PATH:$JAVA_HOME/bin
## 아래처럼 선언하면 큰일남. 다른 모든 Path 경로가 지워지게됨.
# export PATH=$JAVA_HOME/bin
'JAVA' 카테고리의 다른 글
[Java DataEngineering] Parquet 파일 쓰고 읽는 코드 정리 Write & Read (0) | 2022.11.25 |
---|---|
[Java Gradle] 등록된 라이브러리 Jar 목록 확인(Classpath) (0) | 2022.11.25 |
Netty 기반 경량 Http Server 구성 ( with Gradle ) (1) | 2022.09.25 |
About JAVA Platform (0) | 2022.09.02 |
Spring boot 프로젝트 도커 이미징 (0) | 2022.09.02 |