OpenJDK mit einer von der GPL zugelassenen proprietären Anwendung bündeln?

16

Ich mache gerade ein Videospiel in Java, das höchstwahrscheinlich über Steam verbreitet wird. Natürlich haben in diesem Fall viele Steam-Benutzer Java noch nicht installiert. In diesem Fall kann ich entweder einen kleinen nativen Launcher verwenden, der dem Benutzer in einem informativen Dialogfeld mitteilt, dass er Java installieren muss, oder einfach meine eigene Java-Laufzeitumgebung (insbesondere OpenJDK 8) mit meinem Spiel bündeln. Mein Spiel wird Closed Source sein, es basiert jedoch auf einer Open Source (BSD-lizenzierten) Spiel-Engine.

Ich habe mir die OpenJDK-Lizenz angesehen. Es ist ein GPL-Projekt, was bedeutet, dass alles, was damit verknüpft ist, auch GPL sein muss. Sie haben jedoch auch die Klassenpfad-Ausnahme. Ich bin nicht sicher, ob der Linking-Teil zutrifft, da mein Code nicht mehr mit ihm verlinkt, als es mit oder ohne Bündelung wäre. Soweit ich weiß, deckt die Klassenpfad-Ausnahme diesen Anwendungsfall nicht ab.

Es gibt eine ähnliche Frage zu Stack Overflow , die sich jedoch auf die Situation bezieht, in der eine Anwendung mit OpenJDK entwickelt wird. Ich beziehe mich auf das Verteilen mit OpenJDK.

john01dav
quelle
4
Haben Sie die OpenJDK-Lizenz gelesen oder nach ähnlichen Fragen gesucht ? Diese Frage ist aktuell, da es um die Lizenzierung Ihrer eigenen Software geht. Wenn Sie jedoch Ihre Forschungsergebnisse teilen, erhalten Sie bessere Antworten.
Ja, habe ich. Ich habe die Frage bearbeitet, um dies widerzuspiegeln.
john01dav
Ich habe diese Frage gelesen und sie beantwortet. Ich bin mir nicht sicher, wie es wirklich mit dieser Frage zusammenhängt, abgesehen davon, dass es sich um ein ähnliches Thema handelt.
john01dav
Muss es OpenJDK sein? Einige andere Java-Runtime-Versionen ermöglichen möglicherweise die Verteilung ihrer Binärlaufzeit, ohne Ihrer Distribution GPL-Begriffe hinzuzufügen. Siehe z. B. java.com/en/download/faq/distribution.xml
Brandin

Antworten:

5

Dies ist eine wichtige Frage, insbesondere wenn Sie die Tatsache berücksichtigen, dass Oracle seine Lizenz- und Vertriebsvereinbarungen ab Java 9, 10 und 11 geändert hat.

JDK -> Java Development Kit.

JDKs sind keine "Laufzeit" -Distribution - Ein JDK ist eine Entwicklerdistribution, die zufällig eine Laufzeit als Teil des Bundles enthält. JDKs sind vom Entwickler nicht "frei vertreibbar", sondern werden an den Entwickler lizenziert. Wenn Sie die EULA für Ihr JDK lesen, werden Sie feststellen, dass die Weiterverteilung eingeschränkt ist.

JRE -> Java Runtime Engine.

Runtime's können (fast immer) kostenlos heruntergeladen und verteilt werden, sofern Sie die EULA für die JRE einhalten.

JDKs und JREs werden separat und unabhängig voneinander lizenziert und vertrieben.

Schließlich müssen Sie wissen, dass Sie im Allgemeinen auch keine "Teile" oder Komponenten eines JDK vertreiben dürfen. Dies bedeutet, dass Sie die JRE nicht aus Ihrem installierten JDK extrahieren und separat verteilen oder bündeln dürfen.

Am besten trennen Sie die Entwicklung von der Bereitstellung.

  • Sie entwickeln auf einem JDK und stellen das Projekt bereit
  • Die Bereitstellung ist von einer JRE abhängig
Greg Patnude
quelle
-1

Nach dem, was ich in der Lizenz gelesen habe, können Sie das Programm kostenlos weiterverteilen oder sogar vertreiben.

Da ich jedoch persönliche Erfahrungen mit der Veröffentlichung eines Java-Spiels habe (allerdings nicht bezahlt), ist es besser, dem Benutzer zu sagen, dass Java Runtime Environment entweder auf der Distributionsquelle erforderlich ist (geben Sie ihnen einen Link zum Java-Download) oder dass er die Anwendung hat Geben Sie dem Benutzer einen Fehler.

Demetrie
quelle
2
Können Sie einige Gründe nennen, warum es besser sein könnte, den Benutzer herunterladen zu lassen?
Zick-Zack-Stern,
3
Nun, ich habe bereits (mehrere) JREs installiert. Jedes Anwendungspaket über 150 MB "nur für den Fall" zu haben, erscheint mir ziemlich sinnlos. Außerdem führt eine app-spezifische JRE zu folgenden Problemen: "Meine JRE weist diese Verbesserungen auf. Warum funktioniert sie in IHRER App nicht?" stackoverflow.com/a/21417887/19746
Piskvor