Java 런타임 종속성없이 데스크탑 Java 게임을 어떻게 배포 할 수 있습니까?


9

Java 애플리케이션을 "즉시"실행되는 독립형 패키지로 전환 할 수 있습니까? 최종 사용자는 Java JRE를 설치하지 않아도되고 설치 프로그램에 JRE가 포함되어 사용자를 위해 설치하지 않아야합니다.

최종 배포에는 기본 실행 파일 (필요한 경우 각 Windows, Mac 및 Linux마다 하나씩)과 일반 데이터 파일 및 추가 JAR이 포함되어야합니다. "하나의 파일"솔루션을 찾고 있지 않습니다. 실제로 데이터 파일을 난독 처리하고 싶습니다.

이것을 어떻게 할 수 있습니까?

답변:


8

요점은 최종 사용자가 Java JRE를 설치할 필요가 없으며 설치 프로그램에 JRE가 포함되어 사용자를 위해 설치하지 않아야한다는 것입니다

Java 소스 / 바이트 코드를 사용하여 기계 코드 컴파일러를 가공 할 수 있습니다. 있습니다 엑셀 시어 JET Windows 및 Linux (라이센스 필요) 및 대한 Java 용 GNU 컴파일러 오래되었습니다.

Java를 설치하지 않고 게임에 Java를 포함시킬 수 있다면 게임과 함께 Java Runtime을 패키지 JAVA_HOME하고 게임을 시작하기 전에 시작 스크립트를 사용 하여 JRT 위치 로 설정할 수 있습니다.

편집 : (주석 응답) 두 번째 옵션을 사용하면 해당 플랫폼에 적절한 Java 런타임을 사용하여 다른 플랫폼에 대해 다른 빌드가 필요합니다.

EDIT2 : Aslo는 Dmitry의 최근 의견을 참조하십시오.


3
상업적이지 않은 게임 인 경우 무료 Excelsior JET 라이센스를 얻을 수 있습니다 .
Dmitry Leskov

두 번째 옵션은 좋지만 Windows JRE를 패키지하면 크로스 플랫폼입니까? Excelsior와 마찬가지로 세 가지 OS에서 이러한 컴파일러를 실행해야합니까?
leokhorn 2013 년

1
각 릴리스마다 해당 플랫폼 JRE를 번들로 제공해야하지만 기본적으로 크로스 플랫폼으로 유지됩니다.
Derek

1
@leokhorn 어떤 시점에서 네이티브 코드가 있어야합니다. 기본 코드로 컴파일하거나 기본 VM에서 실행해야합니다. 계획은 없습니다.
Adrian

1
ExcelCior JET Standard Edition은 상업적 으로도 무료로 사용할 수 있게되었지만 GCJ는 공식적으로 죽었지 만, 배포의 용이성 만 고려한다면 많은 대안이 있습니다
Dmitry Leskov

1

Mac의 경우 Mac 용 Java 앱 패키징에 대한 Oracle 문서를 참조하십시오 . Java App Store에서 배포하는 데 필요한 jar 파일 (실제로 실행 파일로 처리되는 폴더)을 포함하는 응용 프로그램 번들로 런타임을 번들 할 수 있도록 Java 7을 설정했습니다. 기본적으로 .app 번들은 Eren의 JAVA_HOME 답변과 거의 동일하지만 "기본"Mac 앱으로 패키지되어 있습니다.

Mac App Store없이 배포하려면 앱에 서명하지 않고 Mountain Lion 사용자에게 앱에서 마우스 오른쪽 버튼을 클릭 (또는 ctrl + 클릭)하고 "열기"를 클릭하면 Gatekeeper 를 이용할 수 있음을 알릴 수 있습니다. 먼저 앱을 엽니 다. 그래도 앱에 서명되지 않았다는 경고 메시지가 표시되지만 어쨌든 앱을 열 수 있으며 이후에 열 때 앱을 두 번 클릭 할 수 있습니다.

(주의 사항 : 쉘 스크립트를 Linux 스타일로 표시하여 실행 파일로 제거한 다음 그 주위에 .app 번들을 구성 할 수 있습니다. NetBeans는 번들 JRE / JDK가 없지만 Mac 및 Linux 에서이 작업을 수행합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.