June 11, 2013

Aplikasi Server dan Client dengan Metode POST

Pada postingan kali ini saya akan membahas tentang aplikasi server dan client dengan metode POST. Disini kita membutuhkan 2 buah program. Yang pertama saya beri nama InfoServer.java dan InfoClient.java.

Kode program untuk InfoServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class InfoServer {
private final int INFO_PORT=50000;
private String datafromClient;
/** InfoServer Constructor */
public InfoServer() {
BufferedReader inFromClient;
DataOutputStream outToClient;
Socket serverSocket;
try {
/* bind port 50000 ke alamat lokal */
ServerSocket infoServer =
new ServerSocket(INFO_PORT);
System.out.println("Server telah siap");
/* lakukan perulangan tanpa henti,
* sampai client memberikan perintah QUIT
*/
while (true) {
/* masuk ke mode listening,
* server siap menerima permintaan dari client
*/
serverSocket = infoServer.accept();
System.out.println("Ada client " +
"yang terkoneksi!");
/* buat input stream dari socket
* dan juga sekaligus konversi dari
* byte stream ke character stream
* (InputStreamReader)
* BufferedReader akan memudahkan
* dalam pengolahan data karakter
*/
inFromClient =
new BufferedReader(
new InputStreamReader(
serverSocket.getInputStream()));
/* buat output stream ke socket */
outToClient =
new DataOutputStream(
serverSocket.getOutputStream());
/* tulis welcome ke client */
outToClient.writeBytes("InfoServer versi 0.1\n"+
"hanya untuk testing..\n"+
"Silahkan berikan perintah TIME | NET | QUIT\n");
/* lakukan perulangan sampai client
* mengirimkan perintah QUIT
*/
boolean isQUIT = false;
while (!isQUIT) {
/* baca data dari client */
datafromClient = inFromClient.readLine();
if (datafromClient.startsWith("TIME")) {
outToClient.writeBytes(new
Date().toString() + "\n");
} else if (datafromClient.startsWith("NET")) {
outToClient.writeBytes(
InetAddress.getByName("localhost").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();
}
}

 
Kode program untuk 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";
/** Creates a new instance of InfoClient */
public InfoClient() {
try {
/* siapkan input stream dari standard input (keyboard) */
BufferedReader inFromUser =
new BufferedReader(new
InputStreamReader(System.in));
/* buat koneksi socket ke server dan port yang dituju */
Socket clientSocket = new
Socket(TargetHost, INFO_PORT);
/* siapkan output stream ke socket */
DataOutputStream outToServer =
new DataOutputStream(
clientSocket.getOutputStream());
/* siapkan input stream dari socket */
BufferedReader inFromServer =
new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
/* tampilkan informasi Welcome dari Server
* oleh karena method readLine() akan
* membaca satu baris string
* yang diakhir dengan karakter ENTER,
* maka perlu diberikan 3
* pemanggilan method readLine()
* untuk membaca 3 baris pesan Welcome
* yang dikirim dari server
*/
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println(inFromServer.readLine());
System.out.println("");
boolean isQuit = false;
while (!isQuit) {
/* menunggu masukan perintah dari User */
System.out.print("Perintah Anda : ");
String cmd = inFromUser.readLine();
/* konversi ke Upper dan cek
* apakah perintah QUIT yang diketikkan
* jika QUIT, beri nilai true untuk isQUIT
* agar looping !isQUIT selesai
*/
cmd = cmd.toUpperCase();
if (cmd.equals(QUIT)) {
isQuit = true;
}
/* kirim perintah yang dimasukkan ke server
* dan diakhiri dengan karakter ENTER, karena
* pada server data dari client dibaca
* dengan method readLine() untuk membaca
* satu baris string sampai dengan ENTER
*/
outToServer.writeBytes(cmd + "\n");
/* block reading ".
* client harus menunggu balasan dari server
*/
String result = inFromServer.readLine();
System.out.println("Dari Server: " + result);
}
/* tutup semua stream dan koneksi socket */
outToServer.close();
inFromServer.close();
clientSocket.close();
}
catch (IOException ioe) {
System.out.println("Error:" + ioe);
}
catch (Exception e) {
System.out.println("Error:" + e);
}
}
/**
* Program Utama InfoClient
*/
public static void main(String[] args) {
new InfoClient();
}
}
 
Untuk menjalankan program ini, diperlukan 2 buah Command Prompt dimana satu berperan sebagai Server dan satunya sebagai Client.
Adapun tampilan pada saat dijalankan :

June 04, 2013

Aplikasi SMS dengan J2ME

Setelah postingan saya tentang Kirim dan Terima SMS dengan Java, sekarang saya akan membahas tentang aplikasi SMS. Fungsi aplikasi ini sama seperti postingan kemarin, namun yang membedakan ialah pada postingan saya kali ini, SMS yang dapat diterima dapat langsung dibalas.

Adapun kode program yang saya beri nama SMS.java.
import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;

/**
* @author Veny Citra Puspitasari
* @see http://twitter.com/venyus
*/
public class SMS 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() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("Exit", Command.EXIT, 1);
replyCom = new Command("Reply", Command.SCREEN, 1);
backCom = new Command("Back", Command.BACK, 3);
clrCom = new Command("Delete It", Command.OK, 2);
sendCom = new Command("Send", Command.OK, 1);
menuList = new List("Menu SMS", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Please, Write Message Here", null,
500, TextField.ANY);
textNo = new TextField("Enter The Destination Number", "",
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("Write Message", null);//1. menu tulis sms baru
menuList.append("About", null);//2. menu about (gak penting sih sebenarnya)
menuList.append("Exit", 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 buatan Veny Citra Puspitasari. " +
     "Source-nya saya dapatkan dari Internet",
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();
}
}
}


Dan ini adalah tampilan SMS.

Anda dapat mendownload modul Aplikasi SMS dengan J2ME yang telah saya siapkan agar Anda dapat belajar ketika koneksi internet Anda mati.
Sekian pembahasan saya kali ini. :)

Kirim dan Terima SMS dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi kirim dan terima SMS dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
 
Disini saya menggunakan 2 buah program. Pertama kirimSMS.java untuk si pengirim SMS dan terimaSMS.java untuk si penerima SMS.

Kode program kirimSMS.java
import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class kirimSMS extends MIDlet implements CommandListener,Runnable
{
private Form sendMessageForm;
private TextField number, msg;
private Command cmdOK,cmdExit;
private String telpNum, isiPesan = "";
public kirimSMS(){
cmdExit = new Command("Back", Command.EXIT, 2);
cmdOK = new Command("Send", Command.SCREEN, 2);
sendMessageForm = new Form("Send Message");
msg = new TextField("Message:", null, 50, TextField.ANY);
number = new TextField("Telepon:", null, 15, TextField.PHONENUMBER);
sendMessageForm.append(number);
sendMessageForm.append(msg);
sendMessageForm.addCommand(cmdOK);
sendMessageForm.addCommand(cmdExit);
sendMessageForm.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
notifyDestroyed();
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(sendMessageForm);
}
public void commandAction(Command arg0, Displayable arg1) {
if(arg0==cmdOK){
telpNum = number.getString();
isiPesan = msg.getString();
new Thread(this).start();
number.setString("");
msg.setString("");
Display.getDisplay(this).setCurrent(sendMessageForm);
}else if(arg0==cmdExit){

destroyApp(true);
}
}
public void run() {
try{
String nomorTelp = "sms://" + telpNum + ":1234";
MessageConnection conn =
(MessageConnection)Connector.open(nomorTelp);
TextMessage msg = (TextMessage)
conn.newMessage(MessageConnection.TEXT_MESSAGE);
msg.setPayloadText(isiPesan);
conn.send(msg);
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

Kode program terimaSMS.java
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.TextMessage;
public class terimaSMS extends MIDlet implements Runnable,
CommandListener {
private TextBox tb;
private String text = "Menunggu pesan...";
private Command okComand;
public terimaSMS() {
tb = new TextBox("Hello MIDlet", text, 150, 0);
}
protected void destroyApp(boolean arg0) throws
MIDletStateChangeException {
}

protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(tb);
new Thread(this).start();
}
public void changeScreen() {
tb = new TextBox("SMS MIDlet", text, 150, 0);
Display.getDisplay(this).setCurrent(tb);
}
public void addConfirmation(String msg) {
tb = new TextBox("SMS MIDlet", text, 150, 0);
tb.setString(msg);
okComand = new Command("OK",Command.OK,1);
tb.addCommand(okComand);
tb.setCommandListener(this);
Display.getDisplay(this).setCurrent(tb);
}
public void run() {
try {
MessageConnection rconn = (MessageConnection) Connector
.open("sms://:1234");
while (true) {
Message msg = rconn.receive();
if (msg instanceof TextMessage) {
TextMessage tmsg = (TextMessage) msg;
String msgOut = tmsg.getPayloadText();
addConfirmation(msgOut);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void commandAction(Command arg0, Displayable arg1) {
}
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Kirim dan Terima SMS dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi kirim dan terima SMS dengan Sun Java Wireless Toolkit.

Sekian pembahasan tentang aplikasi kirim dan terima SMS ini. :)
 

Penggabungan Aplikasi Login dan Aplikasi Nilai

Kali ini saya akan membahas tentang penggabungan Aplikasi Login dan Aplikasi Nilai seperti pada postingan saya sebelumnya.
 
Adapun kode programnya saya beri nama LgnNilai.java.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class LgnNilai extends MIDlet implements CommandListener{
  private Display display;
  private TextField userName,password;
  public Form form;
  private Command login,cancel;
  private Image img, imge, img2;
  Command cmdExit,cmdBack,cmdHitung;
  Display dis;
  Form frmInput,frmOutput;
  TextField tfMakul,tfNilai;
  StringItem siMakul,siSKS,siNilai,siGrade,siBobot;
  ChoiceGroup cg1;

  public LgnNilai() {
    form = new Form("Sign in");
    userName = new TextField("LoginID:", "", 30, TextField.ANY);
    password = new TextField("Password:", "", 30, TextField.PASSWORD);
    cancel = new Command("Cancel", Command.CANCEL, 2);
    login = new Command("Login", Command.OK, 2);
    try{
      img = Image.createImage("/logo.png");
      imge = Image.createImage("/gagal.png");
      img2 = Image.createImage("/sukses.png");
    }catch(Exception e){
      System.out.println(e.getMessage());
    }
    cmdExit = new Command("Keluar",Command.EXIT,0);
    cmdBack = new Command("OK",Command.SCREEN,0);
    cmdHitung = new Command("Proses",Command.SCREEN,0);
    cg1=new ChoiceGroup("SKS",Choice.EXCLUSIVE);
    cg1.append("2 SKS",null);
    cg1.append("4 SKS",null);
    cg1.append("6 SKS",null);
    frmInput=new Form("Form Input");
    tfMakul = new TextField("Mata Kuliah","",30,TextField.ANY);
    tfNilai = new TextField("Nilai","",30,TextField.NUMERIC);
    frmInput.append(tfMakul);
    frmInput.append(cg1);
    frmInput.append(tfNilai);
    frmInput.addCommand(cmdExit);
    frmInput.addCommand(cmdHitung);
    frmInput.setCommandListener(this);
    frmOutput=new Form("Form Output");
    siMakul=new StringItem("Mata Kuliah","");
    siSKS=new StringItem("SKS","");
    siNilai=new StringItem("Nilai","");
    siGrade=new StringItem("Grade","");
    siBobot=new StringItem("Bobot Nilai",null);
    frmOutput.append(siMakul);
    frmOutput.append(siSKS);
    frmOutput.append(siNilai);
    frmOutput.append(siGrade);
    frmOutput.append(siBobot);
    frmOutput.addCommand(cmdBack);
    frmOutput.setCommandListener(this);
  }

   public void startApp() {
    display = Display.getDisplay(this);
    try{form.append(img);}catch(Exception e){}
    form.append(userName);
    form.append(password);
    form.addCommand(cancel);
    form.addCommand(login);
    form.setCommandListener(this);
    display.setCurrent(form);

  }

  public void pauseApp() {}
  public void destroyApp(boolean unconditional) {
  notifyDestroyed();
    }
    public void validateUser(String name, String password) {
      if (name.equals("venyus") && password.equals("v3nyu5")) {
        showMsg();
      } else {
        tryAgain();
      }
    }
    public void showMsg() {
     dis = Display.getDisplay(this);
     dis.setCurrent(frmInput);
    }
    public void tryAgain() {
      Alert error = new Alert("Login salah", "coba lagi", imge, AlertType.ERROR);
      error.setTimeout(900);
      error.setImage(imge);
      userName.setString("");
      password.setString("");
      display.setCurrent(error, form);
    }

    public void commandAction(Command c, Displayable d) {
      String label = c.getLabel();
      if(label.equals("Cancel")) {
        destroyApp(true);
      } else if(label.equals("Login")) {
        validateUser(userName.getString(), password.getString());
      }
      if(c==cmdBack){
      dis.setCurrent(frmInput);
      }else if(c==cmdHitung){
      int nilai,nilaigrade,bobotnilai,sks;
      siMakul.setText(tfMakul.getString());
      if(cg1.isSelected(0)){
      siSKS.setText("2 SKS");
      sks=2;
      }else if(cg1.isSelected(1)){
      siSKS.setText("4 SKS");
      sks=4;
      }else{
      siSKS.setText("6 SKS");
      sks=6;
      }
      siNilai.setText(tfNilai.getString());
      nilai=Integer.parseInt(tfNilai.getString());
      if(nilai<=49){
      siGrade.setText("E");
      nilaigrade=0;
      }else if(nilai<=59){
      siGrade.setText("D");
      nilaigrade=1;
      }else if(nilai<=74){
      siGrade.setText("C");
      nilaigrade=2;
      }else if(nilai<=80){
      siGrade.setText("B");
      nilaigrade=3;
      }else{
      siGrade.setText("A");

      nilaigrade=4;
      }
      bobotnilai=sks*nilaigrade;
      siBobot.setText(Integer.toString(bobotnilai));
      dis.setCurrent(frmOutput);
      }else if(c==cmdExit){
      destroyApp(false);
      notifyDestroyed();
      }else{
      dis.setCurrent(frmInput);
}
    }
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Penggabungan Aplikasi Login dan Nilai dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi login dan nilai dengan Sun Java Wireless Toolkit.
Sekian pembahasan tentang aplikasi login dan nilai ini. :)
 

Aplikasi Nilai Sederhana dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi Nilai Sederhana dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
 
Adapun kode programnya saya beri nama AplikasiNilai.java.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class AplikasiNilai extends MIDlet implements CommandListener{
Command cmdExit,cmdBack,cmdHitung;
Display dis;
Form frmInput,frmOutput;
TextField tfMakul,tfNilai;
StringItem siMakul,siSKS,siNilai,siGrade,siBobot;
ChoiceGroup cg1;
public AplikasiNilai(){
cmdExit = new Command("Keluar",Command.EXIT,0);
cmdBack = new Command("OK",Command.SCREEN,0);
cmdHitung = new Command("Proses",Command.SCREEN,0);
cg1=new ChoiceGroup("SKS",Choice.EXCLUSIVE);
cg1.append("2 SKS",null);
cg1.append("4 SKS",null);
cg1.append("6 SKS",null);
frmInput=new Form("Form Input");
tfMakul = new TextField("Mata Kuliah","",30,TextField.ANY);
tfNilai = new TextField("Nilai","",30,TextField.NUMERIC);
frmInput.append(tfMakul);
frmInput.append(cg1);
frmInput.append(tfNilai);
frmInput.addCommand(cmdExit);
frmInput.addCommand(cmdHitung);
frmInput.setCommandListener(this);
frmOutput=new Form("Form Output");
siMakul=new StringItem("Mata Kuliah","");
siSKS=new StringItem("SKS","");
siNilai=new StringItem("Nilai","");
siGrade=new StringItem("Grade","");
siBobot=new StringItem("Bobot Nilai",null);
frmOutput.append(siMakul);
frmOutput.append(siSKS);
frmOutput.append(siNilai);
frmOutput.append(siGrade);
frmOutput.append(siBobot);
frmOutput.addCommand(cmdBack);
frmOutput.setCommandListener(this);
}
public void startApp(){
dis = Display.getDisplay(this);
dis.setCurrent(frmInput);
}
public void pauseApp(){
}
public void destroyApp(boolean unc){
}
public void commandAction(Command c,Displayable d){
if(c==cmdBack){
dis.setCurrent(frmInput);
}else if(c==cmdHitung){
int nilai,nilaigrade,bobotnilai,sks;
siMakul.setText(tfMakul.getString());
if(cg1.isSelected(0)){
siSKS.setText("2 SKS");
sks=2;
}else if(cg1.isSelected(1)){
siSKS.setText("4 SKS");
sks=4;
}else{
siSKS.setText("6 SKS");
sks=6;
}
siNilai.setText(tfNilai.getString());
nilai=Integer.parseInt(tfNilai.getString());
if(nilai<=49){
siGrade.setText("E");
nilaigrade=0;
}else if(nilai<=59){
siGrade.setText("D");
nilaigrade=1;
}else if(nilai<=74){
siGrade.setText("C");
nilaigrade=2;
}else if(nilai<=80){
siGrade.setText("B");
nilaigrade=3;
}else{
siGrade.setText("A");
nilaigrade=4;
}
bobotnilai=sks*nilaigrade;
siBobot.setText(Integer.toString(bobotnilai));
dis.setCurrent(frmOutput);
}else if(c==cmdExit){
destroyApp(false);
notifyDestroyed();
}else{
dis.setCurrent(frmInput);
}
}
}
 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Aplikasi Nilai dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi nilai dengan Sun Java Wireless Toolkit.
Sekian pembahasan tentang aplikasi nilai ini. :)  

Aplikasi Login dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi login dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
Adapun kode programnya saya beri nama Login.java.
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

public class Login extends MIDlet implements CommandListener{
private Display display;
private TextField userName,password;
public Form form;
private Command login,cancel;
private Image img, imge, img2;

public Login() {
form = new Form("Sign in");
userName = new TextField("LoginID:", "", 30, TextField.ANY);
password = new TextField("Password:", "", 30, TextField.PASSWORD);
cancel = new Command("Cancel", Command.CANCEL, 2);
login = new Command("Login", Command.OK, 2);
try{
img = Image.createImage("/logo.png");
imge = Image.createImage("/gagal.png");
img2 = Image.createImage("/sukses.png");
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public void startApp() {
display = Display.getDisplay(this);
try{form.append(img);}catch(Exception e){}
form.append(userName);
form.append(password);
form.addCommand(cancel);
form.addCommand(login);
form.setCommandListener(this);
display.setCurrent(form);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
public void validateUser(String name, String password) {
if (name.equals("venyus") && password.equals("v3nyu5")) {
showMsg();
} else {
tryAgain();
}
}
public void showMsg() {
Alert success = new Alert("Login Berhasil",
"Login berhasil!", img2, AlertType.INFO);
success.setImage(img2);
userName.setString("");
password.setString("");
display.setCurrent(success, form);
}
public void tryAgain() {
Alert error = new Alert("Login Gagal", "Coba Lagi", imge, AlertType.ERROR);
error.setTimeout(1500);
error.setImage(imge);
userName.setString("");
password.setString("");
display.setCurrent(error, form);
}
public void commandAction(Command c, Displayable d) {
String label = c.getLabel();
if(label.equals("Cancel")) {
destroyApp(true);
} else if(label.equals("Login")) {
validateUser(userName.getString(), password.getString());
}
}
} 
Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Aplikasi Login dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi login dengan Sun Java Wireless Toolkit.

Sekian pembahasan tentang aplikasi login ini. :)

Aplikasi Kalkulator dengan J2ME

Seperti pada postingan disini, saya akan membahas tentang pembuatan aplikasi Kalkulator dengan Java yang dapat Anda masukkan ke dalam handphone Anda.
Adapun kode programnya saya beri nama Kalkulator.java.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Kalkulator extends MIDlet implements CommandListener{
    TextField tfNilai1,tfNilai2;
    StringItem siHasil;
    Display dis;
    Form frm;
    Alert alt1,alt2;
    Command cmdExit,cmdTambah,cmdKurang,cmdKali,cmdBagi;
    public Kalkulator(){               
        cmdExit = new Command("Keluar",Command.EXIT,0);
        cmdTambah = new Command("Tambah",Command.SCREEN,0);
        cmdKurang = new Command("Kurang",Command.SCREEN,0);
        cmdKali = new Command("Kali",Command.SCREEN,0);
        cmdBagi = new Command("Bagi",Command.SCREEN,0);
       
        tfNilai1=new TextField("Nilai 1","",30,TextField.NUMERIC);
        tfNilai2=new TextField("Nilai 2","",30,TextField.NUMERIC);
        siHasil= new StringItem("Hasil","");
       
        frm=new Form("Kalkulator");
        frm.append(tfNilai1);
        frm.append(tfNilai2);
        frm.append(siHasil);
        frm.addCommand(cmdExit);
        frm.addCommand(cmdTambah);
        frm.addCommand(cmdKurang);
        frm.addCommand(cmdKali);
        frm.addCommand(cmdBagi);
        frm.setCommandListener(this);
       
        alt1=new Alert("Peringatan!","Silahkan tambahkan kode program untuk perkalian.",null,AlertType.INFO);
        alt2=new Alert("Peringatan!","Silahkan tambahkan kode program untuk pembagian.",null,AlertType.INFO);
    }
   
    public void startApp(){
        dis = Display.getDisplay(this);
        dis.setCurrent(frm);
    }
    public void pauseApp(){
    }
    public void destroyApp(boolean unc){
    }
    public void commandAction(Command c,Displayable d){
        double nilai1=Double.parseDouble(tfNilai1.getString());
        double nilai2=Double.parseDouble(tfNilai2.getString());
        double hasil=0;
        if(c==cmdTambah){
            hasil=nilai1+nilai2;
        }else if(c==cmdKurang){
            hasil=nilai1-nilai2;
        }else if(c==cmdKali){
            hasil=nilai1*nilai2;
        }else if(c==cmdBagi){
            hasil=nilai1/nilai2;
        }else{
            destroyApp(false);
            notifyDestroyed();
        }
        siHasil.setText(Double.toString(hasil));
    }
}

Untuk mengurangi panjangnya halaman postingan saya kali ini, Anda bisa mendownload modul Aplikasi Kalkulator dengan J2ME yang dapat Anda pelajari lebih rinci.
Inilah hasil simulasi pembuatan aplikasi Kalkulator dengan Sun Java Wireless Toolkit.
Sekian pembahasan tentang aplikasi kalkulator ini. :)

Pembuatan Aplikasi Sederhana dengan J2ME

Halo :)
Kali ini saya akan membahas tentang pembuatan program aplikasi sederhana yang saya buat dengan menggunakan SUN Java Wireless Toolkit. Aplikasi ini dapat Anda masukkan ke dalam handphone yang berbasis Java dengan cara menginstal file berektensi jad ataupun jar. Disini, saya menggunakan handphone merk Nokia tipe X5-01 bukan tulisan berbayar yang memang sudah dari dulu saya punya :p *oot*.
Dan alhamdulillah file aplikasi sederhana berekstensi jar tersebut bisa diinstal di hape saya. :D
Jika kalian pengguna hape OS Android, Anda bisa mengconvert file berekstensi jar ke dalam apk agar bisa diinstal pada hape kalian pada link ini http://www.netmite.com/android/srv/2.0/getapk.php.

Oh iya, sebelumnya kasih sedikit pengertian tentang J2ME itu sendiri.
J2ME merupakan sebuah kombinasi yang terbentuk antara sekumpulan interface Java yang sering disebut dengan Java API dengan JVM (Java Virtual Machine) yang didesain khusus untuk alat yang memiliki ruang yang terbatas dan berukurang kecil. J2ME di desain khusus untuk perangkat-perangkat komputasi yang berukuran kecil terutama wireless seperti handphone, PDA, smartphone, embedded device dll, J2ME memiliki konfigurasi dan profile yang mendefinisikan kelas Java API yang dapat digunakan oleh aplikasi. dengan menyediakan platform standar untuk pengembangan perangkat wireless, J2ME terdiri atas perangkat-perangkat komponen sebagai berikut : 
  1. Java Virtual Machine (JVM), komponen untuk menjalankan program-program Java pada emulator atau handheld device.
  2. Java Application Programming Interface (API), merupakan kumpulan library untuk menjalankan dan mengembangkan program Java pada Handheld Devices.
  3. Tools lain untuk mengembangkan Java, semacam emulator Java Phone, Emulator Nokia, Emulator Siemens dan Emulator Motorola.
Tanpa babibu lagi, kalian bisa belajar untuk membuat aplikasi sederhana dengan J2ME pada postingan-postingan saya berikutnya.
Tetep semangat belajar ya :)

June 03, 2013

Browser Sederhana dengan Java

Browser dalam dunia internet adalah software atau alat yang digunakan untuk menjelajah internet. Pengertian browser tersebut sejalan dengan istilah “browse” dalam bahasa inggris yang artinya melihat-lihat atau membaca-baca. Arti browser oleh beberapa kalangan disamakan pula sebagai “perambah” atau penjelajah web.
Fungsi Browser itu sendiri adalah untuk menampilkan dan melakukan interaksi dengan dukumen-dokumen yang disediakan oleh web server. Kali ini saya akan membahas tentang browser dengan menggunakan Java.
Berikut ini adalah koding program yang saya beri nama browser.java.
import java.io.*;
import java.awt.*;
import java.net.*;
import java.util.Scanner;

public class browser{
 public static void main(String[] args){
  try {

  BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  int pilihan;
  int menu=0;
  Scanner masuk = new Scanner(System.in);

  while(menu==0){
  System.out.println("");
  System.out.println("=============================");
  System.out.println("|                           |");
  System.out.println("|    PROGRAM WEB BROWSER    |");
  System.out.println("|                           |");
  System.out.println("=============================");
  System.out.println("| 1. Cari Berita            |");
  System.out.println("| 2. Cari Gambar            |");
  System.out.println("| 3. Keluar                 |");
  System.out.println("=============================");
  System.out.println("");
  System.out.print("Masukan Pilihan : ");
  pilihan = masuk.nextInt();
  switch (pilihan) {
        case 1:
        String berita = null;

        System.out.println("");
   System.out.print("Masukkan berita yang dicari :");
   berita = input.readLine();
   java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://www.google.com/search?hl=en&biw=1024&bih=isch&source=hp&biw=1024&bih=499&q=" + berita));
            break;
            case 2:
            String gambar = null;
            System.out.println("");
   System.out.print("Masukkan Gambar Yang Ingin Dicari : ");
   gambar = input.readLine();
   java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://www.google.com/search?hl=en&site=imghp&tbm=isch&source=hp&biw=1024&bih=499&q=" + gambar));
            break;
            case 3:
   System.exit(0);

  }
  }
  }
  catch (Exception ex) {System.out.println("Error");}
 }
}


Ketik program di atas pada textpad ataupun notepad++. Disini saya menggunakan Textpad, setelah program diketik, lakukan compile dengan menggunakan shortcut Ctrl+1, dan untuk Run Ctrl+2.
Hasil program setelah di Run:

Untuk lebih jelasnya, Anda bisa mendowload modul Browser Sederhana dengan Java yang telah saya buat dan saya beri penjelasan.
Sekian pembahasan tentang browser sederhana dengan Java. :)

Program Chatting dengan Java

Chatting adalah suatu fitur / program dalam Internet untuk berkomunikasi langsung 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.
Kali ini saya akan membahas tentang program chatting dengan menggunakan Java. Biasanya kita melakukan chatting dengan koneksi internet, akan tetapi disini kita hanya memerlukan kabel LAN saja untuk menghubungkan 2 buah komputer.
Adapun kode program dapat Anda ketikkan pada TextPad ataupun notepad. Disini saya memberi nama chat.java


import java.io.*;
import java.net.*;
import java.util.Scanner; 
public class chat{

    static void Client() throws IOException {

        String ip; //variabel untuk IP Address

        BufferedReader cmb=new BufferedReader(new InputStreamReader(System.in)); //

        System.out.println("Masukkan IP Server : "); //

        ip=cmb.readLine();

        Socket client=null;

        client=new Socket(""+ip,2000);

        BufferedReader sin=new BufferedReader(new

        InputStreamReader(client.getInputStream()));

        PrintStream sout=new PrintStream(client.getOutputStream());

        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

        String s;

        while (true){

        System.out.print("Client : ");

        s=stdin.readLine();

        sout.println(s);

        s=sin.readLine();

        System.out.print("Server : "+s+"\n");

        if(s.equalsIgnoreCase("Bye"))

        break;

        }

        stdin.close();

        sout.close();

        sin.close();

        client.close();

    }



    static void Server() throws IOException {

        ServerSocket server=null;

        Socket client=null;

        try{

        server=new ServerSocket(2000);

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

        client=server.accept();

        System.out.println("Client telah masuk dan bisa online");

        }

        catch(IOException e){

        System.out.println(e.getMessage());

        System.exit(-1);

        }

        System.out.println("Silahkan chat");

        InputStream masuk=client.getInputStream();

        OutputStream keluar=client.getOutputStream();

        BufferedReader in=new BufferedReader(new

        InputStreamReader(client.getInputStream()));

        PrintStream out=new PrintStream(client.getOutputStream());

        BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

        String pesan;

        while (true){

        pesan=in.readLine();

        if(pesan.equalsIgnoreCase("stop"))

        {

        out.println("sampai jumpa");

        break;

        }

        System.out.println("Client : "+pesan);

        System.out.print("Server : ");

        pesan=stdin.readLine();

        out.println(pesan);

        }

        server.close();

        client.close();

        in.close();

        out.close();

        stdin.close();

    }



    public static void main(String args[]) throws IOException {

        int pil;

    System.out.println("Menu Utama");

    System.out.println("1. Server");

    System.out.println("2. Client");

    System.out.println("3. Keluar");

    System.out.println();

    System.out.println("Masukkan Pilihan Anda : ");

    Scanner input = new Scanner(System.in);

        pil = Integer.parseInt(input.next());

    switch(pil){

        case 1:

        Server();

        break;

        case 2:

        Client();

        break;

        case 3:

        System.out.println();

        System.out.println("Terima Kasih Telah Menggunakan Aplikasi Ini");
        break;
        default :
        System.out.println("Maaf Keyword Yang Anda Masukkan Salah");
        System.out.println("Silahkan Ulangi Lagi");
        break;
    }
    }
}


Jangan lupa apabila kita telah mengetikkan program, untuk langsung meng-compile sehingga kita tahu letak kesalahan (error) dimana.
Tampilan dimana komputer menjadi server.
 Tampilan dimana komputer menjadi client.
 Anda juga bisa mendownload modul Program Chatting dengan Java yang telah saya buat. Program ini tak hanya digunakan dengan kabel LAN, bisa juga Anda menggunakan Wifi sebagai penghubung antar komputer.

Sekian pembahasan saya tentang chatting dengan Java. :)

Informasi Antar Muka Jaringan

Untuk mendapatkan informasi network interface pada Java telah terdapat kelas NetworkInterface yang mampu mendapatkan informasi tentang antar muka jaringan, nama device, dan IP yang ter-bind. Nama device misalnya eth0, lp0, ppp0 dan lain-lain.

Berikut kode program yang disimpan dengan nama DisplayNet.java.
import java.io.*;
import java.net.*;
import java.util.*;
public class DisplayNet {
public static void main(String argv[])
throws Exception
{
//panggil method getNetworkInterfaces()
//untuk mendapatkan semua antarmuka jaringan
//yang digunakan di komputer lokal
Enumeration e =
NetworkInterface.getNetworkInterfaces();
//perulangan untuk mengambil tiap antarmuka jaringan
//hasil dari method getNetworkInterfaces()
while(e.hasMoreElements()) {
NetworkInterface netface = (NetworkInterface)
e.nextElement();
System.out.println("Net interface: "+
netface.getName());
//ambil semua informasi alamat IP dari
//tiap antarmuka jaringan
Enumeration e2 = netface.getInetAddresses();
//lakukan perulangan untuk tiap alamat IP
//yang didapat pada tiap antarmuka jaringannya
while(e2.hasMoreElements()) {
InetAddress ip = (InetAddress) e2.nextElement();
System.out.println("IP address: "+
ip.toString());
}
}
}
}

Tampilan program setelah dijalankan :