Apa perbedaan antara JDK dan JRE?


926

Apa perbedaan antara JDK dan JRE?

Apa peran mereka dan kapan saya harus menggunakan satu atau yang lain?


12
Jawaban yang bagus dan ringkas untuk pertanyaan ini dapat ditemukan di: java.com/en/download/faq/techinfo.xml
Akshay Lokur


5
@kenorb berdasarkan cap waktu, pertanyaan yang ditautkan tampaknya merupakan duplikat dari yang ini.
Ungeheuer

Jawaban:


1223

The JRE adalah Java Runtime Environment . Ini adalah paket dari segala yang diperlukan untuk menjalankan program Java yang dikompilasi, termasuk Java Virtual Machine (JVM), Java Class Library, javaperintah, dan infrastruktur lainnya. Namun, itu tidak dapat digunakan untuk membuat program baru.

The JDK adalah Java Development Kit , SDK fitur lengkap untuk Java. Ia memiliki semua yang dimiliki JRE, tetapi juga kompiler ( javac) dan alat-alat (seperti javadocdan jdb). Ia mampu membuat dan menyusun program.

Biasanya, jika Anda hanya peduli menjalankan program Java di komputer, Anda hanya akan menginstal JRE. Itu yang kamu butuhkan. Di sisi lain, jika Anda berencana untuk melakukan pemrograman Java, Anda perlu menginstal JDK sebagai gantinya.

Terkadang, bahkan jika Anda tidak berencana untuk melakukan pengembangan Java di komputer, Anda masih perlu menginstal JDK. Misalnya, jika Anda menggunakan aplikasi web dengan JSP, secara teknis Anda hanya menjalankan program Java di dalam server aplikasi. Mengapa Anda membutuhkan JDK? Karena server aplikasi akan mengubah JSP menjadi servlets Java dan perlu menggunakan JDK untuk mengkompilasi servlet. Saya yakin ada lebih banyak contoh.


4
Lalu ketika kita menggunakan guci eksternal, kita menempatkan guci-guci itu di jre / lib / ext / .. Jadi mengapa itu ??
i2ijeya

2
Ada beberapa stoples yang secara khusus dimaksudkan sebagai ekstensi Jawa; mereka dapat dan harus ditempatkan di lib / ext. Tetapi menempatkan semua toples aplikasi lama bukanlah tujuan dari direktori ini; ini merupakan penyalahgunaan mekanisme ekstensi dan dapat menyebabkan masalah di kemudian hari.
Carl Smotricz

Saya telah bekerja di JExcel API dan saya telah mengatur classpath dengan benar dan masih ada masalah. Jadi saya menempatkannya di dalam folder tlib / ext, yang baik-baik saja setelah itu ?? Jadi apa alasannya ??
i2ijeya

3
Saya tidak memiliki informasi untuk sepenuhnya yakin, tetapi dugaan saya adalah bahwa Anda tidak benar-benar mengatur classpath dengan benar, atau Anda mengatur classpath untuk classloader yang berbeda dari yang akhirnya menggunakan kode Anda. Apa yang membuat lib / ext berbeda dari ekstensi classpath adalah bahwa lib / ext akan memengaruhi setiap aplikasi java yang menggunakan JRE tertentu - itu lebih mudah daripada mengatur classpath.
Carl Smotricz

Beberapa minggu yang lalu saya mengalami kegagalan yang cukup besar yang diperbaiki dengan mengubah variabel lingkungan JAVA_HOME dan Path saya untuk merujuk JRE alih-alih JDK. Dalam hal apa fungsi aplikasi menggunakan JRE dan gagal dengan JDK? Saya kira saya harus membuka pertanyaan baru. Catatan yang menarik adalah bahwa mulai dalam versi 1.6 JRE disertakan dengan instalasi JDK tetapi membongkar pada tingkat yang sama dengan folder JDK sedangkan dalam versi 1.5 dan sebelum folder JRE berada di dalam JDK. BTW: Jawaban yang bagus!
Jesse Ivy

143

Jawaban di atas (oleh Pablo) sangat tepat. Ini hanya informasi tambahan.

