laporan cs

63
Tugas Mata Kuliah Client Server Membuat Aplikasi Chatting dengan Java Di susun oleh: Nur Jihad P. Dwianri D421 09 109 Ayublisty Anugerah Salombe D421 09 110 Program Studi Teknik Informatika Jurusan Teknik Elektro Fakultas Teknik Universitas Hasanuddin Makassar

Upload: ayu-blisty

Post on 24-Jul-2015

250 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Laporan Cs

Tugas Mata Kuliah Client Server

Membuat Aplikasi Chatting dengan Java

Di susun oleh:

Nur Jihad P. Dwianri D421 09 109

Ayublisty Anugerah Salombe D421 09 110

Program Studi Teknik Informatika

Jurusan Teknik Elektro

Fakultas Teknik

Universitas Hasanuddin

Makassar

2012

Page 2: Laporan Cs

BAB I

PENDAHULUAN

A. Latar Belakang

Sudah tidak asing lagi bagi kita tentang chating di internet.

Mengobrol lewat internet dianggap cukup menyenangkan sehingga tak

jarang seseorang yang pergi ke warung internet hanya untuk chating saja

sampai berjam-jam. Dengan chating lewat internet anda bisa mendapatkan

banyak teman dari penjuru dunia. Hal keamanan merupakan faktor penting

bagi kita dalam berbagi informasi. Misalnya, jika atasan kita ingin

mendengar laporan kerja karyawan, maka jika kita memberitahu dengan

SMS lewat ICQ, email dan sebagainya serasa tidak efektif bila kita

menginginkan komunikasi dua arah yang saling bertemu dan menjamin

keamanan tinggi sehingga menciptakan suasana yang akrab dan nyaman.

Dalam hal ini anda bisa memakai program chating mIRC32, ICQ,

dan sebagainya yang sudah disediakan oleh warung internet. Apakah

orang lain yang tidak diinginkan bisa menyusup dan mengambil data kita?

Tentu saja bisa. Sebab kebanyakan program chating justru memilih dari

segi kegunaan yang umum. Oleh karena itu, penulis akan mencoba

membuat program chating yang sangat berguna dan meningkatkan

keamanan data sehingga mengurangi orang yang tidak diinginkan masuk

ke dalam forum kita dan ‘mencuri’ data kita.

Dalam hal permrograman ini akan digunakan bahasa java. Java

adalah bahasa yang handal, mudah dipelajari bagi pengguna C++, rumus

umum dasar java menyerupai C++ dan ada juga yang tidak mirip, tetapi

java lebih mengkhususkan diri untuk full obyek.

Page 3: Laporan Cs

Desain program sendiri aka nada pihak yang menjadi server dan

ada yang menjadi client. Server inilah yang mengkoneksikan beberapa

komputer nantinya. Pihak client akan diminta memasukkan IP address dari

server agar bisa tergabung dalam room chat.

B. Rumusan Masalah

1. Bagaimana cara membuat sebuah aplikasi chatting dengan

menggunakan bahasa pemrograman Java?

2. Bagaimana menghubungkan dua buah komputer untuk menjalankan

aplikasi chatting yang dibuat?

C. Tujuan

1. Membuat sebuah aplikasi chatting dengan menggunakan bahasa

pemrograman Java.

2. Menghubungkan dua buah komputer untuk menjalankan program

chatting yang telah dibuat.

D. Manfaat

1. Mahasiswa mampu membuat sebuah aplikasi chatting dengan bahasa

pemrograman Java.

2. Mahasiswa lebih memahami konsep client dan server.

3. Memperdalam ilmu tentang bahasa pemrograman Java.

4. Dengan adanya program ini, orang-orang mampu berinteraksi dengan

orang lain melalui dunia maya.

E. Ruang Lingkup

Pembuatan aplikasi ini menggunakan Netbeans 6.9.1 dan bahasa

pemrograman Java.

Page 4: Laporan Cs

BAB II

TINJAUAN PUSTAKA

A. Client-Server

Client-Server adalah arsitektur jaringan yang memisahkan

client(biasanya aplikasi yang menggunakan GUI ) dengan server.

Masing-masing client dapat meminta data atau informasi dari server.

Sistem client server didefinisikan sebagai sistem terdistribusi, tetapi ada

beberapa perbedaan karakteristik yaitu :

1. Servis (layanan)

Hubungan antara proses yang berjalan pada mesin yang berbeda

Pemisahan fungsi berdasarkan ide layanannya.

Server sebagai provider, client sebagai konsumen

2. Sharing resources (sumber daya)

Server bisa melayani beberapa client pada waktu yang sama, dan

meregulasi akses bersama untuk share sumber daya dalam

menjamin konsistensinya.

3. Asymmetrical protocol (protokol yang tidak simetris )

Many-to-one relationship antara client dan server.Client selalu

menginisiasikan dialog melalui layanan permintaan, dan server

menunggu secara pasif request dari client.

4. Transparansi lokasi

Proses yang dilakukan server boleh terletak pada mesin yang sama

atau pada mesin yang berbeda melalui jaringan.Lokasi server harus

mudah diakses dari client.

5. Mix-and-Match

Page 5: Laporan Cs

Perbedaan server client platforms

6. Pesan berbasiskan komunikasi

Interaksi server dan client melalui pengiriman pesan yang

menyertakan permintaan dan jawaban.

7. Pemisahan interface dan implementasi

Server bisa diupgrade tanpa mempengaruhi client selama interface

pesan yang diterbitkan tidak berubah.

Client Server System

Client / Server Application

Perbedaan Tipe Client-Server:

Page 6: Laporan Cs

1. File Servers

File server vendors mengklaim bahwa mereka pertama

menemukan istilah client-server.

Untuk sharing file melalui jaringan

2. Database Servers

Client mengirimkan SQL requests sebagai pesan pada database

server,selanjutnya hasil perintah SQL dikembalikan

Server menggunakan kekuatan proses yang diinginkan untuk

menemukan data yang diminta dan kemudian semua record

dikembalikan pada client.

3. Transaction Servers (Transaksi Server)

Page 7: Laporan Cs

Client meminta remote procedures yang terletak pada server

dengan sebuah SQL database engine.

Remote procedures ini mengeksekusi sebuah grup dari SQL

statement

Hanya satu permintaan / jawaban yang dibutuhkan untuk

melakukan transaksi

4. Groupsware

Servers

Dikenal

sebagai

Computer-

supported

cooperative working

Manajemen semi-struktur informasi seperti teks, image, , bulletin

boards dan aliaran kerja

Data diatur sebagai dokumen

5. Object

Application

Servers

Aplikasi

client/server

ditulis

sebagai satu

set objek

komunikasi

