Upload
ayu-blisty
View
252
Download
9
Embed Size (px)
Citation preview
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
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.
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.
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
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:
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)
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)
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
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
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
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)
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
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()
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,
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); }
}
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]
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 ]] )
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"+
"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) {
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) {
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.
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;
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 =
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(
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) {
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
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
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.
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
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
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.
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 :
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?
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”
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
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
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
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
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
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
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
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
Start
Input Client Socket
Mengatur IP server
Memanggil GUI Client
b. Flowchart untuk Client
SS tidak sama CS = disconnect
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
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.