The JRE adalah, seperti namanya, sebuah lingkungan . Ini pada dasarnya sekelompok direktori dengan file yang berhubungan dengan Java, untuk menjelaskan:

  • bin/berisi program yang dapat dieksekusi Java. Yang paling penting adalah java(dan untuk Windows,javaw ), yang meluncurkan JVM. Ada beberapa utilitas lain di sini juga, seperti keytooldan policytool.
  • conf/ memegang file konfigurasi yang dapat diedit pengguna untuk dimainkan oleh pakar Java.
  • lib/ memiliki sejumlah besar file pendukung: beberapa .jar s, file konfigurasi, file properti, font, terjemahan, sertifikat, dll. - semua "hiasan" dari Java. Yang paling penting adalah modules, file yang berisi .classfile - file dari perpustakaan standar Java.
  • Pada tingkat tertentu, perpustakaan standar Jawa perlu memanggil kode asli. Untuk tujuan ini, JRE berisi beberapa file .dll(Windows) atau .dylib(macOS) atau .so(Linux) di bawahbin/ atau lib/dengan kode biner asli yang mendukung sistem.

The JDK juga satu set direktori. Ini adalah superset dari JRE, dengan beberapa tambahan:

  • bin/telah diperbesar dengan alat pengembangan. Yang paling penting dari mereka adalah javac; lainnya termasuk jar,javadoc dan jshell.
  • jmods/, yang menyimpan file JMOD untuk perpustakaan standar, telah ditambahkan. File-file ini memungkinkan perpustakaan standar untuk digunakan jlink.

1
Apakah ini berarti saya dapat mengatur variabel jalur saya ke JDK dan hanya itu?
Brady

3
@ Brad: Ya, saya kira begitu. Setidaknya itu bekerja dengan baik untuk saya. Sebagai seorang pengembang, saya pada dasarnya mengabaikan JRE. Jika ada kasus khusus di mana Anda secara khusus menginginkan JRE, saya tidak menyadarinya.
Carl Smotricz

JRE hanya dapat bekerja dengan kode Java yang dikompilasi, bukan?
SexyBeast

2
@Cupidvogel, karena tidak ada kompiler di JRE, saya kira Anda bisa mengatakan itu. JRE ada di sana untuk menjalankan (mengkompilasi) kode Java, sementara JDK juga memberi Anda alat untuk mengembangkannya.
Carl Smotricz

1
Jadi pada dasarnya JDK termasuk kompiler (seperti Javac) untuk mengkompilasi kode, JRE (run-time system) untuk mengeksekusi kode yang dikompilasi, dan alat-alat lain yang dimaksudkan hanya untuk membuat hidup programmer dalam pengembangan mudah, benar? Jadi AFAIU, hanya Javac dan JRE yang merupakan alat yang sangat diperlukan di sini. Lalu mengapa, berkali-kali, instalasi perangkat lunak, pembaruan menuntut JDK untuk hadir?
SexyBeast

131

masukkan deskripsi gambar di sini

JDK adalah superset dari JRE, dan berisi semua yang ada di JRE, ditambah alat-alat seperti kompiler dan debugger yang diperlukan untuk mengembangkan applet dan aplikasi. JRE menyediakan perpustakaan, Java Virtual Machine (JVM), dan komponen lainnya untuk menjalankan applet dan aplikasi yang ditulis dalam bahasa pemrograman Java.


3
Diagram keren! Saya agak bingung bahwa perintah java digambarkan di luar JRE yang tidak benar. Saya tidak mengerti mengapa ada file terpisah untuk perintah java ketika JDK diinstal yang identik setidaknya dalam ukuran. Dalam hal apa fungsi aplikasi menggunakan JRE dan gagal dengan JDK? Baru-baru ini mengalami ini dan mungkin harus melacak kembali untuk meniru dan sampai ke bawah ...
Jesse Ivy

104

Dalam istilah awam: JDK adalah kakek JRE adalah ayah dan JVM adalah putra mereka. [yaitu JDK> JRE> JVM]

JDK = JRE + Alat pengembangan / debugging

JRE = JVM + Kelas Paket Java (seperti util, matematika, lang, awt, swing dll) + pustaka runtime.

JVM = Sistem pemuat kelas + area data runtime + Mesin Eksekusi.

