Senin, 11 Februari 2013

TIPE DATA

  1. Tipe Data

    Tipe Data atau Jenis Data dapat diartikan sebagai media untuk mendefinisikan Variabel. Secara sederhana tipe data dapat didefinisikan dengan istilah tempat untuk menentukan pemberian nilai terhadap suatu variabel sesuai atau tidak dengan nilai yang diberikan oleh user. Dalam versi lain tipe data juga diartikan sebagai batasan terhadap fungsi tanda pengenal terhadap semua nilai yang diterima. logika yang dapat kita berikan adalah ketika kita menempatkan tanda pengenal harga hanya mengenal angka, maka ketika kita memberikan nilai berupa string maka secara otomatis data tersebut akan ditolak karena nilai tersebut tidak dikenali oleh tipe data yang diberikan.
    1.1. Tipe Data Numerik
    Tipe data Numerik (Angka) adalah tipe data yang hanya dapat menampung data angka murni (bilangan bulat atau real). Berikut adalah jenis – jenis Tipe data Numerik
    Tabel Tipe Data Numerik Bab 3   Tipe Data, Variabel dan Konstanta
    Gambar 3.1 Jenis Tipe Data Numerik
    1.2. Tipe Data NonNumerik
    Tipe Data NonNumerik adalah tipe data selai tipe data angka yaitu :
    Tabel Tipe Data NonNumeric Bab 3   Tipe Data, Variabel dan Konstanta
    Gambar 3.2 Jenis Tipe Data NonNumerik
  2. Variabel

    Variabel adalah merupakan tempat penyimpanan data yang sifatnya sementara. Variabel dialokasikan oleh computer untuk menampung nilai data dan variable harus memiliki tipe data atau jenis data. Setiap variable harus mempunyai nama untuk pemberian nama variable terdapat beberapa syarat yaitu :
    Syarat Penamaan Variabel :
    • Panjang Karakter Maksimal 255 Karakter
    • Tidak dapat menggunakan Spasi
    • Tidak dapat dimulai dengan angka
    • Tidak dapat menggunakan Tanda Baca selain ( _ )
    Contoh :
    Penamaan Variabel Bab 3   Tipe Data, Variabel dan Konstanta
    Gambar 3.3 Contoh Penamaan Variabel
    2.1. Pendeklarasian Variabel
    Pendeklarasian Variabel adalah suatu kegiatan untuk mengenalkan Nama Variabel dengan Tipe Data yang digunakan di Memory (Random Access Memory) atau dapat juga didefenisikan sebagai awal pemesanan tempat pada blok – blok memoryDidalam Visual Basic, sangat dianjurkan untuk mendeklarasikan suatu variable dengan cara menentukan nama dan type data yang digunakan.
    Pada saat mendeklarasikan variable terdapat beberapa tempat yang dapat digunakan yaitu :
    • General Declarations Form / Module
    • Didalam Procedure atau Fungsi
    Bentuk Umum Pendeklarasian Variable :
    Bentuk Umum Penamaan Variabel Bab 3   Tipe Data, Variabel dan Konstanta
    Gambar 3.4 Bentuk Umum Penamaan Variabel
    Untuk mendeklarasikan variable diperlukan yang namanya kata kunci, adapun kata kunci disini yang menentukan sifat daripada varibel. Sifat Variabel dapat juga diartikan sebagai Jenis Variabel (batasan hak akses variable). Berikut adalah sifat – sifat / jenis – jenis dari Variabel.
    Jenis Variabel Bab 3   Tipe Data, Variabel dan Konstanta
    Gambar 3.5 Jenis Variabel
  3. Konstanta

    Kontanta adalah tempat penyimpanan data yang sifatnya tetap. Konstanta sama seperti halnya variable yaitu sama – sama sebagai tempat penyimpanan data akan tetapi Konstanta hanya dapat memiliki satu Data dan tidak memiliki tipe data. Akan tetapi konstanta hanya mengenal 2 tipe data / jenis data yaitu : String dan Double.
    Pada saat mendeklarasikan Konstanta terdapat beberapa tempat yang dapat digunakan yaitu :
    1. General Declarations Form / Module
    2. Didalam Procedure atau Fungsi

KONSEP VARIABEL

Variabel adalah satuan yang dipakai oleh program sebagai basis penyimpanan. Hurus kecil dan huruf besar dianggap berbeda, sehingga HelloWorld, helloworld, HELLOWORLD, dan heLLOwoRLD adalah nama yang berbeda-beda. Beberapa kata tertentu merupakan nama yang memiliki kegunaan tertentu oleh Java, dan tidak dapat dipergunakan oleh programmer.

Dalam bahasa Java, satu-satunya cara untuk memasukkan data ke dalam variabel adalah dengan menggunakan assignment statement, atau pernyataan pemberian nilai. Pernyataan ini berbentuk:

variable = ekspresi;

di mana ekspresi menyatakan apapun yang berhubungan dengan nilai suatu data. Ketika komputer menjalankan instruksi ini, komputer akan menghitung dan menyimpan hasilnya ke dalam variabel. Contoh:

kecepatan = 40;

Variable dalam pernyataan di atas adalah kecepatan dan ekspresinya adalah angka 40. Komputer menghitung pernyataan ini dan menyimpan 40 ke dalam variabel kecepatan, dan mengganti apapun yang telah disimpan sebelumnya.

Sekarang misalnya kita ingin melakukan perhitungan yang lebih kompleks:

jarak = kecepatan * waktu


