Sabtu, 28 Juni 2014

APLIKASI CHATTING DENGAN TEXPAD 7 DAN JDK 7

Chatting atau obrolan memudahkan sesama manusia dalam berkomunikasi. Banyak aplikasi atau media yang telah dibuat dalam berkomunikasi, seperti Facebook, Line, BBM. Namun aplikasi yang sederhanapun dapat diciptakan dalam memudahkan Anda berkomunikasi. Langkah-langkahnya pun sederhana, yakni yang perlu disediakan di antaranya :
a. File foto Anda dan teman obrolan Anda
b. Koneksi kabel LAN
c. Textpad 7
d. JDK 7
Berikut ini adalah langkah-langkah yang dilakukan dalam membuat aplikasi sederhana ini, yakni :
1. Untuk memulai pembuatan aplikasi ini Anda harus menginstal Textpad 7 dan JDK 7. Lalu pilihlah foto profil yang akan diubah ukurannya agar sesuai dengan ruang obrolan Anda

 

2. Anda dapat menggunakan Microsoft Office Picture Manager dalam mengedit foto profil Anda. Caranya klik kanan pada foto tersebut, pilih open with -> Microsoft Office Picture Manager
 

3. Pada tampilan ini Anda akan mengatur ukuran foto Anda dengan mengubah width x height foto misal 91 x 114. Lalu klik OK. Jika telah selesai pilih File -> Simpan

 Maka foto Anda telah tersimpan dengan ukuran yang sesuai


4. Langkah berikutnya yaitu ketikkan program ChatServer seperti pada tampilan berikut. Lalu pilih menu File -> Simpan

 Listing program ChatServer.java :