Dengan kata lain jika Anda seorang programmer Java, Anda akan membutuhkan JDK di sistem Anda dan paket ini akan mencakup JRE dan JVM juga, tetapi jika Anda adalah pengguna normal yang suka bermain game online maka Anda hanya perlu JRE dan paket ini tidak akan memiliki JDK di dalamnya.

JVM:

The Java Virtual Machine (JVM) adalah mesin virtual yang menjalankan bytecode Java. JVM tidak mengerti kode sumber Java, itu sebabnya Anda mengkompilasi file * .java Anda untuk mendapatkan file * .class yang berisi bytecodes yang dapat dimengerti oleh JVM. Ini juga entitas yang memungkinkan Java menjadi "bahasa portabel" (tulis sekali, jalankan di mana saja). Memang ada implementasi spesifik JVM untuk sistem yang berbeda (Windows, Linux, MacOS, lihat daftar wikipedia ..), tujuannya adalah bahwa dengan bytecode yang sama mereka semua memberikan hasil yang sama.

JDK dan JRE

Untuk menjelaskan perbedaan antara JDK dan JRE, yang terbaik adalah membaca dokumentasi Oracle dan lihat diagram:

Java Runtime Environment (JRE)

The Java Runtime Environment (JRE) menyediakan perpustakaan, Java Virtual Machine, dan komponen lainnya untuk menjalankan applet dan aplikasi yang ditulis dalam bahasa pemrograman Java. Selain itu, dua teknologi penyebaran utama adalah bagian dari JRE: Java Plug-in, yang memungkinkan applet dijalankan di browser populer; dan Java Web Start, yang menyebarkan aplikasi mandiri melalui jaringan. Ini juga merupakan dasar untuk teknologi di Java 2 Platform, Enterprise Edition (J2EE) untuk pengembangan dan penyebaran perangkat lunak perusahaan. JRE tidak mengandung alat dan utilitas seperti kompiler atau debugger untuk mengembangkan applet dan aplikasi.

Java Development Kit (JDK)

JDK adalah superset dari JRE, dan berisi semua yang ada di JRE, ditambah alat-alat seperti kompiler dan debugger yang diperlukan untuk mengembangkan applet dan aplikasi.

Perhatikan bahwa Oracle bukan satu-satunya yang menyediakan JDK.

Proses Kompilasi JIT (Atas perkenan: dokumentasi Oracle)

JDK> JRE> JVM


Ketika Anda mengatakan "kompilasi" atau "kompiler", itu sangat membingungkan dalam konteks yang Anda maksudkan: mengubah kode sumber java menjadi kode byte java, atau mengubah kode byte java menjadi kode mesin.
OrangeSherbet

Bagus! Saya suka analogi kakek, ayah dan anak. : D
Emzor

Ya Terima kasih, sangat mudah untuk memahami siapa yang tidak terlalu mengenal istilah-istilah ini.
Jaimin Patel

25

Dari situs web resmi Java ...

JRE (lingkungan Java Runtime):

  • Ini adalah implementasi dari Java Virtual Machine * yang sebenarnya menjalankan program Java.
  • Java Runtime Environment adalah plug-in yang diperlukan untuk menjalankan program java.
  • JRE lebih kecil dari JDK sehingga membutuhkan lebih sedikit ruang Disk.
  • JRE dapat diunduh / didukung secara bebas dari https://www.java.com
  • Ini termasuk JVM, Core library dan komponen tambahan lainnya untuk menjalankan aplikasi dan applet yang ditulis dalam Java.

JDK (Java Development Kit)

  • Ini adalah kumpulan perangkat lunak yang dapat Anda gunakan untuk mengembangkan aplikasi berbasis Java.
  • Java Development Kit diperlukan untuk mengembangkan aplikasi java.
  • JDK membutuhkan lebih banyak ruang Disk karena berisi JRE bersama dengan berbagai alat pengembangan.
  • JDK dapat diunduh / didukung secara bebas dari https://www.oracle.com/technetwork/java/javase/downloads/
  • Ini termasuk JRE, sekumpulan kelas API, kompiler Java, Webstart, dan file tambahan yang diperlukan untuk menulis applet dan aplikasi Java.

23

Satu perbedaan dari perspektif debugging:

Untuk debug ke kelas sistem Java seperti String dan ArrayList, Anda memerlukan versi JRE khusus yang dikompilasi dengan "informasi debug". JRE yang disertakan di dalam JDK memberikan informasi ini, tetapi JRE reguler tidak. JRE reguler tidak termasuk info ini untuk memastikan kinerja yang lebih baik.

Apa itu informasi debug? Berikut ini penjelasan singkat yang diambil dari posting blog ini :

Kompiler modern melakukan pekerjaan yang cukup baik dengan mengkonversi kode tingkat tinggi Anda, dengan struktur kontrol yang diindentasi dengan baik dan bersarang dan variabel yang diketik secara sewenang-wenang ke dalam tumpukan besar bit yang disebut kode mesin (atau bytecode dalam kasus Java), satu-satunya tujuan darinya adalah untuk menjalankan secepat mungkin pada CPU target (CPU virtual JVM Anda). Kode Java dikonversi menjadi beberapa instruksi kode mesin. Variabel didorong di semua tempat - ke dalam tumpukan, ke register, atau sepenuhnya dioptimalkan. Struktur dan objek bahkan tidak ada dalam kode yang dihasilkan - mereka hanya abstraksi yang diterjemahkan ke offset kode-keras ke buffer memori.

Jadi, bagaimana seorang debugger tahu di mana harus berhenti ketika Anda memintanya untuk tidak masuk pada fungsi tertentu? Bagaimana cara mengatur untuk menemukan apa yang menunjukkan kepada Anda ketika Anda meminta nilai variabel? Jawabannya adalah - informasi debug.

Informasi debug dihasilkan oleh kompiler bersama dengan kode mesin. Ini adalah representasi dari hubungan antara program yang dapat dieksekusi dan kode sumber asli. Informasi ini dikodekan ke dalam format yang telah ditentukan dan disimpan di samping kode mesin. Banyak format seperti itu ditemukan selama bertahun-tahun untuk berbagai platform dan file yang dapat dieksekusi.


9

JVM, JRE, JDK - ini semua adalah tulang punggung bahasa Jawa. Setiap komponen bekerja secara terpisah. JDK dan JRE ada secara fisik tetapi JVM adalah mesin abstrak yang berarti tidak ada secara fisik.

JVM adalah subsistem dari JDK dan JRE yang digunakan untuk memeriksa kode perantara yang dikenal sebagai "bytecode". Pertama memuat "file kelas" (memiliki ekstensi .c) yang dihasilkan oleh Java compiler (javac) melalui classloader subsistem JVM dan lokasi memori rahasia (area kelas, stack, heap, dan register pc) sesuai dengan penggunaannya. Kemudian memeriksa semua bytecode untuk memastikan bahwa itu dikembalikan di Jawa dan semua aksesibilitas memori oleh jaringan. Pekerjaan penerjemah dimulai setelah itu di mana ia memeriksa seluruh program baris demi baris. Hasilnya akhirnya ditampilkan di konsol / browser / aplikasi melalui JRE (Java Runtime Environment) yang memiliki fasilitas runtime.

JRE juga merupakan subsistem dari JDK yang menyediakan fasilitas runtime seperti JVM, kelas, file yang dapat dieksekusi seperti file .jar, dll.

JDK adalah singkatan dari Java Development Kit. Ini berisi semua komponen yang diperlukan yang digunakan dalam pemrograman Java seperti kelas, metode, swing, AWT, paket, Java (interpreter), javac (compiler), appletviewer (applet application viewer), dll. Sebagai penutup, ini berisi setiap file yang diperlukan untuk pengembangan aplikasi, baik yang berdiri sendiri atau berbasis web.


8

JRE

JRE adalah akronim untuk Java Runtime Environment. Ini digunakan untuk menyediakan lingkungan runtime. Ini adalah implementasi dari JVM. Secara fisik ada. Ini berisi kumpulan perpustakaan + file lain yang digunakan JVM saat runtime.

JDK

JDK adalah akronim untuk Java Development Kit. Secara fisik ada. Ini berisi alat pengembangan JRE +.

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

Biasanya, ketika Anda hanya peduli menjalankan program Java di browser atau komputer, Anda hanya akan menginstal JRE. Itu yang kamu butuhkan. Di sisi lain, jika Anda berencana untuk melakukan pemrograman Java, Anda juga memerlukan JDK.


8

