Bilangan Prima (Rekursif)
Definisi bilangan prima tidak lain adalah bilangan asli yang lebih besar dari 1 dan hanya habis dibagi oleh bilangan 1 dan bilangan itu sendiri. Contoh beberapa bilangan prima antara lain, 2, 3, 5, 7, 11, 13…
Nah, berikut ini aku akan share bagaimana membuat aplikasi Java untuk mencari bilangan prima secara rekursif.
/**
*
* @author secangkirkopipanas
*/
public class Prima {
private static int ambilNilaiRekursif(int number, int index) {
if (index == 1)
return 1;
else if (number % index == 0)
return 1 + ambilNilaiRekursif(number, --index);
else
return 0 + ambilNilaiRekursif(number, --index);
}
public static boolean cekBilanganPrima(int num) {
if (num > 1)
return (ambilNilaiRekursif(num, num) == 2);
else
return false;
}
public static void main(String[] args) {
int num = 3000;
if (cekBilanganPrima(num))
System.out.println("Bilangan Prima");
else
System.out.println("Bukan Bilangan Prima");
}
}
Semoga bermanfaat!
Apa itu JSON?
Apa sich JSON? Sepertinya sering mendengar, tapi artinya dan cara penggunaannya masih kurang jelas. Yuks, mari kita belajar bersama tentang makhluk yang satu ini: JSON.
JSON merupakan singkatan dari JavaScript Object Notation, merupakan format untuk pertukaran data seperti halnya XML. JSON sangat mudah dimengerti oleh manusia, karena formatnya yang sederhana. Bahkan tidak hanya manusia, oleh mesin pun JSON sangat mudah untuk dibaca.
Untuk saat ini, sudah banyak bahasa pemrograman yang sudah mendukung penuh kehadiran teman baru kita ini. Tetapi apakah kita mau berkenalan lebih dekat lagi dengannya? Itu terserah teman-teman semua.
JSON telah dispesifikasikan di RFC 4627 oleh Douglas Crockford. Tipe media internet resmi untuk JSON adalah application/json. Sedangkan ekstensi file untuk JSON adalah .json.
Sebuah object dideklarasikan dengan:
var obj = {};
Berikut contoh object JSON:
var obj = { "firstName" : "Lilik",
"lastName" : "Haryanto",
"location" : "Jakarta" };
document.writeln(obj.firstName); // Output Lilik
document.writeln(obj.lastName); // Output Haryanto
document.writeln(obj.location); // Output Jakarta
Jika object mengandung object lagi di dalamnya, tambahkan titik dan nama properti di belakangnya:
var obj = { 'color' : 'red',
'animal' : { 'cat' : 'catty' }
};
document.writeln(obj.animal.cat); // Output catty
Berikut perbandingan XML dan JSON:
<person> <firstname>Lilik</firstname> <lastname>Haryanto</lastname> </person> |
({
"firstname" : "Lilik",
"lastname" : "Haryanto"
});
|
Dibandingkan dengan XML, parsing JSON membutuhkan waktu lebih cepat. Dengan berkembangnya teknologi AJAX, seakan-akan juga mendorong berkembangnya JSON. Hal ini terbukti dari begitu banyaknya format data JSON digunakan terutama pada teknologi AJAX ini.
Di beberapa bahasa pemrograman telah mendukung format data JSON, seperti di PHP > 5.1.x, fungsi json_encode() dan json_decode(). Selain itu, di Java juga sudah tersedia library untuk pengaksesan JSON, sebagai contoh Json-lib.
Jadi tunggu apa lagi, sudah saatnya merubah semua format data yang tadinya menggunakan XML ke dalam format JSON.
Aplikasi Java Untuk Instant Messaging Berbasis Jabber/XMPP
Pasti teman-teman semua sudah pernah menggunakan aplikasi semacam Yahoo!Messenger, GoogleTalk, MSN, dan mIRC. Semua itu merupakan aplikasi yang digunakan untuk berkomunikasi melalui internet, atau istilah kerennya aplikasi chatting. Mungkin pernah berpikir, gimana sich cara buatnya?
Aku akan memberikan contoh sedikit cara membuat aplikasi chatting menggunakan Java dengan memanfaatkan protokol yang sudah tidak asing lagi, Jabber/XMPP. Pustaka yang akan aku pakai adalah Smack API, yang merupakan pustaka open source untuk membuat aplikasi chatting berbasis XMPP.
Sebelum teman-teman mulai mengembangkan aplikasi ini, tentunya dibutuhkan server XMPP, dan aku menggunakan Openfire, yang juga bersifat open source. Jadi jika belum ada di komputer, install-lah terlebih dahulu. Kalau sudah ter-install dengan baik, jalankan Openfire.

