C ++ / Javaを使用して商用目的のソフトウェアを開発する


9

後で販売する予定のプログラムを開発する予定です。私はそれをコーディングする言語を決定しようとしています、そしてC ++またはJavaに絞り込みました。

私は、GNUのGCCおよびOpenJDKに使用されているGPL v2およびv3ライセンスを経験しました(そうです、ある程度の法的事項は理解できますが、すべてを理解できるわけではありません)。しかし、誰もが不明瞭な点が1つあります(これは最初に回答されたものの1つであるIMOです):C ++ / Javaを使用してプログラムを開発し、GCCコンパイラーまたはOpenJDKのコンパイラーを使用してコンパイルした場合、私のプログラムもGPLの下に置くには?

私の知る限り、私はプログラムに任意のライセンスを割り当てる完全な権利を持っていますが、欠点があります。ライセンスには、GPLにあるライブラリにリンクしてはいけないと書かれています。もしそうなら、私は自分のプログラムをGPLでリリースしなければなりません。

今、私はC ++ / Javaの何がライブラリと見なされるのかわからないので、C ++の通常のもの(iostream、リスト、マップなど)または標準JDKの一部として利用可能な通常のJavaクラス/インターフェースを使用する場合6配布(文字列、リスト、マップなど)、これは「ライブラリへのリンク」を構成しますか?


1.この辺りでは法的助言は行いません。2.「C ++ / Java」とは何ですか?3.周りを見渡して、Javaで書かれた何千もの商用ソフトウェア製品を見てください。その多くはJNIコンポーネントを備えています。
bmargulies

1
C ++ / Javaの/は、「or」の省略形として使用されているだけで、完全に有効な英語です。
Robin Green

これはopensource.stackexchange.comに対する質問のように聞こえます。(まだ回答されていない場合)
Kevin Krumwiede

回答:


13

C ++ / Javaを使用してプログラムを開発し、GCCコンパイラーまたはOpenJDKのコンパイラーを使用してコンパイルした場合、プログラムをGPLの下に置くことなく、それを販売できますか?

はい。GPLは特に、プログラムの実行の出力を除外します。

プログラムからの出力は、その内容がプログラムに基づく作品を構成する場合にのみカバーされます(プログラムの実行によって行われたものとは無関係)。

つまり、プログラムにGCCやその他のGPLのビットを含める場合は、GPLにする必要があります。そうでない場合は、オブジェクトコードがGPLコンパイラによって生成されたという事実は、GPLにする必要があるかどうかには関係ありません。 。

リンクするすべての標準言語ライブラリにはGPLが適用されていないか、GPLが適用されていますが、独自のソフトウェアを変更しない限り、それらにリンクできるようにする特別な例外があります。C ++の場合、私はlibgcc、glibcおよびlibstdc ++を意味します。Javaの場合、JREに含まれるすべてのライブラリを意味します。

技術的には、とにかく合法的にGPLソフトウェアを販売できますが、そうすることでお金を稼ぐ人はほとんどいません。


LGPL(Lesser GPL)を使用すると、アプリケーションをGPLdにすることなく、アプリケーションをリンクできます。一方、GPLライブラリは感染力があります。しかし、あなたは正しいです。コンパイラーの出力はGPL用語から明示的に除外されています。
Berin Loritsch

標準言語ライブラリを変更するとどうなりますか?できますか?私のプログラムのライセンスはどうなりますか?
ピオトレック2013

その後、例外は適用されず、関連するライセンスの完全な条件に従う必要があります。また、Javaの場合は商標の影響もあります。JavaまたはOpenJDKをドキュメントで使用したり、使用している場合は宣伝したりしないでください(ただし、OracleとGoogleの訴訟を参照)。
ロビングリーン

8

GCCとOpenJDKの両方には、明示的な例外があります。

…GCCを使用してプログラムをコンパイルすると、GCCは特定のGCCヘッダーファイルとランタイムライブラリの一部をコンパイルされたプログラムと組み合わせる場合があります。この例外の目的は、非GPL(独自仕様を含む)プログラムをコンパイルして、この例外でカバーされるヘッダーファイルとランタイムライブラリを使用できるようにすることです。…

…仮想マシン、Java言語のコンパイラ、またはJavaプログラミング言語で記述されたプログラムのコアクラスライブラリとしてGNUクラスパスを変更せずに使用しても、それらのプログラムを直接配布するためのライセンスには影響しません…



0

OpenJDKはGPLに準拠していますが、ライブラリへのリンクは例外です。http://en.wikipedia.org/wiki/OpenJDK

OpenJDKクラスを使用すると、私が思うライブラリ(rt.jar)にリンクすることになります。

その意味でのライブラリは、Javaの観点からすると、確かに依存関係のjar、war、classなどです。とにかく、Javaアプリを合法的に販売できると確信しています-Oracle /サンは訴訟を起こしていない。


libstdc ++についても同様です。例外もあります。
ロビングリーン

rt.jarとlibstdc ++はどちらも、GPLではない仕様の実装です。基本的に、アプリケーションをGPLに対応していないバージョンのlibstdc ++にリンクした場合、両方のバージョンで同じように機能します(仕様が適切に実装されている場合)。プラットフォームがライブラリのGPLバージョンを動的にロードするという事実は、アプリにはカウントされません。あなたはプラットフォーム標準に書いて、あなたが望むどんなライセンスの下でもカバーされます。
Berin Loritsch

0

心配しないでください。これはコンピュータプログラミングの質問、または少なくともプログラマに密接に関係する質問です。

私が知っていることから、GPLコードにリンクされたソフトウェアを作成する場合、プログラムを配布する場合はソースコードをリリースする必要があります。

つまり、コードをsourceforgeにリリースする必要があるという意味ではありません。ただし、サードパーティからコードを要求された場合は、コードを提供する必要があります。


質問で説明されているアクティビティは他の点で同等であり、GPLコードへのリンクを必要としないため、その点は関係ありません。
ロビン・グリーン

上記の質問:C ++ / Javaを使用してプログラムを開発し、GCCコンパイラーまたはOpenJDKのコンパイラーを使用してコンパイルした場合、プログラムをGPLの下に置くことなく、それを販売できますか?

GPLコードを使用する場合はリリースする必要があることを明確に指定していると思います。

すみません、私は不正確でした-ある意味でGPLされたコードへのリンクが含まれる場合もありますが、たとえばクラスパスの例外が適用されるため、GPLでコードをリリースする必要はありません。
ロビングリーン

ああ、それでは、それについては知りませんでした
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.