DASAR PEMROGRAMAN JAVA

Selamat pagi teman2 , pada hari ini saya akan share pada kalian tentang ilmu pemrograman yaitu Dasar Pemrograman java 
Sebagai Beriku :


1. Java Development Kit


Java Development Kit merupakan perangkat lunak yang digunakan untuk melakukan proses kompilasi dari kode Java menjadi bytecode yang dapat dimengerti dan dapat dijalankan oleh Java Runtime Environtment.
Java Development Kit wajib terinstall pada komputer yang akan melakukan proses pembuatan aplikasi berbasis Java. Namun Java Development Kit tidak wajib terinstall di komputer yang akan menjalankan aplikasi yang dibangun menggunakan Java.


2. Java Runtime Environtment


Java Runtime Environtment merupakan perangkat lunak yang digunakan untuk menjalankan aplikasi yang dibangun menggunakan java. Versi JRE harus sama atau lebih tinggi dari JDK yang digunakan untuk membangun aplikasi agar aplikasi dapat berjalan sesuai dengan yang diharapkan.


3. "Write Once, Run Anywhere" (WORA)


Merupakan Suatu semboyan dari bahasa pemrograman JAVA yang berjalan pada multiflatform
Keunggulannya independence platform maksud source code yang kita tulis tidak tergantung pada sistem operasi.









Java bytecodes merupakan instruksi mesin yang tidakspesifik terhadap processor . Oleh karena itu, program Javahasil kompilasi akan dapat dijalankan pada berbagai platform sistem komputer dengan menggunakan Java Virtual machine (JVM),"write once, run anywhere" (lihat Gambar Di Atas). JVMdisebut juga bytecodes interpreter atau Java runtimeinterpreter .





4. IDE (Integrated Development Environmnet - Lingkungan Pengembangan Terintegrasi) 


-> untuk memudahkan kita dalam melakukan pengembangan atau pembuatan program.
Dalam melakukan pemrograman dibutuhkan alat atau tools yang biasa di sebut dengan IDE (Integrated Development Environmnet) untuk memudahkan kita dalam melakukan pengembangan atau pembuatan program.
Di java sangat banyak IDE yang tersedia, dan hampir semuanya dapat di gunakan dengan gratis tanpa harus membeli lisensi. Namun dari sekian banyaknya IDE yang tersedia, tentunya hanya beberapa saja IDE yang memiliki fitur serta dukungan komunitas yang maksimal.


Berikut ini adalah 3 Java IDE terbaik menurut saya selama 5 tahun berkecimpung di dunia pemrograman java:


~Eclipse



Eclipse memiliki dukungan plugin yang sangat banyak, dan menjadi core dari pengembangan IDE lainnya seperti zend studio(IDE berbayar untuk PHP), aptana radrails(IDE untuk pemrograman ruby on rails), serta masih banyak yang lainnya.


~Netbeans





IDE ini dibuat menggunakan bahasa Java, sehingga sangat terlihat dari sisi pemakaian memory yang cukup banyak. IDE ini dibuat dan dibesarkan oleh komunitas serta pengembang bahasa Java.


~JDeveloper





IDE ini dibuat dan dikembangkan oleh oracle. Lengkap sudah kedigdayaan oracle di dunia enterprise, setelah mampu mengakuisisi java dari sun microsystems.


5. Class


Dalam Java, kelas didefinisikan menggunakan kata kunci class. Contoh kelas sederhana adalah sebagai berikut :


class Manusia {
String nama;
}


Pada kode diatas, kelas yang telah dibuat adalah kelas Manusia. Dan nama merupakan atribut yang dimiliki kelas Manusia tersebut. Contoh pembuatan objek untuk kelas manusia adalah sebagai berikut :


// membuat objek manusia
Manusia manusia = new Manusia();
// mengubah nama objek manusia
manusia.nama = "Eko Kurniawan Khannedy";