Client objects berkomunikasi dengan server objects melalui

Object Request Broker (ORB)

Page 8: Laporan Cs

Client meminta sebuah method pada remote object

6. Web Application Servers (Aplikasi Web Servers)

World Wide Web adalah aplikasi client server yang pertama

yang digunakan untuk web.

Client dan servers berkomunikasi menggunakan RPC seperti

protokol yang disebut HTTP.

B. Socket

1.   Sejarah Socket

Socket adalah mekanisme komunikasi yang memungkinkan

terjadinya pertukaran data antar program atau proses baik dalam

satu mesin maupun antar mesin. Gaya pemrograman soket sendiri

berawal dari sistem Unix BSD yang terkenal dengan

kepeloporannya pada bidang penanganan jaringan, sehingga sering

disebut BSD Socket. Socket pertama kali diperkenalkan di sistem

Unix BSD versi 4.2 tahun 1983 sebagai kelanjutan dari

Page 9: Laporan Cs

implementasi protokol TCP/IP yang muncul pertama kali pada

sistem Unix BSD 4.1 pada akhir 1981. Hampir setiap variant Unix

dan Linux mengadopsi BSD Socket. Pada lingkungan Unix, socket

memberikan keleluasaan pemrograman gaya Unix yang terkenal

dengan ideologinya, Semua di Unix/Linux adalah file. Komunikasi

antar program dapat berlangsung lewat penggunaan deskriptor file

standar Unix dengan bantuan socket.

Keunggulan dari penggunaan socket ini dibanding apabila

menggunakan pipes biasa adalah anda dapat melakukan komunikasi

antar proses/program melalui jaringan berbasis yang TCP/IP

tentunya, bahkan dengan program lain yang berjalan pada platform

non-unix seperti Microsoft Windows, sepanjang program tersebut

berbicara dalam protokol transfer yang sama. Fasilitas-fasilitas yang

disediakan oleh mesin unix seperti rlogin, ssh, ftp, dan lain-lain

menggunakan socket sebagai sarana komunikasi mereka. Socket

dibentuk dan digunakan dengan cara yang berbeda dengan proses

pipes di unix. Komunikasi socket terutama diciptakan untuk tujuan

menjembatani komunikasi antara dua buah program yang dijalankan

pada mesin yang berbeda. Jangan khawatir, ini tentu saja berarti dua

program pada mesin yang sama dapat juga saling berkomunikasi.

Kelebihan lain dari komunikasi socket adalah mampu menangani

banyak klien sekaligus (multiple clients).

2. Jenis Socket

Ada dua golongan socket di Unix yang paling umum dipakai yaitu:

Socket Lokal atau AF_UNIX

Socket Networking atau AF_INET

Socket Lokal adalah socket yang melakukan komunikasi dengan

perantaraan sebuah file yang biasanya diletakkan pada

Page 10: Laporan Cs

direktori /tmp atau /usr/tmp ataupun /var/tmp. Socket semacam ini

digunakan umumnya terbatas untuk komunikasi antar aplikasi

dalam satu mesin. Socket Networking ditujukan untuk komunikasi

antar aplikasi antar mesin dalam lingkungan jaringan TCP/IP.

Identifikasi socket dilakukan dengan sebuah service identifier yaitu

berupa nomor port TCP/IP yang dapat di sambung oleh client.

Golongan socket lainnya masih banyak misalnya AF_OSI, AF_NS,

namun kita tidak membahasnya kali ini. Socket Networking

memiliki beberapa jenis, yang paling umum digunakan yaitu:

Socket Stream atau SOCK_STREAM

Socket Datagram atau SOCK_DGRAM

Socket Stream adalah socket komunikasi full-duplex berbasis aliran

(stream) data. Pada model komunikasi Socket Stream, koneksi dua

aplikasi harus dalam kondisi tersambung dengan benar untuk dapat

bertukar data. Ini dapat dianalogikan seperti komunikasi telepon.

Jika sambungan telepon di salah satu titik putus, maka komunikasi

tidak dapat terjadi. Koneksi model seperti ini akan menjamin data

dapat dipertukarkan dengan baik, namun memiliki kelemahan

dalam hal penggunaan jalur data yang relatif besar dan tidak boleh

terputus.

Socket Datagram berkomunikasi dengan cara yang berbeda. Socket

ini tidak membutuhkan koneksi yang tersambung dengan benar

untuk mengirimkan dan menerima data. Model koneksi semacam

ini tidak dapat menjamin data dapat dipertukarkan dengan baik,

namun memiliki keunggulan dalam hal penggunaan jalur data yang

minimal. Socket Datagram dapat dianalogikan dengan komunikasi

yang terjadi pada kelas, misalnya pada saat guru

melakukan broadcasting materi pelajaran untuk diterima oleh setiap

murid. Tidak ada yang dapat menjamin materi pelajaran dapat

Page 11: Laporan Cs

diterima oleh semua murid dengan baik, kecuali diterapkan

metoda rechecking. Rechecking ini dapat dilakukan baik oleh guru

maupun murid. Guru bertanya untuk memastikan jawaban dari

murid benar, atau murid bertanya untuk memastikan kebenaran

materi yang diterimanya. Socket Datagram pun menggunakan

metoda ini untuk menjamin pengiriman data dapat dilakukan

dengan baik.

3. Java Socket

Socket adalah sebuah abstraksi perangkat lunak yang digunakan

sebagai suatu "terminal" dari suatu hubungan antara dua mesin atau

proses yang saling berinterkoneksi.

Di tiap mesin yang saling berinterkoneksi, harus terpasang socket.

Pada J2SE telah disediakan paket java.net yang berisi kelaskelas

dan interface yang menyediakan API (Application Programming

Interface) level rendah (Socket, ServerSocket, DatagramSocket) dan

level tinggi (URL, URLConnection).

INGAT: Socket akan membangun komunikasi antar proses yang

sama-sama aktif.

Kelas Socket

Socket(InetAddress address, int port) membuat sebuah

stream socket dan koneksi ke suatu nomor port pada sebuah

komputer yang memiliki alamat IP.

Socket(String host, int port)

Page 12: Laporan Cs

membuat sebuah stream socket dan juga koneksi ke suatu

port tertentu pada sebuah komputer berdasar namanya.

Socket(InetAddress address, int port, InetAddress

localAddr, int localPort);

Socket(String host, int port, InetAddress localAddr, int

localPort);

membuat sebuah socket dan mengkoneksikannya ke port

yang dituju pada alamat IP yang disebutkan pada parameter

address atau nama host. Selain itu juga akan dilakukan bind

