it-swarm-ko.tech

Java 응용 프로그램을 배포하는 가장 좋은 방법은 무엇입니까?

Java는 내가 선택한 프로그래밍 언어 중 하나입니다. 내 응용 프로그램을 최종 사용자에게 배포하는 동안 항상 문제가 발생합니다.

사용자에게 JAR을 제공하는 것이 원하는만큼 항상 사용자 친화적 인 것은 아니며 Java WebStart를 사용하려면 웹 서버를 유지 관리해야합니다.

Java 응용 프로그램을 배포하는 가장 좋은 방법은 무엇입니까? Java 응용 프로그램이 사용자 컴퓨터에 아티팩트를 설치해야하는 경우 어떻게합니까? 좋은 Java 설치/포장 시스템이 있습니까?

113
Laplie Anderson

배포 요구 사항에 따라 다양한 솔루션이 있습니다.

  1. 단지 항아리를 사용하십시오. 이것은 사용자에게 올바른 Java 버전이 설치되어 있다고 가정하고 그렇지 않으면 "클래스 파일 형식 버전"예외가 발생한다는 것을 전제로합니다. 이는 회사 내부의 배포에 적합합니다.

  2. Launch4j 및 NSIS와 같은 설치 프로그램을 사용하십시오. 사용자가 여전히 Java 런타임 설치 제거와 같은 어리석은 작업을 수행 할 수는 있지만) 이것은 훨씬 더 많은 제어 기능을 제공합니다. 이것은 아마도 가장 널리 사용되는 접근 방식이며 현재 사용중인 것입니다.

  3. Webstart를 사용하십시오. 또한 사용자에게 올바른 Java 버전이 설치되어 있지만 훨씬 더 쉽게 갈 수 있다고 가정합니다. 내 경험은 엄격하게 제어되는 인트라넷 환경에는 적합하지만 더 큰 문제는 고통 스럽습니다 이상한 실패가 많기 때문에 배포 Java 1.7의 새로운 플러그인 기술로 더 나아질 수 있습니다.

  4. Excelsior JET와 같은 기본 코드 컴파일러를 사용하여 실행 파일로 배포하거나 설치 프로그램으로 마무리하십시오. 비싸고 일반적으로 약간 오래된 버전의 Java에 연결되며 동적 클래스 로딩에는 약간의 어려움이 있지만 지원 번거 로움을 최소화해야하는 대규모 배포에는 매우 효과적입니다.

86
Noel Grandin
9
Dmitry Leskov

고급 설치 관리자 Java 앱을 Windows 실행 파일로 쉽게 패키징 할 수 있으며, 설정하는 방식이 매우 유연합니다. 배포 용 = Java Windows 클라이언트에 대한 응용 프로그램입니다. 가장 쉬운 방법입니다.

5
rustyshelf

JSmooth 는 항아리를 가져 와서 표준 Windows 실행 파일로 마무리하는 간단한 프로그램입니다. 필요한 JVM을 구성하고, 응용 프로그램과 함께 번들로 제공하거나, 아직 설치되지 않은 경우 다운로드 할 수있는 옵션을 제공하는 간단한 GUI가 제공됩니다. exe 파일을있는 그대로 보내거나 가능한 종속 항목으로 Zip으로 압축 할 수 있습니다 (또는 시작시 프로그램이 네트워크에서 추가 종속성을 다운로드하도록 허용). 맥주 나 연설에서와 같이 무료 일 수도 있고, 그렇지 않을 수도 있습니다.

4
stian

대상 사용자의 수준에 따라 다릅니다. 대부분의 경우 Java 기반 앱을 실행하고 있다는 사실과 분리하려고합니다. 올바른 시작 작업 (시작 메뉴 항목 작성, 실행 프로그램, 프로그램 추가/제거 등록 등)을 수행하고 이미 Java 런타임을 번들로 제공하는 기본 설치 프로그램을 제공하십시오. 교차 플랫폼 설치 도구 인 BitRock InstallBuilder 를 제안하고 싶습니다. Java 기반이 아니지만 일반적으로 Java 응용 프로그램 : Ant와 쉽게 통합 할 수 있으며 Unix/Linux/Mac 및 다른 방법으로 Windows 설치 프로그램을 빌드 할 수 있습니다 생성 된 설치 프로그램은 기본 설치 프로그램이므로 자체 추출 단계 또는 JRE가 필요하지 않습니다. 대상 시스템에 이미 설치되어 있기 때문에 설치 프로그램이 적고 두통을 덜 수 있습니다. 또한 오픈 소스 프로젝트에 대한 무료 라이센스가 있다고 언급하고 싶습니다.

4
Daniel Lopez

실행 파일이 가장 좋지만 플랫폼에 제한이 있습니다. 예를 들어 Linux에서 실행 파일을 생성하고 launch4j를 사용하려면 gcj : http://gcc.gnu.org/Java/ 사용하십시오. http : // launch4j .sourceforge.net / Windows 실행 파일을 생성합니다. 리눅스에서 패키징하기 위해 rpm이나 deb 패키저를 사용할 수 있습니다. win32의 경우 http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

3
zurk

실제 GUI를 사용하는 최종 사용자 응용 프로그램 인 경우 프로그램 (Java)을 작성한 언어를 무시하고 선택한 각 플랫폼에 대해 기본 설치 프로그램을 사용해야합니다. Mac 사용자는 .dmg를 원하며 Windows에서는 .msi 또는 .exe 설치 프로그램을 사용하는 것이 좋습니다. Windows에서는 InstallShield 또는 InstallAnywhere보다 불쾌감을 줄 수 있기 때문에 NullSoft의 NSIS를 선호합니다. OSX에서는 이미 존재하는 JVM을 신뢰할 수 있습니다. Windows에서는 필요한 경우이를 확인하고 설치해야합니다. Linux 사람들은 Java GUI 응용 프로그램을 실행하지 않으며 그 중 일부는 실행 가능한 .jar로 수행 할 작업을 알고 있습니다.

3
Ry4an Brase

NSIS (Nullsoft Scriptable Installer System)을 사용하지는 않았지만 필요한 JRE가 대상에 설치되어 있는지 여부를 확인하는 설치 스크립트가 있습니다. 체계.

Code ExamplesReal World Installers 페이지에서 다음과 같은 많은 샘플 스크립트를 사용할 수 있습니다.

(실제로 스크립트를 사용하지 않았으므로 보증으로 사용하지 마십시오.)

3
coobird

프로젝트와 그 종속성을 단일 jar 파일로 패키지화하는 방법이 필요했습니다.

Maven2 Assembly 플러그인을 사용하여 필요한 것을 찾았습니다. Maven2 Assembly plugin

이것은 one-jar 의 기능을 복제 한 것으로 보이지만 추가 구성이 필요하지 않습니다.

2
David Carlson

간단한 Java Jar를 사용하는 앱을 선호합니다. 사용자가 클릭 할 수있는 하나의 파일 (Windows)을 배포하는 것은 매우 간단합니다. 또는

Java -jar jarname.jar

IMHO, jar는 단순성이 주요 요구 사항 인 경우 갈 길입니다.

1
jjnguy

Eclipse RCP 애플리케이션을 개발합니다. 일반적으로 Eclipse 애플리케이션을 시작하기 위해 실행 가능 실행기가 포함됩니다. 올바른 Java 버전이 사용되도록하기 위해/jre 하위 디렉토리의 응용 프로그램 폴더 안에 Java 가상 시스템)을 포함시킵니다.

그런 다음 사용자 컴퓨터에 설치하기 위해 Inno Setup과 함께 패키지합니다.

1
Mario Ortegón

Java 응용 프로그램을 배포하는 가장 좋은 방법은 무엇입니까? Java 응용 프로그램이 사용자 컴퓨터에 아티팩트를 설치해야하는 경우 어떻게합니까? 좋은 Java 설치/포장 시스템이 있습니까?

내 경험 ( 다양한 옵션 평가 )에서 install4j 는 좋은 솔루션입니다. 모든 플랫폼에 대한 기본 설치 프로그램을 작성하며 특히 Java 앱 설치에 적합합니다. 자세한 내용은 웹 사이트에서 " Features "를 참조하십시오.

install4j는 상용 도구입니다. 특히 요구 사항이 비교적 단순하면 (응용 프로그램을 배포하고 일부 아티팩트를 설치하면) 무료 옵션 (예 : izPack 또는 이미 언급 한 Lauch4j ) . 그러나 당신은 best 방법을 요구했으며, 현재의 지식으로는 install4j가 특히 더 크거나 더 복잡한 배포를위한 것입니다. Java (EE) 앱.

1
Jonik

가장 좋은 대답은 플랫폼에 따라 다릅니다. Windows에서 배포하는 경우 one-jarlaunch4j 의 조합을 사용하여 좋은 결과를 얻었습니다. 빌드 환경을 올바르게 설정하는 데 약간의 시간이 걸렸지 만 (대부분의 스크립트는 대부분) 이제는 고통이 없습니다.

0
qualidafial

내 관점에서 볼 때 우수한 배포 메커니즘은 ClickOnce 또는 WebStart 기술과 같은 것을 사용하는 것입니다. 서버에 버전을 배포하기 만하면 버전이 릴리스 될 때 클라이언트에 자동으로 제공됩니다. 또한 Eclipse RCP 플랫폼에는 WebStart가 수행하는 작업을 수행하는 UpdateManager가 포함되어 있습니다.

빌드에 Maven2를 사용하고 있기 때문에 배포는 간단합니다. 빌드 jar을 서버의 위치에 복사하고 필요한 경우 jnlp 파일을 업데이트하면 완료됩니다.

0
Petr Macek

installanywhere는 좋지만 비싼 것-나는 무료로 하나를 찾지 못했습니다.

0
Tom