Kalau server XMPP (Openfire) sudah berjalan, coba lakukan pengetesan apakah server sudah terinstall dengan baik dengan menjalankan aplikasi XMPP client, aku mencoba dengan Pidgin, dengan konfigurasi seperti gambar di bawah ini.

Kalau teman-teman bisa login, berarti server sudah berjalan dengan baik.
Langkah berikutnya adalah membuat aplikasi Java. Berikut adalah program kecil yang berfungsi untuk mengirimkan pesan ke salah satu user Jabber yang sudah terdaftar di server:
/**
* Filename: SendJabberMessage.java
* @author secangkirkopipanas
*/
package jabber;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
public class SendJabberMessage {
public static void main(String[] args) {
try {
// Create a connection to the localhost server on a specific port (default is 5222)
ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
XMPPConnection conn = new XMPPConnection(config);
conn.connect();
conn.login("secangkirkopipanas", "password");
ChatManager chatmanager = conn.getChatManager();
Chat newChat = chatmanager.createChat("secangkirkopipanas@localhost", new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: " + message);
}
});
newChat.sendMessage("Hello World!");
} catch (XMPPException xe) {
xe.printStackTrace();
}
}
}
Kompilasi code di atas, dan jalankan. Jangan lupa untuk menjalankan aplikasi client terlebih dahulu untuk melihat hasilnya. Berikut hasil yang diperoleh jika menggunakan Pidgin:

Tidak sesulit yang dibayangkan, bukan? Good luck ya, semoga berhasil.
Integrasi PHP Web Services dan J2ME Menggunakan KSOAP2
Mungkin temen-temen sudah sering mendengar istilah Web Services khan? Nah, dengan menggunakan teknologi ini, ternyata mimpi kita untuk membangun aplikasi multi-platform bisa menjadi kenyataan.
Kali ini aku akan menjelaskan cara mengintegrasikan teknologi PHP dan J2ME menggunakan teknologi Web Services. Pada sisi PHP, aku menggunakan pustaka NuSOAP, sedangkan di J2ME aku menggunakan pustaka KSOAP2.
Berikut code PHP untuk membangun server Web Services menggunakan NuSOAP (aritmatika.php):
<?php
// include NuSOAP library
require_once('nusoap-0.7.3/lib/nusoap.php');
// Create Web Service Server
$server = new soap_server;
$server->configureWSDL('aritmatikawsdl', 'urn:aritmatikawsdl');
// Register Services (Add)
$server->register('add', // method name
array('num1' => 'xsd:string', 'num2' => 'xsd:string'), // input parameters
array('result' => 'xsd:string'), // output parameters
'urn:aritmatikawsdl', // namespace
'urn:aritmatikawsdl#add', // soapaction
'rpc', // style
'encoded', // use
'Add num1 and num2' // documentation
);
// Define Services
function add ($num1, $num2) {
return $num1 + $num2;
}
// Register Services (Substract)
$server->register('substract', // method name
array('num1' => 'xsd:string', 'num2' => 'xsd:string'), // input parameters
array('result' => 'xsd:string'), // output parameters
'urn:aritmatikawsdl', // namespace
'urn:aritmatikawsdl#substract', // soapaction
'rpc', // style
'encoded', // use
'Substract num1 and num2' // documentation
);
// Define Services
function substract ($num1, $num2) {
return $num1 - $num2;
}
$server->service($HTTP_RAW_POST_DATA);
?>
Berikut code J2ME untuk membangun client Web Services menggunakan KSOAP2:
package org.secangkirkopipanas.me.nusoap;</code>
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import org.ksoap2.*;
import org.ksoap2.transport.*;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.xmlpull.v1.XmlPullParserException;
/**
* @author secangkirkopipanas
*/
public class NuSOAPClient extends MIDlet {
private Display display;
private String url = "http://localhost:5000/php/nusoap-service/aritmatika.php";
private TextBox textbox = null;
public NuSOAPClient() {
display = Display.getDisplay(this);
}
public void startApp() {
try {
testWebService();
} catch (Exception ex) {
System.out.println(ex);
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void testWebService() throws Exception {
StringBuffer stringBuffer = new StringBuffer();
TextBox textBox = null;
// First WebService - echos name that is passed in, in this case 'Robertus Lilik Haryanto'
String method = "add";
SoapObject client = new SoapObject(url, method);
client.addProperty("num1", "5");
client.addProperty("num2", "5");
HttpTransport transport = new HttpTransport(url);
// Creating the Soap Envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = client;
// Call the WebService
try {
transport.call(method, envelope);
} catch(XmlPullParserException io) {
System.err.println(io);
}
// Format the Result
String result = envelope.getResponse().toString();
stringBuffer.append(result);
// display results in textbox
textBox = new TextBox("Hasil dari 5 + 5 adalah", stringBuffer.toString(), 1024, 0);
display.setCurrent(textBox);
}
}
Jika temen-temen sudah berhasil, kompilasi source code di atas. Temen-temen akan melihat hasil dari aplikasi J2ME seperti gambar berikut:

Semoga temen-temen berhasil dalam mengembangkan aplikasi ini.
Good luck!
Kirim SMS dari SMSLib 3.3.0 ke MIDlet Menggunakan Port
Seringkali kita melihat banyak layanan SMS yang digembor-gemborkan pada media iklan. Dibandingkan dengan GPRS, SMS memang lebih sering digunakan berhubung dapat digunakan di kawasan terpencil sekalipun, walaupun dihitung dari segi biaya jauh lebih mahal dari koneksi GPRS. Hal tersebut dikarenakan banyak BTS (Base Transceiver Station) dari operator GSM maupun CDMA hanya menyediakan layanan untuk telepon dan SMS saja. Selain itu SMS juga bisa dengan mudah digunakan walaupun menggunakan mobile device yang lama sekalipun (baca: JADUL).
Di teknologi J2ME, SMS juga bisa digunakan sebagai format data antar aplikasi J2ME, bahkan dengan teknologi lain. Berdasarkan dari arsitektur paket SMS yang ada pada J2ME (JSR 120, JSR 205), aplikasi MIDlet yang menggunakan media SMS harus membuka port jika aplikasi tersebut berfungsi sebagai server (penerima SMS), mirip dengan konsep socket yang terdiri dari IP Address dan Port. Berbeda dengan SMS pada umunya yang tidak menggunakan port.
Tetapi jangan terlena dulu, dengan menggunakan SMSLib (versi yang aku gunakan, SMSLib-3.3.0), temen-temen bisa membuat aplikasi untuk mengirimkan SMS ke MIDlet menggunakan port. Bagian yang perlu diperhatikan pada saat pengiriman SMS yaitu:
Service srv;
OutboundMessage msg;
OutboundNotification outboundNotification = new OutboundNotification();
srv = new Service();
SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM4", 57600, "SonyEricsson", "W660i");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
gateway.setOutboundNotification(outboundNotification);
srv.addGateway(gateway);
srv.startService();
// Send a message synchronously.
msg = new OutboundMessage("+628170080078", "Hello guys!");
<strong>msg.setEncoding(MessageEncodings.ENC7BIT);
msg.setSrcPort(0);
msg.setDstPort(50000);</strong>
srv.sendMessage(msg);
System.out.println(msg);
System.out.println("Now Sleeping - Hit <enter> to terminate.");
System.in.read();
srv.stopService();
Kemudian code di MIDlet yaitu:
smsPort = getAppProperty("SMS-Port"); // 50000
String smsConnection = "sms://:" + smsPort;
if (smsconn == null) {
try {
smsconn = (MessageConnection)
Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
Aku sudah mencoba dengan handphone K618 baik SMS Gateway maupun aplikasi MIDlet (kirim ke diri sendiri), dan bisa berjalan dengan lancar. Bagaimana dengan temen-temen?
Good luck ya!