Jaka jest różnica między JDK a JRE?


925

Jaka jest różnica między JDK a JRE?

Jakie są ich role i kiedy powinienem użyć jednego lub drugiego?


12
Miłą i zwięzłą odpowiedź na to pytanie można znaleźć na stronie: java.com/en/download/faq/techinfo.xml
Akshay Lokur


5
@kenorb na podstawie znaczników czasu, połączone pytanie wydaje się być duplikatem tego.
Ungeheuer

Odpowiedzi:


1222

Środowisko JRE to środowisko wykonawcze Java . Jest to pakiet wszystkiego, co niezbędne do uruchomienia skompilowanego programu Java, w tym Java Virtual Machine (JVM), Java Class Library, javapolecenie i inna infrastruktura. Nie można go jednak używać do tworzenia nowych programów.

JDK jest Java Development Kit , w pełni funkcjonalny SDK for Java. Ma wszystko, co ma JRE, ale także kompilator ( javac) i narzędzia (takie jak javadoci jdb). Jest w stanie tworzyć i kompilować programy.

Zazwyczaj, jeśli zależy ci tylko na uruchamianiu programów Java na komputerze, instalujesz tylko środowisko JRE. To wszystko czego potrzebujesz. Z drugiej strony, jeśli planujesz programować w Javie, musisz zamiast tego zainstalować JDK.

Czasami, nawet jeśli nie planujesz programowania Java na komputerze, nadal musisz zainstalować JDK. Na przykład, jeśli wdrażasz aplikację internetową za pomocą JSP, technicznie po prostu uruchamiasz programy Java na serwerze aplikacji. Dlaczego więc potrzebujesz JDK? Ponieważ serwer aplikacji przekonwertuje JSP na serwlety Java i musi użyć JDK do skompilowania serwletów. Jestem pewien, że jest więcej przykładów.


4
Następnie, gdy używamy zewnętrznych słoików, wdrażamy je w jre / lib / ext / .. Dlaczego więc?
i2ijeya,

2
Istnieje kilka słoików przeznaczonych specjalnie jako rozszerzenia Java; mogą i powinny być umieszczone w lib / ext. Ale umieszczanie starych słoików aplikacji nie jest tym, do czego przeznaczony jest ten katalog; jest to nadużycie mechanizmu rozszerzenia i może później powodować problemy.
Carl Smotricz,

Pracowałem nad JExcel API i poprawnie ustawiłem ścieżkę klasy i nadal istnieje problem. Więc wdrożyłem go w folderze tlib / ext, co potem dobrze działa? Więc jaki byłby powód?
i2ijeya,

3
Nie mam informacji, aby być całkowicie pewnym, ale domyślam się, że albo tak naprawdę nie ustawiłeś poprawnie ścieżki klasy, albo ustawiłeś ścieżkę klasy dla innego modułu ładującego klasy niż ten, który skończył się użyciem twojego kodu. Tym, co odróżnia lib / ext od rozszerzenia classpath, jest to, że lib / ext wpłynie na każdą aplikację Java korzystającą z tego konkretnego środowiska JRE - jest bardziej niezawodny niż ustawianie ścieżki klasy.
Carl Smotricz,

Kilka tygodni temu doświadczyłem dość poważnej awarii, która została naprawiona przez zmianę moich zmiennych środowiskowych JAVA_HOME i Path tak, aby odwoływały się do środowiska JRE zamiast do JDK. W jakim przypadku aplikacja działałaby przy użyciu środowiska JRE i nie działałaby z JDK? Chyba powinienem otworzyć nowe pytanie. Co ciekawe, od wersji 1.6 środowisko JRE jest dołączone do instalacji JDK, ale rozpakowuje się na tym samym poziomie co folder JDK, natomiast w wersji 1.5 i wcześniejszej folder JRE znajduje się w JDK. BTW: Dobra odpowiedź!
Jesse Ivy

143

Powyższa odpowiedź (autorstwa Pablo) jest bardzo słuszna. To tylko dodatkowe informacje.