Di sini, * merupakan operasi perkalian. Komputer mengambil data yang disimpan dalam variabel kecepatan dan waktu, melakukan perkalian, dan menyimpan hasilnya dalam jarak.
Variabel dalam bahasa Java didesign untuk menyimpan hanya 1 jenis tipe data.

Kompiler akan menampilkan kesalahan sintax apabila variabel ini dicoba untuk diberi tipe data jenis lain. Oleh karena itu Java disebut bahasa pemrograman bertipe kuat atau strongly typed language.


Suatu variabel baru dapat digunakan apabila telah dideklarasikan. Deklarasi variable berbentuk seperti :

nama_tipe nama_variabel;

nama_variabel dapat berupa sebuah nama variabel atau beberapa nama sekaligus yang dipisah dengan koma. Gaya pemrograman yang baik yaitu dengan mendeklarasikan satu variabel dalam satu pernyataan, kecuali variabel tersebut berhubungan erat satu sama lain. Misalnya:

float num;
String nama;
String nama;
boolean bol;
int x,y;

Atau pendeklarasian variabel bisa juga dilakukan sekaligus dengan pemberian nilainya, seperti pada contoh berikut:

int num = 1000;
char ch = 'e';
float angka = -1.504;
boolean bol = true;

Java memiliki beberapa jenis variabel yang dapat dikelompokkan sebagai berikut :

* Instance Variables (tidak statis). Dalam bahasa pemrograman berorientasi objek, objek menyimpan variabel yang tidak dideklarasikan dengan kata kunci static dalam kategori non-statis, atau dapat berubah-ubah. Suatu kelas dapat dijelmakan ke dalam beberapa objek. Nilai yang terkandung dalam variabel tak-statis ini berbeda untuk setiap objeknya.

* Class Variables (statis). Variabel ini merupakan bagian integral dari suatu kelas, dan tidak ada satu objek pun yang dapat menyatakan kepemilikan atas variabel ini. Variabel yang dideklarasikan sebagai statis digunakan bersama oleh semua objek. Variabel ini lebih bersifat global yang nilainya sama untuk setiap objek pada kelas yang bersangkutan.

* Local Variables. Variabel ini didefinisikan di dalam suatu metoda (method) atau dalam suatu prosedur. Variabel ini bersifat lokal karena hanya dapat diakses oleh metoda atau prosedur tersebut.

* Paramater atau argumen adalah variabel yang digunakan pada saat suatu metoda atau prosedur dipanggil. Parameter berguna untuk memberikan nilai awal untuk diteruskan (pass) ke dalam suatu prosedur atau metoda.

Aturan membuat nama variable :

* Dimulai dengan huruf, kemudian diikuti dengan huruf atau angka dan underscore. nama juga dapat dimulai dengan tanda_ atau $ tapi tidak direkomendasikan.

* Panjang variabel tidak dibatasi,secara umum dan praktis tidak melebihi 20 karakter.
 




 

JAVA APPLET

JAVA APLLET

Java menyediakan lingkungan pemrograman applet yang menghasilkan suatu komponen web yang dapat ditampilkan di dalam file HTML anda dan di browse dari mana saja melalui internet. Di dalam file HTML anda membuat suatu tag line, contohnya:


<applet code="MyApplet.class" width=100 height=100>
... untuk menyatakan parameter-parameter dari applet
</applet>
Struktur program applet berbeda dengan program application biasa. Program application biasanya berisikan suatu kelas utama yang di dalamnya terdapat suatu method yang bernama main(String [] arg) dengan ragam public dan static. Java interpreter setelah loading kelas ini akan jump untuk mengeksekusi program mulai dari metoda ini lalu mengikuti flow proses yang ada di dalamnya.
Sementara, dalam applet method main tersebut tidak ada. Pada dasarnya program applet merupakan subclass dari kelas Applet yang di dalamnya sudah terdapat sejumlah method yang akan dioverrid di dalam applet anda. Ada 2 metoda yang biasanya dioverrid.
  • void init()
    Suatu metoda untuk melakukan inisialisasi
  • void paint(Graphics g)
    Suatu metoda yang akan dijalankan secara otomatis saat applet terfokuskan pada browser (misalnya applet tertutup window lain lalu saat anda menampilkannya browser kembali. Contoh lain, anda menscroll page yang berisi applet sehingga applet tidak tampak, lalu menscroll balik untuk memunculkan applet tersebut). Graphics g adalah image yang akan kita gambari dalam metoda ini dan ia tidak perlu kita create karena ia dicreate secara otomatis saat applet diload. By default, image applet tidak disimpan jadi applet perlu untuk penggambar ulang.

Contoh 1:

Suatu blank applet (init() dan paint(Graphics g) tidak di-overrid) berikut ini sudah akan bisa dijalankan browser:
public class BlankApplet extends Applet {
// engga ada apa-apanya disini
}

Contoh 2:

Suatu applet yang menggambarkan lingkaran di suatu titik pusat di dalam metoda paint(Graphics g):
public class CircleApplet extends Applet { public void paint(Graphics g){ g.drawOval(100,100,75,75); } }

Contoh 3:

Suatu applet yang menghitung berapa kali metoda paint(Graphics g) dijalankan:
public class CountingApplet0 extends Applet { int count;
public void init(){ count = 0; }
public void paint(Graphics g) { g.drawString("Telah digambarkan ke-"+count+" kali",10,80);
count++;
}
}