JVM, JRE dan JDK bergantung pada platform karena konfigurasi setiap OS berbeda. Tapi, Java adalah platform independen.

Java Virtual Machine (JVM) adalah sistem run-time yang mengeksekusi bytecode Java.

JRE adalah lingkungan (perpustakaan standar dan JVM) yang diperlukan untuk menjalankan aplikasi Java.

JDK termasuk alat pengembangan JRE plus command-line seperti kompiler dan debugger yang diperlukan atau berguna untuk mengembangkan applet dan aplikasi.


7

Berikut ini respons sederhana langsung dari Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

Java SE Runtime Environment (JRE)

JRE menyediakan perpustakaan, mesin virtual Java, dan komponen lain yang diperlukan bagi Anda untuk menjalankan applet dan aplikasi yang ditulis dalam bahasa pemrograman Java. Lingkungan runtime ini dapat didistribusikan kembali dengan aplikasi untuk membuatnya berdiri sendiri.

Java SE Development Kit (JDK)

JDK termasuk alat pengembangan JRE plus command-line seperti kompiler dan debugger yang diperlukan atau berguna untuk mengembangkan applet dan aplikasi.


7

Jika Anda ingin menjalankan program Java, tetapi tidak mengembangkannya, unduh Java Run-time Environment, atau JRE. Jika Anda ingin mengembangkannya, unduh Java Development kit, atau JDK

JDK

Mari kita sebut JDK adalah kit, yang mencakup hal-hal apa saja yang perlu dikembangkan dan dijalankan aplikasi java.

JDK diberikan sebagai lingkungan pengembangan untuk membangun aplikasi, komponen dan applet.

JRE

Ini berisi semua yang Anda butuhkan untuk menjalankan aplikasi Java dalam bentuk yang dikompilasi. Anda tidak perlu perpustakaan dan barang-barang lainnya. Semua hal yang Anda butuhkan dikompilasi.

JRE tidak dapat digunakan untuk pengembangan, hanya digunakan untuk menjalankan aplikasi.


6

JVM (Java Virtual Machine) adalah mesin abstrak. Ini adalah spesifikasi yang menyediakan lingkungan runtime di mana bytecode java dapat dieksekusi.

JRE adalah akronim untuk Java Runtime Environment. Digunakan untuk menyediakan lingkungan runtime. Ini adalah implementasi dari JVM. Secara fisik ada. Ini berisi kumpulan perpustakaan + file lain yang digunakan JVM saat runtime.

JDK adalah akronim untuk Java Development Kit. Secara fisik ada. Ini berisi alat pengembangan JRE +


6

Jika Anda seorang programmer Java, Anda akan membutuhkan JDK di sistem Anda dan paket ini akan menyertakan JRE dan JVM juga, tetapi jika Anda adalah pengguna normal yang suka bermain game online maka Anda hanya perlu JRE dan paket ini tidak akan memiliki JDK di dalamnya .

JVM

JVM (Java Virtual Machine) adalah mesin abstrak. Ini adalah spesifikasi yang menyediakan lingkungan runtime di mana bytecode java dapat dieksekusi.

JVM tersedia untuk banyak platform perangkat keras dan perangkat lunak. JVM, JRE dan JDK bergantung pada platform karena konfigurasi setiap OS berbeda. Tapi, Java adalah platform independen.

JRE

Ini berisi semua yang Anda butuhkan untuk menjalankan aplikasi Java dalam bentuk yang dikompilasi. Anda tidak perlu perpustakaan dan barang-barang lainnya. Semua hal yang Anda butuhkan dikompilasi.

JRE tidak dapat digunakan untuk pengembangan, hanya digunakan untuk menjalankan aplikasi.

Java SE Development Kit (JDK)

JDK termasuk alat pengembangan JRE plus command-line seperti kompiler dan debugger yang diperlukan atau berguna untuk mengembangkan applet dan aplikasi.

(Sumber: T&J GeeksForGeeks , Ikhtisar Platform Java )


Ada plagiarisme dari beberapa situs (untuk bagian JVM dan JDK). Lain kali, silakan sebutkan sumber Anda - itu bukan karya asli Anda.
Jonathan Lam

6

Pemahaman yang jelas tentang istilah-istilah ini (JVM, JDK, JRE) sangat penting untuk memahami penggunaan dan perbedaannya.

