Pakowanie OpenJDK z zastrzeżoną aplikacją dozwoloną przez GPL?

16

Obecnie tworzę grę wideo w Javie, która najprawdopodobniej będzie dystrybuowana przez Steam. Oczywiście wielu użytkowników Steam nie będzie miało zainstalowanej Java w tym przypadku. Jeśli tak się stanie, mogę albo mieć mały natywny program uruchamiający, który pokazuje pouczające okno dialogowe informujące użytkownika, że ​​musi zainstalować Javę, lub po prostu połączyć moje własne środowisko wykonawcze Java (w szczególności OpenJDK 8) z moją grą. Moja gra będzie zamkniętym źródłem, jednak oparta jest na silniku gry typu open source (licencjonowanym BSD).

Przejrzałem licencję OpenJDK. Jest to projekt GPL, co oznacza, że ​​wszelkie powiązania z nim muszą być również GPL. Mają jednak również wyjątek ścieżki klasy. Nie jestem pewien, czy część łącząca ma zastosowanie, ponieważ mój kod nie łączy się z nią tak samo, jak byłby z pakietem lub bez. O ile mi wiadomo, wyjątek klasy nie obejmuje tego przypadku użycia.

Jest to podobne pytanie na przepełnienie stosu , jednak, że odnosi się do sytuacji, w której aplikacja jest rozwijany z OpenJDK, mam na myśli dystrybucję z OpenJDK.

john01dav
źródło
4
Czy przeczytałeś licencję OpenJDK lub szukałeś podobnych pytań ? To pytanie dotyczy tematu, ponieważ dotyczy licencjonowania własnego oprogramowania: dzielenie się badaniami przyciągnie jednak lepsze odpowiedzi.
Tak, mam. Zredagowałem pytanie, aby to odzwierciedlić.
john01dav
Przeczytałem to pytanie i odpowiedzi. Nie jestem pewien, jak to naprawdę ma związek z tym pytaniem, poza byciem na podobny temat.
john01dav
Czy to musi być OpenJDK? Niektóre inne środowiska wykonawcze Java mogą zezwalać na dystrybucję binarnego środowiska wykonawczego bez dodawania warunków GPL do Twojej dystrybucji. Patrz np. Java.com/en/download/faq/distribution.xml
Brandin

Odpowiedzi:

5

To ważne pytanie, zwłaszcza gdy weźmie się pod uwagę fakt, że Oracle zmieniło swoje umowy licencyjne i dystrybucyjne, począwszy od Java 9, 10 i 11.

JDK -> Java Development Kit.

JDK nie są dystrybucją „środowiska wykonawczego” - JDK to dystrybucja dewelopera zawierająca środowisko wykonawcze jako część pakietu. Pliki JDK nie są „swobodnie rozpowszechniane” przez programistę, są one licencjonowane dla programisty. Jeśli przeczytasz umowę EUD dla swojego JDK, zobaczysz, że zawiera ograniczenia dotyczące ponownej dystrybucji.

JRE -> Java Runtime Engine.

Runtime są (prawie zawsze) bezpłatne do pobrania i rozpowszechniania, pod warunkiem, że będziesz przestrzegać warunków EULA dla JRE.

JDK i JRE są licencjonowane i dystrybuowane osobno i niezależnie od siebie.

Na koniec musisz wiedzieć, że generalnie nie możesz dystrybuować „części” lub komponentów JDK - oznacza to, że nie powinieneś rozpakowywać JRE z zainstalowanego JDK i dystrybuować go ani pakować osobno.

Najlepszą praktyką jest oddzielenie programowania od wdrożenia.

  • Rozwijasz się na JDK i wdrażasz projekt
  • Wdrożenie jest zależne od środowiska JRE
Greg Patnude
źródło
-1

Z tego, co przeczytałem w licencji, możesz swobodnie rozpowszechniać program, a nawet pobierać opłaty za jego rozpowszechnianie.

Ale ponieważ mam osobiste doświadczenia z wydaniem gry Java (choć nie jest to płatne), lepiej jest po prostu powiedzieć użytkownikowi, że środowisko Java Runtime Environment jest wymagane w źródle dystrybucji (podaj link do pobrania Java) lub skorzystaj z aplikacji dać użytkownikowi błąd.

Demetria
źródło
2
Czy możesz podać powody, dla których pozwolenie użytkownikowi na pobranie może być lepsze?
ziggystar
3
Cóż, mam już zainstalowane (wiele) środowisk JRE; posiadanie każdego pakietu ponad 150 MB „na wszelki wypadek” wydaje mi się raczej bezcelowe. Ponadto posiadanie specyficznego dla aplikacji środowiska JRE prowadzi do takich problemów: „moje środowisko JRE ma te poprawki, dlaczego nie działa w TWOJEJ aplikacji?” stackoverflow.com/a/21417887/19746
Piskvor opuścił budynek