Pertanyaan: jika paint(Graphics g) secara otomatis dipanggil oleh sistem, maka bagaimana jika kita melakukan pengubahan pada applet dan ingin segera ditampilkan? Jawab: kita bisa memanggil metoda repaint() (suatu metoda yang sudah ada dalam applet) dan di dalam repaint() itu pemanggilan ke metoda paint(Graphics g) dilakukan. Kita akan melihat contohnya saat pembahasan GUI dengan applet.

2. Konsep GUI dalam Applet

Java menyediakan package agar kita (yang membrowse applet) dapat melakukan interaksi dengan applet yaitu java.awt.* (awt=Advance Widget Toolkit). Aplikasinya amat mudah:
  • definisikan layout dari komponen-komponen interaksi tersebut di dalam applet
  • create komponen-komponen interaksi mengisi layout tadi
  • definisikan event-event handler jika dilakukan aksi pada masing-masing komponen.
Kedua hal tersebut dilakukan di dalam metoda init() (atau metoda yang dipanggil di dalam init() tersebut).

2.1. Mendefinisikan Layout

Untuk mendefinisikan layout, suatu metoda this.setLayout(...) (prefiks this. bisa dihilangkan!) dipanggil dengan "..." diisi:
  • jika diisi null (ditulis setLayout(null)):
    maka artinya penempatan dan ukuran komponen akan dilakukan secara eksplisit oleh programmer
  • jika diisi instans dari BorderLayout (ditulis setLayout(new BorderLayout())):
    maka layoutnya akan mengikuti border dari applet (posisi hanya disebutkan dengan notasi "north", "south", "west", "east" yang menyatakan border atas, bawah, kiri, kanan dari applet
  • jika diisi instans dari FlowLayout (ditulis setLayout(new FlowLayout())):
    maka layoutnya akan "mengalir" mulai dari pojok kiri atas ke kanan, dan setiap baris dari atas ke bawah.
  • (Masih ada sejumlah layout lain yang menarik untuk dicoba, tapi tidak dibahas di sini.)
Bisa juga kita definisikan layout yang lebih kompleks secara hirarkis dengan mengcreate suatu komponen Panel. Panel sendiri adalah suatu komponen yang mana di atasnya bisa ditempatkan komponen-komponen lain. Setelah membahas komponen akan diberi contoh mengenai layout dan layout kompleks tsb.

2.2. Create komponen-komponen interaksi

Java menyediakan sejumlah komponen standard:
  • Label: untuk menuliskan suatu fixed string pada applet
  • TextField: untuk menerima masukan teks
  • TextArea: untuk menerima masukan teks yang lebih besar (sudah ada scroll barnya jika teks lebih panjang dari yang ditampilkan).
  • Button: untuk mengaktifkan suatu event
  • dlsb. (Juga, selain komponen standard itu sendiri, saat ini terdapat banyak komponen yang lebih lanjut, seperti swing, JFC, dll.)
Jika suatu komponen telah dicreate maka ia harus ditempatkan pada applet (sesuai dengan layout ybs.), atau suatu Panel dalam applet tersebut dengan perintah this.add().

Contoh:

pada CountingApplet0 ditambahkan suatu button untuk mereset variabel count (tapi event handlernya belum ada jadi operasi reset belum dapat dilakukan) dan suatu textfield untuk menerima masukan:
public class CountingApplet1 extends Applet { int count;
Button resetButton;
Label startLabel;
TextField inputTeks;

public void init(){ count = 0;
this.setLayout(null);

// create button reset
resetButton = new Button("Reset");
resetButton.setBounds(20,20,50,30);
this.add(resetButton);

// create label untuk TextField
startLabel = new Label("Start Dari");
startLabel.setBounds(70,20,50,30);
this.add(startLabel);

// create TextField
inputTeks = new TextField();
inputTeks.setBounds(120,20,50,30);
this.add(inputTeks);

}
public void paint(Graphics g) { g.drawString("Telah digambarkan ke-"+count+" kali",10,80);
count++;
}
}
Jika kita menggunakan layout tertentu maka kita tidak perlu mendefinisikan secara eksplisit koordinat (x,y) dari komponen- komponen tsb. Misalnya jika kita gunakan FlowLayout maka init() kita modifikasi:

public void init() { count = 0;
this.setLayout(new FlowLayout());

// create button reset
resetButton = new Button("Reset");
this.add(resetButton);

// create label untuk TextField
startLabel = new Label("Start Dari");
this.add(startLabel);

// create TextField
inputTeks = new TextField(" ");
this.add(inputTeks);
}
Maka, komponen-komponen akan ditempatkan secara otomatis pada applet.

2.3. Pendefinisian Event-handler

Applet di atas sudah bisa dijalankan namun komponen-komponen tersebut belum berfungsi karena kita belum mendefinisikan bagaimana caranya menangani event yang dikenakan kepadanya. Dalam Java digunakan istilah Listener. Masing-masing jenis komponen kita mendefinisikan Listener-nya. Misalnya untuk obyek Button: kita perlu
  • mengimplementasikan ActionListener dan
  • mendefinisikan metoda actionPerformed(ActionEvent ) di dalam ActionListener.
  • mengkaitkan dengan obyek Button ybs. dengan instans dari ActionListener tersebut.

Contoh:

Dari applet CountingApplet1 di atas kita definisikan respons yang akan terjadi jika Button resetButton diklik.
public class CountingApplet2 extends Applet { int count;
Button resetButton;
Label startLabel;
TextField inputTeks;

public void init(){ count = 0;
this.setLayout(null);

// create button reset
resetButton = new Button("Reset");
resetButton.setBounds(20,20,50,30);
this.add(resetButton);

// mengkaitkan dengan Listenernya
resetButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { count = 0;
repaint();
}
}
);

// create label untuk TextField
startLabel = new Label("Start Dari");
startLabel.setBounds(70,20,50,30);
this.add(startLabel);

// create TextField
inputTeks = new TextField();
inputTeks.setBounds(120,20,50,30);
this.add(inputTeks);
}