JRE jest, jak sama nazwa wskazuje, jest środowisko . Zasadniczo jest to zbiór katalogów z plikami związanymi z Javą, a mianowicie:

  • bin/zawiera programy wykonywalne Java. Najważniejsze jest java(i również w systemie Windows javaw), które uruchamia JVM. Istnieją również inne narzędzia, takie jak keytooli policytool.
  • conf/ przechowuje edytowalne przez użytkownika pliki konfiguracyjne dla ekspertów Java.
  • lib/ma dużą liczbę plików pomocniczych: niektóre .jars, pliki konfiguracyjne, pliki właściwości, czcionki, tłumaczenia, certyfikaty itp. - wszystkie „ozdoby” Java. Najważniejszy jest modulesplik zawierający .classpliki standardowej biblioteki Java.
  • Na pewnym poziomie standardowa biblioteka Java musi wywoływać kod macierzysty. W tym celu środowisko JRE zawiera niektóre pliki .dll(Windows) lub .dylib(macOS) lub .so(Linux) w ramach bin/lub lib/z obsługiwanym, specyficznym dla systemu rodzimym kodem binarnym.

JDK jest również zestaw katalogów. Jest to nadzbiór JRE, z kilkoma dodatkami:

  • bin/został rozszerzony o narzędzia programistyczne. Najważniejszym z nich jest javac; inni należą jar, javadoci jshell.
  • jmods/, który przechowuje pliki JMOD dla biblioteki standardowej, został dodany. Te pliki umożliwiają używanie standardowej biblioteki jlink.

1
Czy to oznacza, że ​​mogę ustawić moje zmienne ścieżki na JDK i to wszystko?
Brady

3
@Brady: Tak, tak mi się wydaje. Przynajmniej mi to odpowiada. Jako programista zasadniczo ignoruję środowisko JRE. Jeśli istnieją szczególne przypadki, w których szczególnie chcesz środowiska JRE, nie jestem ich świadomy.
Carl Smotricz

Środowisko JRE może działać tylko ze skompilowanym kodem Java, prawda?
SexyBeast

2
@Cupidvogel, ponieważ w środowisku JRE nie ma kompilatora, myślę, że można tak powiedzieć. Środowisko JRE służy do uruchamiania (skompilowanego) kodu Java, a JDK zapewnia również narzędzia do jego rozwijania.
Carl Smotricz

1
Więc w zasadzie JDK zawiera kompilator (taki jak Javac) do kompilacji kodu, JRE (system wykonawczy) do wykonania skompilowanego kodu, a także inne narzędzia, które mają ułatwić życie programistom w tworzeniu łatwego, poprawnego? AFAIU, tylko Javac i JRE są tutaj naprawdę niezbędnymi narzędziami. Dlaczego więc wiele razy instalacje oprogramowania i aktualizacje wymagają obecności JDK?
SexyBeast

130

wprowadź opis zdjęcia tutaj

JDK jest nadzbiorem JRE i zawiera wszystko, co jest w JRE, a także narzędzia, takie jak kompilatory i debuggery niezbędne do tworzenia apletów i aplikacji. JRE zapewnia biblioteki, wirtualną maszynę Java (JVM) i inne komponenty do uruchamiania apletów i aplikacji napisanych w języku programowania Java.


3
Fajny schemat! Jestem trochę zdezorientowany, że polecenie java jest przedstawione poza środowiskiem JRE, co jest nieprawidłowe. Nie rozumiem, dlaczego istnieją osobne pliki dla komendy java, gdy jest zainstalowany JDK, które są co najmniej identyczne. W jakim przypadku aplikacja działałaby przy użyciu środowiska JRE i nie działałaby z JDK? Doświadczyłem tego niedawno i prawdopodobnie powinien wrócić do przeszłości, aby się powielić i dojść do sedna ...
Jesse Ivy

104

Mówiąc ogólnie: JDK jest dziadkiem, JRE jest ojcem, a JVM jest ich synem. [tj. JDK> JRE> JVM]

JDK = JRE + Narzędzia programistyczne / debugujące

