Anda di halaman 1dari 21

1

Modul belajar JAVA dan Netbeans untuk pemula


Pemograman

Faris Ar Rasyid (1807111011)

Politeknik Negeri Jakarta

2018/2019
2

Definisi Java Netbeans


Pengertian Java dan JDK
Java adalah sebuah teknologi yang diperkenalkan oleh Sun Microsysytems pada pertengahan tahun
1990. Menurut definisi Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan
menjalankan perangkat lunak pada computer standalone ataupun pada lingkungan jaringan. Kita lebih
menyukai Java sebagai sebuah teknologi disbanding hanya sebuah bahasa pemrograman, karena Java
lebih lengkap karena Java lebih lengkap dibanding sebuah bahasa pemrograman konvensional.
Teknologi Java memiliki tiga komponen penting, yaitu: · Programming-language specification ·
Application-programming interface · Virtual-machine specification JDK (Java Development Kit) Java
Development Kit (JDK) adalah Sun Microsystems produk ditujukan untuk pengembang Java. Sejak
diperkenalkannya Java, telah jauh SDK Java yang paling banyak digunakan. Pada tanggal 17 November
2006, Sun mengumumkan bahwa akan dirilis di bawah GNU General Public License (GPL), sehingga
membuat perangkat lunak bebas. Hal ini terjadi sebagian besar pada tanggal 8 Mei 2007 [3]; Sun
kontribusi kode sumber untuk JDKOpen. JRL (Java Research License) JRL (JAVA RESEARCH LICENSE) ini
dibuat khusus untuk universitas dan peneliti yang ingin menggunakan teknologi Java [tm] sebagai
subyek pembelajaran dan penelitian. Ia ditulis untuk menyederhanakan dan bersantai persyaratan
bagian yang ada “penelitian” dari SCSL saat ini. JRL adalah lisensi yang diciptakan khusus untuk
universitas dan peneliti yang ingin menggunakan teknologi Java sebagai subyek pembelajaran dan
penelitian. itu ditulis untuk menyederhanakan dan bersantai persyaratan bagian yang ada “penelitian”
dari SCSL saat ini. NetBeans NetBeans mengacu pada kedua kerangka platform untuk aplikasi desktop
Java, dan sebuah lingkungan pengembangan terpadu (IDE) untuk pengembangan dengan Java,
JavaScript, PHP, Python, Ruby, Groovy, C, C + +, Scala, Clojure, dan lain-lain. NetBeans IDE ditulis dalam
Java dan berjalan di mana-mana di mana JVM yang diinstal, termasuk Windows, Mac OS, Linux, dan
Solaris. Sebuah JDK diperlukan untuk pengembangan fungsionalitas Java, tetapi tidak diperlukan untuk
pembangunan di bahasa pemrograman lain. Platform NetBeans memungkinkan aplikasi untuk
dikembangkan dari satu set komponen perangkat lunak moduler yang disebut modul. Aplikasi berbasis
platform NetBeans (termasuk IDE NetBeans) dapat diperpanjang oleh pengembang pihak ketiga.

Karakteristik Java
Kelebihan dan Karakteristik Java Sintaks bahasa pemograman java adalah pengembangan dari bahasa
pemograman C/C++, sehingga dengan mereka yang sudah terbiasa dengan C/C++ tidak akan mengalami
kesulitan mempelajari bahasa pemograman Java. Java adalah bahasa pemograman yang sederhana dan
tangguh. Berikut ini adalah beberapa karakteristik dari Java sesuai dengan white paper dari SUN.
Berorientasi Object, Java telah menerapkan konsep pemograman berorientasi object yang modern
dalam implementasinya Robust, Java mendorong pemograman yang bebas dengan kesalahan yang
bersipat strongly typed dan memiliki run time checking. Protable, pemograman Java berjalan pada
system operasi apapun yang memiliki Java Virtual Machine. Multithreding, Java mendukung
pemograman multitreding dan terintegrasi secara langsung dalam bahasa Java. Dinamis, program Java
dapat melakukan sesuatu tindakan yang ditentukan pada saat eksekusi program dan pada saat
kompilasi. Sederhana, Java menggunakan bahasa yang sederhana dan mudah dipelajari. Terdistribusi,
Java didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet. Aman, aplikasi
yang dibuat dengan bahasa Java lebih dapat dijamin keamanannya terutama untul aplikasi internet.
Netral secara arsitektur, Java tidak terkait pada suatu mesin atau mesin operasi tertentu. 10.
Interpreted, aplikasi java bisa dieksekusi pada platform yang berbeda-beda karena melakukan
interpretasi pada bytecode. 11. Berkinerja tinggi, byte kode Java telah teroptimasi dengan baik sehingga
eksekusi program dapat dilakukan dengan cepat.