JVM Java Virtual Machine (JVM) adalah sistem run-time yang mengeksekusi bytecode Java. JVM seperti komputer virtual yang dapat menjalankan serangkaian instruksi yang dikompilasi dan memanipulasi lokasi memori. Ketika kompiler Java mengkompilasi kode sumber, ia menghasilkan serangkaian instruksi yang sangat dioptimalkan yang disebut bytecode dalam file .class. JVM mengartikan instruksi bytecode ini dan mengubahnya menjadi kode khusus mesin untuk dieksekusi.

JDK Java Development Kit (JDK) adalah lingkungan pengembangan perangkat lunak yang dapat Anda gunakan untuk mengembangkan dan menjalankan aplikasi Java. Ini termasuk JRE dan seperangkat alat pemrograman, seperti kompiler Java, juru bahasa, appletviewer, dan penampil dokumen. JDK diimplementasikan melalui platform Java SE, Java EE, atau Java ME.

JRE Java Runtime Environment (JRE) adalah bagian dari JDK yang mencakup JVM, kelas inti, dan beberapa perpustakaan yang mendukung pengembangan aplikasi. Meskipun JRE tersedia sebagai bagian dari JDK, Anda juga dapat mengunduh dan menggunakannya secara terpisah.

Untuk pemahaman lengkap Anda dapat melihat Blog saya: Jdk Jre Jvm dan perbedaan


5

jdk diperlukan untuk mengkompilasi ke kode dan mengkonversi kode java ke kode byte sementara jre diperlukan untuk mengeksekusi kode byte.


5
@Noy: Tidak hanya informasi yang sangat sedikit, tetapi juga tidak mengandung apa pun yang jawaban lainnya tidak.
Amos M. Carpenter

5

JDK termasuk alat pengembangan JRE plus command-line seperti kompiler dan debugger yang diperlukan atau berguna untuk mengembangkan applet dan aplikasi.

JRE pada dasarnya adalah Java Virtual Machine tempat program Java Anda berjalan. Ini juga termasuk plugin browser untuk eksekusi Applet.

JDK adalah mesin abstrak. Ini adalah spesifikasi yang menyediakan lingkungan runtime di mana bytecode java dapat dieksekusi.

Jadi, pada dasarnya JVM <JRE <JDK sesuai @Jaimin Patel berkata.


5

Secara sederhana :

JVM adalah mesin virtual yang dijalankan oleh kode Java

JRE adalah lingkungan (perpustakaan standar dan JVM) yang diperlukan untuk menjalankan aplikasi Java

JDK adalah JRE dengan alat pengembang dan dokumentasi


4

Perbedaan antara JDK dan JRE adalah bahwa JDK adalah kit pengembangan perangkat lunak untuk java sementara JRE adalah tempat di mana Anda menjalankan program Anda.


4

misalkan, jika Anda seorang pengembang maka peran Anda adalah untuk mengembangkan program serta untuk menjalankan program. jadi Anda harus memiliki lingkungan untuk pengembangan dan pelaksanaan, yang disediakan oleh JDK.

misalkan, jika Anda seorang klien maka Anda tidak perlu khawatir tentang pengembangan. Anda hanya perlu, lingkungan untuk menjalankan program dan hanya mendapatkan hasil, yang disediakan oleh JRE.

JRE mengeksekusi aplikasi tetapi JVM membaca instruksi baris demi baris sehingga menjadi penerjemah.

JDK = JRE + Alat Pengembangan

JRE = JVM + Kelas Perpustakaan


2

JRE

JRE adalah akronim untuk Java Runtime Environment. Ini digunakan untuk menyediakan lingkungan runtime. Ini adalah implementasi JVM. Secara fisik ada. Ini berisi kumpulan perpustakaan + file lain yang digunakan JVM saat runtime.

Implementasi JVM juga secara aktif dirilis oleh perusahaan lain selain Sun Micro Systems.

masukkan deskripsi gambar di sini

JDK

JDK adalah akronim untuk Java Development Kit. Secara fisik ada. Ini berisi alat pengembangan JRE +.

masukkan deskripsi gambar di sini


Baik informasi dalam teks dan grafik telah disediakan di lain, jawaban sebelumnya.
Karl Richter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.