public void paint(Graphics g) { g.drawString("Telah digambarkan ke-"+count+" kali",10,80);
count++;
}
}
Kita bisa mendefinisikan suatu Listener jika terjadi event pada komponen TextField, misalnya setiap pengetikan karakter. Tapi biasanya komponen TextField baru direspons setelah kita selesai mengetikan suatu string kepadanya. Jadi yang terpenting adalah bagaimana kita membaca string yang diketikkan padanya.
Kita bisa mengakses teks yang diketikkan tersebut dengan metoda field.getText() dengan field adalah obyek TextField ybs. Contohnya pada CountingApplet2 di atas operasi mereset counter adalah melakukan pengisian count dengan harga yang diberikan pada inputTeks.

public class CountingApplet3 extends Applet { int count;
Button resetButton;
Label startLabel;
TextField inputTeks;

public void init(){ count = 0;
this.setLayout(null);

// create button reset
resetButton = new Button("Reset");
resetButton.setBounds(20,20,50,30);
this.add(resetButton);
// mengkaitkan dengan Listenernya
resetButton.addActionListener( new ActionListener() { public void actionListener(ActionEvent event) { try { String s = inputTeks.getText();
count = Integer.parseInt(s);
}
catch(NumberFormatException e) { count = 0; }
repaint();
}
}
);

// create label untuk TextField
startLabel = new Label("Start Dari");
startLabel.setBounds(70,20,80,30);
this.add(startLabel);

// create TextField
inputTeks = new TextField();
inputTeks.setBounds(150,20,50,30);
this.add(inputTeks);
}

public void paint(Graphics g) { count++;
g.drawString("Telah digambarkan ke-"+count+" kali",10,80);
}
}
Applet dapat langsung menerima aksi dari mouse (tanpa melalui komponen-komponennya) dengan mendefinisilan MouseListener mirip di atas (kecuali di atas Listener dikaitkan dengan resetButton). Jadi tambahkan di dalam init() didefinisikan respons pada penekanan/pelepasan tombol mouse di atas applet:

this.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { // apa yang akan dilakukan jika tombol
// mouse ditekan di atas applet
}
public void mouseReleased(MouseEvent e) { // apa yang akan dilakukan jika tombol
// mouse direlease di atas applet
}
// beberapa aksi pada mouse lainnya dapat
// didefinisikan berikutnya
}
};
Sementara, untuk melakukan dragging maka diimplementasikan MouseMotionListener sbb.:

this.addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged(mouseEvent e) { // apa yang dilakukan jika
// mouse di-drag di atas applet
}
}
);
Untuk melengkapi contoh di atas maka sisipkanlah baris-baris berikut dalam init() untuk menggambari applet dengan mouse.
this.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { Graphics g = getGraphics();
xold = e.getX();
yold = e.getY();
g.drawLine(xold,yold,xold,yold);
}
}
);

