質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

4709閲覧

[JAVA]自己完結型アプリケーションのパッケージ化について

fkd4650

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2017/01/14 06:23

こんにちは。
Javaの勉強をしている者です。
まだまだ勉強を始めて間もなく、知識が足りなかったり間違っていたり的外れな質問をしていたらすみません。

###実現したいこと
私の開発環境と異なる実行環境でも動く自己完結型パッケージを生成したい。

###経緯・疑問

開発環境は
Windows10(64bit)
JDK ver.8.0.1120.15(64bit)
NetBeans ver.8.2(64bit)
です。

このたび初めて簡単なアプリケーションをつくることができたので、アプリケーションとして配布できる形にしたいと考えています。

できればJREのインストール有無に関係なく実行できるものにしたく、調べた結果解決方法の1つとして自己完結型のアプリケーションにしたら良いということが分かりました。

そのパッケージ化の方法を調べていると、NetBeans公式サイトのネイティブ・パッケージ化のページを読むと、以下のような記載がありました。

「生成されるEXEおよびMSIインストーラはプラットフォーム固有で、EXE/MSIインストール可能パッケージが作成されたターゲットJavaプラットフォームと互換性のあるシステムでのみ実行されます。
(たとえば、EXEまたはMSIインストーラが64ビットJDKがインストールされているマシンで作成された場合、64ビットWindowsがインストールされたマシンで実行する必要があります。)」

上記はつまり、私の開発環境で生成したパッケージは、同じ環境のパソコン以外では動かないという解釈で宜しいでしょうか。
異なる環境で実行できるようにパッケージ化しようとすると、実行環境と同じ環境を用意して作成しないといけないのでしょうか。

###質問
私の開発環境と異なる実行環境でも動く自己完結型アプリケーションを作るにはどうしたら良いでしょうか。

ビルドする際に実行環境に合わせた設定をすれば良いのであれば有難いですし、なにかツールを使って実現できるのであればそれでも助かります。それ以外の解決方法でも是非とも教えて頂きたいです。

どなたかご助力の程、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己完結型アプリケーションのことですね。

異なる環境で実行できるようにパッケージ化しようとすると、実行環境と同じ環境を用意して作成しないといけないのでしょうか。

下記3点について開発環境と実行環境で条件がクリアされれば、他は違ってもOKです。

・OSの種類(Windows/Linux/OS X/etc)が同じ
・OSのBit数(32bit/64bit)が同じ
・Javaが実行環境のOSのバージョン(Win:10/8.1/8/7/etc)がサポートをしている

JavaはOS,bit数毎にインストーラが分かれています。
自己完結型パッケージは実行環境へのJREの導入も実施します。JREを導入するためにはOSの種類とBit数が指定されていなければならないので、作成された自己完結型パッケージが使えるプラットフォームには条件が生まれるという話です。
OSの種類やbit数が同じでも、JavaがサポートしていないOSのバージョンではJavaが動けないのでNGですね。
お使いのJDK ver.8.0.1120.15(=Java 8)がWindowsのどのバージョンに対応するかは、こちらで確認できます。

投稿2017/01/15 06:42

Hiroshi-Aoki

総合スコア804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkd4650

2017/01/15 10:41

わかりやすいご説明ありがとうございます。 仕組みについて、理解が進みました。 開発環境が異なるプラットフォームで動くパッケージの生成方法について、引き続き調べたいと思います。
guest

0

Javaなら、gcj というコンパイラがあります。

C/C++みたいにやるようです。

これでコンパイルすると、

使うライブラリ ( system.out.printlnメソッド等があるファイル等 ) をひとつの実行ファイル ( または DLL ) にこめるのです。

なので、サイズが若干大きくなりますが、Windows のビットでは変わらないと思います。

gcj といっても 2種類あるようですが、

gcj +"MinGW" - Google検索

でヒットするページ

MinGW/GCJを使ってみる

等を参考にしてみてください。

exeファイルは 「実行ファイル」といわれます。

なので、私は「Java 実行ファイル 変換」のようにしてたどり着きました。

投稿2017/01/17 06:51

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fkd4650

2017/01/18 11:14

貴重な情報ありがとうございます。 どうやって調べたら良いか分からず困っていたので、大変助かります。 自分でもう少し調べて、また行き詰ってしまったら質問させて頂きたいと思います。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問