LWJGL
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
LWJGL은 Java에서 네이티브 라이브러리에 접근하기 위한 오픈 소스 라이브러리이다. 2002년에 개발이 시작되어 2007년 첫 공식 릴리스가 이루어졌으며, 2016년에는 LWJGL 3이 출시되었다. LWJGL은 JNI를 통해 C 코드를 사용하며, 다양한 그래픽, 오디오, 입력, 병렬 컴퓨팅 API에 대한 바인딩을 제공하여 개발자가 여러 플랫폼에서 활용할 수 있도록 돕는다. 마인크래프트, 프로젝트 좀보이드 등 다양한 게임에서 사용된다.
더 읽어볼만한 페이지
- 자바 API - 자바 암호화 확장
- 자바 API - 표준 위젯 툴킷
표준 위젯 툴킷(SWT)은 자바 GUI 툴킷으로, 네이티브 룩앤필과 고성능을 위해 윈도 시스템의 그래픽 요소를 직접 사용하며, 이클립스 IDE의 기반 기술로 IBM에 의해 개발되었다. - 자바 라이브러리 - 아파치 루씬
아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다. - 자바 라이브러리 - 구글 구아바
구글 구아바는 구글에서 개발한 오픈 소스 자바 라이브러리로, 자바 컬렉션 프레임워크 확장, 캐싱, I/O, 문자열 처리 등 다양한 유틸리티 기능 제공, 함수형 프로그래밍 스타일 컬렉션 적용을 통해 자바 개발 생산성 향상에 기여한다. - 비디오 게임 개발 소프트웨어 - 앨리스 (소프트웨어)
앨리스는 교육용 프로그래밍 소프트웨어로, 드래그 앤 드롭 방식을 통해 객체 지향 프로그래밍을 배우도록 설계되었으며, 스토리텔링을 활용하여 다양한 사용자들이 프로그래밍에 접근하도록 돕는다. - 비디오 게임 개발 소프트웨어 - 픽셀 게임 메이커 MV
픽셀 게임 메이커 MV는 2D 액션 게임 제작 전용 츠쿠르로, 프로그래밍 없이 인디 게임 개발을 쉽게 할 수 있도록 설계되었으며, 2018년에 얼리 액세스 버전이 출시되어 2019년 Steam에 정식 출시되었다.
| LWJGL - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 저자 | 캐스피언 프린스 |
| 개발자 | 이오아니스 트사크피니스 |
| 출시일 | 2007년 2월 4일 |
| 최신 버전 | 3.3.4 |
| 최신 출시일 | 2024년 7월 17일 |
| 프로그래밍 언어 | Java C Kotlin |
| 운영 체제 | Linux macOS Windows FreeBSD |
| 플랫폼 | 자바 플랫폼 |
| 장르 | 자유 컴퓨터 라이브러리 |
| 라이선스 | BSD, 일부 바인딩은 다른 라이선스 |
| 웹사이트 | lwjgl.org |
| 저장소 | https://github.com/lwjgl |
2. 역사
J2SE 1.4가 출시되면서 2002년에 라이브러리 개발이 시작되었으며, 새롭게 추가된 논블로킹 I/O 작업과 힙 외부 메모리 접근을 활용하였다. 이러한 JDK에 대한 추가 사항을 통해 JDK의 일부가 아닌 네이티브 메모리 및 라이브러리에 대한 더 나은 접근이 가능해졌다. 라이브러리의 첫 번째 공식 릴리스는 2007년 2월 4일에 이루어졌다.[1]
LWJGL은 다양한 기능을 제공하기 위해 여러 라이브러리에 대한 바인딩을 제공한다. 바인딩은 JNI를 통해 네이티브 C 코드에 접근하는 방식으로 이루어진다.[5][4][7] 각 네이티브 라이브러리에 대한 바인딩은 서로 다른 모듈로 존재하므로, 개발자는 특정 프로그램에 필요한 것만 사용하여 사용자 정의 빌드를 할 수 있다.
2014년 11월 13일, 버전 3가 발표되었으며, 2015년 4월 27일에 알파 버전으로 출시되었고 LWJGL을 완전히 다시 작성한 것이다.[2][3][4] GLFW, EGL 및 Objective-C를 포함한 많은 새로운 바인딩이 추가되었다. Oculus Rift 개발에 대한 지원도 LibOVR 바인딩과 함께 추가되었다.[5][4] 새로운 버전은 3년 반 이상 개발 끝에 2016년 6월 4일에 출시되었다.[6]
3. 바인딩
LWJGL에서 제공하는 주요 바인딩은 다음과 같다.바인딩 설명 EGL 크로노스 렌더링 API와 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스. OpenCL 크로스 플랫폼 병렬 컴퓨팅용 API. OpenGL 대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체. OpenGL ES 휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL. 벌컨 차기 크로스 플랫폼 3D 그래픽스 API. GLFW OpenGL 및 벌컨 컨텍스트, 사용자 입력을 관리하는데 필요한 창 관리 라이브러리. JAWT AWT 네이티브 인터페이스. nfd 크기가 작은 크로스 플랫폼 네이티브 파일 다이얼로그 라이브러리. tinyfd 크기가 작은 네이티브 다이얼로그 라이브러리. OpenAL 3차원 오디오 API. OpenAL Soft OpenAL의 자유 라이선스 소프트웨어 구현체. bgfx 다중 그래픽스 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리. LibOVR 오큘러스 리프트 SDK의 API. NanoVG OpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리. Nuklear 단순 GUI 라이브러리. par shapes 파라메트릭 및 기타 단순 도형 생성기. STB 이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리. dyncall 포터블한 방식으로 동적으로 C 함수를 호출하기 위한 라이브러리. C 동적 메모리 할당 저급(Low-level) 메모리 관리. LMDB 메모리 맵 파일을 이용한 고속 데이터베이스 라이브러리. xxHash 고속 해시 알고리즘. VMA 벌컨 그래픽스 API용 메모리 할당자.
하위 섹션에서 이미 언급된 바인딩들에 대한 내용은 간략하게 표로 작성하여 중복을 피했다.
버전 3.1부터 LWJGL은 51개의 모듈로 완전히 분리되어 개별적으로 다운로드하여 사용할 수 있다. 이 과정을 더 쉽게 만들기 위해 프로젝트는 온라인 빌드 구성기를 제공하며, 이를 통해 사용자는 모듈의 사용자 정의 조합을 다운로드하고, 기존 프로젝트에서 쉽게 사용할 수 있도록 Maven 및 Gradle 구성 파일을 자동으로 생성할 수 있다.[10][11][12]
3. 1. Khronos API
LWJGL은 여러 크로노스 API에 대한 바인딩을 제공한다. 다음은 그 목록이다.[16][17]
| 바인딩 | 설명 |
|---|---|
| EGL | 크로노스 렌더링 API와, 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스. |
| OpenCL | 크로스 플랫폼 병렬 컴퓨팅용 API. |
| OpenGL | 대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체. |
| OpenGL ES | 휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL. |
| 벌컨 | 차기 크로스 플랫폼 3D 그래픽스 API. |
3. 2. 디스플레이 및 입력
GLFW는 OpenGL 및 Vulkan 컨텍스트와 사용자 입력을 처리하는 데 필요한 윈도우 관리 라이브러리이다.[8][5] JAWT는 AWT 네이티브 인터페이스이다.[8][5] nfd는 소규모 크로스 플랫폼 네이티브 파일 대화 상자 라이브러리이며,[8][5] tinyfd는 소규모 네이티브 대화 상자 라이브러리이다.[8][5]3. 3. 오디오
LWJGL은 3차원 오디오 API인 OpenAL 바인딩을 제공하며, ALC 및 기타 확장 기능도 지원한다.[16][17] OpenAL Soft는 OpenAL의 자유 라이선스 소프트웨어 구현체이다.3. 4. 그래픽
LWJGL은 여러 그래픽 API에 대한 바인딩을 제공하여 개발자가 3D 그래픽을 구현하고, 사용자 인터페이스를 만들고, 2D 벡터 그래픽을 렌더링할 수 있도록 지원한다.LWJGL에서 제공하는 그래픽 관련 바인딩은 다음과 같다.[16][17]
| 바인딩 | 설명 | 참고 |
|---|---|---|
| OpenGL | 대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체. | 대부분의 확장 기능들이 지원되지만 요청에 따라 덜 유명한 확장 기능들이 추가될 수 있다. |
| OpenGL ES | 휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL. | |
| 벌컨 | 차기 크로스 플랫폼 3D 그래픽스 API. | |
| NanoVG | OpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리. | |
| Nuklear | 단순 GUI 라이브러리. |
이 외에도, 다음과 같은 그래픽 관련 바인딩을 제공한다.[8][5]
- Assimp: 다양한 3D 모델 형식을 가져오기 위한 휴대용 오픈 소스 라이브러리이다.
- bgfx: 여러 그래픽 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리이다.
- LibOVR: 오큘러스 리프트 SDK의 API이다.
- par shapes: 파라메트릭 및 기타 단순 도형 생성기이다.
- STB: 이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리이다.
3. 5. 기타
LWJGL은 JNI를 통해 네이티브 C 코드에 접근한다. 각 네이티브 라이브러리에 대한 바인딩은 서로 다른 모듈로 존재하므로, 개발자는 특정 프로그램에 필요한 것만 사용하여 사용자 정의 빌드를 할 수 있다.[5][4][7]유틸리티 클래스는 순수 Java로 작성되지만, 대부분의 바인딩 클래스는 Kotlin으로 구현된 사용자 정의 생성기에 의해 자동으로 생성된다.[8][9]
버전 3.1부터 LWJGL은 51개의 모듈로 완전히 분리되어 개별적으로 다운로드하여 사용할 수 있다. 이 과정을 더 쉽게 만들기 위해 프로젝트는 온라인 빌드 구성기를 제공하며, 이를 통해 사용자는 모듈의 사용자 정의 조합을 다운로드하고, 기존 프로젝트에서 쉽게 사용할 수 있도록 Maven 및 Gradle 구성 파일을 자동으로 생성할 수 있다.[10][11][12]
LWJGL에서 제공하는 바인딩은 다음과 같다.[16][17]
| 바인딩 | 설명 |
|---|---|
| EGL | 크로노스 렌더링 API와, 기반이 되는 네이티브 플랫폼 윈도 시스템 간의 인터페이스. |
| OpenCL | 크로스 플랫폼 병렬 컴퓨팅용 API. |
| OpenGL | 대부분의 GPU 벤더들이 구현한 3D 그래픽스 구현체. 대부분의 확장 기능들이 지원되지만 요청에 따라 덜 유명한 확장 기능들이 추가될 수 있다. |
| OpenGL ES | 휴대 전화, 태블릿, 콘솔 등 임베디드 시스템을 위한 OpenGL. |
| 벌컨 | 차기 크로스 플랫폼 3D 그래픽스 API. |
| GLFW | OpenGL 및 벌컨 컨텍스트, 사용자 입력을 관리하는데 필요한 창 관리 라이브러리. |
| JAWT | AWT 네이티브 인터페이스. |
| nfd | 크기가 작은 크로스 플랫폼 네이티브 파일 다이얼로그 라이브러리. |
| tinyfd | 크기가 작은 네이티브 다이얼로그 라이브러리. |
| OpenAL | 3차원 오디오 API. ALC 및 기타 확장 지원함. |
| OpenAL Soft | OpenAL의 자유 라이선스 소프트웨어 구현체. |
| bgfx | 다중 그래픽스 백엔드를 지원하는 크로스 플랫폼 렌더링 라이브러리. |
| LibOVR | 오큘러스 리프트 SDK의 API. |
| NanoVG | OpenGL을 사용한 2D 벡터 그래픽스 렌더링 라이브러리. |
| Nuklear | 단순 GUI 라이브러리. |
| par shapes | 파라메트릭 및 기타 단순 도형 생성기. |
| STB | 이미지, 사운드, 글꼴을 로드하기 위한 가벼운 싱글 파일 라이브러리. |
| dyncall | 포터블한 방식으로 동적으로 C 함수를 호출하기 위한 라이브러리. |
| C 동적 메모리 할당 | 저급(Low-level) 메모리 관리. |
| LMDB | 메모리 맵 파일을 이용한 고속 데이터베이스 라이브러리. |
| xxHash | 고속 해시 알고리즘. |
| VMA | 벌컨 그래픽스 API용 메모리 할당자 |
4. 저명한 사용
LWJGL을 사용한 저명한 게임 및 프로젝트는 다음과 같다.
- 마인크래프트[18]
- 마인크래프트: 자바 에디션[13]
- 프로젝트 좀보이드[14]
참조
[1]
웹사이트
LWJGL 1.0 Released
http://forum.lwjgl.o[...]
2007-02-04
[2]
웹사이트
Welcome to LWJGL 3
https://blog.lwjgl.o[...]
2014-11-13
[3]
웹사이트
LWJGL 3 Roadmap
https://github.com/L[...]
2015-06-02
[4]
웹사이트
LWJGL 3.0.0a released
https://blog.lwjgl.o[...]
2015-04-27
[5]
웹사이트
Official website
https://www.lwjgl.or[...]
2015-08-14
[6]
웹사이트
LWJGL 3.0.0 Released!
https://blog.lwjgl.o[...]
2016-06-04
[7]
웹사이트
Bindings FAQ
https://github.com/L[...]
2014-12-27
[8]
웹사이트
LWJGL/lwjgl3
https://github.com/L[...]
2016-08-13
[9]
웹사이트
lwjgl3/doc – Generator
https://github.com/L[...]
2015-08-11
[10]
뉴스
LWJGL 3.1.0 Released!
https://blog.lwjgl.o[...]
2016-10-30
[11]
뉴스
Minecraft unblocked
https://minecraftfor[...]
2023-11-16
[12]
웹사이트
Download – LWJGL
https://www.lwjgl.or[...]
2016-11-11
[13]
웹사이트
Minecraft Attributions {{!}} Minecraft
https://minecraft.ne[...]
2020-07-09
[14]
웹사이트
APZDTISA #3: This time with LIVE MULTIPLAYER!
https://projectzombo[...]
2014-02-17
[15]
Github
Releases · LWJGL/lwjgl3 · GitHub
https://github.com/L[...]
[16]
웹인용
LWJGL/lwjgl3
https://github.com/L[...]
2016-08-13
[17]
웹인용
Official website
https://www.lwjgl.or[...]
2015-08-14
[18]
웹인용
minecraft.net – Credits
https://minecraft.ne[...]
2016-08-06
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