Pengertian NetBeans
NetBeans adalah Integrated Development Environment (IDE) berbasiskan Java dari Sun Microsystems
yang berjalan di atas Swing. Swing sebuah teknologi Java untuk pengembangan aplikasi Desktop yang
dapat bejalan di berbagai macam platforms seperti Windows, Linux, Mac OS X and Solaris. Suatu IDE
adalah lingkup pemrograman yang diintegrasikan kedalam suatu aplikasi perangkat lunak yang
menyediakan pembangun Graphic User Interface (GUI), suatu text atau kode editor, suatu compiler atau
interpreter dan suatu debugger. Netbeans merupakan software development yang Open Source,
dengan kata lain software ini di bawah pengembangan bersama, bebas biaya NetBeans merupakan
sebuah proyek kode terbuka yang sukses dengan pengguna yang sangat luas, komunitas yang terus
tumbuh, dan memiliki hampir 100 mitra. Sun Microsystems mendirikan proyek kode terbuka NetBeans
pada bulan Juni 2000 dan terus menjadi sponsor utama. Saat ini terdapat dua produk : NetBeans IDE
dan NetBeans Platform. The NetBeans IDE adalah sebuah lingkungan pengembangan – sebuah kakas
untuk pemrogram menulis, mengompilasi, mencari kesalahan dan menyebarkan program. Netbeans IDE
ditulis dalam Java – namun dapat mendukung bahasa pemrograman lain. Terdapat banyak modul untuk
memperluas Netbeans IDE. Netbeans IDE adalah sebuah produk bebas dengan tanpa batasan
bagaimana digunakan. Tersedia juga NetBeans Platform sebuah fondasi yang modular dan dapat
diperluas yang dapat digunakan sebagai perangkat lunak dasar untuk membuat aplikasi desktop yang
3

