AMAZING

Diposting oleh via kus-kus On 19.45 0 komentar

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 – Sammy Simorangkir

Diposting oleh via kus-kus On 19.41 0 komentar

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

Coboy Junior - KAMU

Diposting oleh via kus-kus On 05.40 0 komentar
kamu buat aku tersipu buatku malu-malu
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 / Swing X

Diposting oleh via kus-kus On 17.56 0 komentar
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

Diposting oleh via kus-kus On 03.36 0 komentar
Java Foundation Class

Java Foundation Class (JFC) merupakan sekumpulan class-class Java yang digunakan untuk mengembangkan perangkat lunak berbasis GUI (Graphical User Interface). Selain itu, JFC juga mempunyai class-class yang digunakan untuk menambahkan fungsi dan kemampuan interaksi yang variatif dari pemrograman Java. Dari definisi ini, JFC tidak hanya berisi class-class GUI saja tetapi juga class-class lain yang dapat meningkatkan kemampuan pemrograman Java baik dari segi fungsionalitasnya maupun dari segi kemampuan interaksi pemrograman Java yang sangat kaya.

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.



Utungnya kita tidak akan menggunakan semua class-class dalam package swing, hanya sebagian kecil saja dari class-class tersebut yang nantinya akan benar-benar kita gunakan. Sehingga kita bisa berkonsentrasi untuk memahami beberapa komponen penting saja. Dalam modul ini nanti kita hanya akan menggunakan beberapa class komponen swing yang penting saja. Beberapa kelas ini sudah cukup sebagai bahan pemembuat perangkat lunak berkualitas. Komunitas Java juga menyediakan banyak sekali library swing, antara lain dari Swingx dan JGoodies yang mengembangkan library standard swing dengan menambahkan berbagai macam feature menarik. Sedangkan komunitas dari javadesktop.org mengembangkan banyak sekali library swing untuk keperluan khusus. Nyaris semua komponen yang kita perlukan baik komponen umum hingga komponen untuk tujuan khusus banyak tersedia di internet, kita tinggal mencari dan menggunakan. Praktek yang baik dalam memilih komponen apa yang tepat adalah dengan mencari dahulu informasi di internet. Hal ini sangat bermanfaat untuk mengurangi waktu kita mengembangkan komponen, sehingga kita bisa lebih banyak berkonsentrasi untuk mengembangkan sisi bisnis dan usability dari software yang kita kembangkan. Sebaik apapun softeware yang kita buat tapi tidak  memberikan nilai tambah terhadap masalah yang dihadapi adalah kesia-siaan belaka. Banyak sekali software yang dianggap gagal memberikan nilai tambah terhadap masalah yang dihadapi hanya karena tampilan GUI-nya sangat susah dipahami dan tidak intuitif.

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:
  1.  Install Java Development Kit (JDK)
  2.  Membuat program HelloWorld itu sendiri.
  3.  Melakukan kompilasi program HelloWorld
  4.  Menjalankan program HelloWorld
Install Java Development Kit
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 :
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:
c:\latihan> java HelloWorld
Jika anda bekerka di lingkungan GNU/Linux jalankan perintah berikut ini:
shell$ java HelloWorld

Contoh Event Handling di Java

Diposting oleh via kus-kus On 00.50 0 komentar
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 pada JAVA

Diposting oleh via kus-kus On 00.40 0 komentar
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.

Enkripsi dan Dekripsi

Diposting oleh via kus-kus On 00.22 0 komentar

Sekilas Tentang Enkripsi

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);

Stream IO

Diposting oleh via kus-kus On 23.47 0 komentar
 
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 :
  1. Kelas InputStream , dan
  2. 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