laporan 2.5 sd 2.10

57
PRAKTIKUM ABSTRACT WINDOWING TOOLKIT DAN SWING 1. Tujuan a. Memahami persamaan dan perbedaan antara AWT dan Swing b. Perbedaan antara komponen dan kontainer. c. Mendesain aplikasi GUI menggunakan AWT. d. Mendesain aplikasi GUI menggunakan Swing. e. Menjelaskan tentang flow layout, border layout, dan grid layout dalam komponen GUI f. Membuat tampilan yang komplek dalam mendesain aplikasi GUI. 2. Latar Belakang Tanpa mempelajari tentang grapichal user interface (GUI) API, Anda masih tetap bisa membuat suatu program. Tetapi, program Anda akan kelihatan tidak menarik dan tidak nyaman digunakan bagi para user. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi. Java menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk mengembangkan aplikasi GUI yang interaktif. The Java Foundation Class (JFC), merupakan bagian penting dari Java SDK, yang termasuk dalam koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI. JFC termasuk diantara 5 bagian utama dari API yaitu AWT dan Swing. Tiga bagian yang lainnya dari API adalah Java2D, Accessibility, dan Drag and Drop. Semua itu membantu developer dalam mendesain dan mengimplementasikan aplikasi dengan visualisasi yang lebih baik. AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi Java dan applet. Anda akan mempelajari applet pada bab berikutnya. Tidak seperti beberapa komponen AWT yang menggunakan native code, keseluruhan Swing ditulis menggunakan bahasa pemrograman Java. Swing menyediakan implementasi platform-independent dimana aplikasi yang dikembangkan dengan platform yang berbeda dapat memiliki tampilan yang sama. Begitu juga dengan AWT menjamin tampilan look and feel pada aplikasi yang dijalankan pada dua mesin yang berbeda menjadi terlihat sama. Swing API dibangun dari beberapa API yang

Upload: munzir

Post on 10-Apr-2015

361 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laporan 2.5 sd 2.10

PRAKTIKUM ABSTRACT WINDOWING TOOLKIT DAN SWING

1. Tujuana. Memahami persamaan dan perbedaan antara AWT dan Swing b. Perbedaan antara komponen dan kontainer. c. Mendesain aplikasi GUI menggunakan AWT. d. Mendesain aplikasi GUI menggunakan Swing. e. Menjelaskan tentang flow layout, border layout, dan grid layout dalam komponen

GUI f. Membuat tampilan yang komplek dalam mendesain aplikasi GUI.

2. Latar BelakangTanpa mempelajari tentang grapichal user interface (GUI) API, Anda masih tetap bisa membuat suatu program. Tetapi, program Anda akan kelihatan tidak menarik dan tidak nyaman digunakan bagi para user. Memiliki GUI yang baik dapat memberi efek pada penggunaan aplikasi. Java menyediakan banyak tool seperti Abstract Windowing Toolkit dan Swing untuk mengembangkan aplikasi GUI yang interaktif. The Java Foundation Class (JFC), merupakan bagian penting dari Java SDK, yang termasuk dalam koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI. JFC termasuk diantara 5 bagian utama dari API yaitu AWT dan Swing. Tiga bagian yang lainnya dari API adalah Java2D, Accessibility, dan Drag and Drop. Semua itu membantu developer dalam mendesain dan mengimplementasikan aplikasi dengan visualisasi yang lebih baik. AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi Java dan applet. Anda akan mempelajari applet pada bab berikutnya. Tidak seperti beberapa komponen AWT yang menggunakan native code, keseluruhan Swing ditulis menggunakan bahasa pemrograman Java. Swing menyediakan implementasi platform-independent dimana aplikasi yang dikembangkan dengan platform yang berbeda dapat memiliki tampilan yang sama. Begitu juga dengan AWT menjamin tampilan look and feel pada aplikasi yang dijalankan pada dua mesin yang berbeda menjadi terlihat sama. Swing API dibangun dari beberapa API yang mengimplementasikan beberapa jenis bagian dari AWT. Kesimpulannya, komponen AWT dapat digunakan bersama dengan komponen Swing.

Page 2: Laporan 2.5 sd 2.10

3. PercobaanPercobaan 1 Menampilkan Frame:

Hasil Percobaan