6. Object


Objek merupakan hasil dari sebuah kelas, jika diibaratkan Objek adalah kue, maka kelas adalah cetakan kuenya, dimana kue dibuat menggunakan cetakan tersebut. Dan sebuah cetakan kue dapat membuat beberapa kue, artinya sebuah kelas dapat membuat beberapa object.
Untuk membuat objek dalam Java diperlukan sebuah perintah new, dimana cara pembuatannya sama dengan pembuatan variabel.


Kelas objek = new Kelas();


Jika dalam kelas yang dibuat objek tersebut terdapat atribut, maka dapat dipanggil menggunakan . (titik)


// mengubah atribut
objek.namaAtribut = value;


Jika dalam kelas tersebut memiliki sebuah fungsi (metode), maka dapat dipanggil menggunakan . (titik) dan diakhiri dengan ()


// memanggil fungsi
objek.namaFungsi();


7. String
Dalam pemrograman Java string merupakan aspek penting, karena dapat
mempelajari mengenai class dan objek melalui penggunaan string. String sebenarnya
merupakan class yang terdapat dalam library Java. Java String merupakan salah satu
kelas dasar yang disediakan oleh Java untuk memanipulasi karakter.





8. Package 

Dalam Java, beberapa kelas dapat digabungkan dalam sebuah unit bernama paket (package). Penggunaan paket sangat dianjurkan agar kelas-kelas terlihat lebih teratur.
Untuk mendeklarasikan paket, hanya perlu menggunakan kunci package pada bagian atas file java diikuti nama paket. Nama paket tidak boleh diawali dengan nomor dan tidak boleh menganduk karakter unik dan spasi. Paket biasanya bertingkat, untuk memberikan tingkatan pada paket kita dapat mengunakan tanda . (titik), misal.


package aplikasi.data;
public class Karyawan {
public String nip;
public String nama;
public String alamat;
}



9. Konstruktor

Konstruktor adalah bagian dari definisi suatu kelas yang berfungsi menciptakan instans dari kelas tersebut. Konstruktor ini bisa kita buat sendiri, atau bila kita tidak mendefinisikannya, maka kompiler Java akan membuatkan konstruktor default untuk kelas tersebut pada saat kompilasi. Yang perlu diperhatikan adalah bahwa suatu konstrukor tidak termasuk anggota suatu kelas seperti metode dan variabel dan bahwa konstruktor bisa dibuat lebih dari satu.Secara singkat, konstruktor adalah perintah yang akan dilaksanakan saat ada instruksi untuk menciptakan sebuah instans dari kelas tersebut.


Contoh deklarasi konstruktor