besar. Mitra ISV menyediakan plug-in bernilai tambah yang dapat dengan mudah diintegrasikan ke
dalam Platform dan dapat juga digunakan untuk membuat kakas dan solusi sendiri. Kedua produk
adalah kode terbuka (open source) dan bebas (free) untuk penggunaan komersial dan non komersial.
Kode sumber tersedia untuk guna ulang dengan lisensi Common Development and Distribution License
(CDDL). 2. Kelebihan dan Kekurangan Netbeans Kelebihan NetBeans GUI Builder : Salah satu yang
menjadi kelebihan NetBeans GUI Builder adalah yang telah disebutkan diatas, yaitu GRATIS. Selain itu
NetBeans GUI Builder sangat kompetebel dengan Swing karena memang langsung dikembangkan oleh
Sun yang notabenenya sebagai pengembang Swing. Kekurangan NetBeans GUI Builder : NetBeans hanya
mensupport 1 pengembangan Java GUI, yaitu Swing, yang padahal ada Java GUI yang dikembangkan
oleh eclipse yang bernama SWT dan JFace yang sudah cukup populer. NetBeans mempatenkan source
untuk Java GUI yang sedang dikerjakan dalam sebuah Generated Code, sehingga programmer tak dapat
mengeditnya secara manual.
Awal Sejarah Netbeans
NetBeans dimulai pada tahun 1996 sebagai Xelfi (kata bermain pada Delphi ), Java IDE proyek
mahasiswa di bawah bimbingan Fakultas Matematika dan Fisika di Charles University di Praha . Pada
tahun 1997 Staněk Romawi membentuk perusahaan sekitar proyek tersebut dan menghasilkan versi
komersial NetBeans IDE hingga kemudian dibeli oleh Sun Microsystems pada tahun 1999. Komunitas
NetBeans sejak terus tumbuh, berkat individu dan perusahaan yang menggunakan dan berkontribusi
dalam proyek ini.
versi Lancar
NetBeans IDE 6.0 memperkenalkan dukungan untuk mengembangkan modul IDE dan aplikasi klien kaya
berdasarkan platform NetBeans, Java Swing GUI builder (sebelumnya dikenal sebagai “Proyek Matisse”),
meningkatkan CVS dukungan, WebLogic 9 dan JBoss 4 dukungan, dan perangkat tambahan banyak
editor. NetBeans 6 is available in official repositories of major Linux distributions. NetBeans 6 tersedia
dalam repositori resmi dari distribusi Linux utama.
Selain itu, NetBeans Enterprise Pack mendukung pengembangan aplikasi Java EE 5 perusahaan,
termasuk SOA alat desain visual, skema XML tools, web orkestrasi layanan (untuk BPEL), dan UML
modeling. The NetBeans IDE Bundle for C/C++ supports C/C++ development. The NetBeans IDE Bundle
untuk C / C + + mendukung C / C + + pembangunan.
Hosting pengembang sumber terbuka proyek di kenai.com tambahan manfaat dari instant messaging
dan pelacakan masalah integrasi dan navigasi kanan dalam IDE, dukungan untuk pengembangan aplikasi
web dengan PHP 5.3 dan kerangka Symfony, dan kode selesai diperbaiki, layout, petunjuk dan navigasi
dalam proyek JavaFX.
dirilis pada bulan Juni 2010, menambahkan dukungan untuk OSGi , Spring Framework 3.0, Java EE injeksi
ketergantungan (JSR-299), Zend Framework untuk PHP , dan navigasi kode lebih mudah (seperti
“Apakah / ditimpa Penerapan” penjelasan), format , petunjuk, dan refactoring di beberapa bahasa.

Struktur Dasar Program Java


Struktur program Java secara umum dibagi menjadi 4 bagian:

1. Deklarasi Package
2. Impor Library
3. Bagian Class
4. Method Main

Mari kita lihat contohnya:

package com.petanikode.program; //<- 1. deklarasi package


import java.io.File; //<- 2. Impor library
class Program { //<- 3. Bagian class
public static void main(String args[]){ //<- 4. Method main
System.out.println("Hello World");
}
}

Mari kita bahas, satu-per-satu…

1. Deklarasi Package
Package merupakan sebuah folder yang berisi sekumpulan program Java.
Deklarasi package biasanya dilakukan saat membuat program atau aplikasi besar.
Contoh deklarasi package:
4

package com.petanikode.program;

Biasanya nama package mengikuti nama domain dari sebauh vendor yang mengeluarkan program
tersebut.
Pada contoh di atas, com.petanikode adalah nama domain dari petani kode.
Aturannya: nama domain dibalik, lalu diikuti nama programnya.
Bagaimana kalau kita tidak mendeklarasikan package?
Boleh-boleh saja dan programnya akan tetap bisa jalan.
Tapi nanti saat produksi, misalnya saat membuat aplikasi Android.
Kita wajib mendeklarasikan package.

2. Bagian Impor
Pada bagian ini, kita melakukan impor library yang dibutuhkan pada program.
Library merupakan sekumpulan class dan fungsi yang bisa kita gunakan dalam membuat program.
Contoh impor library:

import java.util.Scanner;

Pada contoh tersebut, kita mengimpor class Scanner dari package java.util.