import java.awt.Frame;public class SampleFrame extends Frame{public SampleFrame() {}public static void main(String args[]) {SampleFrame sf = new SampleFrame();sf.setSize(300, 300); //Coba hilangkan baris inisf.setVisible(true); //Coba hilangkan baris ini}}

Page 3: Laporan 2.5 sd 2.10

Percobaan 2 Menampilkan Panel :

Hasil Percobaan

import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Panel;public class GraphicPanel extends Panel {public GraphicPanel() {setBackground(Color.blue);} @Overridepublic void paint(Graphics g) {g.setColor(new Color(152,255,200)); //greeng.setFont(new Font("Helvetica",Font.PLAIN,16));g.drawString("Hello Munzir Aceh!", 30, 100);g.setColor(new Color(1.0f,0,0)); //redg.fillRect(30, 100, 150, 10);}public static void main(String args[]) {Frame f = new Frame("Testing Graphics Panel");GraphicPanel gp = new GraphicPanel();f.add(gp);f.setSize(600, 300);f.setVisible(true);}}

Page 4: Laporan 2.5 sd 2.10

Percobaan 3 Menampilkan Frame Control:

Hasil Percobaan

import java.awt.*;public class FrameWControls extends Frame{public FrameWControls() {}public static void main(String args[]) {FrameWControls fwc = new FrameWControls();fwc.setLayout(new FlowLayout()); //more on this laterfwc.setSize(600, 600);fwc.add(new Button("Test Me!"));fwc.add(new Label("Labe"));fwc.add(new TextField());CheckboxGroup cbg = new CheckboxGroup();fwc.add(new Checkbox("chk1", cbg, true));fwc.add(new Checkbox("chk2", cbg, false));fwc.add(new Checkbox("chk3", cbg, false));List list = new List(3, false);list.add("MTV");list.add("V");fwc.add(list);Choice chooser = new Choice();chooser.add("Avril");chooser.add("Monica");chooser.add("Britney");fwc.add(chooser);fwc.add(new Scrollbar());fwc.setVisible(true);}}

Page 5: Laporan 2.5 sd 2.10

Percobaan 4 Menampilkan Flow Layout Demo:

Hasil Percobaan

import java.awt.*;public class FlowLayoutDemo extends Frame{public FlowLayoutDemo() {}public static void main(String args[]) {FlowLayoutDemo fld = new FlowLayoutDemo();fld.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));fld.add(new Button("ONE"));fld.add(new Button("TWO"));fld.add(new Button("THREE"));fld.setSize(100, 100);fld.setVisible(true);}}

Page 6: Laporan 2.5 sd 2.10

Percobaan 5 Menampilkan Border Layout Demo:

Hasil Percobaan

import java.awt.*;public class BorderLayoutDemo extends Frame{public BorderLayoutDemo() {}public static void main(String args[]) {BorderLayoutDemo bld = new BorderLayoutDemo();bld.setLayout(new BorderLayout(10, 10)); //may removebld.add(new Button("NORTH"), BorderLayout.NORTH);bld.add(new Button("SOUTH"), BorderLayout.SOUTH);bld.add(new Button("EAST"), BorderLayout.EAST);bld.add(new Button("WEST"), BorderLayout.WEST);bld.add(new Button("CENTER"), BorderLayout.CENTER);bld.setSize(200, 200);bld.setVisible(true);}}

Page 7: Laporan 2.5 sd 2.10

Percobaan 6 Menampilkan Grid Layout Demo:

Hasil Percobaan

import java.awt.*;public class GridLayoutDemo extends Frame {public GridLayoutDemo() {}public static void main(String args[]) {GridLayoutDemo gld = new GridLayoutDemo();gld.setLayout(new GridLayout(2, 3, 4, 4));gld.add(new Button("ONE"));gld.add(new Button("TWO"));gld.add(new Button("THREE"));gld.add(new Button("FOUR"));gld.add(new Button("FIVE"));gld.setSize(200, 200);gld.setVisible(true);}}

Page 8: Laporan 2.5 sd 2.10

Percobaan 7 Menampilkan Complex Layout :

Hasil Percobaan

import java.awt.*;public class ComplexLayout extends Frame{public ComplexLayout() {}public static void main(String args[]) {ComplexLayout cl = new ComplexLayout();Panel panelNorth = new Panel();Panel panelCenter = new Panel();Panel panelSouth = new Panel();panelNorth.add(new Button("ONE"));panelNorth.add(new Button("TWO"));panelNorth.add(new Button("THREE"));panelCenter.setLayout(new GridLayout(4,4));panelCenter.add(new TextField("1st"));panelCenter.add(new TextField("2nd"));panelCenter.add(new TextField("3rd"));panelCenter.add(new TextField("4th"));panelSouth.setLayout(new BorderLayout());panelSouth.add(new Checkbox("Choose me!"),BorderLayout.CENTER);panelSouth.add(new Checkbox("I'm here!"),BorderLayout.EAST);panelSouth.add(new Checkbox("Pick me!"),BorderLayout.WEST);cl.add(panelNorth, BorderLayout.NORTH);cl.add(panelCenter, BorderLayout.CENTER);cl.add(panelSouth, BorderLayout.SOUTH);cl.setSize(300,300);cl.setVisible(true);}}

Page 9: Laporan 2.5 sd 2.10

Percobaan 8 Menampilkan Swing Demo :

Hasil Percobaan

import java.awt.*;import javax.swing.*;public class SwingDemo { JFrame frame;JPanel panel;JTextField textField;JButton button;Container contentPane;public SwingDemo() {}void launchFrame() {frame = new JFrame("My First Swing Application");panel = new JPanel();textField = new JTextField("Default text");button = new JButton("Click me!");contentPane = frame.getContentPane();panel.add(textField);panel.add(button);contentPane.add(panel, BorderLayout.CENTER);frame.pack();frame.setVisible(true);}public static void main(String args[]) {SwingDemo sd = new SwingDemo();sd.launchFrame();}

}

Page 10: Laporan 2.5 sd 2.10

Percobaan 9 Menampilkan JOption Demo:

Hasil Percobaan

import javax.swing.*;import java.awt.*;public class JOptionPaneDemo {JOptionPane optionPane;public JOptionPaneDemo() {}void launchFrame() {optionPane = new JOptionPane();String name = JOptionPane.showInputDialog("Hi, what's yourname?");JOptionPane.showMessageDialog(null,"Nice to meet you, " + name + ".", "Greeting...",JOptionPane.PLAIN_MESSAGE);System.exit(0); }public static void main(String args[]) {new JOptionPaneDemo().launchFrame();}}

Page 11: Laporan 2.5 sd 2.10

PRAKTIKUM GUI Event Handling

1. Tujuana. Menerangkan komponen-komponen delegation event model b. Mengerti bagaimana delegation event model bekerja c. Menciptakan aplikasi GUI yang berinteraksi dengan user d. Mendiskusikan manfaat dari class-class adapter e. Mendiskusikan keuntungan-keuntungan dari menggunakan inner dan

anonymous class

2. Latar BelakangPada praktikum ini, kita akan mempraktekkan bagaimana mengendalikan events triggered ketika user berinteraksi dengan aplikasi GUI kita. Delegasi event model menguraikan bagaimana program kita dapat merespon interaksi dari user. Untuk memahami model, mari kita pelajari pertama-tama melalui tiga komponen utamanya. 1. Event Source

The event source mengacu pada komponen GUI yang meng-generate event. Sebagai contoh, jika user menekan tombol, event source dalam hal ini adalah tombol.

2. Event Listener/Handler The event listener menerima berita dari event-event dan proses-proses interaksi user. Ketika tombol ditekan, listener akan mengendalikan dengan menampilkan sebuah informasi yang berguna untuk user.

3. Event Object Ketika sebuah event terjadi (misal, ketika user berinteraksi dengan komponen GUI), sebuah object event diciptakan. Object berisi semua informasi yang perlu tentang event yang telah terjadi. Informasi meliputi tipe dari event yang telah terjadi, seperti ketika mouse telah di-klik. Ada beberapa class event untuk kategori yang berbeda dari user action. Sebuah event object mempunyai tipe data mengenai salah satu class ini.

Page 12: Laporan 2.5 sd 2.10

3. PercobaanPercobaan 1 Mouse Event Demo:

import java.awt.*;import java.awt.event.*;public class MouseEventsDemo extends Frame implementsMouseListener, MouseMotionListener {TextField tf;public MouseEventsDemo(String title){super(title);tf = new TextField(60);addMouseListener(this);}public void launchFrame() {/* Menambah komponen pada frame */add(tf, BorderLayout.SOUTH);setSize(300,300);setVisible(true);}public void mouseClicked(MouseEvent me) {String msg = "Mouse clicked.";tf.setText(msg);}public void mouseEntered(MouseEvent me) {String msg = "Mouse entered component.";tf.setText(msg);}public void mouseExited(MouseEvent me) {String msg = "Mouse exited component.";tf.setText(msg);}public void mousePressed(MouseEvent me) {String msg = "Mouse pressed.";tf.setText(msg);}public void mouseReleased(MouseEvent me) {String msg = "Mouse released.";tf.setText(msg);}public void mouseDragged(MouseEvent me) {String msg = "Mouse dragged at " + me.getX() + "," +me.getY();tf.setText(msg);}public void mouseMoved(MouseEvent me) {String msg = "Mouse moved at " + me.getX() + "," +me.getY();tf.setText(msg);}public static void main(String args[]) {MouseEventsDemo med = new MouseEventsDemo("Mouse Events Demo");med.launchFrame();}}

Page 13: Laporan 2.5 sd 2.10

Hasil Percobaan

Page 14: Laporan 2.5 sd 2.10

Percobaan 2 Close Frame:

Hasil Percobaan

import java.awt.*;import java.awt.event.*;class CloseFrame extends Frame implements WindowListener {Label label;CloseFrame(String title) {super(title);label = new Label("Close the frame.");this.addWindowListener(this);}void launchFrame() {setSize(300,300);setVisible(true);}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowClosing(WindowEvent e) {setVisible(false);System.exit(0);}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}public static void main(String args[]) {CloseFrame cf = new CloseFrame("Close Window Example");cf.launchFrame();}}

Page 15: Laporan 2.5 sd 2.10

Percobaan 3 Close Frame dengan Command Listener tertentu:

Hasil Percobaan

import java.awt.*;import java.awt.event.*;class CloseFrame extends Frame{Label label;CFListener w = new CFListener(this);CloseFrame(String title) {super(title);label = new Label("Close the frame.");this.addWindowListener(w);}void launchFrame() {setSize(300,300);setVisible(true);}public static void main(String args[]) {CloseFrame cf = new CloseFrame("Close Window Example");cf.launchFrame();}}class CFListener extends WindowAdapter{CloseFrame ref;CFListener( CloseFrame ref ){this.ref = ref;}public void windowClosing(WindowEvent e) {ref.dispose();System.exit(1);}}

Page 16: Laporan 2.5 sd 2.10

Percobaan 4 Close Frame dengan Inner Class:

Hasil Percobaan

import java.awt.*;import java.awt.event.*;class CloseFrame extends Frame{Label label;CloseFrame(String title) {super(title);label = new Label("Close the frame.");this.addWindowListener(new CFListener());}void launchFrame() {setSize(300,300);setVisible(true);}class CFListener extends WindowAdapter { @Overridepublic void windowClosing(WindowEvent e) {dispose();System.exit(1);}}public static void main(String args[]) {CloseFrame cf = new CloseFrame("Close Window Example");cf.launchFrame();}}

Page 17: Laporan 2.5 sd 2.10

Percobaan 5 Anonymous Inner class:

Hasil Percobaan

import java.awt.*;import java.awt.event.*;class CloseFrame extends Frame{Label label;CloseFrame(String title) {super(title);label = new Label("Close the frame.");this.addWindowListener(new WindowAdapter() { @Overridepublic void windowClosing(WindowEvent e){dispose();System.exit(1);}});}void launchFrame() {setSize(300,300);setVisible(true);}public static void main(String args[]) {CloseFrame cf = new CloseFrame("Close Window Example Anonymous Inner class");cf.launchFrame();}}

Page 18: Laporan 2.5 sd 2.10

PRAKTIKUM THREAD

1. Tujuana. Mendefiniskan threads b. Mengerti perbedaan state dalam threads c. Mengerti konsep prioritas dalam threads d. Mengetahui bagaimana menggunakan method didalam class Thread e. Membuat sendiri sebuah thread f. Menggunakan sinkronisasi pada thread yang bekerja bersama-sama dan saling

bergantung satu dengan yang lainya g. Memungkinkan thread untuk dapat berkomunikasi dengan thread lain yang

sedang berjalan h. Mengerti dan menggunakan kemampuan concurency

2. Latar BelakangSebelumnya kita terbiasa untuk membuat program yang berururutan/sekuensial. Sebuah program sekuensial berarti sebuah program yang hanya memiliki satu aliran eksekusi. Setiap eksekusi, ia memiliki sebuah titik awal eksekusi, kemudian sebuah sekuen eksekusi, dan kemudian berakhir. Selama runtime, pasti hanya satu proses yang telah dieksekusi. Bagaimanapun juga, di dunia nyata, pasti dibutuhkan sesuatu yang dapat mengatur proses yang terjadi dan berjalan bersama-sama.Oleh karena itu, thread hadir untuk menjadi solusi dalam mengatasi permasalahan tersebut.Sebuah thread merupakan sebuah pengontrol aliran program. Untuk lebih mudahnya, bayangkanlah thread sebagai sebuah proses yang akan dieksekusi didalam sebuah program tertentu. Penggunaan sistem operasi modern saat ini telah mendukung kemampuan untuk menjalankan beberapa program. Misalnya, pada saat Anda mengetik sebuah dokumen di komputer Anda dengan menggunakan text editor, dalam waktu yang bersamaan Anda juga dapat mendengarkan musik, dan surfing lewat internet di PC Anda. Sistem operasi yang telah terinstal dalam computer Anda itulah yang memperbolehkan Anda untuk menjalankan multitaskting. Seperti itu juga sebuah program (ibaratkan di PC Anda), ia juga dapat mengeksekusi beberapa proses secara bersama-sama(ibaratkan beberapa aplikasi berbeda yang bekerja pada PC Anda). Sebuah contoh aplikasi adalah HotJava browser yang memperbolehkan Anda untuk browsing terhadap suatu page, bersamaan dengan mendownload object yang lain, misalnya gambar, memainkan animasi, dan juga file audio pada saat yang bersamaan.

Page 19: Laporan 2.5 sd 2.10

3. PercobaanPercobaan 1 Counter Down Demo:

Hasil Percobaan

import javax.swing.*;import java.awt.*;

public class CountDownGUI extends JFrame {JLabel label;CountDownGUI(String title) {super(title);label = new JLabel("Start count!");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getContentPane().add(new Panel(), BorderLayout.WEST);getContentPane().add(label);setSize(300,300);setVisible(true);}void startCount() {try {for (int i = 10; i > 0; i--) {Thread.sleep(1000);label.setText(i + "");}Thread.sleep(1000);label.setText("Count down complete.");Thread.sleep(1000);} catch (InterruptedException ie) {}label.setText(Thread.currentThread().toString());}public static void main(String args[]) {CountDownGUI cdg = new CountDownGUI("Count down GUI");cdg.startCount();}}

Page 20: Laporan 2.5 sd 2.10

Percobaan 2 Menulis Object Threads sebanyak 100 x:

Hasil Percobaan

init:deps-jar:compile-single:run-single:ABBBBBBBBBBBBBBBBBBBBBBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBUILD SUCCESSFUL (total time: 0 seconds)

class PrintNameThread extends Thread{PrintNameThread(String name) {super(name);// menjalankan thread dengan satu kali instantiatestart(); } @Overridepublic void run() {String name = getName();for (int i = 0; i < 100; i++) {System.out.print(name);}}

class thread {

public thread() { } }}class TestThread {public static void main(String args[]) {PrintNameThread pnt1 = new PrintNameThread("A");PrintNameThread pnt2 = new PrintNameThread("B");PrintNameThread pnt3 = new PrintNameThread("C");PrintNameThread pnt4 = new PrintNameThread("D");}}

Page 21: Laporan 2.5 sd 2.10

Percobaan 3 Implementasi interface Runnable:

Hasil Percobaan

init:deps-jar:compile-single:run-single:AAAAAAAAAAAABDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUILD SUCCESSFUL (total time: 0 seconds)

Percobaan 4 Contoh penggunaan method Join:

class PrintNameThread2 implements Runnable {Thread thread;PrintNameThread2(String name) {thread = new Thread(this, name);thread.start();}public void run() {String name = thread.getName();for (int i = 0; i < 100; i++) {System.out.print(name);}}}class TestThread {public static void main(String args[]) {new PrintNameThread2("A");new PrintNameThread2("B");new PrintNameThread2("C");new PrintNameThread2("D");}}

Page 22: Laporan 2.5 sd 2.10

Hasil Percobaan

init:deps-jar:compile-single:run-single:AAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDBUILD SUCCESSFUL (total time: 0 seconds)

Percobaan 5 Mencetak String tanpa sinkronisasi:

class PrintNameThread3 implements Runnable {Thread thread;PrintNameThread3(String name) {thread = new Thread(this, name);thread.start();}public void run() {String name = thread.getName();for (int i = 0; i < 100; i++) {System.out.print(name);}}}class TestThread {public static void main(String args[]) {PrintNameThread3 pnt1 = new PrintNameThread3("A");PrintNameThread3 pnt2 = new PrintNameThread3("B");PrintNameThread3 pnt3 = new PrintNameThread3("C");PrintNameThread3 pnt4 = new PrintNameThread3("D");System.out.println("Running threads...");try {pnt1.thread.join();pnt2.thread.join();pnt3.thread.join();pnt4.thread.join();} catch (InterruptedException ie) {}System.out.println("Threads killed."); //dicetak terakhir}}

Page 23: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 6 Sinkronisasi pertama :

class TwoStrings {static void print(String str1, String str2) {System.out.print(str1);try {Thread.sleep(500);} catch (InterruptedException ie) {}System.out.println(str2);}}class PrintStringsThread implements Runnable {Thread thread;String str1, str2;PrintStringsThread(String str1, String str2) {this.str1 = str1;this.str2 = str2;thread = new Thread(this);thread.start();}public void run() {TwoStrings.print(str1, str2);}}class TestThread {public static void main(String args[]) {new PrintStringsThread("Hello ", "there.");new PrintStringsThread("How are ", "you?");new PrintStringsThread("Thank you ", "very much!");}}

Page 24: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 7 Sinkronisasi kedua :

class TwoStrings2 {synchronized static void print(String str1, String str2) {System.out.print(str1);try {Thread.sleep(500);} catch (InterruptedException ie) {}System.out.println(str2);}}class PrintStringsThread implements Runnable {Thread thread;String str1, str2;PrintStringsThread(String str1, String str2) {this.str1 = str1;this.str2 = str2;thread = new Thread(this);thread.start();}public void run() {TwoStrings.print(str1, str2);}}class TestThread {public static void main(String args[]) {new PrintStringsThread("Hello ", "there.");new PrintStringsThread("How are ", "you?");new PrintStringsThread("Thank you ", "very much!");}}

Page 25: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 8 Produser-Consumer Test :

class TwoStrings3 {static void print(String str1, String str2) {System.out.print(str1);try {Thread.sleep(500);} catch (InterruptedException ie) {}System.out.println(str2);}}class PrintStringsThread implements Runnable {Thread thread;String str1, str2;TwoStrings ts;PrintStringsThread(String str1, String str2, TwoStrings ts){this.str1 = str1;this.str2 = str2;this.ts = ts;thread = new Thread(this);thread.start();}public void run() {synchronized (ts) {TwoStrings.print(str1, str2);}}}class TestThread {public static void main(String args[]) {TwoStrings ts = new TwoStrings();new PrintStringsThread("Hello ", "there.", ts);new PrintStringsThread("How are ", "you?", ts);new PrintStringsThread("Thank you ", "very much!", ts);}}

Page 26: Laporan 2.5 sd 2.10

Hasil Percobaan

class SharedData {int data;synchronized void set(int value) {System.out.println("Generate " + value);data = value;}synchronized int get() {System.out.println("Get " + data);return data;}}class Producer implements Runnable {SharedData sd;Producer(SharedData sd) {this.sd = sd;new Thread(this, "Producer").start();}public void run() {for (int i = 0; i < 10; i++) {sd.set((int)(Math.random()*100));}}}class Consumer implements Runnable {SharedData sd;Consumer(SharedData sd) {this.sd = sd;new Thread(this, "Consumer").start();}public void run() {for (int i = 0; i < 10 ; i++) {sd.get();}}}class TestProducerConsumer {public static void main(String args[]) throws Exception {SharedData sd = new SharedData();new Producer(sd);new Consumer(sd);}}

Page 27: Laporan 2.5 sd 2.10

Percobaan 9 Produser-Consumer Test Modifikasi:

Page 28: Laporan 2.5 sd 2.10

Hasil Percobaan

class SharedData2 {int data;boolean valueSet = false;synchronized void set(int value) {if (valueSet) { //baru saja membangkitkan sebuah nilaitry {wait();} catch (InterruptedException ie) {}}System.out.println("Generate " + value);data = value;valueSet = true;notify();}synchronized int get() {if (!valueSet) { //produsen belum men-set sebuah nilaitry {wait();} catch (InterruptedException ie) {}}System.out.println("Get " + data);valueSet = false;notify();return data;}}/* Bagian kode ini tidak ada yang berubah*/class Producer implements Runnable {SharedData sd;Producer(SharedData sd) {this.sd = sd;new Thread(this, "Producer").start();}public void run() {for (int i = 0; i < 10; i++) {sd.set((int)(Math.random()*100));}}}class Consumer implements Runnable {SharedData sd;Consumer(SharedData sd) {this.sd = sd;new Thread(this, "Consumer").start();}public void run() {for (int i = 0; i < 10 ; i++) {sd.get();}}}class TestProducerConsumer {public static void main(String args[]) throws Exception {SharedData sd = new SharedData();new Producer(sd);new Consumer(sd);}}

Page 29: Laporan 2.5 sd 2.10

PRAKTIKUM JARINGAN

Page 30: Laporan 2.5 sd 2.10

1. Tujuana. Mengerti konsep dasar jaringan

IP address protokol ports client/server socket

b. Membuat aplikasi menggunakan paket jaringan Java ServerSocket Socket MulticastSocket DatagramPacket

2. Latar Belakang

Java mengijinkan anda untuk mempermudah mengembangkan aplikasi yang mengerjakan berbagai pekerjaan melalui jaringan. Ini adalah suatu cita-cita pembuatan Java yang menjadi salah satu kekuatan Java sejak dibuat dengan internet di dalam cita-cita. Sebelum mempelajari tentang jaringan dalam Java. Pertama-tama anda akan diperkenalkan kepada beberapa konsep dasar jaringan. Jika sebelumnya anda suda mengetahui, internet adalah jaringan global dengan berbagai jenis komputer yang berbeda yang tersambung dalam berbagai jalan. Walaupun terdapat perbedaan dalam software dan hardware yang disambung bersama, hal tersebut sangatlah bagus dimana internet masih berfungsi. Hal ini memungkinkan karena standar komunikasi memiliki ketetapan dan juga keselarasan. Standar ini menjamin kesesuaian dan kekuatan komunikasi diantara luasnya sistem pada internet.

3. Percobaan

Page 31: Laporan 2.5 sd 2.10

Percobaan 1 Koneksi Server:

Hasil Percobaan

Percobaan 2 Koneksi Client:

import java.net.*;import java.io.*;public class Networking01 { public static void main(String [] args) {ServerSocket server = null;Socket client;try {server = new ServerSocket(1234);//1234 is an unused port number} catch (IOException ie) {System.out.println("Cannot open socket.");System.exit(1);}while(true) {try {client = server.accept();OutputStream clientOut = client.getOutputStream();PrintWriter pw = new PrintWriter(clientOut, true);InputStream clientIn = client.getInputStream();BufferedReader br = new BufferedReader(newInputStreamReader(clientIn));pw.println(br.readLine());} catch (IOException ie) {}}}}

Page 32: Laporan 2.5 sd 2.10

Hasil Percobaan

PRAKTIKUM APPLET

import java.io.*;import java.net.*;public class Networking02 {public static void main(String args[]) {try {//Socket client = new Socket("133.0.0.1", 1234);Socket client = new Socket(InetAddress.getLocalHost(),1234);InputStream clientIn = client.getInputStream();OutputStream clientOut = client.getOutputStream();PrintWriter pw = new PrintWriter(clientOut, true);BufferedReader br = new BufferedReader(newInputStreamReader(clientIn));BufferedReader stdIn = new BufferedReader(newInputStreamReader(System.in));System.out.println("Type a message for the server: ");pw.println(stdIn.readLine());System.out.println("Server message: ");System.out.println(br.readLine());pw.close();br.close();client.close();} catch (ConnectException ce) {System.out.println("Cannot connect to the server.");} catch (IOException ie) { System.out.println("I/O Error.");}}}

Page 33: Laporan 2.5 sd 2.10

1. Tujuana. Mendefinisikan apa yang dimaksud dengan applet b. Membentuk applet anda sendiri c. Mengetahui siklus yang terdapat pada applet

init start stop destroy

d. Menggunakan methods applet yang lain paint showStatus Methods untuk memainkan sebuah audio clip

e. Memahami html tag pada applet

2. Latar Belakang

Applets adalah satu dari fitur yang paling menarik dalam java. Applet merupakan program yang Anda jalankan melalui web browser. Anda akan belajar tentang membentuk applet pada pembelajaran ini. Sebuah applet adalah tipe yang spesial dari program java yang dieksekusi melalui internet. Secara khusus berjalan pada suatu web browser seperti Netscape Navigator, Mozilla, atau Microsoft Internet Explorer. Bagaimanapun, jika dibandingkan dengan aplikasi Java yang normal, tidak diijinkan mengakses applet pada komputer yang mana dijalankan untuk alasan keamanan. Applet ini cukup terbatas jika dibandingkan dengan aplikasi java. Pada module ini, Anda akan mempelajari tentang membuat applet menggunakan AWT.

3. Percobaan

Page 34: Laporan 2.5 sd 2.10

Percobaan 1 String Hello World:

Hasil Percobaan

Percobaan 2 Life Cycle Demo:

import java.awt.*;import java.applet.*;/* masukkan bagian ini dalam kode html<applet code="AppletDemo" width=300 height=100></applet>*/public class AppletDemo extends Applet { @Overridepublic void paint(Graphics g) {g.drawString("Hello world!", 80, 25);}}

Page 35: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 3 Menampilkan ShowStatus:

import java.applet.*;import java.awt.*;/*<applet code="LifeCycleDemo" width=300 height=100></applet>*/class LifeCycleDemo extends Applet {String msg ="";public void init() {msg += "initializing... ";repaint();}public void start() {msg += "starting... ";repaint();}public void stop() {msg += "stopping... ";repaint();}public void destroy() {msg += "preparing for unloading...";repaint();}public void paint(Graphics g) {g.drawString(msg, 15, 15);}}

Page 36: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 4 Memainkan file audio :

import java.awt.*;import java.applet.*;/*<applet code="AppletDemo" width=300 height=100></applet>*/public class AppletDemo2 extends Applet { @Overridepublic void paint(Graphics g) {g.drawString("Hello world!", 80, 25);showStatus("This is an important information.");}}

Page 37: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 5 Menampilkan String HelloWorld dengan parameter:

import java.awt.*;import java.applet.*;/*<applet code="AudioApplet" width=300 height=100></applet>*/public class AudioApplet extends Applet {AudioClip ac;public void init() {try {/*audio clip tersimpan dalam direktori yang samaseperti kode javanya*//* spaceMusic telah terdownload dari java.sun.com */ac = getAudioClip(getCodeBase(), "spaceMusic.au");ac.loop();} catch (Exception e) {System.out.println(e);}}public void stop() {ac.stop();}public void paint(Graphics g) {g.drawString("Playing space music!", 80, 25); } }

Page 38: Laporan 2.5 sd 2.10

Hasil Percobaan

PRAKTIKUM I/O STREAM LANJUTAN

import java.awt.*;import java.applet.*;/*<applet code="ParamDemo" width=300 height=100><param name="myParam" value="Hello world!"></applet>*/public class ParamDemo extends Applet { @Overridepublic void paint(Graphics g) {g.drawString(getParameter("myParam"), 80, 25);}}

Page 39: Laporan 2.5 sd 2.10

1. Tujuana. Tahu tipe-tipe stream yang umum digunakan b. Menggunakan class File dan methodnya

Karakter dan Stream byte Input dan Output Streams Node dan Filter Streams

c. Menggunakan class-class Input/Output yang berbeda Reader Writer InputStream OutputStream

d. Memahami konsep dari stream chaining e. Mendefinisikan serialisasi f. Memahami penggunaan dari kata kunci transient g. Menulis dan membaca dari sebuah object stream

2. Latar BelakangTipe-Tipe Stream yang Umum Digunakan Stream Karakter dan Byte Seperti yang elah disebutkan sebelumnya, secara umum ada dua tipe dari stream, yaitu stream karakter dan byte. Kita hanya mengulang perbedaan mendasar antara keduanya. Stream byte adalah abstraksi file atau alat untuk data biner sedangkan stream karakter adalah untuk karakter Unicode. Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan class OutputStream adalah class root abstraksi dari semua output stream byte. Untuk stream karakter, superclasss yang sesuai dari semua class-class secara berturut-turut adalah class Reader dan the Writer. Kedua class-class ini adalah abstraksi class-class untuk membaca dan menulis stream karakter.

Input dan Output Stream Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau menulis stream.Walaupun ini sudah cukup nyata, izinkan saya untuk mendefinisikan tipe stream ini. Anda diijinan untuk membaca dari input stream tapi tidak menulisnya. Di lain pihak, Anda diijinkan untuk menulis output streams tapi tidak membacanya. Class InputStream dan class Reader adalah superclass-superclass dari semua input stream. Class OutputStream dan class Writer adalah class-class root dari semua output stream. Input stream juga dikenal sebagai stream sumber (source stream) sejak kita memperoleh informasi dari stream ini. sementara itu output stream disebut juga stream hasil(sink stream).

Node dan Stream Filter Kini package java.io membedakan antara node dan stream filter. Sebuah stream node adalah sebuah stream dengan fungsi dasar berupa fungsi membaca atau menulis dari sebuah lokasi khusus seperti pada disk atau dari jaringan. Tipe-tipe dari stream node

Page 40: Laporan 2.5 sd 2.10

terdiri atas file, memory dan jalur data. Stream filter, di lain pihak, diletakkan pada layer stream node diantara threads atau proses untuk menyediakan fungsi tambahan yang tidak dapat ditemukan dalam stream node oleh stream node itu sendiri. Penambahan lapisan pada sebuah stream node disebut dengan stream chaining. Sesi ini berturut-turut mempunyai sebuah tujuan dariclass-class stream yang berbeda. Untuk melengkapi daftar dari class-class ini, silahkan melihat dokumentasi Java's API.

3. PercobaanPercobaan 1 Informasi File atau Folder:

Page 41: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 2 File Terkopi:

import java.io.*;public class IO01 {public static void main(String args[]) {String fileName = “MUNZIR.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.");}}}import java.io.*;class IO02 {void copy(String input, String output) {FileReader reader;FileWriter writer;int data;try {reader = new FileReader(input);writer = new FileWriter(output);while ((data = reader.read()) != -1) {writer.write(data);}reader.close();writer.close();} catch (IOException ie) {ie.printStackTrace();}}public static void main(String args[]) {String inputFile = “boolean.txt”;String outputFile = “MUNZIR.txt”;CopyFile cf = new CopyFile();cf.copy(inputFile, outputFile);}}

Page 42: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 3 File Terkopi:

import java.io.*;class IO03 {void copy(String input, String output) {BufferedReader reader; BufferedWriter writer; String data;try {reader = new BufferedReader(new FileReader(input));writer = new BufferedWriter(new FileWriter(output));while ((data = reader.readLine()) != null) {writer.write(data, 0, data.length());}reader.close();writer.close();} catch (IOException ie) {ie.printStackTrace();}}public static void main(String args[]) {String inputFile = “Boolean.txt”;String outputFile = “MUNZIR.txt”;CopyFile cf = new CopyFile();cf.copy(inputFile, outputFile);}}

Page 43: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 4 File Terkopi:

import java.io.*;class IO04 {void copy(String input, String output) {FileInputStream inputStr;FileOutputStream outputStr;int data;try {inputStr = new FileInputStream(input);outputStr = new FileOutputStream(output);while ((data = inputStr.read()) != -1) {outputStr.write(data);}inputStr.close();outputStr.close();} catch (IOException ie) {ie.printStackTrace();}}public static void main(String args[]) {String inputFile = “boolean.txt”;String outputFile = “MUNZIR.txt”;CopyFile cf = new CopyFile();cf.copy(inputFile, outputFile);} }

Page 44: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 5 Character Dari File tercetak:

import java.io.*;class CopyFile {void copy(String input) {PushbackInputStream inputStr;PrintStream outputStr;int data;try {inputStr = new PushbackInputStream(newFileInputStream(input));outputStr = new PrintStream(System.out);while ((data = inputStr.read()) != -1) {outputStr.println("read data: " + (char) data);inputStr.unread(data);data = inputStr.read();outputStr.println("unread data: " + (char) data);}inputStr.close();outputStr.close();} catch (IOException ie) {ie.printStackTrace();}}public static void main(String args[]) {String inputFile = “MUNZIR.txt”;CopyFile cf = new CopyFile();cf.copy(inputFile); }}

Page 45: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 6 Terbentuk File Boolean.ser:

import java.io.*;public class SerializeBoolean {SerializeBoolean() {Boolean booleanData = new Boolean("true");try {FileOutputStream fos = newFileOutputStream("boolean.ser");ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(booleanData);oos.close();} catch (IOException ie) {ie.printStackTrace();}}public static void main(String args[]) {SerializeBoolean sb = new SerializeBoolean();}}

Page 46: Laporan 2.5 sd 2.10

Hasil Percobaan

Percobaan 7 Unserialized Boolean:

import java.io.*;public class UnserializeBoolean {UnserializeBoolean() {Boolean booleanData = null;try {FileInputStream fis = newFileInputStream("boolean.ser");ObjectInputStream ois = new ObjectInputStream(fis);booleanData = (Boolean) ois.readObject();ois.close();} catch (Exception e) {e.printStackTrace();}System.out.println("Unserialized Boolean from " + "boolean.ser");System.out.println("Boolean data: " + booleanData);System.out.println("Compare data with true: " + booleanData.equals(new Boolean("true")));}public static void main(String args[]) {UnserializeBoolean usb = new UnserializeBoolean();}}

Page 47: Laporan 2.5 sd 2.10

Hasil Percobaan