socket ke alamat lokal dan port lokal. (Hal ini dilakukan jika

koneksi antara client dan server membutuhkan nomor port

yang sudah ditentukan.

getInetAddress()

untuk mendapatkan nama host yang dituju dan alamat IPnya

getPort()

untuk mendapatkan nomor remote host

getLocalPort()

untuk mendapatkan nomor port localhost

getLocalAddress()

untuk mendapatkan alamat local dimana socket digunakan

getInputStream()

mengembalikan objek input stream dari socket

getOutputStream()

mengembalikan objek output stream ke socket

setSoTimeout(int timeout)

getSoTimeOut()

Kedua method tersebut digunakan untuk memberi (set) dan

mengambil (get) nilai opsi Socket untuk time out block

(dalam milidetik) reading dari socket (SO_TIMEOUT). Jika

dalam waktu timeout tidak mendapat suatu nilai maka, akan

Page 13: Laporan Cs

dilemparkan ke exception

java.net.SocketTimeoutException.

Nilai default timeoutnya adalah 0, yang berarti tanpa batas.

setTCPNoDelay(boolean on)

getTCPNoDelay()

Kedua method ini digunakan untuk memberi dan mengambil

nilai opsi Socket TCP_NODELAY, yaitu untuk

mengaktifkan atau menonaktifkan Algoritma Nagle (RFC

896), yaitu algoritma yang membuat TCP lebih efisien

dalam konsumsi bandwidth dengan cara memperlambat

penulisan data dalam ukuran yang kecil sehingga data-data

yang ada dapat terkirimkan dalam suatu paket dengan

ukuran besar. Nilai default opsi ini adalah aktif. Namun jika

diinginkan adanya pengurangan network latency (waktu

delay dalam pengiriman paket) dan meningkatkan unjuk

kerja, maka opsi ini harus di nonaktifkan (di set dengan nilai

false), namun akibatnya konsumsi bandwidth akan

bertambah besar.

setSoLinger(boolean on, int linger)

getSoLinger()

Method tersebut akan mengaktifkan (true) atau

menonaktifkan (false) opsi SO_LINGER dengan nilai waktu

linger dalam milidetik. Opsi ini berpengaruh ketika socket

ditutup, yaitu menentukan nilai waktu maksikum koneksi

yang masih akan dipertahankan sampai socket koneksi

benar-bernar ditutup. Hal ini berguna untuk mengirim dan

memberikan ACK (acknowledge) terhadap data yang belum

terkirim.

setSendBufferSize(int size)

getSendBufferSize()

Page 14: Laporan Cs

Method ini akan mengatur dan mengambil informasi tentang

ukuran buffer SO_SNDBUF, yaitu buffer untuk

mengiriman. Ukuran ini juga harus disesuaikan ukuran

buffer pada level network.

setReceiveBufferSize(int size)

getReceiveBufferSize()

Method ini digunakan jika Anda ingin mengatur ukuran

buffer SO_RCVBUF, yaitu buffer yang digunakan untuk

menampung paket yang masuk. Ukuran buffer ini juga

digunakan untuk mengatur ukuran window yang diterapkan

oleh TCP untuk flow controlnya (sliding window). Dalam

pemanfaatan opsi ini, perlu dipastikan antara RCVBUF

client dengan server ada sinkronisasi, sehingga sebelum

server membind port yang akan digunakan ke socket (TCP)

ataupun sebelum client membuka koneksi ke server, terlebih

dahulu opsi ini harus diatur, jika Anda ingin mengaturnya.

Kelas-kelas Exception yang dibangkitkan Socket, ketika ada

kesalahan :

SocketException

Kelas ini merupakan kelas yang diturunkan dari kelas

IOException. Kelas exception ini dipanggil atau dipicu

ketika ada kegagalan dalam pemakaian socket, sebagai

contoh adalah kegagalan dalam protokol TCP. Salah satu

penyebabnya yang mungkin terjadi adalah ketika port yang

akan digunakan sudah digunakan sebelumnya pada

lokalhost. Penyebab yang lain adalah user tidak dapat

melakukan bind ke port yang dituju. Misalnya saja, Anda

ingin menggunakan port 80 untuk aplikasi Anda, namun

ternyata pada komputer Anda tersebut sudah berjalan HTTP

Server yang juga menggunakan port Bila hal ini terjadi,

Page 15: Laporan Cs

maka JVM akan melemparkan kegagalan yang ada ke kelas

exception SocketException.

BindException

Exception ini akan dipanggil ketika ada port lokal yang akan

digunakan sudah terpakai oleh yang lain, atau ada kegagalan

dalam permintaan untuk menggunakan alamat.

ConnectException

Exception ini akan dipanggil ketika sebuah koneksi ditolak

oleh host yang dituju, oleh karena tidak ada proses yang siap

menerima data pada port yang dituju.

NoRouteToHostException

Koneksi yang akan dibangun tidak dapat dipenuhi oleh

karena melebihi waktu timeout yang tersedia atau host yang

dituju tidak dapat dicapai (unreachable).

Contoh :

import java.io.*;

import java.net.*;

public class ExHTTPClient {

public static void main(String args[]) {

try {

Socket clientSocket =

new Socket(args[0], 80);

System.out.println("Client: " +

clientSocket);

getHTML(clientSocket, args[1]);

}

catch (UnknownHostException e)

{ System.out.println(e); }

catch (IOException e)

{ System.err.println(e); }

Page 16: Laporan Cs

}

public static void getHTML(Socket clientSocket,

String fileName)

{

try {

DataOutputStream outbound =

new DataOutputStream(

clientSocket.getOutputStream() );

DataInputStream inbound =

new DataInputStream(

clientSocket.getInputStream() );

outbound.writeBytes("GET " + fileName +

" HTTP/1.0\r\n\r\n");

String responseLine;

while ((responseLine = inbound.readLine())

!= null) {

System.out.println(responseLine);

}

outbound.close();

inbound.close();

clientSocket.close();

}

catch (IOException e)

{ System.out.println(e); }

}

}

Contoh Hasil :

# java ExHTTPClient localhost /test.html

Client1:Socket[addr=localhost/

127.0.0.1,port=80,localport=32777]

Page 17: Laporan Cs

HTTP/1.1 200 OK

Date: Sat, 01 Mar 2003 13:10:34 GMT

Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7

OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26

Last-Modified: Sat, 01 Mar 2003 13:02:20 GMT

ETag: "932fe-44-3e60af5c"

Accept-Ranges: bytes

Content-Length: 68

Connection: close

Content-Type: text/html

<HTML>

<BODY>

Dokumen ini diakses dari Apache HTTP.

</BODY>

</HTML>

Kelas ServerSocket

ServerSocket( int port [, int backlog [, InetAddress

bindAddress ]] )

Page 18: Laporan Cs

membuat sebuah server dengan port tertentu, batasan jumlah

antrian (backlog), dan alamat IP bindAddress.

InfoServer.java

import java.io.*;

import java.net.*;

import java.util.*;

public class InfoServer {

private final int INFO_PORT=50000;

private String datafromClient;

public InfoServer() {

BufferedReader inFromClient;

DataOutputStream outToClient;

Socket serverSocket;

try {

ServerSocket infoServer =

new ServerSocket(INFO_PORT);

System.out.println("Server telah siap...");

while (true) {

serverSocket = infoServer.accept();

System.out.println("Ada client " +

"yang terkoneksi!");

inFromClient =

new BufferedReader(

new InputStreamReader(

serverSocket.getInputStream()));

outToClient =

new DataOutputStream(

serverSocket.getOutputStream());

outToClient.writeBytes("InfoServer versi 0.1\n"+

"hanya untuk testing..\n"+

Page 19: Laporan Cs

"Silahkan berikan perintah TIME | NET | QUIT\n");

boolean isQUIT = false;

while (!isQUIT) {

datafromClient = inFromClient.readLine();

if (datafromClient.startsWith("TIME")) {

outToClient.writeBytes(new

Date().toString() + "\n");

} else if (datafromClient.startsWith("NET")) {

outToClient.writeBytes(

InetAddress.getByName("budsusothie").toString() + "\

n");

} else if (datafromClient.startsWith("QUIT"))

{

isQUIT = true;

}

}

outToClient.close();

inFromClient.close();

serverSocket.close();

System.out.println("Koneksi client tertutup..");

}

}

catch (IOException ioe) {

System.out.print("error: " + ioe);

}

catch (Exception e) {

System.out.print("error: " + e);

}

}

/* program utama */

public static void main(String[] args) {

Page 20: Laporan Cs

new InfoServer();

}

}

InfoClient.java

import java.net.*;

import java.io.*;

import java.util.*;

public class InfoClient {

private final int INFO_PORT=50000;

private final String TargetHost = "localhost";

private final String QUIT = "QUIT";

public InfoClient() {

try {

BufferedReader inFromUser =

new BufferedReader(new

InputStreamReader(System.in));

Socket clientSocket = new

Socket(TargetHost, INFO_PORT);

DataOutputStream outToServer =

new DataOutputStream(

clientSocket.getOutputStream());

BufferedReader inFromServer =

new BufferedReader(

new InputStreamReader(

clientSocket.getInputStream()));

System.out.println(inFromServer.readLine());

System.out.println(inFromServer.readLine());

System.out.println(inFromServer.readLine());

System.out.println("");

boolean isQuit = false;

while (!isQuit) {

Page 21: Laporan Cs

System.out.print("Perintah Anda : ");

String cmd = inFromUser.readLine();

cmd = cmd.toUpperCase();

if (cmd.equals(QUIT)) {

isQuit = true;

}

outToServer.writeBytes(cmd + "\n");

String result = inFromServer.readLine();

System.out.println("Dari Server: " + result);

}

outToServer.close();

inFromServer.close();

clientSocket.close();

}

catch (IOException ioe) {

System.out.println("Error:" + ioe);

}

catch (Exception e) {

System.out.println("Error:" + e);

}

}

public static void main(String[] args) {

new InfoClient();

}

}

Kelas DatagramSocket

Digunakan untuk membangun koneksi connectionless

dengan protokol UDP.

Page 22: Laporan Cs

DatagramSocket(int port) Kelas ini dapat digunakan untuk

menyatakan penggunaan suatu nomor port sebagai "pintu"

untuk menerima koneksi dari client.

DatagramSocket(int port, InetAddress laddr)

Kelas ini membentuk koneksi dengan protokol UDP pada

alamat IP lokal tertentu dan pada nomor port tertentu.

DatagramSocket()

Kelas ini membentuk koneksi dengan protokol UDP pada

alamat IP lokal host dengan penentuan nomor portnya secara

random berdasar tersedianya nomor port yang dapat

digunakan.

DatagramPacket(byte[] buf, int length)

Kelas ini dapat digunakan untuk mengambil informasi.

Constructor ini membutuhkan sebuah array byte yang

menjadi parameter pertama, yang berfungsi untuk

menyimpan data dan

informasi ukuran data yang diterima.

DatagramPacket(byte[] buf, int length, InetAddress

address, int port)

Constructor ini digunakan untuk membuat paket Datagram

yang akan mengirim data. Constructor ini memerlukan

informasi array byte yang akan dikirim dan panjangnya,

serta alamat dan port yang dituju.

InfoServerUDP.java

import java.io.*;

import java.net.*;

import java.util.*;

public class InfoServerUDP {

private final int INFO_PORT=50000;

private String datafromClient;

Page 23: Laporan Cs

public InfoServerUDP() {

DatagramSocket serverSocket;

try {

serverSocket = new DatagramSocket(INFO_PORT);

System.out.println("Server telah siap...");

while (true) {

boolean isQUIT = false;

while (!isQUIT) {

byte[] byteFromClient = new byte[1024];

byte[] byteToClient = new byte[1024];

DatagramPacket receivePacket =

new DatagramPacket( byteFromClient,

byteFromClient.length);

serverSocket.receive(receivePacket);

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String data = new String(receivePacket.getData());

if (data.startsWith("TIME")) {

String DateNow =

new String(new Date().toString());

byteToClient = DateNow.getBytes();

} else if (data.startsWith("NET")) {

String hostname = new String(

InetAddress.getByName("xxx").toString());

byteToClient = hostname.getBytes();

} else if (data.startsWith("QUIT")) {

isQUIT = true;

String thanks = new String("Terima kasih!");

byteToClient = thanks.getBytes();

}

DatagramPacket sendPacket =

Page 24: Laporan Cs

new DatagramPacket(byteToClient,

byteToClient.length, IPAddress, port);

serverSocket.send(sendPacket);

}

System.out.println("Hub. client tertutup..");

}

}

catch (IOException ioe) {

System.out.print("error: " + ioe);

}

catch (Exception e) {

System.out.print("error: " + e);

}

}

public static void main(String[] args) {

new InfoServerUDP();

}

}

InfoClientUDP.java

import java.net.*;

import java.io.*;

import java.util.*;

public class InfoClientUDP {

private final int INFO_PORT=50000;

private final String TargetHost = "localhost";

private final String QUIT = "QUIT";

private DatagramSocket clientSocket;

public InfoClientUDP() {

try {

BufferedReader inFromUser =

new BufferedReader(

Page 25: Laporan Cs

new InputStreamReader(System.in));

clientSocket = new DatagramSocket();

InetAddress IPAddress =

InetAddress.getByName("localhost");

boolean isQuit = false;

while (!isQuit) {

byte[] byteFromServer = new byte[1024];

byte[] byteToServer = new byte[1024];

System.out.print("Perintah Anda : ");

String cmd = inFromUser.readLine();

cmd = cmd.toUpperCase();

isQuit = cmd.equals(QUIT);

byteToServer = cmd.getBytes();

DatagramPacket sendPacket =

new DatagramPacket(byteToServer,

byteToServer.length, IPAddress, INFO_PORT);

clientSocket.send(sendPacket);

DatagramPacket receivePacket =

new DatagramPacket(byteFromServer,

byteFromServer.length);

clientSocket.receive(receivePacket);

String result =

new String(receivePacket.getData());

System.out.println("Dari Server: " + result);

}

clientSocket.close();

}

catch (IOException ioe) {

System.out.println("Error:" + ioe);

}

catch (Exception e) {

Page 26: Laporan Cs

System.out.println("Error:" + e);

}

}

/* program utama */

public static void main(String[] args) {

new InfoClientUDP();

}

}

C. Java

1. Sejarah Singkat JAVA

Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan James Gosling ingin merancang bahasa komputer untuk perangkat konsumer seperti cable TV Box. Karena perangkat tersebut tidak memiliki banyak memori, bahasa harus berukuran kecil dan mengandung kode yang liat. Juga karena manufaktur – manufaktur berbeda memilih processor yang berbeda pula, maka bahasa harus bebas dari manufaktur manapun. Proyek diberi nama kode ”Green”.

Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap platform mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portabel yang menghasilkan intermediate code untuk mesin hipotesis. Mesin ini sering disebut dengan mesin maya (virtual machine). Kode ini kemudian dapat digunakan di sembarang mesin yang memiliki interpreter. Proyek Green menggunakan mesin maya untuk mengatasi isu utama tentang netral terhadap arsitektur mesin.

Karena orang – orang di proyek Green berbasis C++ dan bukan Pascal maka kebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan bukan prosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James Gosling yang mendapat inspirasi dari sebuah pohon yang berada pada seberang kantornya, namun dikarenakan nama Oak sendiri merupakan nama bahasa pemrograman yang telah ada sebelumnya, kemudian SUN

Page 27: Laporan Cs

menggantinya dengan JAVA. Nama JAVA sendiri terinspirasi pada saat mereka sedang menikmati secangkir kopi di sebuah kedai kopi yang kemudian dengan tidak sengaja salah satu dari mereka menyebutkan kata JAVA yang mengandung arti asal bijih kopi. Akhirnya mereka sepakat untuk memberikan nama bahasa pemrograman tersebut dengan nama Java. J.E.N.I. Pengenalan Pemrograman 1 2

Produk pertama proyek Green adalah Star 7 (*7), sebuah kendali jarak jauh yang sangat cerdas. Dikarenakan pasar masih belum tertarik dengan produk konsumer cerdas maka proyek Green harus menemukan pasar lain dari teknologi yang diciptakan. Pada saat yang sama, implementasi WWW dan Internet sedang mengalami perkembangan pesat. Di lain pihak, anggota dari proyek Green juga menyadari bahwa Java dapat digunakan pada pemrograman internet, sehingga penerapan selanjutnya mengarah menjadi teknologi yang berperan di web.

Java telah mengakomodasi hampir seluruh fitur penting bahasa – bahasa pemrograman yang ada semenjak perkembangan komputasi modern manusia :

1. Dari SIMULA, bahasa pada tahun 65-an, bahasa yang paling mempengaruhi Java sekaligus C++. Dari bahasa ini diadopsi bentukan – bentukan dasar dari pemrograman berorientasi objek.

2. Dari LISP – bahasa tahun 55-an. Diadopsi fasilitas garbage collection, serta kemampuan untuk meniru generic list processing, meski fasilitas ini jarang yang memanfaatkannya.

3. Dari Algol – bahasa pada tahun 60-an, diambil struktur kendali yang dimilikinya.

4. Dari C++, diadopsi sintaks, sebagian semantiks dan exception handling

Page 28: Laporan Cs

5. Dari bahasa Ada, diambil strongly type, dan exception handling. 6. Dari Objective C, diambil fasilitas interface. 7. Dari bahasa SmallTalk, diambil pendekatan single-root class

hiérarchie, dimana objek adalah satu kesatuan hirarki pewarisan 8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di

sebagian JDK 1.4

2. Teknologi JAVA Sebuah Bahasa Pemrograman

Sebagai sebuah bahasa pemrograman, Java dapat membuat seluruh bentuk aplikasi, desktop, web dan lainnya, sebagaimana dibuat dengan menggunakan bahasa pemrograman konvensional yang lain.

Java adalah bahasa pemrograman yang berorientasi objek (OOP) dan dapat dijalankan pada berbagai platform sistem operasi. Perkembangan Java tidak hanya terfokus oada satu sistem operasi, tetapi dikembangkan untuk berbagai sistem operasi dan bersifat open source.

Sebuah Development Environment

Sebagai sebuah peralatan pembangun, teknologi Java menyediakan banyak tools : compiler, interpreter, penyusun dokumentasi, paket kelas dan sebagainya.

Sebuah Aplikasi

Aplikasi dengan teknologi Java secara umum adalah aplikasi serbt a guna yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime Environment (JRE).

Sebuah Deployment Environment

Terdapat dua komponen utama dari Deployment Environment. Yang pertama adalah JRE, yang terdapat pada paket J2SDK, mengandung kelas – kelas untuk semua paket teknologi Java yang meliputi kelas dasar dari Java, komponen GUI dan sebagainya. Komponen yang lain terdapat pada Web Browser. Hampir seluruh Web Browser komersial menyediakan interpreter dan runtime environment dari teknologi Java.

Page 29: Laporan Cs

3. Mengapa Mempelajari JAVA?

Berdasarkan white paper resmi dari SUN, Java memiliki karakteristik berikut :

a. Sederhana (Simple)

Bahasa pemrograman Java menggunakan Sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.

b. Berorientasi objek (Object Oriented)

Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata kedalam objek dan melakukan interaksi antar objek-objek tersebut.

c. Terdistribusi (Distributed)

Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya libraries networking yang terintegrasi pada Java.

d. Interpreted

Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.

e. Robust

Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa pemrograman lain. Java mempunyai runtime-Exception handling untuk membantu mengatasi error pada pemrograman.

f. Secure

Page 30: Laporan Cs

Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut.

g. Architecture Neutral

Program Java merupakan platform independent. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform berbeda dengan Java Virtual Machine.

h. Portable

Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.

i. Performance

Performance pada Java sering dikatakan kurang tinggi. Namun performance Java dapat ditingkatkan menggunakan kompilasi Java lain seperti buatan Inprise, Microsoft ataupun Symantec yang menggunakan Just In Time Compilers (JIT).

j. Multithreaded

Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.

k. Dynamic

Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan properties ataupun method dapat dilakukan tanpa menggangu program yang menggunakan class tersebut.

4. Sebagian Fitur dari JAVA Java Virtual Machine (JVM)

JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java

Page 31: Laporan Cs

menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM.

Aplikasi program Java diciptakan dengan file teks berekstensi .java. Program ini dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode mesin harus dijalankan pada sistem komputer dimana kompilasi ditujukan, sementara bytecode berjalan pada java interpreter yang tersedia di semua platform sistem komputer dan sistem operasi.

Garbage Collection

Banyak bahasa pemrogaman lain yang mengijinkan seorang pemrogram mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa lainnya, adalah pemrogram yang mutlak bertanggung jawab akan hal ini. Hal ini dapat menyulitkan bilamana pemrogram tersebut alpa untuk mengembalikan blok memori sehingga menyebabkan situasi yang dikenal dengan nama memory leaks.

Program Java melakukan garbage collection yang berarti program tidak perlu menghapus sendiri objek – objek yang tidak digunakan lagi. Fasilitas ini mengurangi beban pengelolaan memori oleh pemrogram dan mengurangi atau mengeliminasi sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi dinamis.

Code Security

Code Security terimplementasi pada Java melalui penggunaan Java Runtime Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi sistem dari untrusted Java Code.

1. Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter. Proses ini menyediakan pengamanan dengan memisahkan kelas – kelas yang berasal dari local disk dengan kelas – kelas yang diambil dari jaringan. Hal ini membatasi aplikasi Trojan karena kelas – kelas yang berasal dari local disk yang dimuat terlebih dahulu.

Page 32: Laporan Cs

2. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan – aturan dasar bahasa Java.

3. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing.

Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi.

Java juga menyediakan beragam teknik pengamanan lain :

1. Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan pointer merupakan langkah besar pengamanan. Java tidak mengenal operasi pointer. Di tangan pemrogram handal, operasi pointer merupakan hal yang luar biasa untuk optimasi dan pembuatan program yang efisien serta mengagumkan. Namun mode ini dapat menjadi petaka di hadapan pemrogram jahat. Pointer merupakan sarana luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan operasi pointer, Java dapat menjadi bahasa yang lebih aman.

2. Java memiliki beberapa pengaman terhadap applet. Untuk mencegah program bertindak mengganggu media penyimpanan, maka applet tidak diperbolehkan melakukan open, read ataupun write terhadap berkas secara sembarangan. Karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai permintaan keterangan username dan password.

5. Fase – fase Pemrograman JAVA

Gambar dibawah ini menjelaskan aliran proses kompilasi dan eksekusi sebuah program Java :

Page 33: Laporan Cs

Langkah pertama dalam pembuatan sebuah program berbasis Java adalah menuliskan kode program pada text editor. Contoh text editor yang dapat digunakan antara lain : notepad, vi, emacs dan lain sebagainya. Kode program yang dibuat kemudian tersimpan dalam sebuah berkas berekstensi .java.

Setelah membuat dan menyimpan kode program, kompilasi file yang berisi kode program tersebut dengan menggunakan Java Compiler. Hasil dari adalah berupa berkas bytecode dengan ekstensi .class.

D. Chatting

Chatting adalah suatu feature dalam Internet untuk berkomunikasi

sesama pemakai Internet yang sedang online (yang sedang sama-sama

menggunakan Internet). Komunikasi bisa berupa teks (text chat) atau

suara (voice chat). Anda mengirim pesan dengan teks atau suara

kepada orang lain yang sedang online, kemudian orang yang dituju

membalas pesan Anda dengan teks atau suara, demikian seterusnya.

Di dunia internet kini banyakweb yang menyediakan aplikasi chat,

seperti yahoo! Messanger, Skype, dan lain sebagainya.

Apa perbedaan antara e-mail, online chat, dan instant messaging?

Page 34: Laporan Cs

Tiga layanan tersebut adalah cara yang berbeda untuk berkomunikasi

dengan orang lain melalui Internet, metode masing-masing layanan

secara individual. adalah:

E-mail adalah cara untuk mengirim pesan pribadi kepada orang-

orang menggunakan e-mail server untuk menyampaikan pesan.

Karena server yang juga berfungsi sebagai penyimpan  file email ,

e-mail dapat dikirim, tampa orang harus  penerimanya secara

online. Salah satu cara untuk mengirim atau menerima e-mail

menggunakan program email seperti Outlook  Explorer atau Mac

OS X Mail yang akan berkomunikasi dengan server mail anda. 

Metode lain disebut Webmail (seperti Hotmail atau Gmail) yang

memungkinkan Anda untuk mengirim pesan menggunakan

antarmuka (interface) berbasis Web. Untuk mengirim seseorang 

pesan e-mail menggunakan salah satu dari metode ini, Anda hanya

perlu mengetahui alamat e-mail yang akan di tuju.

Online Chat adalah cara bicara online secara realtime dengan

banyak orang sekaligus. Beberapa chat room yang tersedia melalui

Web, seperti Yahoo! Chat, sementara yang lainnya memerlukan

program perangkat lunak terpisah untuk chatting dengan pengguna

lain. Online chat room mengijinkan beberapa pengguna untuk

bergabung dalam percakapan dan melihat apa yang orang lain

tulis/ketik. Biasanya chat room yang didasarkan pada tema-tema

tertentu, seperti Teen Chat, Macintosh Chat, atau Religious chat .

Menggunakan online chat, Anda dapat bertemu orang baru di

lingkungan anonim. Anda hanya  perlu memilih “screen name”

Page 35: Laporan Cs

untuk bergabung dalam chat room, dan dalam screen name dapat

menjadi apa pun yang Anda inginkan

Instant Messaging, atau “chatting,” adalah suatu cara untuk

berkomunikasi online dengan sekelompok orang pilih, biasanya

secara individual. Untuk pesan instan seseorang, anda perlu

mengetahui screen name -nya. Anda dapat menyimpan teman-

teman Anda sdalam sebuah daftar yang disebut “Buddy List.” yang

merupakan Olah pesan cepat sekarang ini  lebih permanen daripada

dengan online chat. Juga, tidak seperti chat online, Anda perlu

menggunakan program pesan instan, seperti AOL Instant

Messenger atau MSN Messenger. Saat online, Anda dapat

membuka jendela IM dengan banyak teman-teman Anda dan ketik

sekaligus pesan bolak-balik sampai Anda menyadari sudah

waktunya untuk tidur dan Anda belum melakukan pekerjaan rumah

Anda

E. Neatbeans

Page 36: Laporan Cs

NetBeans merupakan sebuah proyek kode terbuka yang sukses dengan

pengguna yang sangat luas, komunitas yang terus tumbuh, dan memiliki

hampir 100 mitra (dan terus bertambah!). Sun Microsystems

mendirikan proyek kode terbuka NetBeans pada bulan Juni 2000 dan

terus menjadi sponsor utama.

NetBeans mengacu pada dua hal, yakni platform untuk pengembangan

aplikasi desktop java, dan sebuah Integrated Development Environment

(IDE) yang dibangun menggunakan platform NetBeans.

Platform NetBeans memungkinkan aplikasi dibangun dari sekumpulan

komponen perangkat lunak moduler yang disebut ‘modul’. Sebuah

modul adalah suatu arsip Java (Java archive) yang memuat kelas-kelas

Java untuk berinetraksi dengan NetBeans Open API dan file manifestasi

yang mengidentifikasinya sebagai modul. Aplikasi yang dibangun

dengan modul-modul dapat dikembangkan dengan menambahkan

modul-modul baru. Karena modul dapat dikembangkan secara

independen, aplikasi berbasis platform NetBeans dapat dengan mudah

dikembangkan oleh pihak ketiga secara mudah dan powerful.

a. Sejarah

Pengembangan NetBeans diawali dari Xelfi, sebuah proyek

mahasiswa tahun 1997 di bawah bimbingan Fakultas Matematika

dan Fisika Universitas Charles, Praha. Sebuah perusahaan

kemudian dibentuk untuk proyek tersebut dan menghasilkan versi

komersial NetBeans IDE hingga kemudian dibeli oleh Sun

Microsystem pada tahun 1999. Sun kemudian menjadikan

NetBeans open source pada bulan Juni tahun 2000. Sejak itu

komunitas NetBeans terus berkembang.

b. Platform NetBeans

Page 37: Laporan Cs

Platform NetBeans adalah framework yang dapat digunakan

kembali (reusable) untuk menyederhanakan pengembangan

aplikasi desktop. Ketika aplikasi berbasis platform NetBeans

dijalankan, kelas Main dari platform dieksekusi. Modul-modul

yang tersedia ditempatkan di sebuah registry di dalam memori, dan

tugas startup modul dijalankan. Secara umum, kode modul

dimuatkan ke dalam memori hanya ketika ia diperlukan.

Aplikasi dapat menginstal modul secara dinamis. Aplikasi dapat

memasukkan modul Update Center untuk mengijinkan pengguna

aplikasi men-download digitally-signed upgrade dan fitur-fitur

baru secara langsung ke dalam aplikasi yang berjalan. Penginstalan

kembali sebuah upgrade atau rilis baru tidak memaksa pengguna

untuk men-download keseluruhan aplikasi lagi.

Platform NetBeans menawarkan layanan-layanan yang umum bagi

aplikasi desktop, mengijinkan pengembang untuk fokus ke logika

yang spesifik terhadap aplikasi. Fitur-fitur yang disediakan oleh

platform NetBeans:

Manajemen antarmuka (misal: menu & toolbar)

Manajemen pengaturan pengguna

Manajemen penyimpanan (menyimpan dan membuka berbagai

macam data)

Manajemen jendela

Wizard framework (mendukung dialog langkah demi langkah)

c. NetBeans IDE

NetBeans IDE adalah IDE open source yang ditulis sepenuhnya

dengan bahasa pemrograman Java menggunakan platform

NetBeans. NetBeans IDE mendukung pengembangan semua tipe

Page 38: Laporan Cs

aplikasi Java (J2SE, web, EJB, dan aplikasi mobile). Fitur lainnya

adalah sistem proyek berbasis Ant, kontrol versi, dan refactoring.

Versi terbaru saat ini adalah NetBeans IDE 5.5.1 yang dirilis Mei

2007 mengembangkan fitur-fitur Java EE yang sudah ada

(termasuk Java Persistence support, EJB-3 dan JAX-WS).

Sementara paket tambahannya, NetBeans Enterprise Pack

mendukung pengembangan aplikasi perusahaan Java EE 5,

meliputi alat desain visual SOA, skema XML, web service dan

pemodelan UML. NetBeans C/C++ Pack mendukung proyek C/C+

+.

Modularitas: Semua fungsi IDE disediakan oleh modul-modul.

Tiap modul menyediakan fungsi yang didefinisikan dengan baik,

seperti dukungan untuk bahasa pemrograman Java, editing, atau

dukungan bagi CVS. NetBeans memuat semua modul yang

diperlukan dalam pengembangan Java dalam sekali download,

memungkinkan pengguna untuk mulai bekerja sesegera mungkin.

Modul-modul juga mengijinkan NetBeans untuk bisa

dikembangkan. Fitur-fitur baru, seperti dukungan untuk bahasa

pemrograman lain, dapat ditambahkan dengan menginstal modul

tambahan. Sebagai contoh, Sun Studio, Sun Java Studio Enterprise,

dan Sun Java Studio Creator dari Sun Microsystem semuanya

berbasis NetBeans IDE.

d. Lisensi

Sejak Juli 2006, NetBeans IDE dilisensikan di bawah Common

Development and Distribution License (CDDL), yaitu lisensi yang

berbasis Mozilla Public License (MPL).

e. Paket-Paket Tambahan NetBeans IDE

NetBeans Mobility Pack

Page 39: Laporan Cs

NetBeans Mobility Pack adalah alat untuk mengembangkan

aplikasi yang berjalan pada perangkat bergerak (mobile),

umumnya telepon seluler, tetapi juga mencakup PDA, dan lain-

lain.

NetBeans Mobility Pack dapat digunakan untuk menulis,

menguji, dan debugging aplikasi untuk perangkat bergerak yang

menggunakan teknologi berplatform Java Micro Edition

(platform Java ME). Paket ini mengintegrasikan dukungan

terhadap Mobile Information Device Profile (MIDP) 2.0,

Connected Limited Device Configuration (CLDC) 1.1, dan

Connected Device Configuration (CDC). Emulator dari pihak

ketiga dapat diintegrasikan dengan mudah untuk lingkungan

pengujian yang lebih kokoh. NetBeans Mobility Pack saat ini

tersedia dalam dua klaster yang berbeda, yang satu memuat

CDC dan yang lainnya CLDC.

NetBeans Profiler

NetBeans Profiler adalah alat untuk mengoptimalkan aplikasi

Java, membantu menemukan kebocoran memori dan

mengoptimalkan kecepatan.

Profiler ini berdasarkan sebuah proyek riset Sun Laboratories

yang dahulu bernama Jfluid. Riset tersebut mengungkap teknik

tertentu yang dapat digunakan untuk menurunkan overhead

proses profiling aplikasi Java. Salah satu dari teknik tersebut

adalah instrumentas i kode byte dinamis, yang berguna untuk

profiling aplikasi Java yang besar. Dengan menggunakan

instrumentasi kode byte dinamis dan algoritma-algoritma

tambahan, Netbeans Profiler mampu mendapatkan informasi

runtime aplikasi yang terlalu besar atau kompleks bagi profiler

lain. NetBeans IDE 6.0 akan mendukung Profiling Point yang

Page 40: Laporan Cs

memungkinkan kita memprofilkan titik yang tepat dari eksekusi

dan mengukur waktu eksekusi.

NetBeans C/C++ Pack

NetBeans C/C++ Pack menambahkan dukungan terhadap

pengembang C/C++ ke NetBeans IDE 5.5. Paket ini

memperbolehkan pengembang menggunakan sekumpulan

kompiler dan alat sendiri bersama dengan NetBeans IDE untuk

membangun aplikasi native untuk MS Windows, Linux, dan

Solaris. Paket ini membuat editor mengenali bahasa C/C++ dan

menyediakan project template, browser kelas yang dinamis,

dukungan pembuatan file dan fungsionalitas debugger. Para

pengembang juga dapat mengembangkan paket tersebut dengan

fungsionalitas tambahan mereka sendiri.

NetBeans Enterprise Pack

NetBeans Enterprise Pack memperluas dukungan terhadap

pengembangan aplikasi perusahaan dan web service di

NetBeans IDE 5.5.

Enterprise Pack ini mengembangkan kemampuan untuk

menulis, menguji, dan debug aplikasi dengan arsitektur

berorientasi layanan (Service-Oriented Architecture)

menggunakan XML, BPEL, dan Java web service. Paket ini

menambahkan alat desain visual untuk pemodelan UML, skema

XML, dan web service orchestration, juga dukungan untuk web

service dengan menggunakan identitas yang aman. Paket ini

juga menginstal dan mengkonfigurasi runtime yang diperlukan,

termasuk mesin BPEL dan server manajemen identitas yang

terintegrasi dengan Sun Java System Application Server.

NetBeans Ruby Pack

Page 41: Laporan Cs

Versi NetBeans 6.0 mendatang akan mengijinkan

pengembangan IDE menggunakan Ruby dan Jruby,

sebagaimana Rails untuk dua implementasi Ruby yang lain.

Preview NetBeans Ruby Pack tersedia sejak rilis Milestone 7

NetBeans 6. Ruby Pack memasukkan fungsionalitas editor

seperti:

pengeditan dasar

pewarnaan sintaks untuk Ruby

pelengkapan kode

occurence highlighting

pop-up dokumentasi yang terintegrasi untuk pemanggilan

Ruby API

analisis semantik dengan highlighting parameter dan variabel

lokal yang tidak terpakai

NetBeans JavaScript Editor

NetBeans JavaScript Editor menyediakan perluasan dukungan

terhadap JavaScript dan CSS. Fitur-fiturnya antara lain:

1. Editor JavaScript

syntax highlighting

pelengkapan kode untuk objek dan fungsi native

semua fitur dalam editor NetBeans

pembuatan kerangka kelas JavaScript secara otomatis

pembuatan pemanggilan AJAX dari template

2. Ekstensi editor CSS

pelengkapan kode untuk nama-nama style

navigasi cepat melalui panel navigator

penampilan deklarasi aturan CSS di List View

penampilan struktur file di Tree View

Page 42: Laporan Cs

Input Server Socket (SS)

Memanggil server GUI

Start

mengurutkan outline view berdasarkan nama, tipe, atau

urutan deklarasi (List & Tree)

pembuatan deklarasi aturan (hanya Tree)

pemfaktoran kembali sebagian nama rule (hanya Tree)

f. Lokalisasi

Sejak Januari 2007, paket bahasa Cina yang disederhanakan, Cina

tradisional, Jerman, Jepang, Portugal (Brazil) dan Spanyol telah

tersedia untuk NetBeans 5.5.1. Sementara itu, paket bahasa

Albania, Azerbaijan, Ceska, Belanda, Yunani, Indonesia, Italia,

dan Swedia sedang dalam proses pengerjaan.

g. Alasan memilih NetBeans

Karena didukung langsung oleh Sun, perkembangan yang cepat

sekali, 3 bulan yang lalu masih versi 5.5 sekarang sampai tulisan

ini dimuat sudah versi 6.5 dan sedang menggembangkan versi 7,

setelah itu dokumentasi dan forum-forum yang sangat lengkap.

h. Mendownload NetBeans

cukup buka internet explorer, di address bar ketik

www.netbeans.org, trus pilih download, dan download IDE

Netbeansnya.

BAB III

DESKRIPSI APLIKASI

1. Flowchart Sistem Client Server

a. Flowchart untuk Server

Page 43: Laporan Cs

Start

Input Client Socket

Mengatur IP server

Memanggil GUI Client

b. Flowchart untuk Client

SS tidak sama CS = disconnect

Page 44: Laporan Cs

Log In

Chat

Log Out

Input socket

Input socket

Start

Verifikasi SS=CS

Stop

2. Use Case Diagram

Berfungsi untuk memodelkan aplikasi berorientasi obyek, karena Use

Case merupakan gambaran level tinggi dari apa yang akan sistem kerjakan, tanpa

peduli tentang bagaimana sistem akan melakukannya secara detil. Use case juga

menyediakan hasil yang dapat diukur ke pemakai atau sistem eksternal.

Berikut gambar Use case diagram dari aplikasi chatting yang akan dibuat:

User berfungsi sebagai actor harus melakukan proses login terlebih

dahulu. Tampilan login akan muncul ketika kelas client dijalankan. Sebelum

menjalankan kelas client, terlebih dahulu atur lah IP server dan username di

dalam listing. Proses validasi akan dilakukan ketika user akan login, hal ini untuk

mematikan alamat server benar. Jika tidak ada masalah dengan proses validasi,

maka user akan terkoneksi dengan server.

Selain fungsi login, tentu saja fungsi logout juga harus ada. Logout

berfungsi untuk menonaktifkan user dari penggunaan aplikasi dan layanan yang

Page 45: Laporan Cs

disediakan. Jika ingin menggunakannya kembali, user silahkan melakukan proses

login ulang seperti langkah yang telah dijelaskan sebelumnya.

Ada pula menu who’s in untuk mengetahui siapa saja yang terkoneksi

dengan server.