3. Bagian Class
Java merupakan bahasa pemrograman yang menggunakan paradigma OOP (Object Oriented
Programming).
Setiap program harus dibungkus di dalam class agar nanti bisa dibuat menjadi objek.
Kalau kamu belum paham apa itu OOP?
Cukup pahami class sebagai deklarasi nama program.

class NamaProgram {
public static void main(String args[]){
System.out.println("Hello World");
}
}

Ini adalah blok class.


Blok class dibuka dengan tanda kurung kurawal { kemudian ditutup atau diakhiri dengan }.
Di dalam blok class, kita dapat mengisinya dengan method atau fungsi-fungsi dan juga variabel.
Pada contoh di atas, terdapat method main().

4. Method Main
Method main() atau fungsi main() merupakan blok program yang akan dieksekusi pertama kali.
Ini adalah entri point dari program.
Method main() wajib kita buat. Kalau tidak, maka programnya tidak akan bisa dieksekusi.
Contoh method main().

public static void main(String args[]){


System.out.println("Hello World");
}

Penulisannya harus seperti ini…


Method main() memiliki parameter args[]. Parameter ini nanti akan menyimpan sebuah nilai dari
argumen di command line.
Silahkan baca: Apa Fungsi String[] args pada Pemrograman Java?
Lalu di dalam method main(), terdapat statement atau fungsi:

System.out.println("Hello World");

Ini adalah fungsi untuk menampilkan teks ke layar monitor.


5

Statement dan Ekspresi pada Java


Statement dan eksrepsi adalah bagian terkecil dalam program. Setiap statement dan ekspresi di Java,
harus diakhiri dengan titik koma (;).
Contoh statemen dan ekspresi:

System.out.println("Hello World");
System.out.println("Apa kabar?");
var x = 3;
var y = 8;
var z = x + y;

Statemen dan ekspresi akan menjadi instruksi yang akan dikerjakan oleh komputer.
Pada contoh di atas, kita menyuruh komputer untuk menampilkan teks "Hello World", dan "Apa
kabar?".
Lalu kita menyuruhnya untuk menghitung nilai x + y.

Blok Program Java


Blok program merupakan kumpulan dari statement dan ekspresi yang dibungkus menjadi satu.
Blok program selalu dibuka dengan kurung kurawal { dan ditutup dengan }.
Contoh blok program:

// blok program main


public static void main(String args[]){
System.out.println("Hello World");
System.out.println("Hello Kode");
// blok program if
if( true ){
System.out.println('True');
}
// blok program for
for ( int i = 0; i<10; i++){
System.out.println("Perulangan ke"+i);
}
}

Intinya: jika kamu menemukan kurung { dan }, maka itu adalah sebauh blok program.
Blok program dapat juga berisi blok program yang lain (nested).
Pada contoh di atas, blok program main() berisi blok if dan for.

Penulisan Komentar pada Java


Komentar merupakan bagian program yang tidak akan dieksekusi oleh komputer.
Komentar biasanya digunakan untuk:


Mmemberi keterangan pada kode program;

Menonaktifkan fungsi tertentu;

Membuat dokumentasi;

dll.
Penulisan komentar pada java, sama seperti pada bahasa C. Yaitu menggunakan:

1. Garis miring ganda (//) untuk komentar satu baris;


2. Garis miring bintang (/*...*/) untuk komentar yang lebih dari satu baris.
Contoh:

public static void main(String args[]){


// ini adalah komentar satu baris
6

System.out.println("Hello World");
// komentar akan diabaikan oleh komputer
// berikut ini fungsi yang di-non-aktifkan dengan komentar
// System.out.println("Hello World");
/*
Ini adalah penulisan komentar
yang lebih dari
satu baris
*/
}

Penulisan String dan Karakter


String merupakan kumpulan dari karakter. Kita sering mengenalnya dengan teks.
Contoh string: "Hello world"
Aturan penulisan string pada Java, harus diapit dengan tanda petik ganda seperti pada contoh di atas.
Apabila diapit dengan tanda petik tunggal, maka akan menjadi sebuah karakter.
Contoh: 'Hello world'.
Jadi harap dibedakan:
 Tanda petik ganda ("...") untuk membuat string;
 Sedangkan tanda petik tunggal ('...') untuk membuat karakter.
Case Sensitive
Java bersifat Case Sensitive, artinya huruf besar atau kapital dan huruf kecil dibedakan.
Contoh:

String nama = "Petani Kode";


String Nama = "petanikode";
String NAMA = "Petanikode.com";

System.out.println(nama);
System.out.println(Nama);
System.out.println(NAMA);

Tiga variabel tersebut merupakan tiga variabel yang bebeda, mesikipun sama-sama bernam nama.
Banyak pemula yang sering salah pada hal ini. Karena tidak bisa membedakan mana variabel yang
menggunakan huruf besar dan mana yang menggunakan huruf kecil.
Apabila kita membuat variabel seperti ini:

String jenisKelamin = "Laki-laki";

Maka kita harus memanggilnya seperti ini:

System.out.println(jenisKelamin);

Bukan seperti ini:

System.out.println(jeniskelamin);

Perhatikan, huruf K adalah huruf kapital.


Gaya Penulisan Case
Gaya penulisan case (case style) yang digunakan oleh Java adalah: camelCase, PascalCase, dan ALL
UPPER.
Gaya penulisan camelCase digunakan pada nama variabel, nama objek, dan nama method.
Contoh:
7

String namaSaya = "Dian";

Lalu untuk PascalCase digunakan pada penulisan nama class.


Contoh:

class HelloWOrld {
//...
}

Perhatikan nama class-nya, kita menggunakan huruf kapital di awal, dan huruf kapital pada
huruf W untuk memisahkan dua suku kata.
Sedangkan camelCase huruf depannya menggunakan huruf kecil, dan awalan suku kata berikutnya
menggunakan huruf besar.

// ini camelCase
belajarJava
// ini PascalCase
BelajarJava

Lalu, penulisan ALL UPPER atau semaunya kapital digunakan pada pembuatan nama konstanta.
Contoh:

public final String DB_NAME = "petanikode";

Untuk penulisan dua suku kata atau lebih, ALL UPPER dipisah dengan garus bawah atau underscore (_).
Apakah boleh saya menulis sembarangan?
Misal untuk nama class menggunakan ALL UPPER?
Boleh-boleh saja, programnya tidak akan error. Tetapi kode program yang kamu tulis akan terlihat kotor
dan keluar dari garis pandu yang sudah ditetapkan.

Belajar Pemrograman Java: Variabel dan Tipe Data

Variabel adalah tempat menyimpan nilai sementara.


Itu saja.
Serius?
Iya serius, kalau mau yang lebih panjang…
…coba kita lihat pengertiannya dari Wikipedia:
Variabel: (Lat) 1. berubah-ubah, tidak tetap; 2. deklarasi sesuatu yang memiliki variasi nilai 3. berbeda-
beda dalam bahasa pemrograman disebut juga simbol yang mewakili nilai tertentu, variabel yang
dikenal di sub program disebut variabel lokal. sedang yang di kenal secara umum/utuh dalam satu
program disebut variabel global.
Nah, ngerti gak?
Kalau tidak, cukuplah pahami: Variabel sebagai tempat menyimpan nilai sementara.
Lalu, apa itu tipe data?
Tipe data adalah jenis data yang tersimpan dalam variabel.

Macam-macam Tipe Data


Berikut ini macam-macam tipe data pada Java:

 char: Tipe data karakter, contoh Z


 int: angka atau bilangan bulat, contoh 29
 float: bilangan desimal, contoh 2.1
 double: bilangan desimal juga, tapi lebih besar kapasistanya, contoh 2.1
 String: kumpulan dari karakter yang membentuk teks, contoh Hello World!
 boolean: tipe data yang hanya bernilai true dan false
8

Membuat Variabel
Hal yang perlu diketahui dalam pembuatan variabel di java adalah cara penulisannya.
Formatnya seperti ini:

<tipe data> namaVariabel;

Contoh:
Membuat variabel kosong bertipe integer:

int namaVariabel;

Membuat variabel bertipe integer dan langsung diisi nilai:

int namaVariabel = 19;

Membuat sekumpulan variabel yang tipe datanya sama:

int a, b, c;

Lalu, dimana itu ditulis?

1. Di dalam fungsi main(): variabel yang ditulis di dalam fungsi main() dan fungsi yang lainnya
disebut variabel lokal.
2. Di dalam class: Variabel ini disebut variabel class atau global.
Bingung…?

Mari Kita Coba Latihan dengan Membuat Program DataDiri


Buatlah program baru bernama DataDiri. Silahkan tambahkan kelas (java class) baru di
paket (package) pertemuan1.

Pada jendela yang muncul, isi nama kelasnya dengan DataDiri. Setelah itu, silahkan ikuti kode berikut.
9

Setelah itu, coba jalankan dengan menekan tombol [Shift]+[F6]. Analisa dan pahami maksud kode-kode
di atas.

Hasil outputnya sepertinya salah.


Usia kok nilianya alamat, mengapa demikian?
Itu disebabkan karena kita memanggil variabel alamat pada baris usia.
Jadi yang akan tampil adalah isi dari variable alamat, bukan isi dari variabel usia.
Perbaikilah kodenya menjadi seperti ini:
10

Dan, … silahkan coba jalankan kembali programnya.

Yap! hasilnya sudah benar.

Aturan Penulisan Variabel


Ternyata tidak boleh sembarangan dalam membuat variabel.
Ada aturan yang harus diikuit, diantaranya:
 Nama variabel tidak boleh menggunakan kata kunci dari Java (reserved word) seperti if, for, switch, dll.
 Nama variabel boleh menggunakan huruf, angka (0-9), garis bawah (underscore), dan symbol dollar ($),
namun penggunaan garis bawah dan symbol lebih baik dihindari.
 Nama variabel harus diawali dengan huruf kecil, karena Java menggunakan gaya CamelCase.
 Apabila nama variabel lebih dari 1 suku kata, maka kata ke-2 dituliskan dengan diawali dengan
huruf besar dan seterusnya, contoh namaVariabel.

Latihan Ke-2: Program LuasLingkaran


Mari kita mantapkan pemahaman dengan membuat program LuasLingkaran.
Program ini fungsinya untuk menghitung luas lingkaran.
Luas lingkaran dapat kita hitung dengan rumus PI x r2.
Sebelum memulai memrogram, sebaiknya kita pahami dulu algoritma dan flowchart-nya:

Algoritma

Deklarasi:
Double luas, PI
int r
Deskripsi:
- Input
PI = 3.14
r = 18
- Proses
luas = PI * r * r
- Output
cetak luas

Flow Chart:
11

Nah, sudah jelas kan?


Sekarang kita tinggal coding saja.

Silahkan dieksekusi dan pertahikan hasilnya.

Konversi Tipe Data


Konversi artinya merubah ke jenis yang lain.
Kenapa kita perlu konversi tipe data?
Untuk menjawabnya, saya ingin tunjukan ilustrasi berikut ini:

Air yang bentuknya cair tidak bisa disimpan dalam kardus. Karena itu, air harus konversi dulu menjadi
bentuk padat (es) agar bisa disimpan dalam kardus.
Begitu juga dengan variabel.
Tipe data string tidak akan bisa disimpan dalam variabel dengan tipe integer.

Cara Konversi Tipe Data


Contoh: Konversi ke tipe integer
Cara 1:

Integer.perseInt(variabel);
Integer.perseInt(1.2);

Cara 2:
12

Integer.valueOf(2.1);

Cara 3:

objek.toInt();

Cara 4:

(int) variabel;
(int) 2.1;

Ternyata, ada banyak sekali cara.

Mari Kita Coba dalam Program…


Buatlah kelas (java class) baru di paket pertemuan2.
Berikan nama: LuasSegitiga.
Kemudian ikuti kode program berikut:

package pertemuan2;
import java.util.Scanner;
public class LuasSegitia {
public static void main(String[] args) {
// deklarasi
Double luas;
int alas, tinggi;
// mebuat scanner baru
Scanner baca = new Scanner(System.in);
// Input
System.out.println("== Program hitung luas Segitiga ==");
System.out.print("Input alas: ");
alas = baca.nextInt();
System.out.print("Input tinggi: ");
tinggi = baca.nextInt();
// proses
luas = Double.valueOf((alas * tinggi) / 2);
// output
System.out.println("Luas = " + luas);
}
}

Variabel luas bertipe data Double, berarti nilai yang bisa disimpan adalah Double.
Sedangkan variabel alas dan tinggi bertipe Integer.
Agar hasil operasi data integer dapat disimpan dalam variabel bertipe double, maka perlu dikonversi.
Kalau dijalankan, akan menghasilkan:
13

Membuat Client dan Server aplikasi chat:


aplikasi chat ini akan berguna untuk berkomunikasi antara server dengan client secara langsung, aplikasi
chat ini bisa ditrapkan di kantor seandainya internet down atau mati bisa langsung komunikasi secara
langsung ke server disebabkan chat ini jaringannya local.
Perangkat yang dibutuhkan:
1. aplikasi netbeans versi 1.8
2. aplikasi java se jdk versi 1.7(sesuaikan dengan netbeansnya)

Cara Buatnya

1. Buka netbeans lalu klik file->New Project atau klik logo yang sudah dilingkarin -> klik Java -> klik Java
Aplikasi -> Next.
14

2. Tulis nama project yang diinginkan lalu klik finish.

3. klik kanan di project atau ChatMe.java lalu delet(karena filenya tidak ada bentuk form nya) -> klik
kanan pada file project -> klik new -> JFrame Form...

4. Tulis nama project yang diinginkan lalu klik finish

5. Hasilnya jadi seperti ini.


15

Sourch code untuk ChatMe.java :


/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package chatme;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
*
* @author Habibi Mustafa
* NIM: 13651074
*/
public class ChatMe extends javax.swing.JFrame implements Runnable {

Socket client; // class socket untuk client


ServerSocket server; // class socket untuk server
BufferedReader server_reader, client_reader; // buffered messege
BufferedWriter server_writer, client_writer; // buffered typing

/**
* Creates new form ChatMe
*/
public ChatMe() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();


cboConnection = new javax.swing.JComboBox<String>();
btnConnect = new javax.swing.JButton();
txtUsername = new javax.swing.JTextField();
txtMessege = new javax.swing.JTextField();
btnSend = new javax.swing.JButton();
listMessege = new java.awt.List();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

cboConnection.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Server", "Client"


}));
cboConnection.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cboConnectionItemStateChanged(evt);
}
16

});

btnConnect.setText("On");
btnConnect.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnConnectActionPerformed(evt);
}
});

txtUsername.setText("Username");

txtMessege.setText("Your messege here...");

btnSend.setText("Send");
btnSend.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSendActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);


jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(cboConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnConnect, javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtUsername))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(txtMessege, javax.swing.GroupLayout.PREFERRED_SIZE, 285,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnSend, javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(listMessege, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnConnect, javax.swing.GroupLayout.PREFERRED_SIZE, 32,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cboConnection, javax.swing.GroupLayout.PREFERRED_SIZE, 32,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 32,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(listMessege, javax.swing.GroupLayout.PREFERRED_SIZE, 454,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
17

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addComponent(txtMessege)
.addComponent(btnSend, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE))
.addContainerGap(29, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());


getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

pack();
}// </editor-fold>

private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {


if(btnConnect.getText().equals("Hubungkan")){
btnConnect.setText("Putuskan");
client_connection();
Thread thread = new Thread(this);
thread.start();
} else if (cboConnection.getSelectedItem().equals("Server")){
btnConnect.setText("OFF");
read_connection();
Thread thread = new Thread(this);
thread.start();
}
}

private void btnSendActionPerformed(java.awt.event.ActionEvent evt) {


try {
server_writer.write(txtUsername.getText() + ": " + txtMessege.getText());
server_writer.newLine();
server_writer.flush();
}
catch (IOException e){
Logger.getLogger(ChatMe.class.getName()).log(Level.SEVERE, null, e);
}
listMessege.add("Me: "+txtMessege.getText());
txtMessege.setText("");
}

private void cboConnectionItemStateChanged(java.awt.event.ItemEvent evt) {


if(cboConnection.getSelectedItem().equals("Server")){
btnConnect.setText("ON");
txtUsername.setText("Server");
} else {
btnConnect.setText("Hubungkan");
txtUsername.setText("Client");
}
}

private void client_connection(){


try {
String ip = JOptionPane.showInputDialog("Masukkan Alamat IP Server!");
client = new Socket(ip, 2000);
18

cboConnection.setEnabled(false);
server_reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
server_writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
btnConnect.setText("Putuskan");
} catch (UnknownHostException e){
System.err.println("Akses ke server gagal!");
System.exit(-1);
} catch (IOException e){
Logger.getLogger(ChatMe.class.getName()).log(Level.SEVERE, null, e);
}
}

private void read_connection(){


try {
try {
try {
server = new ServerSocket(2000);
this.setTitle("Mohon Tunggu Sebentar ...");
}
catch(IOException e){
System.err.println("Gagal membuat server");
System.exit(-1);
}
client = server.accept();
this.setTitle("Terhubung ke "+client.getInetAddress());
}
catch(IOException e){
System.err.println("Akses ditolak");
System.exit(-1);
}
server_reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
server_writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
}
catch(IOException e){
System.err.println("Tidak dapat membaca pesan");
System.exit(-1);
}
}

private void disconnected_by_client(){


try {
client.close();
server_reader.close();
server_writer.close();
cboConnection.setEnabled(true);
btnConnect.setText("Hubungkan");
} catch(IOException e){
Logger.getLogger(ChatMe.class.getName()).log(Level.SEVERE, null, e);
}
}

private void stopped_by_server(){


try {
server_reader.close();
server_writer.close();
btnConnect.setText("ON");
this.setTitle("Terputus");
}
catch (IOException e){
Logger.getLogger(ChatMe.class.getName()).log(Level.SEVERE, null, e);
}
}

/**
19

* @param args the command line arguments


*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ChatMe.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ChatMe.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ChatMe.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ChatMe.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ChatMe().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JButton btnConnect;
private javax.swing.JButton btnSend;
private javax.swing.JComboBox<String> cboConnection;
private javax.swing.JPanel jPanel1;
private java.awt.List listMessege;
private javax.swing.JTextField txtMessege;
private javax.swing.JTextField txtUsername;
// End of variables declaration

@Override
public void run() {
while (true) {
try {
listMessege.add(server_reader.readLine());
} catch (IOException e) {
Logger.getLogger(ChatMe.class.getName()).log(Level.SEVERE, null, e);
}
}
}
}
20

Design

1. Buat lah platform sesuai yang anda ingin kan atau ikutin yg ada di atas ini

2. klik kanan pada ChatMe.java atau platform yang baru saja dibuat atau bisa shift+F6, buka dua aplikasi
yang sudah dibuat.
21

3. kalau sudah tulis nickname server dan client -> klik on terlebih dahulu di server lalu klik publish di
client -> tulis "localhist" di input lalu ok, dengan begitu server dan client saling terhubung.

Referensi:
Google.com

Anda mungkin juga menyukai