this.addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Graphics g = getGraphics();
int x = e.getX();
int y = e.getY();
g.drawLine(xold,yold,x,y);
xold = x;
yold = y;
}
}
);
Dan tambahkan deklarasi variabel di awal applet.
int xold, yold; Note: variabel yang diakses metoda di dalam suatu Listener walaupun dicode di dalam metoda init() namun tetap dieksekusi sepertinya ada di luar init(). Jadi semua variabel (kecuali yang lokal di dalam metoda listener itu) harus dideklarasikan pada applet (bukan pada init().

Kamis, 07 Februari 2013

SOAL JAVA


1.Apa nama method Java yang digunakan untuk menampilkan komponen GUI?

A.    setVisible()



B.     setLayout()



C.     setWindow()



D.    WindowListener()


2. FileName.chdir("NamaDirektori") k menuliskan karakter?
          A. Writer
B. FileWriter
C. CharWriter
D. OutputStream

3.statement mana yang akan menciptakan array bertipe double yang terdiri dari  angka 5.2, 7.0, -2.5?
A.    double list[ ] = { 5.2, 7.0, -2.5 };
B.    double list[3] = { 5.2, 7.0, -2.5 };
C.    double list = [ 5.2, 7.0, -2.5 ];
D.    list double[3] = { 5.2, 7.0, -2.5 };

4. Untuk menyediakan reference ke satu elemen pada array, array identifier harus
    dikombinasikan dengan?
A.    variable value
B.    primitive value
C.    index value
D.    array value

5. Bahasa pemrograman adalah teknik komunikasi standar untuk mengekspresikan instruksi kepada      computer.Dan Bahasa ppemrograman diklasifikasikan ke dalam beberapa tingkat, yaitu   tingkat tinggi, rendah dan menengah. Berikut adalah Bahasa pemrograman tingkat tinggi adalah....
   A. Java, C++, Fortran                 C. Java, Cobol, C++
   B. Java, Cobol, .NET                  D. Java, C++, .NET

    6.  Sama seperti fungsi atau method pada umumnya, constructor juga bisa memiliki variasi parameter. Diantaranya…,kecuali
a.       Single constructor
b.      Constructor dengan parameter
c.       Double constructor
d.      Multiple constructor

7. Java  menyediakan  fasilitas  Input-Output  (I/O)  dalam  paket (package) bernama..
a. java.io
b. Character stream
c. JSP
d. Java EE

 8. Class yang dapat digunakan untuk menangani input dan output terformat yaitu class…
a. EasyWriter
b. System.out.println
c. linefeed (newline)
d. Input-Output  (I/O)

9. public class bilangan ganjil {
   public static void main (string[]args){
        for (int x=1;x<=100;x+=2){
            if (x!=100)
        system.out.println(x+",");
        }
    }
    Koreksi beberapa kesalahan di atas !
a. kurung tutup kurawal kurang satu, “string” S huruf capital,if(x!=100) ditutup dengan titik  koma
b. “bilangan ganjil” seharusnya tidak terpisah, “string” S huruf capital, “system” S huruf kapital
c. kurung tutup kurawal kurang satu, if(x!=100) ditutup dengan titik koma, “system” S huruf kapital
d. “bilangan ganjil” seharusnya tidak terpisah, kurung tutup kurawal kurang satu, if(x!=100) ditutup dengan titik koma

10. Tipe floating point ada 2 tipe,yaitu…
a.  True dan false
       b. If dan else
       c. Float dan double
      d.  Loop dan if




JAVA APPLET

Java Applet adalah suatu aplikasi mini yang dibuat dengan bahasa Java dimana aplikasi ini dimasukkan kedalam situs web sehingga dapat muncul pada browser atau halaman website. Kegunaan dari penerapan Java Applet ini adalah memberikan fungsi dinamis pada halaman web yang statis. Aplikasi ini dapat menampilkan gambar-gambar yang bergerak, suara, ataupun game. Umumnya Java Applet ini diunduh ke komputer client dan dijalankan di web browser. Untuk menjalankan Java Applet, dibutuhkan software web browser setingkat Internet Explorer 4.0 ke atas, Opera, Mozilla Firefox, Google Chrome, atau lainnya.
 Pengertian dari Applet  sendiri adalah Program kecil yang dapat dieksekusi oleh browser pada dokumen halaman web. Program ini dikirimkan ke browser dalam bentuk teks, yang diselipkan pada halaman web tersebut. Dalam World Wide Web, applet dapat diartikan sebagai tambahan di dalam suatu homepage selain gambar. Suatu applet dapat berupa applet Java, ActiveX atau suatu presentasi multimedia.Karena model konten aktif ini disisipkan di halaman web, aplikasi ini dapat muncul di halaman browsing penggunanya. Crackers dapat menyelipkan sesuatu ke computer klien secara diam-diam dan teknik ini disebut Trojan Horse. Setelah didownload, aplikasi Java dapat berjalan di computer klien sehingga pelanggaran keamanan dapat terjadi.  

Cara Kerja Java Applet
           Bahasa Java merupakan bahasa yang interpreted, bukan compiled. Sebuah program dalam bahasa Java dirakit (compiled) menjadi sebuah berkas byte-code. Berkas byte-code inilah yang dijalankan (interpreted) oleh sebuah virtual machine, yang disebut Java Virtual Machine (JVM)yang bisa berupa Web Browser seperti Netscape Navigator atau Microsoft Internet Explorer. Java akan mengcompile file ‘.java’ menjadi file ‘.class’, yang berisi instruksi kode byte yang independen terhadap arsitektur komputer pada umumnya. Bytecodes ini sangat mudah untuk diterjemahkan ke dalam semua jenis platform dan sangat mudah dimengerti ke dalam metode apapun. Karena semua vendor web browser telah memiliki lisensi Java dan mengimplementasikan embedded JVM, maka aplikasi Java dapat disebarkan pada platform end-user.
         Java Applet biasa ditulis dalam bahasa Java, namun dapat pula ditulis menggunakan bahasa yang lain namun dicompile menjadi Java bytecode, seperti Jython. Sesuai dengan perkembangan bahasa Java, maka package-package Java yang men-support Applet juga semakin banyak. Pada awalnya package Java yang biasa digunakan untuk membuat Applet adalah package Applet, namun hingga saat ini terus bertambah, yaitu package AWT dan package Swing.
          Keunggulan sekaligus menjadi ancaman dari Java Applet adalah Java Applet Platform Independen, dimana dapat digunakan baik pada Operating system yang berbeda (Windows, UNIX, LINUX, dll) sekalipun atau dengan kata lain begitu telah tercipta file .class dengan menggunakan kompilator Java di platform manapun, maka file .class tersebut juga dapat dijalankan di platform manapun, sehingga bisa saja ada suatu virus,worm, spyware atau program perusak lain yang ikut terkirim dan kita tidak menyadari hal itu.Terlebih lagi, setelah selesai di download ke dalam komputer kita, applet tersebut akan berjalan secara otomatis. Semakin membahayakan kalau program itu merupakan program perusak.

          Namun semuanya tidak perlu khawatir, karena kita bisa mencegah masuknya virus ataupun worm dari penggunaan Java Applet ini dengan menonaktifkan dukungan untuk menampilkan Scripting Java Applet. Untuk demo saya menggunakan internet explorer versi 7.0. temen – temen buka menu tools -> Internet Option -> tab Securities -> Custom Level -> Scripting -> Scripting Java Appletnya di disable, berikut penjelasan gambarnya:


          Untuk masalah keamanan Java Applet sendiri, Java Applet telah mengalami perubahan yang cukup banyak sejak versi pertamanya. Java Applet versi 1.0 menggunakan sistem keamanan yang applet restricted, yaitu applet tidak dapat mengakses sumber daya lokal untuk menjamin keamanan di komputer pengguna. Java Applet versi 1.1 dan 1.2 sudah diperbolehkan untuk mengakses sumber daya lokal seperti hardisk, hubungan port, dan sistem komputer. Pada versi 1.2, Java Applet menggunakan priviledge service untuk mengatur prioritas tiap-tiap applet yang dijalankan. Jadi, sebuah applet dapat mempunyai hak-hak tertentu yang digunakan untuk mengakses sumber daya lokal. Hak-hak tesebut misalnya 66 membaca hardisk, menulis hardisk, membuka hubungan port, dan mengakses sistem. Pemakai dapat mengijinkan sebuah applet untuk mempunyai akses pada sistem komputer dan dapat melarang applet tertentu untuk mengaksesnya (sandbox model).

       
       Applet java dapat diciptakan untuk mengakses harddisk dan melakukan apa saja terhadapnya termasuk membaca password yang tersimpan dalam program penyimpan password. Fasilitas windows yang menawarkan untuk mengingat password sagnat berbahaya sebab membuat password disimpan di dalam cache memory dan dapat diakses degnan mudah dengan menggunakan berbagai macam software password revealer.
       Selain itu, jaringan tanpa proteksi tentu berbahaya dan mengundang para hacker menyusup masuk, baik melalui kabel maupun nirkabel. Sebuah WLAN yang terbuka mempermudah hacker. Cukup dengan sebuah notebook, ia akan dapat mengendalikan seluruh lalu-lintas data, termasuk nomor PIN dari rekening online-banking Anda.
           Melalui website “jahat”, model router Anda dapat diidentikasi dengan Java-applet dan JavaScript. Dengan cara-cara se derhana dan password standar, hacker sanggup mengakses router Anda bahkan dari belahan dunia mana pun. Selanjutnya , dari router ia dapat memulai serangan Drive-by-Pharming sehingga Anda akan digiring ke sebuah website bank palsu. Masalahnya, di sini tidak ada antivirus yang dapat membantu karena proses hack dilakukan tanpa menginstalasi malware.
Karena ancaman-ancaman ini, maka terdapat batasan-batasan tertentu pada Applet antara lain :
  • Applet tidak boleh menulis dan membaca file pada sistem milik klien, kecuali pada direktori tertentu (yang didefinisikan oleh user melalui control list, dimana secara default adalah kosong). Bahkan beberapa browser sama sekali tidak mengijinkan Applet untuk menulis data dan membaca data pada sistem klien.
  • Applet tidak bisa berkomunikasi dengan server lain selain server dimana Applet ini disimpan. (Hal ini sebenarnya bisa di konfigurasikan melalui browser; namun jangan terlalu menghatapkan pada feature ini.)
  • Applet tidak bisa menjalankan program apapun pada sistem klien.
  • Applet tidak bisa sharing program atau library seperti DLL dari server kepada sistem klien.       

I/O (Input/Output) Stream

Pengertian I/O Stream
 I/O -> adalah singkatan dari Input / Output dan mengacu pada transfer data ke atau dari aplikasi.
Stream ->  Keadaan dari sebuah file atau sebuah device yang memungkinkan rangkaian item dapat dibaca atau ditulis
Input atau Stream Sumber
- Dari stream ini dapat membaca
- Superclass dari semua input streams:
* Class InputStream
* Class Reader
Output
- Kita dapat menulis pada stream ini
- Class root dari stream ini:
* Class OutputStream
* Class Writer 
Overview I/O 
1. Konsep Stream
2. Kelas Abstrak pada java.io
3. Reader/Writer
4. Input dan Output file
5. Wrapper

1. Konsep Stream
Stream adalah suatu abstraksi untuk data input dan output.
– Tidak peduli dari mana input berasal atau kemana output akan pergi 
 
Package java.io
• Package java.io berisi kelas yang berhubungan dengan I/O di Java
• Dibagi menjadi beberapa kelas
– Reader/Writer dan turunannya
– InputStream/OutputStream dan turunannya
– I/O Network (socket TCP/IP)
– Exception

2. Kelas Abstrak pada java.io
• Ada 4 kelas abstrak dasar
– Reader
– Writer
– InputStream
– OutputStream
• Reader dan Writer digunakan untuk data Teks
• InputStream dan OutputStream digunakan untuk data biner

3. Kelas Reader/Writer
• Kelas Reader/Writer bekerja pada stream teks (bahasa apapun)
• Disebut juga character stream
• Menangani konversi teks Unicode secara otomatis
• Jangan dipertukarkan dengan InputStream/OutputStream secara sembarangan
• Hasilnya bisa error 
 

Kelas InputStream/OutputStream
• InputStream dan OutputStream digunakan untuk mengakses informasi non teks (biner)
– disebut juga sebagai byte stream
– COntoh data biner: File EXE, file GIF
• InputStream/OutputStream Tidak menangani konversi teks Unicode secara otomatis

Diagram Kelas InputStream dan turunannya


4. Input dan Output File
• Gunakan FileInputStream dan FileOutputStream untuk membaca/menulis file non teks
• Gunakan FileReader/FileWriter untuk file teks

Contoh Membuka file untuk dibaca
• cara untuk membuka file (untuk dibaca):
FileInputStream s = new
FileInputStream(“test.dat”);
• Cara untuk membaca satu byte: int a = s.read()
• Tersedia juga method untuk membaca array of byte
• Prototype read adalah : int read()
– Perlu dicast ke byte untuk membaca sebagai byte
– Memakai int supaya cukup merepresentasikan -1

Contoh Membuka file untuk ditulis
• Cara untuk membuka file (untuk ditulisi):
FileOutputStream out = new
FileOutputStream(“test.out”);
• Intruksi untuk menulis satu byte:
– Out.write(‘a’)
• Tersedia juga method untuk menulis array of byte

Perhatikan:
• Membaca dan menulis selalu perlu try … catch
• Method read() dan write() melempar Exception java.lang.IOException
• Kasus khusus: read() mengembalikan
-1 pada end of file
• EOF (End Of File atau EndOfStream) tidak menimbulkan exception

Memakai FileReader/FileWriter
• Sama seperti contoh sebelumnya
– Ganti nama kelas FileInputStream
dengan FileReader dan FileOutputStream
dengan FileWriter
– Tetap gunakan read/write
• Perhatikan bahwa
– Nilai kembalian

5. Wrapper• Stream dapat dikomposisi atau difilter atau dibungkus untuk menghasilkan stream yang lebih kompleks
• Konsep ini mirip dengan pipe di
Unix/Windows
• Contoh:
– BufferedReader yang menyediakan readLine()
– PipedWriter/PipedReader untuk mempipe suatu stream
– PrintStream/PrintWriter untuk menulis ke stream dengan mudah

 Contoh Wrapper: BufferedReader
• Perhatikan potongan kode berikut:
BufferedReader br = new
BufferedReader(new
FileReader(“hello.txt”));
//membaca 1 baris
String teks = br.readLine();
• BufferedReader membungkus (wraps) FileReader untuk menyediakan method readLine()

Contoh Wrapper: PrintWriter
• Perhatikan potongan kode berikut:
PrintWriter pr = new PrintWriter(new FileWriter(“hello.txt”)); //Menulis 1 baris
pr.println(“Hello “);
• PrintWriter membungkus (wraps) FileWriter untuk menyediakan method print(), println() untuk semua tipe data dasar 

Membaca dari Console [1]
• Java menyediakan System.in yang class-nya adalah InputStream
• Membaca teks dari console
• Untuk membaca teks, perlu di-wrap dengan BufferedReader
• Tapi BufferedReader hanya bisa mewrap suatu class turunan Reader
• InputStream perlu di-wrap dengan InputStreamReader

Membaca dari console [2]
• Buat BufferedReader yangmembungkus InputStreamReader yang membungkus System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in))
• Untuk membaca:
String s = br.readLine();
• Untuk membaca integer, teks dibaca dengan method yang sama, lalu dikonversi dengan method Integer.parseInt()

