AMAZING
YOU'RE MY EVERYTHING THE REASON I SING
YOU'VE TAKEN ME UNDER YOUR WINGS
AND CLOSER TO YOU, I DRAW NEAR
MY LIFE'S IN YOUR HANDS
MY HEART BEATS IN YOUR PERFECT LOVE
MY LIPS SHALL PRAISE YOU, ADORE YOU
AND LIFTING MY LOVE, I WILL SING
REFF :
YOU'RE AMAZING
NEVER CHANGING
ALWAYS WITH ME
ENTHRONED WITHIN MY SOUL
OVERFLOWING
MY HEART OFFERS
THE DEEPEST OF HONOR AND WORSHIP
AMAZING
Permata Hatiku
Dengan seg'nap hati dan jiwaku
Ku datang pada-Mu dalam kerinduan
Kasih-Mu yang sanggup mengubahku
Dan menguatkanku dalam pengharapan
Yesu engkaulah permata hatiku
Dunia tak dapat menggantikan-Mu
Kemuliaan-Mu tercurah bagiku
Menjadikanku indah dan semakin indah bagi-Mu
saat bersamamu, saat ku sapa dirimu
aku kok merinding buluku, kok jadi gugup aku
saat bersamamu, saat kau senyum padaku
mungkin inilah rasanya rasa suka pada dirinya
sejak pertama aku bertanya facebook-mu apa nomermu berapa
mungkin inilah rasanya cinta pada pandang pertama
senyuman manismu itu buat aku dag dig dug melulu
nanti aku follow twitter-mu aku tunggu retweet-mu
agar aku tahu sukakah kamu kepadaku
mungkin inilah rasanya rasa suka pada dirinya
sejak pertama aku bertanya facebook-mu apa nomermu berapa
mungkin inilah rasanya cinta pada pandang pertama
senyuman manismu itu buat aku dag dig dug melulu
yeah cuma kamu cuma kamu yang bisa membuatku
tidur tak tentu memikirkanmu pujaan hati
oh kamu cantik sekali
oh Tuhan aku hanya ingin dia tahu
kau lucu kau sangat lucu
mungkin inilah rasanya rasa suka pada dirinya
sejak pertama aku bertanya facebook-mu apa nomermu berapa nomermu berapa
mungkin inilah rasanya cinta pada pandang pertama
senyuman manismu itu buat aku dag dig dug melulu
mungkin inilah rasanya rasa suka pada dirinya
sejak pertama (sejak pertama) aku bertanya
(kulihat senyumanmu lirikanmu begitu cantiknya kamu)
facebook-mu apa nomermu berapa
mungkin inilah rasanya cinta pada pandang pertama
senyuman manismu itu buat aku dag dig dug melulu
kamu kamu kamu kamu kamu kamu kamu kamu
kamu kamu kamu kamu kamu kamu kamu kamu
Swing MakeOver :
Teknik memanipulasi tampilan user interface (Java Swing). Teknik ini
dilakukan dengan menggunakan penggambaran agar tampilan
komponen-komponen Java Swing seperti TextField, Button, dan lain-lain
menjadi tampak lebih cantik
SwingX :
Salah satu ‘turunan‘ dari Swing yang
bisa digunakan seorang progammer jika bosan dengan Swing, atau
menginginkan fitur-fitur tambahan pada Swing. Komponen pada SwingX
hampir sama dengan komponen pada Swing, contoh pada Swing terdapat
komponen JList, JTable, JComboBox dan pada SwingX komponen tersebut
menjadi JXList, JXTable, JXComboBox.
Kelebihan SwingX
- Terdapat fungsi addHighlighter() yang digunakan untuk memberi highlight pada sel tertentu (bisa berupa warna background berbeda dan sebagainya)
- SwingX juga menawarkan komponen baru, seperti JXDatePicker. Ini adalah contoh komponen yang sering dibutuhkan oleh aplikasi, tetapi tidak disediakan oleh Swing secara langsung.
- SwingX juga memiliki kotak dialog siap pakai, seperti JXTipOfTheDay, yang umum dipakai untuk menampilkan tips di program.
Java Foundation Class
Feature JFC
1.1 Tabel Feature JFC |
1.2 Tabel Feature JFC |
Pemilihan komponen dan library swing yang tepat dapat mempengaruhi kualitas program yang kita buat secara signifikan. Hal ini dikarenakan, dalam dunia Java Standard Edition, lebih spesifik lagi aplikasi Java yang dibangun menggunakan swing, belum ada framework yang benar-benar komprehensif membimbing pengembang untuk membuat aplikasi yang berkualitas.
Pada umumnya aplikasi yang dikembangkan dengan Swing mempunyai kode yang sangat 'kotor', dimana kode yang berisi pengendalian terhadap event komponen swing bercampur aduk dengan kode yang berisi aturan bisnis dan kode yang berisi manipulasi terhadap data.
Swing Package
Swing API sangat bagus dan lengkap, Java 6.0 menyertakan setidaknya tujuh belas (17) buah package yang berisi class-class swing yang siap digunakan.Swing HelloWorld
Menggunakan contoh langsung adalah cara yang tepat untuk memulai proses belajar. Cara ini memberikan gambaran kongkrit tentang subject yang akan dipelajari, sehingga proses belajar lebih cepat diserap. Untuk tujuan ini, kita akan membuat sebuah program kecil yang menampilkan kata “HelloWorld” menggunakan komponen swing. Berikut ini adalah langkah-langkah yang harus anda lakukan untuk membuat program “HelloWorld” berbasis komponen swing:
- Install Java Development Kit (JDK)
- Membuat program HelloWorld itu sendiri.
- Melakukan kompilasi program HelloWorld
- Menjalankan program HelloWorld
Yang perlu kita lakukan dalam langkah ini hanyalah mendownload JDK dari website java.sun.com. kemudian jalankan program instalasinya dan ikuti perintah-perintah dalam langkah-langkah instalasi tersebut. Setelah proses instalasi selesai, kita siap untuk membuat program Java.
Membuat program HelloWorld
Program Java dengan tampilan seperti di atas dapat dibuat dengan dua cara. Cara yang pertama adalah dengan menggunakan text editor dan mengetik kode program. Cara yang kedua adalah dengan menggunakan Netbeans Matisse GUI Builder.
Lakukan langkah-langkah berikut ini untuk membuat program diatas menggunakan text editor:
1. Buka text editor kesayangan anda.
2. Ketikkan kode program di bawah ini dan simpan dengan nama file HelloWorld.java :
public class HelloWorld {
public HelloWorld(){ }
public void display(){
JFrame.setDefaultLookAndFeelDecorated(true);
JLabel label = new JLabel("HelloWorld");
JFrame frame = new JFrame();
frame.getContentPane().add(label);
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] str){
HelloWorld hello = new HelloWorld();
SwingUtilities.invokeLater(
new Runnable() {
public void run(){ hello.display(); }
});
}
}
Melakukan kompilasi program HelloWorld
Kompilasi program tersebut dengan cara menjalankan program javac (java compiler). Jika anda bekerja di lingkungan windows buka command prompt, kemudian ketik program berikut ini :
Kompilasi program tersebut dengan cara menjalankan program javac (java compiler). Jika anda bekerja di lingkungan windows buka command prompt, kemudian ketik program berikut ini :
c:\latihan> javac HelloWorld.java
Jika anda bekerja di lingkungan GNU/linux, buka console dan ketikkan perintah berikut ini :
shell$ javac HelloWorld.java
Menjalankan program HelloWorld
Proses kompilasi akan menghasilkan file yang berekstensi .class, file inilah yang akan kita eksekusi. Jika anda bekerja di lingkungan windows lakukan perintah berikut ini:
Proses kompilasi akan menghasilkan file yang berekstensi .class, file inilah yang akan kita eksekusi. Jika anda bekerja di lingkungan windows lakukan perintah berikut ini:
c:\latihan> java HelloWorld
Jika anda bekerka di lingkungan GNU/Linux jalankan perintah berikut ini:
shell$ java HelloWorld
Event Handling merupakan konsep penanganan suatu action yang terjadi. Jadi suatu program akan berjalan saat sesuatu terjadi, misalnya saat tombol diklik, saat combo box dipilih dan sebagainya. Java memiliki beberapa jenis Event Handling, salah satunya adalah class ActionListener yang menangani aksi terhadap tombol. Berikut ini contoh programnya:
Tampilan:
Program:
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ClickMe extends JFrame implements ActionListener { private JButton tombol; public ClickMe() { super ("Event Handling"); Container container = getContentPane(); container.setLayout(new FlowLayout()); tombol = new JButton ("Click Me!"); tombol.addActionListener(this); container.add(tombol); setSize (200,100); setVisible (true); } public static void main (String arg[]) { ClickMe test = new ClickMe(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed (ActionEvent e) { if (e.getSource() == tombol) { JOptionPane.showMessageDialog(null, "You click me, guys !!!"); } } }
repost : http://contohprogram.info/
Event Handling
Event berguna untuk menangani interaksi user dengan program, misalnya user memilih
sebuah menu dalam aplikasi MIDlet.Untuk menangani event perlu
mengimplementasikan interface CommandListener dan atau ItemListener.
CommandListener berfungsi untuk menangani jika user memilih Command tertentu
sedangkan ItemListener berfungsi untuk menangani jika user mengubah nilai seperti
misalnya mengubah pilihan pada ChoiceGroup.
Untuk memberikan gambaran sebuah event bekerja, perhatikan contoh berikut.
import javax.microedition.MIDlet.*;
import javax.microedition.lcdui.*;
public class NotHelloWorld2 extends MIDlet implements CommandListener{
private Command cmdExit;
private Display display;
public NotHelloWorld2()
{
display = Display.getDisplay(this);
cmdExit = new Command("Exit", Command.SCREEN,2);
}
public void startApp()
{
TextBox t = new TextBox("Not ","Not Hello World",256,0);
t.addCommand(cmdExit);
t.setCommandListener(this);
display.setCurrent(t);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
public void commandAction(Command cmd,Displayable disp)
{
if(cmd==cmdExit)
{
destroyApp(false);
notifyDestroyed();
}
}
}
Pemrograman aplikasi wireless dengan Java/J2ME 24
Pada contoh kedua ini, kita tambahkan sebuah Command untuk keluar dari aplikasi
yang telah kita buat pada contoh 1. Ketika program pertama kali dipanggil, maka state
berada pada Aktif, disini sebuah TextBox dan Command dibuat. Kemudian program
menunggu respon dari user dengan mengimplementasikan CommandListener. Ketika
user menekan Command “cmdExit” , maka program memanggil
metodh(destroyApp) untuk membunuh MIDlet.
Event berguna untuk menangani interaksi user dengan program, misalnya user memilih
sebuah menu dalam aplikasi MIDlet.Untuk menangani event perlu
mengimplementasikan interface CommandListener dan atau ItemListener.
CommandListener berfungsi untuk menangani jika user memilih Command tertentu
sedangkan ItemListener berfungsi untuk menangani jika user mengubah nilai seperti
misalnya mengubah pilihan pada ChoiceGroup.
Untuk memberikan gambaran sebuah event bekerja, perhatikan contoh berikut.
import javax.microedition.MIDlet.*;
import javax.microedition.lcdui.*;
public class NotHelloWorld2 extends MIDlet implements CommandListener{
private Command cmdExit;
private Display display;
public NotHelloWorld2()
{
display = Display.getDisplay(this);
cmdExit = new Command("Exit", Command.SCREEN,2);
}
public void startApp()
{
TextBox t = new TextBox("Not ","Not Hello World",256,0);
t.addCommand(cmdExit);
t.setCommandListener(this);
display.setCurrent(t);
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
public void commandAction(Command cmd,Displayable disp)
{
if(cmd==cmdExit)
{
destroyApp(false);
notifyDestroyed();
}
}
}
Pemrograman aplikasi wireless dengan Java/J2ME 24
Pada contoh kedua ini, kita tambahkan sebuah Command untuk keluar dari aplikasi
yang telah kita buat pada contoh 1. Ketika program pertama kali dipanggil, maka state
berada pada Aktif, disini sebuah TextBox dan Command dibuat. Kemudian program
menunggu respon dari user dengan mengimplementasikan CommandListener. Ketika
user menekan Command “cmdExit” , maka program memanggil
metodh(destroyApp) untuk membunuh MIDlet.
Dalam hal keamanan komputer ada yang di sebut dengan ilmu kriptografi yaitu dimana sebuah karakter atau pesan diubah atau diacak menjadi bentuk lain yang tidak bermakna, sehingga pesan itu tidak dikenali atau dibaca oleh pihak yang bisa merugikan atau ingin merusak pesan atau file tersebut sebelum file atau pesan itu sampai pada tujuan. Dan dalam bidang kriptografi ada yang disebut dengan enkripsi, berikut ini adalah beberapa definisi dari enkripsi :
1. Enkripsi ialah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus.
2. Enkripsi adalah proses mengacak data sehingga tidak dapat dibaca oleh pihak lain.
Sehingga dapat diambil kesimpulan bahwa enkripsi adalah proses merubah sebuah file atau pesan yang bisa dibaca menjadi tidak bisa dibaca.
Di pertengahan tahun 1970-an, enkripsi kuat dimanfaatkan untuk pengamanan oleh sekretariat agen pemerintah Amerika Serikat pada domain publik, dan saat ini enkripsi telah digunakan pada sistem secara luas, seperti Internet e-commerce, jaringan Telepon bergerak dan ATM pada bank.
Contoh Enkripsi dan Deskripsi :
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class Enkripsi extends JFrame{
static String teks=”";
private JLabel LabelPesan=new JLabel(“Pesan:”);
private static JTextField TeksImputan=new JTextField(40);
private JLabel LabelPergeseran=new JLabel(“Pergeseran”);
private static JTextField TeksPergeseran=new JTextField(“2″);
private JLabel LabelEnkripsi=new JLabel(“Hasil Enkripsi:”);
private static JTextField TeksHasilEnkripsi=new JTextField(40);
private JButton TombolEnkripsi=new JButton(“Enkripsi”);
private JButton TombolReset=new JButton(“Reset”);
private JPanel PanelPesan_Label=new JPanel();
private JPanel PanelTombol=new JPanel();
public Enkripsi(){ //mengatur GUI
PanelTombol.setLayout(new GridLayout(6,1,30,10));
PanelTombol.add(LabelPesan);
TeksImputan.setToolTipText(“Isi pesan yang akan dienkripsi di sini”);
PanelTombol.add(TeksImputan);
PanelTombol.add(LabelPergeseran);
TeksPergeseran.setToolTipText(“Masukkan pergeseran di sini”);
PanelTombol.add(TeksPergeseran);
PanelTombol.add(LabelEnkripsi);
TeksHasilEnkripsi.setToolTipText(“Anda tidak perlu mengisi bagian ini. Bagian ini akan terisi setelah Anda melakukan enkripsi.”);
PanelTombol.add(TeksHasilEnkripsi);
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
add(PanelTombol);
TombolEnkripsi.setToolTipText(“Klik untuk melakukan enkripsi pesan”);
PanelPesan_Label.add(TombolEnkripsi);
TombolReset.setToolTipText(“Klik untuk menghapus semua pesan”);
PanelPesan_Label.add(TombolReset);
setLayout(new FlowLayout(FlowLayout.CENTER));
add(PanelPesan_Label,BorderLayout.SOUTH);
Contoh Enkripsi dan Deskripsi :
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class Enkripsi extends JFrame{
static String teks=”";
private JLabel LabelPesan=new JLabel(“Pesan:”);
private static JTextField TeksImputan=new JTextField(40);
private JLabel LabelPergeseran=new JLabel(“Pergeseran”);
private static JTextField TeksPergeseran=new JTextField(“2″);
private JLabel LabelEnkripsi=new JLabel(“Hasil Enkripsi:”);
private static JTextField TeksHasilEnkripsi=new JTextField(40);
private JButton TombolEnkripsi=new JButton(“Enkripsi”);
private JButton TombolReset=new JButton(“Reset”);
private JPanel PanelPesan_Label=new JPanel();
private JPanel PanelTombol=new JPanel();
public Enkripsi(){ //mengatur GUI
PanelTombol.setLayout(new GridLayout(6,1,30,10));
PanelTombol.add(LabelPesan);
TeksImputan.setToolTipText(“Isi pesan yang akan dienkripsi di sini”);
PanelTombol.add(TeksImputan);
PanelTombol.add(LabelPergeseran);
TeksPergeseran.setToolTipText(“Masukkan pergeseran di sini”);
PanelTombol.add(TeksPergeseran);
PanelTombol.add(LabelEnkripsi);
TeksHasilEnkripsi.setToolTipText(“Anda tidak perlu mengisi bagian ini. Bagian ini akan terisi setelah Anda melakukan enkripsi.”);
PanelTombol.add(TeksHasilEnkripsi);
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
add(PanelTombol);
TombolEnkripsi.setToolTipText(“Klik untuk melakukan enkripsi pesan”);
PanelPesan_Label.add(TombolEnkripsi);
TombolReset.setToolTipText(“Klik untuk menghapus semua pesan”);
PanelPesan_Label.add(TombolReset);
setLayout(new FlowLayout(FlowLayout.CENTER));
add(PanelPesan_Label,BorderLayout.SOUTH);
Pengantar Stream
Stream berhubungan dengan proses untuk membaca data dari suatu sumber atau mengirimkan data ke suatu tujuan. Sebagai contoh, anda telah terbiasa dengan stream untuk menampilkan informasi ke layar, yaitu menggunakan System.out.printlm () , ataupun mengirimkan pesan kesalahan ke layar melalui System.err.println().
Pada Java terdapat banyak kelas yang berhubungan denagn stream. Namun secara prinsip terdapat dua buah kelas yang menjadi dasar bagi kelas-kelas lain yang berhubungan dengan stream, yaitu :
- Kelas InputStream , dan
- Kelas OutputStream.
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 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
Kelas InputStream juga memiliki metode untuk membaca beberapa byte datadalam satu langkah ke dalam array byte. Akan tetapi InputStream tidak memiliki metode untuk membaca jenis data lain, seperti int atau doubledar ialiran. Ini bukan masalah karena dalam prakteknya kita tidak akanmenggunakan objek bertipe InputStream secara langsung. Yang akan kitagunakan adalah kelas turunan dari InputStream yang memiliki beberapametode 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
InputStream
Beberapa kelas turunan dari InputStream dapat dirangkum dalam tabel di bawah ini :
Kelas | Kegunaan | Argumen yang dibutuhkan untuk membuat objek |
ByteArrayInputStream | Menggunakan buffer pada memori sebagai aliran input | Buffer yang akan digunakan sebagai aliran input |
StringBufferInputStream | Mengubah string menjadi InputStream | Suatu String (di dalamnya sebenarnya menggunakan StringBuffer) |
FileInputStream | Untuk membaca informasi dari dalam file | String yang berupa nama suatu file, atau objek bertipe File atau FileDescriptor |
PipedInputStream | Menghasilkan data yang ditulis oleh PipedOutputStream. Mengimplementasi konsep "piping". Bisa digunakan untuk multi-threading | Objek PipedOutputStream |
SequenceInputStream | Menggabungkan dua atau lebih InputStream menjadi satu InputStream | Dua atau lebih objek bertipe InputStream atau kontainer bertipe Enumeration yang berisi InputStream yang akan digabungkan |
FilterInputStream | Kelas abstrak yang merupakan interface dari beberapa kelas bantu untuk menggunakan InputStream lain | |
FilterInputStream adalah lapisan di atas InputStream yang berguna untuk memberi landasan pada kelas-kelas dekorator di atas. Kenapa dekorator? Karena kelas-kelas ini hanya memberikan fungsionalitas tambahan, akan tetapi tidak mengubah bagaimana I/O itu sendiri bekerja. Seperti disebutkan sebelumnya, bahwa kelas dasar InputStream dan OutputStream hanya memiliki metode-metode paling sederhana. Kelas-kelas ini memperbanyak metode baca/tulis untuk kemudahan pemrograman.
Kelas FilterInputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum dalam tabel berikut ini :
Kelas | Kegunaan | Argumen yang dibutuhkan untuk membuat objek |
DataInputStream | Digunakan bersama-sama dengan DataOutputStream sehingga kita bisa menulis tipe data primitif, kemudian membacanya kembali tanpa harus diformat sendiri | InputStream |
BufferedInputStream | Digunakan untuk menghindari pembacaan langsung dari media secara fisik setiap kali perintah read() diberikan. Atau dengan kata lain "gunakan buffer" untuk baca tulis | InputStream dengan kemungkinan menentukan besar buffer sendiri |
LineNumberInputStream | Mencatat nomor baris dalam InputStream. Kita bisa menggunakan perintah getLineNumber() dan setLineNumber(int) | InputStream |
PushBackInputStream | Memiliki satu byte buffer sehingga kita bisa meletakkan kembali karakter yang sudah diambil (dibaca) | InputStream |
OutputStream
Beberapa kelas turunan dari OutputStream dapat dirangkum dalam tabel di bawah ini :
Kelas | Kegunaan | Argumen yang dibutuhkan untuk membuat objek |
ByteArrayOutputStream | Membuat buffer dalam memori. Semua data yang kita kirim akan disimpan di memori ini. | Opsional untuk memberikan besar buffer yang akan disiapkan |
FileOutputStream | Untuk menulis informasi ke dalam file | String yang berupa nama suatu file, atau objek bertipe File atau FileDescriptor |
PipedOutputStream | Informasi yang kita kirim di aliran output ini akan berakhir pada objek bertipe PipedInputStream. Mengimplementasi konsep "piping". Bisa digunakan untuk multi-threading | Objek PipedInputStream |
FilterOutputStream | Kelas abstrak yang merupakan interface dari beberapa kelas bantu untuk menggunakan OutputStream lain. | |
Kelas FilterOutputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum dalam tabel berikut ini :
Kelas | Kegunaan | Argumen yang dibutuhkan untuk membuat objek |
DataOutputStream | Digunakan bersama-sama dengan DataInputStream sehingga kita bisa menulis tipe data primitif, kemudian membacanya kembali tanpa harus diformat sendiri | OutputStream |
PrintStream | Untuk mengeluarkan output yang sudah diformat. DataOutputStream hanya menangani bagaimana data disimpan sehingga bisa diambil kembali. PrintStream lebih berkonsentrasi pada "tampilan", sehingga data yang ditulis bisa dibaca dengan baik. | OutputStream dengan tambahan opsi boolean untuk memerintahkan buffer akan dikosongkan (flush) setiap kali baris baru ditulis. |
BufferedOutputStream | Digunakan untuk menghindari penulisan langsung dari media secara fisik setiap kali perintah write() diberikan. Atau dengan kata lain "gunakan buffer" untuk baca tulis. Kita bisa menggunakan perintah flush() untuk mengosongkan buffer dan mengirimkan hasilnya ke media fisik. | OutputStream dengan kemungkinan menentukan besar buffer sendiri |