Java 응용 프로그램을 배포하는 가장 좋은 방법은 무엇입니까? [닫은]
Java는 내가 선택한 프로그래밍 언어 중 하나입니다. 내 응용 프로그램을 최종 사용자에게 배포하는 동안 항상 문제가 발생합니다.
사용자에게 JAR을 제공하는 것이 원하는만큼 항상 사용자 친화적이지는 않으며 Java WebStart를 사용하려면 웹 서버를 유지 관리해야합니다.
Java 애플리케이션을 배포하는 가장 좋은 방법은 무엇입니까? Java 애플리케이션이 사용자 컴퓨터에 아티팩트를 설치해야하는 경우 어떻게합니까? 좋은 Java 설치 / 패키징 시스템이 있습니까?
배포 요구 사항에 따라 다양한 솔루션이 있습니다.
단지 항아리를 사용하십시오. 사용자에게 올바른 Java 버전이 설치되어 있다고 가정하면 그렇지 않으면 "클래스 파일 형식 버전"예외가 발생합니다. 회사 내부의 배포에 적합합니다.
launch4j 및 NSIS와 같은 설치 프로그램을 사용하십시오. Java 런타임 설치 제거와 같은 어리석은 작업을 수행 할 수는 있지만 훨씬 더 많은 제어 기능을 제공합니다. 이것은 아마도 가장 인기있는 접근법이며 현재 사용중인 것입니다.
Webstart를 사용하십시오. 또한 사용자에게 올바른 Java 버전이 설치되어 있다고 가정하지만 훨씬 쉽게 갈 수 있습니다. 제 경험은 이것이 엄격하게 제어되는 인트라넷 환경에는 적합하지만 이상한 실패가 많기 때문에 대규모 배포에서는 고통이됩니다. Java 1.7의 새로운 플러그인 기술로 더 나아질 수 있습니다.
Excelsior JET와 같은 기본 코드 컴파일러를 사용하여 실행 파일로 배포하거나 설치 프로그램으로 마무리하십시오. 비싸고 일반적으로 약간 오래된 버전의 Java에 연결되며 동적 클래스 로딩에는 약간의 어려움이 있지만 지원 번거 로움을 최소화 해야하는 대규모 배포에는 매우 효과적입니다.
고급 설치 관리자를 사용하면 Java 응용 프로그램을 Windows 실행 파일로 쉽게 패키징 할 수 있으며 설정할 수있는 방식이 매우 유연합니다. Java 응용 프로그램을 Windows 클라이언트에 배포하는 것이 가장 쉬운 방법이라는 것을 알았습니다.
JSmooth 는 항아리를 가져 와서 표준 Windows 실행 파일로 마무리하는 간단한 프로그램입니다. 필요한 JVM을 구성하거나, 응용 프로그램과 함께 번들로 제공하거나, 아직 설치되지 않은 경우 다운로드 할 수있는 옵션을 제공하는 간단한 GUI가 제공됩니다. exe 파일을있는 그대로 보내거나 가능한 종속 항목으로 압축하거나 시작시 프로그램이 추가 종속성을 네트워크에서 다운로드하도록 할 수 있습니다. 맥주 나 연설에서와 같이 무료 일 수도 있고 그렇지 않을 수도 있습니다.
대상 사용자의 수준에 따라 다릅니다. 대부분의 경우 Java 기반 앱을 실행하고 있다는 사실과 분리하려고합니다. 올바른 시작 작업 (시작 메뉴 항목 작성, 실행 프로그램, 프로그램 추가 / 제거 등록 등)을 수행하고 이미 Java 런타임을 번들로 제공하는 기본 설치 프로그램을 제공하십시오 (사용자는이를 알거나 신경 쓸 필요가 없습니다). 교차 플랫폼 설치 도구 인 BitRock InstallBuilder 를 제안하고 싶습니다.. Java 기반은 아니지만 일반적으로 Java 응용 프로그램을 패키지하는 데 사용됩니다. Ant와 쉽게 통합 될 수 있으며 Unix / Linux / Mac 및 다른 방법으로 Windows 설치 프로그램을 빌드 할 수 있습니다. 생성 된 설치 프로그램은 기본 설치 프로그램이므로 대상 시스템에 자체 추출 단계 또는 JRE가 이미 필요하지 않으므로 설치 프로그램이 더 작고 두통이 줄어 듭니다. 또한 오픈 소스 프로젝트에 대한 무료 라이센스가 있다고 언급하고 싶습니다.
실행 파일은 최상이지만 플랫폼에 제한이 있습니다. 예 를 들어 리눅스 에서는 gcj : http://gcc.gnu.org/java/ 를 사용하여 실행 파일을 생성하고 launch4j : http://launch4j.sourceforge.net/ 을 사용하여 Windows 실행 파일을 생성 하십시오 . 리눅스에서 패키징하기 위해 rpm이나 deb 패키저를 사용할 수 있습니다. win32의 경우 http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System을 시도하십시오 .
실제 GUI를 사용하는 최종 사용자 응용 프로그램 인 경우 프로그램 (Java)을 작성한 언어를 무시하고 선택한 각 플랫폼에 대해 기본 설치 프로그램을 사용해야합니다. Mac 사용자는 .dmg를 원하며 Windows에서는 .msi 또는 .exe 설치 프로그램을 사용하는 것이 좋습니다. Windows에서는 InstallShield 또는 InstallAnywhere보다 불쾌감을 줄 수 있기 때문에 NullSoft의 NSIS를 선호합니다. OSX에서는 이미 존재하는 JVM을 신뢰할 수 있습니다. Windows에서는 필요한 경우이를 확인하고 설치해야합니다. Linux 사용자는 Java GUI 응용 프로그램을 실행하지 않으며 그 중 일부는 실행 가능한 .jar로 수행 할 작업을 알고 있습니다.
NSIS (Nullsoft Scriptable Installer System)를 직접 사용하지는 않았지만 필요한 JRE가 대상 시스템에 설치되어 있는지 여부를 확인하는 설치 스크립트가 있습니다.
코드 예제 및 Real World Installers 페이지에서 다음과 같은 많은 샘플 스크립트를 사용할 수 있습니다 .
(실제로 스크립트를 사용하지 않았으므로 보증으로 사용하지 마십시오.)
프로젝트와 그 종속성을 단일 jar 파일로 패키지화하는 방법이 필요했습니다.
Maven2 Assembly 플러그인을 사용하여 필요한 것을 찾았습니다. Maven2 Assembly plugin
이것은 one-jar 의 기능을 복제 한 것으로 보이지만 추가 구성이 필요하지 않습니다.
간단한 Java 앱의 경우 Jar를 사용하고 싶습니다. 사용자가 클릭 (Windows) 할 수있는 하나의 파일을 배포하는 것은 매우 간단합니다.
java -jar jarname.jar
IMHO, jar는 단순성이 주요 요구 사항 인 경우 갈 길입니다.
나는 일식 RCP 응용 프로그램을 개발합니다. 일반적으로 일식 애플리케이션을 시작하기 위해 실행 가능 실행기가 포함됩니다. 올바른 Java 버전이 사용되도록 / jre 하위 디렉토리의 응용 프로그램 폴더 안에 Java 가상 머신을 포함시킵니다.
그런 다음 사용자 컴퓨터에 설치하기 위해 Inno Setup으로 패키지합니다.
Java 애플리케이션을 배포하는 가장 좋은 방법은 무엇입니까? Java 애플리케이션이 사용자 컴퓨터에 아티팩트를 설치해야하는 경우 어떻게합니까? 좋은 Java 설치 / 패키징 시스템이 있습니까?
내 경험상 ( 다양한 옵션 평가에서 ) install4j 는 좋은 솔루션입니다. 모든 플랫폼에 대한 기본 설치 프로그램을 작성하며 특히 Java 앱 설치에 맞춰져 있습니다. 자세한 내용 은 웹 사이트의 " 기능 "을 참조하십시오 .
그러나 install4j는 상용 도구입니다. 특히 응용 프로그램을 배포하고 일부 아티팩트를 설치하는 것이 비교적 간단하다면 무료 옵션 ( izPack 또는 이미 언급 한 Lauch4j 등 )을 포함한 다른 좋은 옵션이 많이 있습니다 . 그러나 당신은 가장 좋은 방법 을 요구했으며, 현재의 지식으로는 install4j가 특히 더 크거나 더 복잡한 Java (EE) 응용 프로그램을 배포하는 것입니다.
The best answer depends on the platform. For deployment on Windows, I have had good results using a combination of one-jar and launch4j. It did take a little while to set up my build environment properly (ant scripts, mostly) but now it's fairly painless.
Well from my point of view the superior distribution mechanism is to use something like ClickOnce, or WebStart technology. You just deploy the version to the server and it gets automatically to the clients when the version is released. Also the Eclipse RCP platform contains UpdateManager that does what WebStart do, but also much more.
Since I am using Maven2 for building, the deployment is just a piece of cake: copy the built jar to the location on the server, update the jnlp file if needed and you are done.
installanywhere is good but expensive one - i have not found (as) good free one
I would zip the jar file along with other dependent jars, configuration files and documentation along with a run.bat/run.sh. End user should be able unzip it to any location and edit the run.bat if required (It should run without editing in most of the cases). An installer may be useful if you want to create entries in start menu, desktop, system tray etc.
사용자는 압축을 풀고 설치를 시작합니다 (시작 메뉴 항목은 사용하지 마십시오). 그러나 IT 산업 이외의 사람들은 선호도가 다를 수 있습니다. 따라서 응용 프로그램이 개발자 zip-run.bat 경로를 주로 대상으로하고 일반 사용자 용 응용 프로그램을 설치 관리자를 사용하여 설치할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/80105/whats-the-best-way-to-distribute-java-applications
'IT story' 카테고리의 다른 글
`ui-router` $ stateParams vs. $ state.params (0) | 2020.07.26 |
---|---|
브라우저가 요청을 취소 할 때 ASP.NET 웹 API OperationCanceledException (0) | 2020.07.26 |
innerText vs innerHtml vs 레이블 vs 텍스트 vs textContent vs outerText (0) | 2020.07.26 |
ReactJS : 양방향 무한 스크롤링 모델링 (0) | 2020.07.26 |
앞뒤로 검색을 반대로하는 방법? (0) | 2020.07.26 |