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.
Odpowiedzi:
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.
źródło
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.
źródło