NIO (Nonblocking I/O)
• JDK 1.4 (nama Kode: Merlin) ke atas menyediakan NIO
– Ada di package java.nio
• Improvement:
– Non blocking I/O
– Buffer
– Regular Expression

[2] String dan StringBuffer
 *String
• Merupakan kelas khusus di Java (ditangani secara transparan)
• Sifatnya immutable (tidak bisa diubah)
• Memiliki berbagai method untuk memiliki manipulasi String

*Literal String
• Harap diingat lagi bahwa:
– Setiap Literal String adalah sebuah objek
String. Contoh:
String teks = “Hello”;
System.out.println(teks.length());
– Sama dengan
System.out.println(“Hello”.length()); 

*Sifat Immutable String
• String sebenarnya tidak dapat diubah, namun Java memungkinkan String seolah-olah diubah, Contoh:
– Jika dilakukan ini:
String judul = "Judul :";
judul += "Eyes On Me";
– Maka sebenarnya yang dilakukan adalah ini
String judul = "Judul :";
judul = judul.concat("Eyes On Me"); 

*Operasi String Tidak Optimal
• String baru diciptakan (string yang lama tetap ada di memori, dan dibuang ketika terjadi garbage collection)
• Untuk operasi yang banyak melibatkan perubahan string, sebaiknya menggunakan StringBuffer 