JRE = JVM + klasy pakietów Java (takie jak util, matematyka, język, awt, swing itp.) + Biblioteki wykonawcze.

JVM = system ładujący klasy + obszar danych wykonawczych + silnik wykonawczy.

Innymi słowy, jeśli jesteś programistą Java, będziesz potrzebować JDK w swoim systemie, a ten pakiet będzie również zawierał JRE i JVM, ale jeśli jesteś zwykłym użytkownikiem, który lubi grać w gry online, będziesz potrzebował tylko JRE i ten pakiet nie będzie miał JDK w tym.

JVM:

Java Virtual Machine (JVM) jest maszyna wirtualna, która uruchomić Kod bajtowy Javy. JVM nie rozumie kodu źródłowego Java, dlatego kompilujesz swoje pliki * .java w celu uzyskania plików * .class zawierających kody bajtowe zrozumiałe dla JVM. Jest to także jednostka, która pozwala Javie być „przenośnym językiem” (pisz raz, uruchamiaj w dowolnym miejscu). Rzeczywiście istnieją specyficzne implementacje JVM dla różnych systemów (Windows, Linux, MacOS, zobacz listę wikipedii ..), celem jest to, że przy tych samych kodach bajtowych wszystkie dają takie same wyniki.

JDK i JRE

Aby wyjaśnić różnicę między JDK a JRE, najlepiej jest przeczytać dokumentację Oracle i zapoznać się ze schematem:

Java Runtime Environment (JRE)

Środowisko Java Runtime Environment (JRE) zapewnia biblioteki, wirtualną maszynę Java i inne komponenty do uruchamiania apletów i aplikacji napisanych w języku programowania Java. Ponadto dwie kluczowe technologie wdrażania są częścią JRE: wtyczka Java, która umożliwia uruchamianie apletów w popularnych przeglądarkach; oraz Java Web Start, który wdraża samodzielne aplikacje w sieci. Jest także podstawą technologii Java 2 Platform, Enterprise Edition (J2EE) do opracowywania i wdrażania oprogramowania dla przedsiębiorstw. Środowisko JRE nie zawiera narzędzi i narzędzi, takich jak kompilatory lub debugery do tworzenia apletów i aplikacji.

Java Development Kit (JDK)

JDK jest nadzbiorem środowiska JRE i zawiera wszystko, co znajduje się w środowisku JRE, a także narzędzia, takie jak kompilatory i debuggery niezbędne do tworzenia apletów i aplikacji.

Pamiętaj, że Oracle nie jest jedynym, który udostępnia JDK.

Proces kompilacji JIT (dzięki uprzejmości: dokumentacja Oracle)

JDK> JRE> JVM


Kiedy mówisz „kompiluj” lub „kompilator”, jest to bardzo mylące w tym kontekście, do którego się odwołujesz: przekształcanie kodu źródłowego java w kod bajtu java lub przekształcanie kodu bajtu java w kod maszynowy.
OrangeSherbet

Miły! Lubię analogię do dziadka, ojca i syna. : D
Emzor

Tak, dzięki, bardzo łatwo jest zrozumieć, kto nie jest zbyt dobrze zaznajomiony z tymi warunkami.
Jaimin Patel

25

Z oficjalnej strony Java ...

JRE (środowisko Java Runtime):

  • Jest to implementacja wirtualnej maszyny Java *, która faktycznie wykonuje programy Java.
  • Java Runtime Environment to wtyczka potrzebna do uruchamiania programów Java.
  • Środowisko JRE jest mniejsze niż JDK, więc potrzebuje mniej miejsca na dysku.
  • Środowisko JRE można pobrać / obsługiwać bezpłatnie ze strony https://www.java.com
  • Zawiera JVM, biblioteki Core i inne dodatkowe komponenty do uruchamiania aplikacji i apletów napisanych w Javie.

