본문 바로가기
IT/java

JDK25 환경 구성 ( on Ubuntu24.04 (ARM - DGX Spark GB10 )

by 가능성1g 2026. 4. 13.
반응형

어쨌든 근본언어는 JDK25 이기에, 오랜만에 Java 공부를 복습겸 시작하였다.

환경은 요즘 잘?쓰고 있는 DGX Spark GB10 이라는 장비다.

AI 덕분에 CLI 환경이 인기를 끌고 있다보니, vi 에 대한 흥미가 다시 끌지 않을까 생각을 한다. 후훗(착각...)

 

어쨌든 환경 구성 방법이다. 

Ubuntu 24.04 OpenJDK 25 LTS DGX Spark GB10 ARM64 aarch64 Vim + LSP

DGX Spark GB10 Ubuntu 24.04에
JDK 25 설치 및 Vim 개발환경 구성

NVIDIA DGX Spark GB10은 ARM64(aarch64) 아키텍처 기반의 Grace CPU를 탑재한 AI 워크스테이션입니다. 이 글에서는 Ubuntu 24.04 환경에서 OpenJDK 25 LTS를 설치하고, Vim + LSP 기반의 경량 Java 개발환경을 단계별로 구성하는 방법을 정리합니다.

ℹ️ Ubuntu 24.04 (Noble Numbat)는 noble-security 저장소에 OpenJDK 25가 포함되어 있어 별도 PPA 없이 apt만으로 설치가 가능합니다. (25.0.2+10 기준)

1 시스템 업데이트 및 JDK 25 설치

먼저 패키지 목록을 최신 상태로 갱신한 뒤 OpenJDK 25 JDK를 설치합니다.

bash
 
 
 
# 패키지 목록 업데이트
sudo apt update && sudo apt upgrade -y

# OpenJDK 25 JDK 설치 (컴파일러 + 런타임 포함)
sudo apt install -y openjdk-25-jdk

# 설치 확인
java -version
javac -version

정상 설치 시 아래와 같이 출력됩니다.

출력 예시
 
 
 
openjdk version "25.0.2" 2026-01-20
OpenJDK Runtime Environment (build 25.0.2+10-Ubuntu-124.04)
OpenJDK 64-Bit Server VM (build 25.0.2+10-Ubuntu-124.04, mixed mode, sharing)
⚠️ DGX Spark GB10 주의 사항: ARM64(aarch64) 아키텍처이므로 Oracle JDK를 수동 설치할 경우 반드시 linux-aarch64 빌드를 선택해야 합니다. apt로 설치하면 아키텍처가 자동으로 감지됩니다.

다중 JDK 버전 관리

JDK 21과 25 등 여러 버전이 공존할 경우 아래 명령으로 기본 버전을 선택합니다.

bash
 
 
 
sudo update-alternatives --config java
sudo update-alternatives --config javac

2 환경변수(JAVA_HOME) 설정

빌드 도구(Maven, Gradle 등)는 JAVA_HOME 환경변수를 통해 JDK 위치를 찾습니다. update-alternatives로 버전을 바꿔도 자동으로 따라가도록 동적으로 설정합니다.

bash
 
 
 
# 시스템 전체 적용 (동적 해석 — 버전 전환 시 자동 반영)
echo 'export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))' \
  | sudo tee /etc/profile.d/java.sh

# 현재 세션에 즉시 적용
source /etc/profile.d/java.sh

# 경로 확인
echo $JAVA_HOME
# 예: /usr/lib/jvm/java-25-openjdk-arm64

3 Vim 및 플러그인 매니저 설치

bash
 
 
 
# Vim 및 필수 도구 설치
sudo apt install -y vim curl git wget unzip

# vim-plug 플러그인 매니저 설치
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

4 .vimrc 구성

아래 내용을 ~/.vimrc에 작성합니다. silent! colorscheme gruvbox를 사용하여 플러그인 설치 전 에러를 방지합니다.

vim (~/.vimrc)
 
 
 
" ============================================================
"  기본 설정
" ============================================================
set number relativenumber     " 상대 줄 번호
set tabstop=4 shiftwidth=4 expandtab
set autoindent smartindent
set hlsearch incsearch ignorecase smartcase
set cursorline
set signcolumn=yes
set updatetime=300
set encoding=utf-8
syntax on
filetype plugin indent on

" ============================================================
"  플러그인 (vim-plug)
" ============================================================
call plug#begin('~/.vim/plugged')

" LSP 클라이언트 (Java 자동완성 / 정의 이동)
Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'

" 파일 탐색기
Plug 'preservim/nerdtree'

" 상태바
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'

" 문법 강조
Plug 'sheerun/vim-polyglot'

" Git 통합
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'

" 괄호 자동 완성
Plug 'jiangmiao/auto-pairs'

" 컬러 테마
Plug 'morhetz/gruvbox'

call plug#end()

" ============================================================
"  테마 — silent! 로 플러그인 미설치 시 에러 방지
" ============================================================
set background=dark
silent! colorscheme gruvbox

" ============================================================
"  단축키
" ============================================================
nnoremap <C-n> :NERDTreeToggle<CR>

" 자동완성 탭 키
inoremap <expr> <Tab>   pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <CR>    pumvisible() ? asyncomplete#close_popup() : "\<CR>"

" LSP 단축키
nnoremap gd         :LspDefinition<CR>
nnoremap gr         :LspReferences<CR>
nnoremap K          :LspHover<CR>
nnoremap <leader>rn :LspRename<CR>
nnoremap <leader>ca :LspCodeAction<CR>

저장 후 플러그인 설치를 실행합니다.

bash
 
 
 
vim +PlugInstall +qall

! 플러그인 설치 시 에러 해결 — gruvbox 미발견

플러그인 설치 전에 .vimrc가 먼저 로드되면서 아래 에러가 발생할 수 있습니다.

에러 메시지
 
 
 
E185: 색 스킴 gruvbox을(를) 찾을 수 없습니다

원인

Vim이 시작될 때 .vimrc 전체를 파싱하는데, 이 시점에는 아직 플러그인 디렉터리에 gruvbox가 없기 때문입니다.

해결 방법

colorscheme gruvbox 앞에 silent!를 붙이면 에러를 무시하고 계속 진행합니다.

vim (.vimrc 수정)
 
 
 
" 변경 전
set background=dark
colorscheme gruvbox

" 변경 후 — silent! 추가
set background=dark
silent! colorscheme gruvbox
수정 후 vim +PlugInstall +qall을 다시 실행하면 에러 없이 완료됩니다. 이후 Vim을 열면 gruvbox 테마가 정상 적용됩니다.

6 Java LSP (JDTLS) 설치

Java 자동완성과 정의 이동을 위해 Eclipse JDT Language Server를 설치합니다. vim-lsp-settings 플러그인을 통해 자동 설치가 가능합니다.

방법 A — vim-lsp-settings 자동 설치 (권장)

vim 명령 모드
 
 
 
" Java 파일을 열고 명령 실행
:LspInstallServer

방법 B — 수동 설치

bash
 
 
 
mkdir -p ~/.local/share/jdtls
cd ~/.local/share/jdtls

# 최신 마일스톤 버전 다운로드 (ARM64 호환)
wget "https://download.eclipse.org/jdtls/milestones/$(curl -s \
  https://download.eclipse.org/jdtls/milestones/ \
  | grep -oP '[\d.]+(?=/")' | tail -1)/jdt-language-server-latest.tar.gz"

