Tanpa bisa berinteraksi dengan dunia lain, suatu program tidak ada  gunanya. Interaksi suatu program dengan dunia lain sering disebut input/output  atau I/O. Sejak dulu, salah satu tantangan terbesar untuk mendesain  bahasa pemrograman baru adalah mempersiapkan fasilitas untuk melakukan  input dan output. Komputer bisa terhubung dengan beragam jenis input dan  output dari berbagai perangkat. Jika bahasa pemrograman harus dibuat  secara khusus untuk setiap jenis perangkat, maka kompleksitasnya akan  tak lagi bisa ditangani.
 Salah satu kemajuan terbesar dalam sejarah pemrograman adalah adanya  konsep (atau abstraksi) untuk memodelkan perangkat I/O. Dalam Java,  abstraksi ini disebut dengan aliran (stream). Bagian ini akan  memperkenalkan tentang aliran, akan tetapi tidak menjelaskan dengan  komplit. Untuk lebih lengkapnya, silakan lihat dokumen resmi Java.
 Ketika berhubungan dengan input/output, kita harus ingat bahwa ada  dua kategori data secara umum : data yang dibuat oleh mesin, dan data  yang bisa dibaca manusia. Data yang dibuat mesin ditulis dengan model  yang sama dengan bagaimana data tersebut disimpan di dalam komputer,  yaitu rangkaian nol dan satu. Data yang bisa dibaca manusia adalah data  dalam bentuk rangkaian huruf. Ketika kita membaca suatu bilangan  3.13159, kita membacanya sebagai rangkaian huruf yang kita terjemahkan  sebagai angka. Angka ini akan ditulis dalam komputer sebagai rangkaian  bit yang kita tidak mengerti.
 Untuk menghadapi kedua jenis data ini, Java memiliki dua kategori besar untuk aliran : aliran byte untuk data mesin (byte stream), dan aliran karakter (character stream) untuk data yang bisa dibaca manusia. Ada banyak kelas yang diturunkan dari kedua kategori ini.
 Setiap objek yang mengeluarkan data ke aliran byte masuk sebagai kelas turunan dari kelas abstrak 
 OutputStream. Objek yang membaca data dari aliran byte diturunkan dari kelas abstrak InputStream. Jika kita menulis angka ke suatu OutputStream,  kita tidak akan bisa membaca data tersebut karena ditulis dalam bahasa  mesin. Akan tetapi data tersebut bisa dibaca kembali oleh InputStream.  Proses baca tulis data akan menjadi sangat efisien, karena tidak ada  penerjemahan yang harus dilakukan : bit yang digunakan untuk menyimpan  data di dalam memori komputer hanya dikopi dari dan ke aliran tersebut.Untuk membaca dan menulis data karakter yang bisa dimengerti manusia, kelas utamanya adalah 
 Reader dan Writer.  Semua kelas aliran karakter merupakan kelas turunan dari salah satu  dari kelas abstrak ini. Jika suatu angka akan ditulis dalam aliran Writer, komputer harus bisa menerjemahkannya ke dalam rangkaian karakter yang bisa dibaca maunsia. Membaca angka dari aliran 
 Reader  menjadi variabel numerik juga harus diterjemahkan, dari deretan  karakter menjadi rangkaian bit yang dimengerti komputer. (Meskipun untuk  data yang terdiri dari karakter, seperti dari editor teks, masih akan  ada beberapa terjemahan yang dilakukan. Karakter disimpan dalam komputer  dalam nilai Unicode 16-bit. Bagi orang yang menggunakan alfabet biasa,  data karakter biasanya disimpan dalam file dalam kode ASCII, yang hanya  menggunakan 8-bit. Kelas Reader dan Writer akan menangani perubahan dari 16-bit ke 8-bit dan sebaliknya, dan juga menangani alfabet lain yang digunakan negara lain.)Adalah hal yang mudah untuk menentukan apakah kita harus menggunakan  aliran byte atau aliran karakter. Jika kita ingin data yang kita  baca/tulis untuk bisa dibaca manusia, maka kita gunakan aliran karakter.  Jika tidak, gunakan aliran byte. 
 System.in dan System.out  sebenarnya adalah aliran byte dan bukan aliran karakter, karenanya bisa  menangani input selain alfabet, misalnya tombol enter, tanda panah,  escape, dsb.Kelas aliran standar yang akan dibahas berikutnya didefinisikan dalam paket 
 java.io  beserta beberapa kelas bantu lainnya. Kita harus mengimpor kelas-kelas  tersebut dari paket ini jika kita ingin menggunakannya dalam program  kita. Artinya dengan menggunakan "import java.io.*" di awal kode sumber kita.Aliran tidak digunakan dalam GUI, karena GUI memiliki aliran I/O  tersendiri. Akan tetapi kelas-kelas ini digunakan juga untuk file atau  komunikasi dalam jaringan. Atau bisa juga digunakan untuk komunikasi  antar thread yang sedang bekerja secara bersamaan. Dan juga ada kelas  aliran yang digunakan untuk membaca dan menulis data dari dan ke memori  komputer.
Tidak ada komentar:
Posting Komentar