JDK (Java Development Kit)

  • Jest to pakiet oprogramowania, którego można używać do tworzenia aplikacji opartych na Javie.
  • Java Development Kit jest potrzebny do tworzenia aplikacji Java.
  • JDK potrzebuje więcej miejsca na dysku, ponieważ zawiera środowisko JRE wraz z różnymi narzędziami programistycznymi.
  • JDK można pobrać / obsługiwać bezpłatnie ze strony https://www.oracle.com/technetwork/java/javase/downloads/
  • Zawiera JRE, zestaw klas API, kompilator Java, Webstart i dodatkowe pliki potrzebne do pisania apletów i aplikacji Java.

23

Jedna różnica z perspektywy debugowania:

Aby debugować do klas systemu Java, takich jak String i ArrayList, potrzebujesz specjalnej wersji środowiska JRE, która jest kompilowana z „informacjami debugowania”. Środowisko JRE zawarte w pakiecie JDK udostępnia te informacje, ale zwykłe środowisko JRE nie. Zwykłe środowisko JRE nie zawiera tych informacji, aby zapewnić lepszą wydajność.

Co to są informacje debugujące? Oto krótkie wyjaśnienie zaczerpnięte z tego postu na blogu :

Nowoczesne kompilatory wykonują całkiem niezłą robotę, konwertując kod wysokiego poziomu, z jego ładnie wciętymi i zagnieżdżonymi strukturami kontrolnymi oraz dowolnie wpisywanymi zmiennymi w duży stos bitów zwany kodem maszynowym (lub kodem bajtowym w przypadku Javy), którego jedynym celem jest działać tak szybko, jak to możliwe na docelowym procesorze (wirtualnym procesorze maszyny JVM). Kod Java jest konwertowany na kilka instrukcji kodu maszynowego. Zmienne są wpychane w dowolne miejsce - do stosu, do rejestrów lub całkowicie zoptymalizowane. Struktury i obiekty nawet nie istnieją w wynikowym kodzie - są jedynie abstrakcją, która jest tłumaczona na sztywne przesunięcia do buforów pamięci.

Skąd więc debugger wie, gdzie się zatrzymać, gdy poprosisz go o przerwanie przy wejściu do jakiejś funkcji? Jak udaje mu się znaleźć to, co chcesz pokazać, gdy pytasz o wartość zmiennej? Odpowiedź brzmi - informacje debugujące.

Informacje debugowania są generowane przez kompilator wraz z kodem maszynowym. Jest to reprezentacja związku między programem wykonywalnym a oryginalnym kodem źródłowym. Informacje te są kodowane we wstępnie zdefiniowanym formacie i przechowywane wraz z kodem maszynowym. Wiele takich formatów zostało wymyślonych na przestrzeni lat dla różnych platform i plików wykonywalnych.


9

JVM, JRE, JDK - wszystko to stanowi trzon języka Java. Każdy element działa osobno. JDK i JRE istnieją fizycznie, ale JVM jest maszyną abstrakcyjną, co oznacza, że ​​fizycznie nie istnieje.

JVM to podsystem JDK i JRE, który służy do sprawdzania kodu pośredniego zwanego „kodem bajtowym”. Najpierw ładuje „plik klasy” (z rozszerzeniem .c) wygenerowany przez kompilator Java (javac) za pośrednictwem modułu ładującego klasy podsystemu JVM i lokalizacji sklasyfikowanej pamięci (rejestr klasy, stosu, stosu i rejestrów komputera) zgodnie z ich użyciem. Następnie sprawdza cały kod bajtowy, aby upewnić się, że został on zwrócony w Javie, a sieć ma dostęp do całej pamięci. Praca tłumacza rozpoczyna się po sprawdzeniu całego programu wiersz po wierszu. Wyniki są wreszcie wyświetlane w konsoli / przeglądarce / aplikacji za pośrednictwem środowiska JRE (Java Runtime Environment), które udostępnia środowisko wykonawcze.

JRE jest również podsystemem JDK, który zapewnia narzędzia wykonawcze, takie jak JVM, klasy, pliki wykonywalne, takie jak plik .jar itp.