identifier_class([tipe identifier,tipe identifier,...]){
// inisialisasi variabel
// perhitungan awal


Pada contoh ini akan dibuat empat buah konstruktor yang berfungsi untuk membuat objek dengan tipe lingkaran.Class lingkaran diidentifikasi dengan kode berikut:


public class Lingkaran{
Float x,y,jari;
// konstruktor diletakan disini
}





10. Method

Sebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal sebagai fungsi
atau prosedur. Sebagai contoh, method yang mungkin tersedia untuk entiti siswa adalah method
register.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

INPUT DATA DENGAN 3 STATEMENT BERBEDA


Kali ini saya akan memberikan salah satu project yang mungkin bisa lebih membantu anda untuk memahami tentang input statement yang ada di java. Bila anda belum mengetahui apa maksud dari input statement bisa di lihat di sini. Langsung ajalah, ini adalah hasil input dari projectnya :
Dan di bawah ini adalah codenya :

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Inputan {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        double N1, N2 = 0, N3, NR;
       
        String n3;
       
       
        Scanner nilai1 = new Scanner(System.in);
       
        System.out.print("Masukan nilai pertama \t : ");
        N1 = nilai1.nextDouble();
       
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        try
        {
            System.out.print("Masukkan nilai kedua \t : ");
            N2 = Integer.parseInt(in.readLine());
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
       
        n3 = JOptionPane.showInputDialog("Masukkan nilai ketiga : ");
        N3 = Integer.parseInt(n3);
       
        //proses
       
        NR = (N1 + N2 + N3) / 3;
       
        JOptionPane.showMessageDialog(null, NR);
    }
}

     Itu tadi contoh project yang berhubungan dengan input statement,Bila ada yang belum jelas dapat tanya pada 

Email saya sputraaria@yahoo.com

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

CARA INSTALLING JDK


halo semuanya. Kali ini saya akan menjelaskan tentang cara installing JDK (Java Develpment Kit). Sebelumnya saya akan menjelaskan tentang JDK terlebih dahulu. JDK adalah software yang digunakan untuk pengembangan aplikasi dengan java. Dua program yang disediakan dalam JDK adalah :
  • javac, yaitu program untuk meng-compile kode sumber
  • java, yaitu program untuk meluncurkan aplikasi
     Nah itu tadi adalah sekilas tentang JDK. Hal pertama yang kita butuhkan dalam installing JDK adalah installernya. Bila belum mempunyainya bisa di-download di sini , dan bila sudah punya bisa langsung melakukan proses installing.

     Setelah java ter-install maka hal selanjutnya yang kita lakukan adalah membuka Command Prompt. Kita bisa membuka Command Prompt di All programs>>Accessories>>Comand Prompt atau juga bisa lewat run kita ketikkan cmd. Setelah itu ketikkan javac. Dan akan muncul seperti gambar di bawah ini :

     Tidak usah kuatir itu bukan kesalahan pada saat kita meng-install tetapi memang kebanyakan walaupun sudah di-install tidak keluar pada awalnya. Itu terjadi karena JDK memerlukan path agar bisa digunakan.

     Langkah selanjutnya yang harus kita lakukan adalah membuat path agar JDK bisa kita gunakan. Caranya adalah dengan membuka tempat/directory yang kita gunakan untuk meng-install tadi, misalnya C:\Program Files\Java. Setelah itu lalu buka yang ada nama jdk nya(namanya sesuai dengan versi dari jdk itu sendiri), contoh : jdk1.6.0_25. Setelah itu buka lagi folder bin. Maka directory nya menjadi C:\Program Files\Java\jdk1.6.0_25\bin. Lalu copy directory tersebut.     
     
     Setelah mendapatkan directory nya, maka langkah selanjutnya adalah membuat path. Caranya adalah dengan klik properties di computer/my computer. Lalu kita klik lagi advanced system settings. Maka akan keluar window seperti gambar di bawah ini :

     Lalu kita pilih Environment Variables. dan pilih new. Setelah itu pada variable name kita isi dengan PATH dan pada variable value kita isi directory yang kita dapat tadi. Contoh bisa di lihat di gambar di bawah ini :

     Setelah itu klik ok, ok, ok dan close(tau kan maksutnya). Dan akhirnya java compile / javac anda sudah bisa digunakan. Untuk mengeceknya anda bisa gunakan cmd dan ketikkan javac. Dan hasilnya akan seperti di bawah ini :

      Selesai sudah penjelasan dari saya. Bisa ada salah kata mohon di maafkan, dan bila ada yang kurang jelas dari penjelasan saya maka bisa ditanyakan lewat comment di bawah.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

CONTOH-CONTOH INPUT STATEMENT JAVA


Kali ini saya menjelaskan tentang beberapa contoh input statement yang ada di java. Di bawah ini adalah beberapa contoh dari input statement :

1. Buffered Reader 
     BufferedReader adalah suatu perintah yg disediakan oleh java untuk melakukan proses input output data user dari keyboard tanpa menggunakan fasilitas Swing or AWT.  Di bawah ini adalah contohnya :


2. Scanner
     Scanner adalah pengambilan class dalam java library, dimana class tersebut digunakan untuk mengambil inputan dari user.  Di bawah ini adalah contohnya :


3. JOption Pane
     JOption Pane adalah input dialog yang akan menampilkan dialog, yang terdiri atas sebuah message, sebuah textfield dan sebuah button OK. Dialog tersebut akan memberikan return value String yang akan disimpan di variabel name. Di bawah ini adalah contohnya :
      Itu tadi adalah beberapa input statement yang ada di java, semoga yang saya berikan bermanfaat bagi kalian semua. 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

PERBEDAAN ANTARA JDK, JRE, JVM & SDK


  Halo, apa kabar semuanya. Kali ini saya akan menjelaskan perbedaan antara JDK, JRE, JVM & SDK. Mungkin sudah ada pernah tahu, tapi keempat hal ini masih sering membingungkan kita ataupun java developer. Apa sih sebenernya masing-masing itu? Sekarang saya akan menjelaskannya satu persatu.




 1. JVM (Java Virtual Machine)
     JVM inilah yang merupakan jantung dari Java Platform. JVM ini adalah pihak yang bertanggung jawab untuk mengeksekusi program Java menjadi bahasa mesin untuk diproses oleh prosesor. JVM mampu menerjemahkan code-code Java ke hampir semua platform. JVM ini-lah yang membuat Java "write once, run everywhere" alias multi-platform

2. JRE (Java Runtime Environment)
     JRE inilah yang memungkinkan sebuah program Java dapat berjalan di mesin Anda. JRE ini mengeksekusi binary-binary dari class-class dan mengirimnya ke JVM untuk diproses lagi ke prosesor. Setiap JRE pasti memiliki sebuah JVM di dalamnya untuk melakukan pemrosesan selanjutnya

3. JDK (Java Development Kit)
     Seperti namanya, JDK adalah semacam kotak peralatan (kit) yang digunakan untuk development. JDK ini berguna saat Anda menulis code program. Seperti halnya JRE, JDK juga memiliki JVM di dalamnya.

4. SDK (Software Development Kit)
     Ini lain lagi ceritanya. SDK ini biasanya adalah kumpulan dari tools yang dibutuhkan untuk membuat serta menjalankan program. Jadi di dalam SDK itu ada JDK-nya, ada JRE-nya serta mungkin IDE-nya juga.

Jadi kesimpulannya:
- JVM ada di dalam JRE
- JVM ada di dalam JDK juga
- JRE untuk "membaca" program Java
- JDK untuk "menulis" program Java
- SDK umumnya berisi JDK & JRE

Sekian penjelasan dari kami, bila masih belum paham bisa ditanyakan lewat comment di bawah.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

PERBEDAAN COMPILER DAN INTERPRETER


Perbedaan antar keduanya adalah sebagai berikut :
COMPILER
  • Compiler adalah program sistem yang juga berfungsi sebagai penterjemah kode program ke dalam bahasa mesin agar bisa dijalankan oleh mesin.
  • compiler, menterjemahkan seluruh instruksi sekaligus. Selanjutnya hasil terjemahan (setelah melalui tahapan lain) bisa dijalankan secara langsung, tanpa tergantung lagi oleh program sumber atau compilernya.
  • pada compiler, proses pembuatan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu untuk melakukan proses linking. Program akan berhasil dikompilasi hanya jika program tak mengandung kesalahan secara kaidah sama sekali.
  • pada compiler, proses eksekusi dapat berjalan dengan cepat, sebab tak ada lagi proses penerjemahan.
  • pada compiler, kode program bisa dirahasiakan, sebab yang dieksekusi adalah program yang dalam bentuk kode mesin.
  • Contoh bahasa pemrograman yang menggunakan compiler adalah Visual Basic, Fortran, Cobol, Pascal, C, dlsb.
INTERPRETER
  • Interpreter adalah program sistem yang berfungsi sebagai penterjemah kode program yang dibuat oleh programmer ke dalam bahasa mesin.
  • Interpreter mengeksesusi perintah baris demi baris dengan mengikuti logika yang ada.
  • Secara garis besar, Interpreter menterjemahkan baris per baris.
  • Pada interpreter, penyusunan program relatif lebih cepat dan bisa langsung diuji sekalipun masih ada beberapa kesalahan secara kaidah dalam program.
  • Pada interpreter, kecepatannya menjadi lambat sebab sebelum suatu instruksi dijalankan selalu harus diterjemahkan terlebih dahulu. Selain itu, saat program dieksekusi, interpreter juga harus selalu berada dalam memori. Jadi memori selalu digunakan baik untuk program maupun interpreter.
  • Pada interpreter, kode program tidak dapat dirahasiakan.
  • Contoh bahasa pemrograman yang menggunakan interpreter yaitu PHP, ASP, Perl, dan msh byk lagi.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

KONSEP DASAR IO STREAM


       PENGENALAN INPUT DAN OUTPUT



Program komputer bisa berguna jika ia bisa berinteraksi dengan dunia lain. Interaksi di sini maksudnya input/output atau I/O. Pada bab ini, kita akan melihat input output pada file dan koneksi jaringan (network). Pada Java, input/output pada file dan jaringan dilakukan berdasarkan aliran (stream), di mana semua objek dapat melakukan perintah I/O yang sama. Standar output (System.out) dan standar input (System.in) adalah contoh aliran.
Untuk bekerja dengan file dan jaringan, kita membutuhkan pengetahuan tentang pengecualian.Banyak subrutin yang digunakan untuk bekerja dengan I/O melemparkan pengecualian yang wajib ditangani. Artinya subrutin tersebut harus dipanggil di dalam pernyataan try ... catch sehingga pengecualian yang terjadi bisa ditangani dengan baik.

STREAM , READER DAN WRITER 

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.

OPERASI PADA ALIRAN (STREAM)

Kelas dasar I/O Reader, Writer, InputStream dan OutputStream hanya menyediakan operasi I/O sangat dasar. Misalnya, kelas InputStream memiliki metode instansi
public int read() throws IOException
untuk membaca satu byte data dari aliran input. Jika sampai pada akhir dari aliran input , metode read() akan mengembalikan nilai -1. Jika ada kesalahan yang terjadi pada saat pengambilan input, maka pengecualian IOException akan dilemparkan. Karena IOException adalah kelas pengecualian yang harus ditangani, artinya kita harus menggunakan metode read() di dalam penyataan try atau mengeset subrutin untuk throws IOException. (Lihat kembali pembahasan tentang pengecualian di bab sebelumnya)
Kelas InputStream juga memiliki metode untuk membaca beberapa byte data dalam satu langkah ke dalam array byte. Akan tetapi InputStream tidak memiliki metode untuk membaca jenis data lain, seperti int atau double dari aliran. Ini bukan masalah karena dalam prakteknya kita tidak akan menggunakan objek bertipe InputStream secara langsung. Yang akan kita gunakan adalah kelas turunan dari InputStream yang memiliki beberapa metode input yang lebih beragam daripada InputStream itu sendiri.
Begitu juga dengan kelas OutputStream memiliki metode output primitif untuk menulis satu byte data ke aliran output, yaitu metode
public void write(int b) throws IOException
Tapi, kita hampir pasti akan menggunakan kelas turunannya yang mampu menangani operasi yang lebih kompleks.

Kelas Reader dan Writer memiliki operasi dasar yang hampir sama, yaitu read dan write, akan tetapi kelas ini berorientasi karakter (karena digunakan untuk membaca dan menulis data yang bisa dibaca manusia). Artinya operasi baca tulis akan mengambil dan menulis nilai char bukan byte. Dalam prakteknya kita akan menggunakan kelas turunan dari kelas-kelas dasar ini.
Salah satu hal menarik dari paket I/O pada Java adalah kemungkinan untuk menambah kompleksitas suatu aliran dengan membungkus aliran tersebut dalam objek aliran lain. Objek pembungkus ini juga berupa aliran, sehingga kita juga bisa melakukan baca tulis dari objek yang sama dengan tambahan kemampuan dalam objek pembungkusnya.
Misalnya, PrintWriter adalah kelas turunan dari Writer yang memiliki metode tambahan untuk menulis tipe data Java dalam karakter yang bisa dibaca manusial. Jika kita memiliki objek bertipe Writer atau turunannya, dan kita ingin menggunakan metode pada PrintWriter untuk menulis data, maka kita bisa membungkus objek Writer dalam objek PrintWriter.
Contoh jika baskomKarakter bertipe Writer, maka kita bisa membuat
PrintWriter printableBaskomKarakter = new PrintWriter(baskomKarakter);
Ketika kita menulis data ke printableBaskomKarakter dengan menggunakan metode pada PrintWriter yang lebih canggih, maka data tersebut akan ditempatkan di tempat yang sama dengan apabila kita menulis langsung pada baskomKarakter. Artinya kita hanya perlu membuat antar muka yang lebih baik untuk aliran output yang sama. Atau dengan kata lain misalnya kita bisa menggunakan PrintWriter untuk menulis file atau mengirim data pada jaringan.
Untuk lengkapnya, metode pada kelas PrintWriter memiliki metode sebagai berikut :
// Metode untuk menulis data dalam
// bentuk yang bisa dibaca manusia
public void print(String s)
public void print(char c)
public void print(int i)
public void print(long l)
public void print(float f)
public void print(double d)
public void print(boolean b)

// Menulis baris baru ke aliran
public void println()
 
// Metode ini sama dengan di atas
// akan tetapi keluarannya selalu
// ditambah dengan baris baru
public void println(String s)
public void println(char c)
public void println(int i)
public void println(long l)
public void println(float f)
public void println(double d
public void println(boolean b)
*Catatan bahwa metode-metode di atas tidak pernah melempar pengecualian IOException. 

Akan tetapi,kelas PrintWriter memiliki metode
public boolean checkError()
yang akan mengembalikan true jika ada kesalahan yang terjadi ketika menulis ke dalam aliran. Kelas PrintWriter menangkap pengecualian IOException secara internal, dan mengeset nilai tertentu di dalam kelas ini jika kesalahan telah terjadi. Sehingga kita bisa menggunakan metode pada PrintWriter tanpa khawatir harus menangkap pengecualian yang mungkin terjadi. Akan tetapi, jika kita ingin membuat progam yang tangguh tentunya kita harus selalu memanggil checkError() untuk melihat apakah kesalahan telah terjadi ketika kita menggunakan salah satu metode pada PrintWriter.
Ketika kita menggunakan metode PrintWriter untuk menulis data ke aliran, data tersebut diubah menjadi rangkaian karakter yang bisa dibaca oleh manusia. Bagaimana caranya jika kita ingin membuat data dalam bentuk bahasa mesin?
Paket java.io memiliki kelas aliran byte, yaitu DataOutputStream yang bisa digunakan untuk menulis suatu data ke dalam aliran dalam format biner. DataOutputStream berhubungan erat dengan OutputStream seperti hubungan antara PrintWriter dan Writer.
Artinya, OutputStream hanya berisi metode dasar untuk menulis byte, sedangkan DataOutputStream memiliki metode writeDouble(double x) untuk menulis nilai double, writeInt(int x) untuk menulis nilai int, dan seterusnya. Dan juga kita bisa membungkus objek bertipe OutputStream atau turunannya ke dalam aliran DataOutputStream sehingga kita bisa menggunakan metode yang lebih kompleks.
Misalnya, jika baskomByte adalah variabel bertipe OutputStream, maka
DataOutputStream baskomData = new DataOutputStream(baskomByte);
untuk membungkus baskomByte dalam baskomData.
Untuk mengambil data dari aliran, java.io memiliki kelas DataInputStream. Kita bisa membungkus objek bertipe InputStream atau turunannya ke dalam objek bertipe DataInputStream. Metode di dalam DataInputStream untuk membaca data biner bisa menggunakan readDouble(), readInt() dan seterusnya. Data yang ditulis oleh DataOutputStream dijamin untuk bisa dibaca kembali oleh DataInputStream, meskipun data kita tulis pada satu komputer dan data dibaca pada komputer jenis lain dengan sistem operasi berbeda. Kompatibilitas data biner pada Java adalah salah satu keunggulan Java untuk bisa dijalakan pada beragam platform.
Salah satu fakta yang menyedihkan tentang Java adalah ternyata Java tidak memiliki kelas untuk membaca data dalam bentuk yang bisa dibaca oleh manusia. Dalam hal ini Java tidak memiliki kelas kebalikan dari PrintWriter sebagaimana DataOutputStream dan DataInputStream. Akan tetapi kita tetap bisa membuat kelas ini sendiri dan menggunakannya dengan cara yang persis sama dengan kelas-kelas di atas.
Kelas PrintWriter, DataInputStream, dan DataOutputStream memungkinkan kita untuk melakukan input dan output semua tipe data primitif pada Java. Pertanyaannya bagaimana kita melakukan baca tulis suatu objek?
Mungkin secara tradisional kita akan membuat fungsi sendiri untuk memformat objek kita menjadi bentuk tertentu, misalnya urutan tipe primitif dalam bentuk biner atau karakter kemudian disimpan dalam file atau dikirim melalui jaringan. Proses ini disebut serialisasi (serializing) objek.
Pada inputnya, kita harus bisa membaca data yang diserialisasi ini sesuai dengan format yang digunakan pada saat objek ini diserialisasi. Untuk objek kecil, pekerjaan semacam ini mungkin bukan masalah besar. Akan tetapi untuk ukuran objek yang besar, hal ini tidak mudah.
Akan tetapi Java memiliki cara untuk melakukan input dan output isi objek secara otomatis, yaitu dengan menggunakan ObjectInputStream dan ObjectOutputStream. Kelas-kelas ini adalah kelas turunan dari InputStream dan OutputStream yang bisa digunakan untuk membaca dan menulis objek yang sudah diserialisasi.
ObjectInputStream dan ObjectOutputStream adalah kelas yang bisa dibungkus oleh kelas InputStream dan OutputStream lain. Artinya kita bisa melakukan input dan output objek pada aliran byte apa saja.
Metde untuk objek I/O adalah readObject() yang tersedia pada ObjectInputStream dan writeObject(Object obj) yang tersedia dalam ObjectOutputStream. Keduanya bisa melemparkan IOException. Ingat bahwa readObject() mengembalikan nilai bertipe Object yang artinya harus di-type cast ke tipe sesungguhnya.
ObjectInputStream dan ObjectOutputStream hanya bekerja untuk objek yang mengimplementasikan interface yang bernama Serializable. Lbih jauh semua variabel instansi pada objek harus bisa diserialisasi, karena interface Serializable tidak mempunyai metode apa-apa. Interface ini ada hanya sebagai penanda untuk kompiler supaya kompiler tahu bahwa objek ini digunakan untuk baca tulis ke suatu media.
Yang perlu kita lakukan adalah menambahkan "implements Serializable" pada definisi kelas. Banyak kelas standar Java yang telah dideklarasikan untuk bisa diserialisasi, termasuk semua komponen kelas Swing dan AWT. Artinya komponen GUI pun bisa disimpan dan dibaca dari dalam perangkat I/O menggunakan ObjectInputStream dan ObjectOutputStream.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS