개요편집이의 제기
LWJGL(Lightweight Java Game Library)은 자바 개발자가 네이티브 C 라이브러리에 접근할 수 있도록 바인딩을 제공하는 오픈 소스 소프트웨어 라이브러리다. Vulkan, OpenGL, GLFW, OpenAL, OpenCL 등 게임 및 멀티미디어 개발에 널리 쓰이는 크로스 플랫폼 라이브러리를 자바에서 얇은 래퍼 형태로 노출하는 것을 주된 목표로 한다. 이를 통해 자바 플랫폼만으로는 접근하기 어렵거나 구현이 미흡한 저수준 자원(그래픽, 오디오, 병렬 연산, 윈도우/입력 처리 등)을 거의 원본 API에 가까운 형태로 사용할 수 있다. 라이선스는 3조항 BSD 라이선스를 따르며, 윈도우, 리눅스, macOS에서 동작한다. libGDX, jMonkeyEngine 등 상위 레벨 자바 게임 엔진/라이브러리의 기반 계층으로도 널리 쓰인다.[1][3]
역사편집이의 제기
개발 배경과 초기 공개
개발은 2002년 J2SE 1.4가 출시되면서 새로 도입된 논블로킹 I/O와 오프힙(off-heap) 메모리 접근 기능을 활용해 네이티브 메모리와 라이브러리에 더 효율적으로 접근하려는 목적에서 시작되었다. 첫 공식 판은 2007년 2월 4일에 공개되었다.[3]
버전 3: 완전 재작성과 기능 확장
2014년 11월 13일, 기존 코드베이스를 완전히 다시 쓰는 버전 3 개발이 발표되었고, 2015년 4월 27일(자료에 따라 4월 17일로도 표기) 알파 판이 공개되었다. 버전 3은 3년 반 이상의 개발 기간을 거쳐 2016년 6월 4일 정식 출시되었다. 주요 변화는 다음과 같다.[2][3]
Vulkan API 바인딩 추가
GLFW, EGL, Objective-C 바인딩 등 다수의 신규 바인딩 포함
오큘러스 리프트(Oculus Rift) 개발을 위한 LibOVR 바인딩 추가
모듈화 구조로 전환: 3.1부터 51개 모듈로 분리되어 필요한 것만 골라 쓸 수 있게 됨
온라인 빌드 구성기(build configurator) 제공으로 Maven/Gradle 설정 자동 생성 지원
판본 이력(자료에 기록된 버전)
자료에 명시된 판본에는 2.8.4, 2.8.5, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 3.0.0a, 3.0.0b 등이 있다.[1]
특징과 기능편집이의 제기
렌더링 및 그래픽 API 바인딩
Vulkan, OpenGL(ES 포함), EGL 바인딩을 제공하여 저수준 그래픽 파이프라인을 자바에서 직접 제어 가능
GLFW 바인딩을 통해 윈도우 생성, 입력 처리, 컨텍스트 관리 등 플랫폼 추상화 계층 제공
오디오 및 병렬 연산
OpenAL 바인딩으로 3D 오디오 재생 및 처리 지원
OpenCL 바인딩으로 이종 컴퓨팅(CPU, GPU 등) 병렬 연산 활용 가능
아키텍처와 바인딩 생성 방식
Java Native Interface(JNI)를 통해 네이티브 C 코드에 접근
유틸리티 클래스는 순수 자바로 작성되나, 대다수 바인딩 클래스는 코틀린으로 구현된 커스텀 생성기로 자동 생성됨
버전 3.1부터 51개 모듈로 완전 분리 배포되며, 온라인 빌드 구성기를 통해 필요한 모듈 조합을 내려받고 빌드 도구 설정 파일(Maven, Gradle)을 자동 생성할 수 있음[3]
지원 플랫폼
마이크로소프트 윈도우, 리눅스, macOS에서 동작
실행 기반 플랫폼은 자바(JVM)[1]
라이선스 및 요금
3조항 BSD 라이선스(3-clause BSD License) 적용
오픈 소스 무료 사용 가능[1]
사용 게임편집이의 제기
자료에 명시된 주요 사용 사례는 다음과 같다.[2][3]
마인크래프트마인크래프트(Minecraft: Java Edition)
Project Zomboid
Spiral Knights
Starsector
이 밖에 LWJGL을 기반으로 하는 상위 엔진(libGDX, jMonkeyEngine 등)을 통해 제작된 다수의 게임이 간접적으로 LWJGL을 사용한다.
평가편집이의 제기
자료는 LWJGL을 "자바 개발자가 기존 자바 플랫폼에서 이용할 수 없거나 구현이 부실한 자원에 접근하게 하는 것"을 주된 목표로 하며, "원천 기술을 얇은 래퍼로 노출해 원본 API에 가까운 API를 만든다"는 설계 철학을 강조한다. 이 설계 덕분에 상위 레벨 엔진(libGDX, jMonkeyEngine)의 기반 계층으로 채택되었으며, 마인크래프트 자바 에디션 등 상업적 성공을 거둔 타이틀에서도 검증되었다. 단, 자료에는 구체적인 비판이나 논란, 성능 벤치마크 수치, 커뮤니티 반응 등 정성·정량 평가는 포함되어 있지 않다.[3]
그 밖의 주제편집이의 제기
개발자
프로젝트 창시자/주요 개발자로 Ioannis Tsakpinis가 기록되어 있다.[1]
프로그래밍 언어 구성
핵심 바인딩 생성 도구: 코틀린
런타임 바인딩 및 유틸리티: 자바
네이티브 인터페이스 계층: C[1]
외부 링크(자료 기준)
공식 웹사이트
GitHub 저장소
Stack Overflow 태그[2]
관련 문서편집이의 제기
마인크래프트마인크래프트 — 게임 엔진
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.