JDK oznacza Java Development Kit. Zawiera wszystkie niezbędne komponenty używane w programowaniu Java, takie jak klasa, metoda, swing, AWT, pakiet, Java (interpreter), javac (kompilator), appletviewer (przeglądarka aplikacji apletowej) itp. Podsumowując, zawiera każdy plik wymagany do opracowania aplikacje, niezależne lub internetowe.


8

JRE

JRE jest akronimem środowiska Java Runtime Environment, służy do zapewnienia środowiska wykonawczego, jest implementacją JVM, istnieje fizycznie, zawiera zestaw bibliotek i innych plików używanych przez JVM w czasie wykonywania.

JDK

JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +.

Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

Zwykle, gdy zależy Ci tylko na uruchamianiu programów Java w przeglądarce lub komputerze, instalujesz tylko środowisko JRE. To wszystko czego potrzebujesz. Z drugiej strony, jeśli planujesz programować w Javie, będziesz także potrzebował JDK.


8

JVM, JRE i JDK są zależne od platformy, ponieważ konfiguracja każdego systemu operacyjnego jest inna. Ale Java jest niezależna od platformy.

Java Virtual Machine (JVM) to system wykonawczy, który wykonuje kod bajtowy Java.

JRE to środowisko (biblioteki standardowe i JVM) wymagane do uruchamiania aplikacji Java.

JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.


7

Oto prosta odpowiedź bezpośrednio z Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

Środowisko wykonawcze Java SE (JRE)

Środowisko JRE zapewnia biblioteki, maszynę wirtualną Java i inne składniki niezbędne do uruchamiania apletów i aplikacji napisanych w języku programowania Java. To środowisko wykonawcze można redystrybuować za pomocą aplikacji, aby stały się wolnostojące.

Java SE Development Kit (JDK)

JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.


7

Jeśli chcesz uruchamiać programy Java, ale ich nie rozwijać, pobierz środowisko wykonawcze Java lub środowisko JRE. Jeśli chcesz je opracować, pobierz zestaw Java Development Kit lub JDK

JDK

Nazwijmy się JDK to zestaw, który zawiera te rzeczy, które są potrzebne do tworzenia i uruchamiania aplikacji Java.

JDK jest podane jako środowisko programistyczne do budowania aplikacji, komponentów i apletów.

JRE

Zawiera wszystko, czego potrzebujesz do uruchamiania aplikacji Java w skompilowanej formie. Nie potrzebujesz żadnych bibliotek ani innych rzeczy. Wszystkie potrzebne rzeczy są skompilowane.

Środowiska JRE nie można używać do programowania, służy tylko do uruchamiania aplikacji.


6

JVM (Java Virtual Machine) to maszyna abstrakcyjna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.

JRE jest akronimem środowiska Java Runtime Environment, służy do zapewnienia środowiska wykonawczego, jest implementacją JVM, istnieje fizycznie, zawiera zestaw bibliotek i innych plików używanych przez JVM w czasie wykonywania

JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +


6

Jeśli jesteś programistą Java , będziesz potrzebować JDK w swoim systemie, a ten pakiet będzie również zawierał JRE i JVM, ale jeśli jesteś zwykłym użytkownikiem, który lubi grać w gry online, będziesz potrzebował tylko JRE, a ten pakiet nie będzie zawierał JDK. .

JVM

JVM (Java Virtual Machine) to maszyna abstrakcyjna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.

Maszyny JVM są dostępne dla wielu platform sprzętowych i programowych. JVM, JRE i JDK są zależne od platformy, ponieważ konfiguracja każdego systemu operacyjnego jest inna. Ale Java jest niezależna od platformy.

JRE

Zawiera wszystko, czego potrzebujesz do uruchamiania aplikacji Java w skompilowanej formie. Nie potrzebujesz żadnych bibliotek ani innych rzeczy. Wszystkie potrzebne rzeczy są skompilowane.

Środowiska JRE nie można używać do programowania, służy tylko do uruchamiania aplikacji.

Java SE Development Kit (JDK)

JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.

(Źródła: GeeksForGeeks Pytania i odpowiedzi , Omówienie platformy Java )