import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
private static int uniqueId;
private ArrayList<ChatServer.ClientThread> clients;
private int port;
private boolean keepGoing;
public ChatServer() {
this.port = 9999;
clients = new ArrayList();
}
public void start() {
keepGoing = true;
try {
ServerSocket serverSocket = new ServerSocket(port);
while (keepGoing) {
System.out.println("ChatServer waiting for Clients on port " + port + ".");
Socket socket = serverSocket.accept();
if (!keepGoing) {
break;
}
ChatServer.ClientThread t = new ChatServer.ClientThread(socket);
clients.add(t);
t.start();
send("login~" + t.username + "~" + t.username + " sedang
login...~Server~\n");
}
try {
serverSocket.close();
for (int i = 0; i < clients.size(); ++i) {
ChatServer.ClientThread tc = clients.get(i);
try {
tc.sInput.close();
tc.sOutput.close
();
tc.socket.close();
} catch (IOException ioE) {
}
}
} catch (Exception e) {
System.out.println("Exception closing the server and clients: " + e);
}
} catch (IOException e) {
String msg = "Exception on new ServerSocket: " + e + "\n";
System.out.println(msg);
}
}
private synchronized void send(String message) {
for (int i = clients.size(); --i >= 0;) {
ChatServer.ClientThread ct = clients.get(i);
if (!ct.writeMsg(message)) {
clients.remove(i);
System.out.println("Disconnected Client " + ct.username + " removed from
list.");
}

}
}
private String getClients() {

String s = "";
for (ClientThread clientThread : clients) {
s += clientThread.username + ":";
}
s += "---";
System.out.println(s);
return s;
}
private synchronized void remove(int id) {
for (int i = 0; i < clients.size(); ++i) {
ChatServer.ClientThread ct = clients.get(i);
if (ct.id == id) {
clients.remove(i);
return;
}
}
}
public static void main(String[] args) {
ChatServer server = new ChatServer();
server.start();
}
private class ClientThread extends Thread {
private Socket socket;
private ObjectInputStream sInput;
private ObjectOutputStream sOutput;
private int id;
private String username;
public ClientThread(Socket socket) {
id = ++uniqueId;
this.socket = socket;
System.out.println("Menciptakan Object Input/Output Streams");
try {
sOutput = new ObjectOutputStream(socket.getOutputStream());
sInput = new ObjectInputStream(socket.getInputStream());
String message = (String) sInput.readObject();
username = message.split("~")[1];
System.out.println(username + " masuk.");
} catch (IOException e) {
System.out.println("Exception creating new Input/output Streams: " + e);
} catch (ClassNotFoundException e) {
}
}
@Override
public void run() {
boolean keepGoing = true;
while (keepGoing) {
String message;
try {
message = sInput.readObject().toString();
} catch (IOException e) {
System.out.println(username + " Exception reading Streams: " + e);
break;
} catch (ClassNotFoundException e2) {
break;
}
String type = message.split("~")[0];
String pengirim = message.split("~")[1];
String text = message.split("~")[2];
String kepada = message.split("~")[3];
String response;
switch (type) {
case "postText":
response = "recieveText~" + pengirim + "~" + text + "~" + kepada +
"~\n";
send(response);
break;
case "postPrivateText":
response = "recievePrivateText~" + pengirim + "~" + text + "~" +
kepada + "~\n";
send(response);
break;
case "login":
response = "login~" + pengirim + "~" + text + "~" + kepada + "~\n";
send(response);
break;
case "logout":
response = "logout~" + pengirim + "~" + text + "~" + kepada + "~\n";
send(response);
break;
case "list":
response = "list~server~" + getClients() + "~ ~ ~ ~ ~\n";
send(response);
break;
Teknik Komputer Page 5
}
}
remove(id);
close();
}
private void close() {
try {
if (sOutput != null) {
sOutput.close();
}
} catch (Exception e) {
}
try {
if (sInput != null) {
sInput.close();
}
} catch (Exception e) {
}
try {
if (socket != null) {
socket.close();
}
} catch (Exception e) {
}
}
private boolean writeMsg(String msg) {
if (!socket.isConnected()) {
close();
return false;
}
try {
sOutput.writeObject(msg);
} catch (IOException e) {
System.out.println("Error sending message to " + username);
System.out.println(e.toString());
}
return true;
}
}
}


5. Simpan file dengan nama ChatServer.java. Lalu klik Save


6. Ketiklah program selanjutnya yaitu ChatClient.java. Lalu pilih menu File -> Save


 Listing Program ChatClient.java :

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.table.DefaultTableModel;
public class ChatClient extends javax.swing.JFrame {
/**
* Creates new form ChatClient
*/
private ObjectInputStream input;
private ObjectOutputStream output;
private Socket socket;
private String server, username;
private int port;
private List<String> clients;
public ChatClient() {
clients = new ArrayList();
initComponents();
}
public boolean start() {
try {
socket = new Socket(server, port);
} catch (Exception ec) {
System.out.println("Error connectiong to server:" + ec);
return false;
}
String msg = "Connection accepted " + socket.getInetAddress() + ":" +
socket.getPort();
System.out.println(msg);
try {
input = new ObjectInputStream(socket.getInputStream());
output = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException eIO) {
System.out.println("Exception creating new Input/output Streams: " + eIO);
return false;
}
new ChatClient.ListenFromServer().start();
try {
output.writeObject("login~" + username + "~" + username + " sedang
login...~server~\n");
output.writeObject("list~" + username + "~" + username + " sedang
login...~server~\n");
} catch (IOException eIO) {
System.out.println("Exception doing login : " + eIO);

 disconnect();
return false;
}
return true;
}
private void disconnect() {
try {
// TODO add your handling code here:
output.writeObject("logout~" + username + "~" + username + " sudah
logout...~Server~\n");
} catch (IOException ex) {
//Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);
}
try {
if (input != null) {
input.close();
}
} catch (Exception e) {
}
try {
if (output != null) {
output.close();
}
} catch (Exception e) {
}
try {
if (socket != null) {
socket.close();
}
} catch (Exception e) {
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
viewTextArea = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
clientTable = new javax.swing.JTable();
postTextField = new javax.swing.JTextField();
kirimButton = new javax.swing.JButton();
lbljpg = new javax.swing.JLabel(new ImageIcon("D:/andini/TES/ANDINI.JPG"));
jLabel2 = new javax.swing.JLabel();
serverTextField = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
portTextField = new javax.swing.JTextField();
masukButton = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
usernameTextField = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
viewTextArea.setEditable(false);
viewTextArea.setColumns(20);
viewTextArea.setLineWrap(true);
viewTextArea.setRows(5);
viewTextArea.setFocusable(false);
jScrollPane1.setViewportView(viewTextArea);
jScrollPane2.setViewportView(clientTable);
postTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
postTextFieldActionPerformed(evt);
}
});
kirimButton.setText("Kirim");
kirimButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
kirimButtonActionPerformed(evt);
}
});
jLabel2.setText("Server");
serverTextField.setText("127.0.0.1");
jLabel3.setText("Port");
portTextField.setText("9999");
Teknik Komputer Page 8
masukButton.setText("Masuk");
masukButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
masukButtonActionPerformed(evt);
}
});
jLabel4.setText("Username");
usernameTextField.setText("animous");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(postTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(kirimButton))
.addComponent(jScrollPane1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE,
259, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(lbljpg)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(serverTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(usernameTextField,
javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(masukButton)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lbljpg)
.addComponent(jLabel2)
.addComponent(serverTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(masukButton)
.addComponent(jLabel4)
.addComponent(usernameTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, 427, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(postTextField,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(kirimButton))))
.addContainerGap())
);
pack();
}// </editor-fold>
private void masukButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Teknik Komputer Page 9
this.server = serverTextField.getText();
this.port = new Integer(portTextField.getText());
this.username = usernameTextField.getText();
start();
}
private void kirimButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
String message = "postText~" + username + "~" + postTextField.getText() +
"~all~\n";
output.writeObject(message);
postTextField.setText("");
} catch (IOException ex) {
Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void postTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
kirimButtonActionPerformed(evt);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional)
">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look
and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ChatClient().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTable clientTable;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JButton kirimButton;
private javax.swing.JButton masukButton;
private javax.swing.JTextField portTextField;
private javax.swing.JTextField postTextField;
private javax.swing.JTextField serverTextField;
private javax.swing.JTextField usernameTextField;
private javax.swing.JTextArea viewTextArea;
private JLabel lbljpg ;
// End of variables declaration
class ListenFromServer extends Thread {
@Override
public void run() {
Teknik Komputer Page 10
while (true) {
try {
String msg = (String) input.readObject();
String res;
String type = msg.split("~")[0];
String pengirim = msg.split("~")[1];
String text = msg.split("~")[2];
String kepada = msg.split("~")[3];
switch (type) {
case "recieveText":
res = pengirim + ": " + text;
viewTextArea.setText(viewTextArea.getText() + res + "\n");
break;
case "recievePrivateText":
res = pengirim + ": " + text;
if (kepada.equals(username)) {
viewTextArea.setText(viewTextArea.getText() + res + "\n");
}
break;
case "login":
viewTextArea.setText(viewTextArea.getText() + pengirim + " sedah
login..." + "\n");
clients.add(pengirim);
break;
case "logout":
viewTextArea.setText(viewTextArea.getText() + pengirim + " telah
logout..." + "\n");
clients.remove(pengirim);
break;
case "list":
setTable(text);
break;
}
} catch (IOException e) {
System.out.println("Server has close the connection: " + e);
break;
} catch (ClassNotFoundException e2) {
}
}
}
private void setTable(String text) {
int rows = text.split(":").length - 1;
Object[][] data = new Object[rows][1];
for (int i = 0; i < rows; i++) {
String t = text.split(":")[i];
data[i][0] = t;
}
String[] header = {"Clients"};
clientTable.setModel(new DefaultTableModel(data, header));
}
}
}


7. Simpanlah file tersebut dengan nama ChatClient.java. Lalu klik Save 


8. Lalu pada file ChatServer.java dan ChatClient.java, tekan tombol ctrl + 1 pada keyboard. Sehingga tampilannya sebagai berikut ini



9. Langkah selanjutnya, hubungkan kabel LAN tipe cross pada 2 komputer yang berbeda. Pada Komputer 1 aturlah IP Konfigurasinya dengan cara buka Control Pane -> Network and Internet Connection -> Network Connection


10. Klik kanan pada Local Area Connection -> Properties.


11. Maka pada tampilan berikut ini, pilih Internet Protocol (TCP/IP) -> Properties


12. Pilih “Use the following IP address”, lalu ketikan IP address misal pada komputer 1 adalah 10.10.1.1


13. Pada komputer 2 lakukan juga pengaturan IP pada kabel LAN dengan cara klik kanan pada icon Ethernet -> Properties


14. Pilih Internet Protocol Version 4 (IPv4) -> Properties


15. Pilih “Use the following IP address”, lalu ketiikan IP address misal pada komputer 2 adalah 10.10.1.2

16. Sebelum memulai aplikasi chatting ini, cek PING IP kabel cross untuk mengetahui apakah kabel LAN telah terkoneksi atau belum


Jika terdapat balasan Reply from 10.10.1.2 (IP LAN komputer 2) dengan Received = 4 dan Loct = 0 maka kabel LAN komputer 1 dan komputer 2 telah terkoneksi dengan baik 17. Komputer 1 merupakan server maka tekan tombol ctrl + 2 pada keyboard untuk menjalankan file ChatServer.java. Sehingga muncul tampilan sebagai berikut :


18. Kemudian jalankan file ChatClient.java dengan menekan ctrl + 2 pada keyboard. Sehingga muncul tampilan sebagai berikut :

19. Berdasarkan gambar di atas, ketikan IP Server Anda (10.10.1.1), Port = 9999, dan Username = andini. Jika Anda Klik Masuk maka Anda akan login ke chat room (ruang obrolan) Seperti pada tampilan berikut ini

20. Pada komputer 2 lakukan hal yang sama. Terlebih dahulu jalankan file ChatClient.java dengan cara menekan tombol ctrl + 2 pada keyboard

21. Setelah itu akan muncul tampilan sebagai berikut. Ketikan alamat IP LAN komputer 1 (10.10.1.1), Port = 9999, Username = cindy. Jika Anda Klik Masuk maka Anda akan login ke chat room (ruang obrolan) Seperti pada tampilan berikut ini

22. Kini, antara andini (komputer 1) dan cindy (komputer 2) telah bisa memulai obrolan dengan cara ketikan pesan yang diinginkan pada kolom yang tersedia (komputer 1) lalu klik kirim. Maka pesan akan sampai ke teman chatting (komputer 2)




Download di SINI !!!

Salam Teknik Komputer, POLSRI

PENGENALAN DAN INSTALASI TEXPAD 7

Textpad merupakan editor khusus untuk windows dengan pilihan menu untuk kompilasi java, textpad sangat flexibel dan mudah untuk digunakan. Saya sarankan untuk yang baru belajar pemrograman java sebaiknya mengunakan IDE textpad karena penulisannya secara manual, sehingga kita mengerti syntax-syntax dasar pada pemrograman java.
 
Keuntungan Mengunakan Textpad
1. Coloring Syntax
2. Terdapat fasilitas line number
3. Ringan untuk digunakan
4. Kemampuan untuk kompilasi java dan eksternal program lainnya
5. Multi file dapat diedit secara bersamaan dan ada spell checker dengan kosa kata kamus dari 10 bahasa.
 
Instalasi Textpad
Sebelum proses instalasi textpad anda diharuskan untuk menginstal JDK versi 6 keatas yang bisa didownload di http://www.java.com yang merupakan seperangkat alat pengembangan program java, yang dapat digunakan untuk membuat, menguji, mendokumentasi-kan dan menjalankan program java. Download Textpad di http://www.textpad.com anda bisa mendownload licensenya secara gratis disini.
 
Berikut ini adalah langkah-langkah instalasi Texpad 7 terutama pada Windows XP dengan asumsi kita sudah menginstal JDK, yakni :
 
1. Bukalah tempat penyimpanan master Textpad7 yang akan disimpan. Klik 2 kali pada software tersebut.

2. Klik 2 kali pada icon setup.exe

3. Maka akan muncul tampilan InstallShield Wizard. Proses install sedang disiapkan (Preparing to Install)

4. Maka akan muncul tampilan Welcome to the InstallShield Wizard for Textpad 7. Klik Next untuk proses selanjutnya


5. Pada proses ini Anda akan dimintai persetujuan mengenai License Agreement Textpad 7. Pilih “I accept the terms in the license agreement” lalu klik Next untuk melanjutkan

6. Pada proses Customer information, isikan kolom user name dan organization Anda. Lalu pilih tujuan penginstalan aplikasi tersebut misal “Anyone who uses the computer (all users) . Kemudian klik Next


7. Pada proses ini pilihlah lokasi tempat destination folder untuk Textpad 7. Jika Anda ingin mengubah lokasinya klik Change. Kemudian klik Next untuk proses selanjutnya
 

8. Pada tampilan “Ready to install the program” ini Anda ditanya apakah telah siap memulai proses penginstalan. Jika Ya klik Install
 

9. Proses penginstalan Textpad 7 sedang berlangsung. Tunggu hingga proses selesai. Jika tidak klik Cancel


10. Setelah proses penginstalan selesai maka akan muncul tampilan seperti berikut ini. Lalu klik Finish


11. Untuk menjalankan Textpad 7 tersebut, klik Start -> Textpad


12. Maka akan muncul tampilan awal seperti berikut ini. Klik Close untuk memulai


13. Berikut ini tampilan Textpad 7 yang telah diinstal sebelumnya


Download di SINI !!!

Salam Teknik Komputer, POLSRI

PENGENALAN & INSTALASI JDK 7

Java adalah sebuah teknologi yang diperkenalkan oleh Sun Microsysytems pada pertengahan tahun 1990. Menurut definisi Sun, Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada computer standalone ataupun pada lingkungan jaringan. Kita lebih menyukai Java sebagai sebuah teknologi disbanding hanya sebuah bahasa pemrograman, karena Java lebih lengkap karena Java lebih lengkap dibanding sebuah bahasa pemrograman konvensional. Teknologi Java memiliki tiga komponen penting, yaitu:
A. Programming-language specification
B. Application-programming interface
C. Virtual-machine specification

JDK (Java Development Kit)
Java Development Kit (JDK) adalah Sun Microsystems produk ditujukan untuk pengembang Java. Sejak diperkenalkannya Java, telah jauh SDK Java yang paling banyak digunakan. Pada tanggal 17 November 2006, Sun mengumumkan bahwa akan dirilis di bawah GNU General Public License (GPL), sehingga membuat perangkat lunak bebas. Hal ini terjadi sebagian besar pada tanggal 8 Mei 2007; Sun kontribusi kode sumber untuk JDKOpen.
Berikut ini langkah-langkah instalasi JDK 7 pada Windows XP, yakni :

1. Klik icon JDK 7 pada folder penyimpanan nya untuk memulai proses penginstalan


2. Tampilan berikut merupakan Installation Wizard JDK 7. Tunggu sejenak hingga muncul tombok Next, lalu klik tombolnya.


3. Pada tampilan berikut Anda diminta memilih fitur JDK 7 sebelum menginstal. Klik Next untuk melanjutkan


4. Berikut ini merupakan tampilan progress proses penginstalan JDK 7

 

5. Pilihlah Destination Folder untuk JDK 7 dengan cara klik Change. Lalu klik Next


6. Berikut ini merupakan tampilan progress dari Java Setup. Tunggu hingga proses selesai


7. Jika muncul tampilan sebagai berikut ini, berarti proses instalasi JDK 7 telah selesai dan sukses. Klik Close untuk selesai

8. Untuk memulai menjalankan software JDK 7, klik Start -> Java Development Kit


Download di SINI !!!

Salam Teknik Komputer, POLSRI

Membuat Aplikasi J2ME Sederhana

Langkah-langkah membuat Aplikasi J2ME sederhana di antaranya :

1. Jalankan Sun Java Wireless Toolkit.


2. Buatlah sebuah project baru dengan memilih menu File -> New Project atau anda bisa mengklik langsung Tombol toolbar New Project.


3. Maka akan muncul kotak dialog yang akan meminta kita untuk mengisikan nama project dan nama kelas dari MIDlet yang akan kita buat. Sebagai contoh saya akan memberi nama project dengan nama sms_new dan nama kelas MIDlet dengan nama sms_new, seperti yang ditunjukan pada gambar berikut :


4. Setelah kita memilih tombol Create Project, toolkit mengizinkan kita untuk mengubah setting dari project yang kita buat, ganti pada target platform menjadi JTWI (Java Technology for the Wireless Industry), yang merupakan satu set jasa spesifikasi standar. berikut form yang akan ditampilkan:


5. Pilih tombol OK untuk mengakhiri dan anda akan melihat pesan yang ditampilkan pada panel toolkit, yang berisi teks berikut :

Creating project “sms_new”
Place Java source files in “C:\Documents and
Settings\andinipc\j2mewtk\2.5.2\apps\ProjHello\src”
Place java source files in“C:\Documents and Settings\j2mewtk\2.5.2\apps\sms_new\src”
Place application resource files in“C:\Documents and
Settings\j2mewtk\2.5.2\apps\sms_new\res”
Place application library files in “C:\Documents and
Settings\j2mewtk\2.5.2\apps\sms_new\lib“
Settings updated
Project settings saved


Berikut tampilan hasil pembuatan project sms_new :


Sampai disini, Sun Java Wireless Toolkit akan menyimpan projek tersebut ke dalam direktori sms_new dan ditempatkan di dalam direktori apps, yaitu direktori default dari tempat penyimpanan Project-Project Java pada Sun Java Wireless Toolkit, yang terdapat di C:\Documents and Settings\[nama komputer anda]\j2mewtk\2.5.2\apps\sms_new. Berikut tampilan sms_new telah berhasil disimpan pada C:\Documents and Settings\andinipc\j2mewtk\2.5.2\apps\sms_new


Setiap project yang dibuat secara otomatis akan membentuk sebuah struktur direktori standar sebagai penyimpanan file-file pendukung yang diperlukan oleh project yang bersangkutan. Adapun struktur direktori yang dimaksud adalah seperti gambar berikut :

Perlu diperhatikan bahwa setelah anda melakukan proses build terhadap projek (dengan memilih menu project -> build) maka Sun Java Wireless Toolkit akan menambahkan tiga buah direktori lagi untuk keperluan internal, yaitu classes, tmpclasses dan tmplib sehingga struktur direktori akan berubah menjadi :


6. Tulisakan kode program untuk MIDlet dengan menggunakan editor teks yang anda sukai, misalnya textpad, notepad, pspad, dll Adapun kodenya sebagai berikut :

import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;
public class sms_new extends MIDlet implements CommandListener, Runnable,
MessageListener {
Display display;
Form form;
List menuList; //list untuk menu awal
Command exitCom, replyCom, backCom, clrCom, sendCom; //command yg digunakan
TextBox textSmsMasuk, textSmsKeluar; //tempat text sms yg masuk & yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;
String[] connections;
boolean done;
MessageConnection smsconn;
Message msg;
public sms_new() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("keluar", Command.EXIT, 1);
replyCom = new Command("kirim", Command.SCREEN, 1);
backCom = new Command("Kembali", Command.BACK, 3);
clrCom = new Command("Hapus Tulisan", Command.OK, 2);
sendCom = new Command("kirim", Command.OK, 1);
menuList = new List("Menu sms Ku", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Silakan Menulis Sms", null,500, TextField.ANY);
textNo = new TextField("Masukan Nomor Tujuan", "",15, TextField.PHONENUMBER);
}
public void startApp() {
bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
menu(); // bikin tampilan menu awal
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
//sebelum aplikasinya keluar ato mati koneksi ditutup dulu
done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}
//disini mati deh aplikasi kita
notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu
menuList.append("Tulis Sms", null);//1. menu tulis sms baru
menuList.append("about", null);//2. menu about (gak penting sih sebenarnya)
menuList.append("Keluar", null);//3. menu untuk keluar aplikasi
menuList.addCommand(exitCom); //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}
public void tulisSms() { //membuat textbox untuk menulis sms baru
textSmsKeluar.addCommand(sendCom); //add command untuk kirim
textSmsKeluar.addCommand(clrCom); // add command untuk clear text
textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}
public void masukNo() { //disini untuk memasukan nomor tujuan
form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
form.append(textNo); //menambahkan textField untuk nomor tujuan
form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
form.addCommand(sendCom); //menambahkan command untuk mengirim
form.setCommandListener(this);
display.setCurrent(form);
}
public void kirim() { //disini sms yang udah ditulis dikirim dgn perintah
new Thread(new Runnable() {
//perhatiin ya
public void run() {
try {
String isiSms = isiSmsKeluar;
String noTujuan = textNo.getString();
String address = "sms://" + noTujuan + ":" + port;
MessageConnection smsConnKir = null;
Message isiSmsNya = null;
smsConnKir = (MessageConnection) Connector.open(address);
TextMessage txtmessage =
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;
smsConnKir.send(isiSmsNya);
} catch (Throwable t) {
t.printStackTrace();
}
}
}).start();
}
public void terima(String isi, String no, Date tgl) { //tempat sms masuk
String nonya = fixNomer(no);
textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
isi.length(), TextField.ANY);
textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);
textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
}
public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;
thread = null;
try {
smsconn = (MessageConnection) Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}
connections = PushRegistry.listConnections(true);
done = false;
thread = new Thread(this);
thread.start();
}
public void tutupKoneksi() { //untuk menutup koneksi sms
try {
smsconn.close();
} catch (IOException e) {
}
}
public String fixNomer(String no) {
//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya
String hs = null;
hs = no.substring(6, no.length());
return hs;
}
public void commandAction(Command c, Displayable d) {
if (c == exitCom) {
destroyApp(true);
}

if (d == menuList) {
if (menuList.isSelected(0)) {
tulisSms();
} else if (menuList.isSelected(1)) {
Alert about = new Alert("About", "Aplikasi SMS menggunakan j2me",
null, AlertType.INFO);
display.setCurrent(about);
} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}
if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();
} else if (c == clrCom) {
textSmsKeluar.setString("");
} else if (c == backCom) {
display.setCurrent(menuList);
}
}
if (d == textSmsMasuk) {
if (c == exitCom) {
display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}
if (d == form) {
if (c == backCom) {
form.deleteAll();
display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {
isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}
public void run() { //untuk menerima sms yang masuk
try {
msg = smsconn.receive();
String senderAddress = msg.getAddress();
Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
terima(isiSmsMasuk, senderAddress, waktuSms);//memasukan sms ke texbok
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}
public void notifyIncomingMessage(MessageConnection conn) {
if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}


Kemudian simpan dengan extensi [namafile].java didalam folder src. Misal simpan dengan nama sms_new.java

7. Bukalah aplikasi Textpad. Lalu ketikkan program di atas.


Berikut ini tampilan program sms_new pada Textpad


8. Simpanlah program sms_new yang telah diketik pada folder C:\Documents and Settings\andinipc\j2mewtk\2.5.2\apps\sms_new\src



File sms_new.java telah tersimpan di folder C:\Documents and Settings\andinipc\j2mewtk\2.5.2\apps\sms_new\src


9. Setelah disimpan dengan nama sms_new.java, tekan tombol ctrl+1 pada keyboard


10. Buka project sms_new pada folder C:\Documents and Settings\andinipc\j2mewtk\2.5.2\apps\sms_new dengan memilih menu File -> Open Project atau dengan langsung meng-klik tombol Open Project


11. Selanjutnya akan muncul tampilan sebagai berikut. Pilih project sms_new, lalu klik Open Project


12. Lakukan kompilasi terhadap kode di atas dengan melakukan proses Build pada projek, Caranya dengen memilih Menu Project -> Build atau cukup hanya dengan meng-klik tombol Build pada Toolbar.


Berikut tampilan proses Build untuk project sms_new


Apabila proses Build benar maka akan muncul pesan dan tampilan sebagai berikut
:
Project “sms_new” loaded
Project settings saved
Building “sms_new”
Build complete


13. Kemudian klik tombol Run untuk menjalankan project java sms_new


Maka setelah di-run akan muncul tampilan berikut. Klik Run 2 kali untuk 2 aplikasi pengiriman sms. Pilih Launch untuk mengaktifkan aplikasi pada kedua handphone.


Maka akan muncul tampilan seperti berikut ini


14. Pada salah satu handphone, pilih Yes pada pertanyaan “Is it OK to communicate ?” untuk memulai komunikasi. Maka akan muncul tampilan seperti berikut ini


15. Pilih “Tulis Sms” untuk memulai mengetik sms. Lalu pilih Menu 1. Kirim untuk mengirimkan sms


16. Ketikkan nomor tujuan Anda, yaitu nomor handphone lainnya yang telah di-launch seperti pada tampilan berikut ini. Lalu pilih Kirim untuk mengirim sms


17. Secara otomatis maka sms yang telah dikirim akan sampai ke nomor tujuan handphone yang dituju. Pilih Keluar untuk keluar


 18. Pilih MIDlet -> Exit untuk menyelesaikan komunikasi


Perlu diketahui, Anda dapat juga melakukan pengiriman sms yang sama pada handphone lainnya.


Download di SINI !!!

Salam Teknik Komputer, POLSRI