*StringBuffer
• StringBuffer mirip dengan String
• Sifatnya mutable
• Tidak ditangani secara transparan oleh Java (harus dilakukan secara manual)
• Lebih cepat untuk manipulasi string yang memerlukan perubahan pada String. 

*Sifat mutable StringBuffer
• Untuk mengubah StringBuffer tidak perlu objek baru
– Contoh :
StringBuffer nama = new StringBuffer("mataku");
nama.setCharAt(4, 'm');
• Untuk mengubah String selalu butuh objek baru (objek lama diubah melalui assignment) 

*Method yang penting
• Beberapa method String dan StringBuffer yang penting adalah:
– length(): panjang string
– replace(): mengganti suatu karakter
– charAt(): mengakses karakter di posisi tertentu
– trim(): menghilangkan spasi di awal dan di akhir string
• Perhatikan bahwa meskipun namanya sama, sifat keduanya berbeda
– String menciptakan objek baru, sedangkan StringBuffer tidak 

*Membandingkan String
• Method equals() membandingkan string untuk memeriksa kesamaan
• Method equalsIngnoreCase() melakukan hal yang sama, tapi besar kecil huruf tidak diperhatikan
• Method compareTo() menghasilkan 0 jika string sama, >0 jika String1>String2 dan <0 jika String1<String2 

[3] Kelas Matematik 
*Matematika di Java
• Fungsi matematika ada di package java.math
• Meliputi fungsi trigonometri, dan fungsi matematika standar
– Berisi juga konstanta penting (seperti PI dan e)
– Sebagian besar hasil method adalah bilangan riil (tipenya double ) 

