====== Java/JDK on Ubuntu/Debian ======
* 기본적으로 OpenJDK가 깔려있다.
* [[java:jabba|Jabba]], [[java:jenv|jenv]], [[:sdkman|sdkman]]
* ''sudo update-java-alternatives'' 명령으로 기본 자바 환경을 지정할 수 있다.
# java 목록 보기
sudo update-alternatives --list java
# java, javac 설정
sudo update-alternatives --config java
sudo update-alternatives --config javac
# 명령행으로 직접 설정 - openjdk-11
sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
* JDK 다운받아서 설치하고 ''update-alternatives''해주는 도구 : https://github.com/chrishantha/install-java
===== Adoptium =====
* https://adoptium.net
===== OpenJDK PPA =====
* Ubuntu 20.04 의 경우 굳이 PPA 없어도 충분히 기본 리포지토리에 있다.
* [[https://dzone.com/articles/installing-openjdk-11-on-ubuntu-1804-for-real|Installing OpenJDK 11 on Ubuntu 18.04 - DZone Java]]
* https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa
* OpenJDK 도 7 이후부터는 Oracle JDK와 거의 차이가 없으므로 그냥 사용해도 된다.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
===== Oracle JDK PPA =====
* [[java:oraclejdk|Oracle JDK]]
* Java 11부터. Oracle Java 공식 홈페이지에서 ''deb'' 패키지 제공중
* [[https://launchpad.net/~linuxuprising/+archive/ubuntu/java|linuxuprising/java ppa]]
* [[https://www.linuxuprising.com/2020/09/how-to-install-oracle-java-15-on-ubuntu.html|How To Install Oracle Java 15 On Ubuntu, Debian Or Linux Mint Using APT PPA Repository - Linux Uprising Blog]]
* 설치시에 라이센스 허가를 묻는데 이를 자동으로 하려면 다음 설정을 한다.
echo oracle-java15-installer shared/accepted-oracle-license-v1-2 select true | sudo /usr/bin/debconf-set-selections
# 위에게 안되면,
echo oracle-java15-installer shared/accepted-oracle-licence-v1-2 boolean true | sudo /usr/bin/debconf-set-selections
* [[https://gist.github.com/P7h/9741922|Script to download JDK / JRE / Java binaries from Oracle website from terminal / shell / command line / command prompt]]
===== AWS Corretto =====
* https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/generic-linux-install.html
===== Zulu =====
* https://docs.azul.com/zulu/zuludocs/ZuluUserGuide/PrepareZuluPlatform/AttachAPTRepositoryUbuntuOrDebianSys.htm
===== 구버전(1.4 이하 설치) =====
* 현재 **AMD64** Linux 에서는 과거 1.4 이전의 **ia64** 버전의 JDK는 설치나 실행이 안되는 것으로 보인다.
* ''unzip filename.bin''으로 강제로 압축을 풀더라도 binary가 실행이 안된다.
* 따라서 32bit(i586) 버전으로만 설치 가능하다.
* JDK 1.3의 경우 shell script에 ''x86_64'' 에 대한 분기문 처리가 없어서 모든 스크립트에서 x86_64를 만나면 i386으로 간주하는 코드를 넣어야만 올바로 작동하며, 그렇다해도 최종적으로 라이브러리 버전이 안 맞아서 작동하지 않았다. 따라서 1.3 이하는 사용하기 매우 어렵다.
===== 한글 글꼴 깨짐(Linux Java Hangul Font) =====
* Java Swing/AWT 애플리케이션을 실행할 때 기본 글꼴을 사용하고 글꼴 변경이 불가능한 애플리케이션일 경우에 한글 글꼴이 네모 박스로 깨져 나오는 현상이 발생할 수 있다.
* ''$JAVA_HOME/jre/lib/fontconfig.Ubuntu.properties.src''(혹은 자기 Linux 운영체제에 맞는 이름의 파일)을 ''fontconfig.properties''로 복사한다.
* 그리고 ''fontconfig.properties''를 열어보면 ttf 파일들에 대한 경로가 있는데 그 중에 한글 관련 파일 경로가 잘못되어 있을 것이다. 이를 UnFont든, Baemuk 이든 올바른 파일을 가리키도록 변경하거나 파일의 Symbolic Link를 걸어준다.
* ''$JAVA_HOME/bin/jvisualvm'' 등을 실행해서 한글이 나오는 부분들이 올바르게 보이는지 확인한다.