tar -xzf jdt-language-server-latest.tar.gz

7 빌드 도구 설치 (Maven / Gradle)

Maven

bash
 
 
 
sudo apt install -y maven
mvn -version

Gradle (SDKMAN! 권장)

bash
 
 
 
# SDKMAN! 설치
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# Gradle 설치
sdk install gradle
gradle -v
💡 DGX Spark GB10의 72코어 Grace CPU 환경에서는 Gradle 병렬 빌드를 활용하면 대형 프로젝트 빌드 속도를 크게 향상시킬 수 있습니다. ~/.gradle/gradle.propertiesorg.gradle.parallel=true를 추가하세요.

8 동작 확인

간단한 Java 프로그램을 작성하여 JDK 25 컴파일과 Vim LSP 동작을 검증합니다.

bash
 
 
 
# 테스트 디렉터리 생성
mkdir -p ~/java-test && cd ~/java-test

# Hello.java 생성
cat > Hello.java << 'EOF'
public class Hello {
    public static void main(String[] args) {
        System.out.println("JDK 25 on DGX Spark GB10!");
        var message = "ARM64 + Vim 개발환경 구성 완료";
        System.out.println(message);
    }
}
EOF

# 컴파일 및 실행
javac Hello.java && java Hello

# Vim으로 열어서 LSP 자동완성 확인
vim Hello.java

정상 실행 시 출력:

출력
 
 
 
JDK 25 on DGX Spark GB10!
ARM64 + Vim 개발환경 구성 완료

9 주요 Vim 단축키 요약

단축키 기능 비고
gd 정의로 이동 (Go to Definition) LSP
gr 참조 찾기 (Find References) LSP
K 호버 문서 표시 LSP
<leader>rn 심볼 이름 변경 (Rename) LSP
<leader>ca 코드 액션 (Code Action) LSP
Ctrl+n NERDTree 파일 탐색기 토글 NERDTree
Tab / S-Tab 자동완성 후보 선택 asyncomplete
:LspInstallServer LSP 서버 자동 설치 vim-lsp-settings

DGX Spark GB10 · Ubuntu 24.04 · OpenJDK 25.0.2 LTS · Vim + LSP 개발환경 구성 가이드

ARM64(aarch64) 기준으로 작성되었습니다.

 

예전 같으면 이곳저곳 집단지식을 모아 실습해보고 나의 현황에 맞게 수정하고 올릴텐데,

요즘은 AI에게 그냥 물어보면 끝~ 이어서 너무 좋다.

그러다 보니 이런 블로그글 보다 구축하고 싶은 사람들에게 그냥 AI에게 물어보세요~ 해도 될듯...

반응형