*Memformat Hasil
• Class math tidak menyediakan cara untuk memformat keluaran (output) sehingga dapat dicetak dengan rapi
• Perlu class DecimalFormat untuk melakukan format terhadap output (DecimalFormat ada pada package java.text) 

*Beberapa fungsi matematika yang penting
• Method pow() untuk pangkat
• Fungsi-fungsi trigonometri (sin, cos, tan)
• Pembulatan hasil, meliputi
– ke atas : ceil, ke bawah: floor, dan terdekat : round
• Logaritma 

*Bilangan Acak
• Bilangan acak sangat penting dalam simulasi, permainan, dan enkripsi
• Bilangan acak dihasilkan dengan kelas Random
• Kelas Random tidak berada dalam package java.math, tapi dalam kelas java.util
– Contoh:
Random r = new Random();
int x = r.nextInt(10); //random 0..9 

*BigInteger dan BigDecimal
• BigInteger
– Integer presisi tak hingga
– Berisi semua method untuk operasi integer dan bahkan method untuk mengecek probabilitas suatu bilangan adalah prima
• BigDecimal
– Bilangan floating point presisi tak hingga
– Semua method untuk doube/float 

[4] Utility 
*Utility
• Berbagai macam kelas yang tidak cocokdimasukkan ke package tertentu
• Beberapa yang akan dibahas
– Hashtable
– Stack
– Vector
– Calendar
• Kelas lain yang cukup berguna untukdipelajari: List, Tree 

*Hashtable
• Digunakan untuk menyimpan data dengan assosiasi tertentu
– Misal nama panggilan diassosiasikan dengan nama lengkap
• Memetakan suatu nilai String dengan suatu Objek tertentu (Objek apa saja, termasuk juga Objek String)
• Method yang dipakai adalah put dan get

*Contoh
import java.util.Hashtable;
class HashtableDemo {
public static void main(String argv[]) {
Hashtable h = new Hashtable();
h.put("Linux", "Torvalds");
h.put("Windows", "Microsoft");
String nama = (String) h.get("Linux");
if (nama!=null) {
System.out.println(nama);
}
}

*Stack
• Struktur data LIFO (Last In First Out)
– Data yang masuk pertama akan keluar terakhir
• Memakai Method push, untuk meletakkan satu item di Stack dan pop untuk mengeluarkan satu item dari stack
– Ada juga method peek() untuk mengintip top of stack dan search untuk mencari elemen di Stack() 

*Contoh Stack
import java.util.Stack;
class StackDemo {
public static void main(String argv[]) {
Stack s = new Stack();
s.push("Salamku Kawan");
s.push("Jangan Takut Gelap");
s.push("Gembira berkumpul");
while (!s.empty()) {
System.out.println(s.pop());
}
}

*Vector
• Struktur data seperti array
• Sifatnya dinamis (ukurannya tidak tetap), berubah sesuai dengan elemen yang ditambahkan ke (atau dihapus dari)
Vector tersebut
• Dapat dimanipulasi dengan mudah (elemen-elemennya dapat di add, remove, atau diubah dengan mudah) 

*Contoh Vector
import java.util.Vector;
import java.util.Enumeration;
class VectorDemo {
public static void main(String argv[]) {
Vector v = new Vector();
/* tambahkan elemen */
v.add("Pelangiku");
v.add("Andai Aku Besar Nanti");
v.add("Dua Balerina");
for (int i=0; i<v.size(); i++){
System.out.println(" - " + v.elementAt(i));
}
}


*Calendar
• Dipakai untuk menangani perhitungan kalender Masehi (Gregorian)
– Dirancang untuk mendukung kalender lain
• Menyediakan informasi mengenai tanggal, (date) dan waktu (time) saat ini (misalnya hari apa, bulan ke berapa, hari keberapa dalam tahun ini)
• Menyediakan sarana untuk penghitungan waktu

*Contoh Calendar
import java.util.Calendar;
class Kalender {
public static void main(String argv[]) {
Calendar c = Calendar.getInstance();
System.out.println("Hari ini :");
System.out.println("Hari ke“
+c.get(Calendar.DAY_OF_WEEK)+" dalam
minggu ini");
}}

CONTOH PENERAPAN
package testjeni_02;
import java.io.*;

/**
 *
 * @author NieNov
 */
public class FileInfoClass {
public static void main(String args[]) {
String fileName = "C://Price Tag.txt";
File fn = new File(fileName);
System.out.println("Name: " + fn.getName());
if (!fn.exists()) {
System.out.println(fileName + " does not exists.");
/* membuat sebuah temporary directory . */
System.out.println("Creating temp directory...");
fileName = "temp";
fn = new File(fileName);
fn.mkdir();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
System.out.println("Deleting temp directory...");
fn.delete();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
return;
}
System.out.println(fileName + " is a " +
(fn.isFile()? "file." :"directory."));
if (fn.isDirectory()) {
String content[] = fn.list();
System.out.println("The content of this directory:");
for (int i = 0; i < content.length; i++) {
System.out.println(content[i]);
}
}
if (!fn.canRead()) {
System.out.println(fileName + " is not readable.");
return;
}
System.out.println(fileName + " is " + fn.length() +
" bytes long.");
System.out.println(fileName + " is " + fn.lastModified()
+ " bytes long.");
if (!fn.canWrite()) {
System.out.println(fileName + " is not writable.");
}
}
}



Template by:

Free Blog Templates