Wystąpił plagiat z wielu stron (dla sekcji JVM i JDK). Następnym razem przytocz swoje źródła - to nie jest twoje oryginalne dzieło.
Jonathan Lam

6

Jasne zrozumienie tych terminów (JVM, JDK, JRE) jest niezbędne do zrozumienia ich użycia i różnic.

JVM Java Virtual Machine (JVM) to system wykonawczy, który wykonuje kod bajtowy Java. JVM jest jak wirtualny komputer, który może wykonywać zestaw skompilowanych instrukcji i manipulować lokalizacjami pamięci. Gdy kompilator Java kompiluje kod źródłowy, generuje wysoce zoptymalizowany zestaw instrukcji o nazwie bytecode w pliku .class. JVM interpretuje te instrukcje kodu bajtowego i konwertuje je na kod specyficzny dla maszyny w celu wykonania.

JDK Java Development Kit (JDK) to środowisko programistyczne, którego można używać do programowania i uruchamiania aplikacji Java. Zawiera JRE i zestaw narzędzi programistycznych, takich jak kompilator Java, interpreter, przeglądarka apletów i przeglądarka dokumentów. JDK jest implementowany przez platformy Java SE, Java EE lub Java ME.

JRE Środowisko Java Runtime Environment (JRE) jest częścią JDK, która zawiera JVM, klasy podstawowe i kilka bibliotek wspierających tworzenie aplikacji. Chociaż środowisko JRE jest dostępne jako część JDK, można go również pobrać i używać osobno.

Dla pełnego zrozumienia możesz zobaczyć mój blog: Jdk Jre Jvm i różnice


5

jdk jest niezbędny do kompilacji do kodu i konwersji kodu java na kody bajtów, podczas gdy jre jest niezbędny do wykonania kodów bajtów.


5
@Noy: Nie tylko jest to bardzo mało informacji, ale także nie zawiera niczego, czego nie zawierają inne odpowiedzi.
Amos M. Carpenter

5

JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.

JRE to w zasadzie wirtualna maszyna Java, na której działają Twoje programy Java. Zawiera także wtyczki przeglądarki do wykonywania apletów.

JDK to abstrakcyjna maszyna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.

Tak więc w zasadzie JVM <JRE <JDK według @Jaimin Patel powiedział.


5

Po prostu:

JVM to wirtualny kod Java wykonywany na maszynie

JRE to środowisko (biblioteki standardowe i JVM) wymagane do uruchamiania aplikacji Java

JDK to środowisko JRE z narzędziami programistycznymi i dokumentacją


4

Różnica między JDK a JRE polega na tym, że JDK jest zestawem programistycznym dla java, podczas gdy JRE to miejsce, w którym uruchamiasz swoje programy.


4

załóżmy, że jeśli jesteś programistą, twoją rolą jest zarówno programowanie, jak i wykonywanie programu. więc musisz mieć środowisko do programowania i wykonywania, które zapewnia JDK.

załóżmy, że jeśli jesteś klientem, nie musisz się martwić o rozwój. Wystarczy, że potrzebujesz środowiska do uruchamiania programu i uzyskiwania tylko wyników, które zapewnia JRE.

JRE wykonuje aplikację, ale JVM odczytuje instrukcje wiersz po wierszu, więc jest to tłumacz.

JDK = JRE + narzędzia programistyczne

JRE = JVM + klasy bibliotek


2

JRE

JRE to skrót od Java Runtime Environment. Jest używany do zapewnienia środowiska wykonawczego. Jest to implementacja JVM. Fizycznie istnieje. Zawiera zestaw bibliotek + inne pliki używane przez JVM w czasie wykonywania.

Wdrożenie JVM jest również aktywnie wydawane przez inne firmy poza Sun Micro Systems.

wprowadź opis zdjęcia tutaj

JDK

JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +.

wprowadź opis zdjęcia tutaj


Zarówno informacje w tekście, jak i grafika zostały przedstawione w innych wcześniejszych odpowiedziach.
Karl Richter
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.