자바 프로그램은 jar 포맷으로 배포를 합니다.

 

자바 프로그램을 작성하고 컴파일 하면

JVM(자바 가상머신)에서 동작가능한

바이트코드와 라이브러리 파일 그리고

각종 메타파일 등이 생성됩니다.

이런 정보들이 정확하게 있어야

실행이 가능한데 인텔리제이 등

IDE를 사용하여 jar 파일을 추출할 수 있습니다.

 

jav 파일은 JRE라는 자바실행환경이

설치된 컴퓨터라면 실행이 가능한데

윈도우라면 cmd(명령 프롬프트)에서

java -version 의 명령어를 입력하여

설치 여부를 확인할 수 있습니다.

 

아래와 같이 나오면 jar 파일도 실행가능합니다. 

D:\>java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) Client VM (build 25.311-b11, mixed mode)

jar 파일 실행시에는 -jar 옵션을 주면 됩니다.

 

아래의 명령어 처럼 실행합니다.

D:\>java -jar test.jar

이것도 편리하지만 명령프롬프트를 전혀

사용하지 않는 일반 유저들에게 배포할 때는?

그냥 윈도우의 실행파일인 exe 포맷으로

주는게 제일 좋을 것 입니다.

 

프로그램을 개발하는 코딩러들에겐

저것이 어렵지 않은 실행법이지만

코딩을 모르는 사람들에겐 큰 벽이지요.

 

 

그럴때는 추출한 jar 파일을 exe로

변환하기 위해 Launch4j를 사용합니다.

자바 프로그램 exe 파일을 만들기 위한

여러 프로그램이 있는데 Launch4j는

일단 무료에 상업적으로 이용해도 되고

생성된 exe 파일이 가벼운 등

다양한 장점이 있습니다.

 

jar 파일을 네이티브 윈도우 실행파일로

래핑하여 자연스러운 윈도우 앱 처럼

동작이 가능합니다. 소스포지의 Features에

따르면 윈도우, 리눅스, 맥OS에서

래핑하는게 가능하다고 합니다.

(이 포스팅에서는 윈도우로 테스트합니다)

 

아래의 사이트의 좌측 메뉴에

download 를 클릭하면 다운로드

받는 페이지가 나옵니다.

윈도우라면 설치 버전과 zip 버전

둘 중 하나를 다운로드 후 설치합니다.

 

Launch4j - Cross-platform Java executable wrapper (sourceforge.net)

 

Launch4j - Cross-platform Java executable wrapper

Cross-platform Java executable wrapper Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executables. The executable can be configured to search for a certain JRE version or use a bundled one

launch4j.sourceforge.net

 

jar 파일 만들기

인텔리제이로 테스트 해보겠습니다.

우선 새로운 프로젝트를 만듭니다.

이때 JDK 설정이 조금 성가시게 합니다만,

여기서는 OpenJDK 계열인 Amazon

corretto 1.8을 선택해 보겠습니다.

 

Create project from template 으로

Command Lina App 을 기본으로 생성합니다.

(콘솔이나 GUI 모두 exe 파일로 변경이 됩니다.)

 

뭐 Hello Wolrd 같은 적당한 코드를

넣어보겠습니다.

 

자바 프로그램

 

File -> Project Structure -> Artifacts

-> Jar -> From modules with dependencies

 

를 선택하고 Main Class를 선택해줍니다.

 

 

다시 소스코드로 돌아와서

 

build -> build artifact -> Build

를 클릭하면 왼쪽 탐색기의 out

폴더가 생기고 jar 파일이 생성됩니다.

오른쪽 마우스 클릭 후에 Open in Explorer로

jar 파일이 있는 폴더로 갑니다.

 

이것을 복사해서 적당한 폴더에 놓습니다.

 

이제 Launch2j 를 실행하여 jar 파일을 찾습니다.

 

아래 jar 파일은 jar 파일 위치를

Output file은 exe 파일을 만들 위치입니다.

 

Header 부분에는 GUI 프로그램이면

GUI, 콘솔이면 Console 을 선택합니다.

Single instance는 한개의 인스턴스를

사용할지 여부를 결정합니다.

(그냥 놔두면 동시에 같은 프로그램을

여러개 실행할 수 있다.)

 

JRE는 배포하려는 컴퓨터에 설치되어

있어야 합니다. 특정 JRE 버전을

번들할 수도 있고 최소 버전을 설정할 수

있는데 여기서 호환성 문제가

많이 발생하는 것 같습니다.

 

컴파일러와의 버전을 맞추면서

개별적으로 체크를 해봐야합니다.

 

위에서 컴파일을 Amazon의 OpenJDK

1.8.0 버전으로 했으니 최소 버전을

1.8.0 으로 적어줍니다.

 

나머지 설정은 건드리지 않고

위의 톱니바퀴 버튼을 눌러서

컨피그 파일 이름을 정하면

exe 파일이 생성됩니다.

 

아래와 같이 응용 프로그램이 설치된 것을

확인할 수 있습니다. jar 파일에 비해서는

많이 늘었지만 여전히 36KB라서 가볍습니다.

JRE가 배포할 시스템에 설치되어 있어야

한다는 점은 같지만 요즘은 일반 데스크탑

앱에서도 거의 자바를 많이 사용하니까

일반적인 JRE 버전에서 돌아가도록

적당히 버전을 맞추도록 합니다.

 

JRE가 안깔려 있는 시스템이나

특정한 버전의 JRE를 꼭 사용해야 한다면

번들하는 방법이 있습니다만,

그렇게 되면 뭔가 배보다 배꼽이

더 큰 느낌이 듭니다.

(아마존 OpenJDK의 JRE만 해도

50메가 정도 합니다.)

 

 

 

cmd 에서 exe 파일이 잘 실행됩니다.

test.zip
0.03MB

 

크로스 플랫폼이라 윈도우 뿐 아니라

맥OS와 리눅스에서도 유용하게

사용할 수 있을겁니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band