トップページ > プログラム > 2016年03月05日 > EYa+CMBk

書き込み順位&時間帯一覧

39 位/192 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000200000000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17 [転載禁止]©2ch.net

書き込みレス一覧

【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17 [転載禁止]©2ch.net
459 :デフォルトの名無しさん[sage]:2016/03/05(土) 07:16:42.80 ID:EYa+CMBk
>>458
>>451は正しいよ。
>QtもJavaもマルチプラットフォームだけど、Javaは一度コンパイルすれば終わり。
>Qtは、各OS毎にコンパイルし直さないといけないし、他のOSでコンパイルが通るとも限らない。

Javaは中間言語インタプリタだから、全OS共通の中間言語ファイル(classファイル)をどのOS用としても配布すればいい。
QtはWindows向けにコンパイルしたものをMac OS Xに配布したって動くわけないから、これは正しい。
ただし、JavaもモバイルOSなど対応しないOSがある。

>QtではLinuxのバイナリ配布がバイナリ互換の問題で難しいが、JavaならLinuxのバイナリ配布が簡単。
>QtでLinuxで多くの人に長く使ってもらおうとなるとソース配布が現実的。

LinuxはWindowsで言うDLLみたいなダイナミックリンクライブラリの微妙なバージョン差によって、プログラムが動いたり動かなかったりするので
全ディスり、ディスりの全バージョンごとにバイナリを配布しないとまず動かない。
ソースを配布して、ディストリビューターまたはユーザーにコンパイルしてもらうほうが確実でこの方法が主流。
特定のディストリの特定のバージョンのみ対応として配布すればいいが、動作環境が限られるのが難点。
ダイナミックリンクライブラリごと配布するという技もあるが、サイズが大きいとか、ライブラリのライセンスに従う必要があり面倒とか、
OSをバージョンアップしてもライブラリのバージョンが古いままになるなどの問題がある。
Javaは中間言語ファイルを配布すればよく、こういった問題はない。
QtはLinux対応と言っても、配布したバイナリを長年放置しても動くことない。
Javaは20年前に作ったバイナリが今現在のLinuxでも動く。

長いので分割。次へ >>460
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 17 [転載禁止]©2ch.net
460 :デフォルトの名無しさん[sage]:2016/03/05(土) 07:41:43.76 ID:EYa+CMBk
>>459 からの続き
>>451 は正しい。

>QtはFreeBSDに対応しにくいが、Javaなら簡単。
Qtのホームページがダウンロードできる開発環境にFreeBSDが含まれていない。
JavaはOpenJDKがFreeBSDに対応しているし、別にFreeBSDで開発しなくてもWindowsで開発してWindowsで動く中間言語ファイルを配布すればそれがFreeBSDでも動く。

>QtもJavaも高額料金を払えばAndroid、iOSに対応する。
Qtの無料版(LGPL版)はAndroidとiOSに対応していない。
Javaも無料配布のものは対応していない。
JavaはOracle純正のOracle Mobile Application Framework(MAF)で対応できるが、これって660万円以上する。

>Javaは、逆コンパイルされるのでソース公開しているのとあまり変わらない。
JavaとC#は逆コンパイルを防げない。
難読化もほとんど効果ない。
ソース公開しているつもりでないと使うことは難しい。

>Javaは、機能限定で仕様が違ってもいいのならAndroidの標準の開発環境で無料で使え、RoboVMを使うと無料でiOSのソフトが作れる。
AndroidはJavaのサブセットのプログラムをDalvik VM用(apkファイル)に変換することで動かすことができる。
Dalvik/ARTはJava SEのフル機能が使えるわけではないが、一部であれば使える。
RoboVMを使えばJavaソースからiOSのプログラムを作れるが、これもJava SEのフルセットに対応するものではない。

>QtのLGPL版は無料だけども、LGPLというライセンス制約を受ける。
>Javaで作ったプログラムはライセンス制約を受けない。
LGPLだと、QtライブラリをダイナミックリンクするとLGPL感染して、LGPLライセンスのプログラムしか作れない。
QtでLGPL感染したくなければ、ライブラリをダイナミックリンクできないという制限ができる。
QtライブラリがないとQtで作ったプログラムは動かないから、Qtライブラリを一緒に配布することになるが、LGPLのライセンスに従って
Qtライブラリのソースの配布義務が発生し、面倒くさいことになる。
Javaの場合はこういうことはないが、JREがOSにインストールされていなければならないという制約はある。
Oracle純正のJREを作ったプログラムと一緒に配布することもできるが、LGPLではないのでJREのソース公開義務はない。
通常JREはユーザーが別途インストール


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。