animasi blog
Animasi Blog

Senin, 30 Desember 2013

Erlang Pograming




Tentang Erlang
Tulisan ini sedikit untuk memberikan gambaran tentang Erlang. Erlang adalah bahasa pemrograman sekaligus nama peranti pengembangannya. Erlang adalah software bebas dan bisa diperoleh di website Erlang. Erlang didesain oleh Joe Armstrong dan kebanyakan digunakan di berbagai proyek telekomunikasi dari Ericsson. Nama Erlang diambil dari 2 hal yaitu Ericsson Language serta nama orang (A. K Erlang). Erlang kebanyakan digunakan pada aplikasi yang bersifat Fault-Tolerant, Real Time, dan Concurrent. Erlang juga mendukung pengembangan aplikasi untuk SMP (Symmetric MultiProcessing) sejak rilis R11B (bulan mei 2006).
Versi Software
Tulisan ini menggunakan versi R13B (rilis 21 April 2009). Erlang tersedia untuk versi Windows (binary) dan versi source code. Beberapa distribusi Linux (dan BSD?) menyertakan Erlang ke dalam masing-masing distro (diantaranya adalah Arch Linux, Fedora, CentOS, dan lain-lain). Jika memilih menggunakan paket dari distro maka bisa digunakan mekanisme instalasi (yum, pacman, apt-get, etc) dari berbagai distro tersebut. Tulisan ini akan menggunakan distribusi source code.
Untuk bisa mengkompilasi, diperlukan paket development tools (gcc toolchains, serta berbagai pustaka dan paket software lainnya). Untuk mengkompilasi Erlang menjadi paket binari diperlukan berbagai paket berikut (beberapa merupakan paket opsional, tergantung parameter pada saat kompilasi):
  • Perl 5
  • GNU m4
  • ncurses
  • OpenSSL
  • Sun Java jdk-1.5.0
  • X Window
  • sed
  • Flex
Instalasi
Ada 1 paket source code yang harus diambil dan ada 2 dokumentasi (HTML dan man) yang sifatnya opsional. Semua distribusi ini bisa diperoleh di:
Untuk keperluan ini, Erlang diasumsikan diinstall di direktori /opt/software/erlang (buat dulu direktori ini jika belum ada).
Berikut adalah langkah-langkah untuk instalasi:
  1. tar -xzvf otp_src_R13B.tar.gz
  2. cd otp_src_R13B
  3. ./configure –prefix=/opt/software/erlang –enable-smp-support –enable-hipe
  4. make
  5. make install
Hasil dari langkah tersebut adalah:
[bpdp@bpdp-arch otp_src_R13B]$ ls -la /opt/software/erlang
total 16
drwxr-xr-x 4 bpdp users 4096 2009-04-22 06:49 .
drwxr-xr-x 9 bpdp users 4096 2009-04-22 07:02 ..
drwxr-xr-x 2 bpdp users 4096 2009-04-22 06:49 bin
drwxr-xr-x 3 bpdp users 4096 2009-04-22 06:49 lib
[bpdp@bpdp-arch otp_src_R13B]$
Keterangan:
  • bin adalah direktori tempat link ke berbagai script executable
  • lib/erlang merupakan direktori utama tempat Erlang diinstall
Konfigurasi Environment Variables
Supaya instalasi Erlang dikenali setiap kali login, letakkan baris-baris berikut pada $HOME/.bashrc
E_HOME=/opt/software/erlang
PATH=$PATH:$E_HOME/bin
MANPATH=$PATH:$E_HOME/lib/erlang/nan
export PATH
export MANPATH
Instalasi Dokumentasi
Dokumentasi harus diletakkan pada lokasi instalasi dari Erlang (/opt/software/erlang/lib/erlang). Berikut ini adalah cara instalasi dokumentasi:


  
1.  cd /opt/software/erlang/lib/erlang



  
2.  tar -xzvf /path/to/otp_doc_man_R13B.tar.gz




Let’s Try Erlang!
Untuk mencoba Erlang, berikut akan digunakan salah satu contoh untuk mencari fakturial yang diambil dari manual Erlang. Source code disimpan dalam file tut1.erl berikut ini:
-module(tut1).
-export([fac/1]).

fac(1) ->
1;
fac(N) ->
N * fac(N - 1).
File source code dari Erlang akan dikompilasi menjadi file .beam yang akan dijalankan oleh Erlang VM. Berikut adalah langkah untuk mengkompilasi dan menggunakan modul yang telah terkompilasi tersebut (ini hanya sebagai gambaran awal saja):
[bpdp@bpdp-arch erlang]$ erl
Erlang R13B (erts-5.7.1) [/source]

 [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.1  (abort with ^G)
1> c(tut1).
{ok,tut1}
2> tut1:fac(4).
24
3>
User switch command
--> q
[bpdp@bpdp-arch erlang]$
Untuk keluar dari Eshell, tekan [Ctrl]-G kemudian tekan q.

Pemrograman Fungsional



Secara umum, bahasa pemrograman dapat dikelompokkan berdasarkan struktur pemrogramannya, terutama dalam mengimplementasikan suatu ekspresi. Jika setiap ekspresi selalu dinyatakan dalam bentuk fungsi, maka bahasa pemrograman ini disebut sebagai functional programming. Prinsip utama dari functional programming (FP) adalah bahwa nilai suatu ekspresi hanya tergantung kepada nilai sub-ekspresinya. Nilai ekspresi seperti a + b hanya tergantung kepada nilai a dan nilai b. Prinsip ini menghilangkan efek samping dalam ekspresi sehingga FP dapat disebut sebagai pemrograman tanpa assignment.
Bahasa fungsional pada umumnya, dan LISP pada khususnya, memainkan peranan penting dalam definisi bahasa. Sebuah definisi bahasa harus ditulis ke dalam notasinotasi, disebut meta-bahasa(meta-language) atau bahasa yang didefinisikan (defining language), dan bahasa yang didefinisikan cenderung menjadi fungsional. Dalam kenyataannya, implementasi LISP pertama dimulai, ketika LISP digunakan untuk mendefinisikan dirinya sendiri.
Konsep dasar FP berasal dari LISP. LISP dirancang oleh John McCarthy tahun 1958, mungkin LISP adalah bahasa tertua kedua, setelah fortran. Diyakini LISP sebagai penyedia pertama rekursi, kelas-utama fungsi, garbage collection, dan sebuah definisi 2 bahasa formal (dalam LISP itu sendiri). Implementasi LISP juga mendorong ke arah lingkungan pemrograman terintegrasi, yang menggabungkan editor, interpreter dan debugger.
LISP menggunakan notasi prefiks dengan tanda kurung. Jadi, aritmetika seperti 5 * 7 ditulis sebagai (* 5 7)
Contoh program sederhana dalam pemrograman List :
Misalkan kita ingin membuat fungsi untuk menentukan bilangan terbesar dari 2 buah bilangan. Maka program LIST nya adalah sebagai berikut :
(define (maks a b)
(if (> a b) a b
)
)
Berikut cara menjalankannya :
> (maks 5 6)
6
Contoh lain dengan menggunakan Scheme :
1. Menghitung jumlah suatu elemen dalam list
(define (hitung p q)
(if (null? q) 0
(if (equal? (modulo (car q) p) 0)
(+ 1 (hitung p (cdr q)))
(hitung p (cdr q))
)
)
)
Hasil compile :
Description: scheme 1
2. Membentuk sebuah list dengan elemen dari 1 sampan i
(define (bentuk a)
(if (equal? a 0) null
(append (bentuk (- a 1)) (list a))
)
)
Hasil compile :
Description: scheme2
3. Memasukkan sebuah elemen ke dalam list
(define (insert p q r)
(if (equal? p 0)
(cons q r)
(cons (car r) (insert (- p 1) q (cdr r)))
)
)
hasil compile :
Description: scheme 3
4. Mengambil semua elemen kecuali elemen terakhir
(define (ambil a)
(if (null? (cdr a)) null
(cons (car a) (ambil (cdr a)))
)
)
Hasil compile :
Description: scheme 4
5. Menampilkan isi dari tiap elemen kecuali elemen pertama dan terakhir
(define (tengah a)
(if (null? (cddr a)) null
(cons (cadr a) (tengah (cdr a)))
)
)
Hasil compile :
Description: scheme 5
6. Menghapus elemen yang memiliki nilai sama dengan sebelum/setelahnya dari sebuah list
(define (hapus a)
(if (null? a) null
(if (null? (cdr a)) a
(if (equal? (car a) (cadr a))
(hapus (cdr a))
(cons (car a) (hapus (cdr a)))
)
)
)
)
Hasil compile :
Description: scheme 6
7. Menghitung jumlah elemen yang habis dibagi oleh suatu bilangan tertentu
(define (hitung a b)
(if (null? b) 0
(if (equal? (modulo (car b) a) 0)
(+ 1 (hitung a (cdr b)))
(hitung a (cdr b))
)
)
)
Hasil compile :
Description: scheme7
8. Menyisipkan sebuah elemen dengan posisi tertentu dalam sebuah list
(define (sisip a b c)
(if (equal? c 1)
(cons b a)
(cons (car a) (sisip (cdr a) b (- c 1)))
)
)
hasil compile :
Description: scheme8
9. Mencari nilai Faktor Persekutuan Terbesar (FPB)
(define (fpb b a)
(if (equal? a 0) b
(fpb a (modulo b a))
)
)
Hasil compile :
Description: scheme 9
10. Menentukan digit paling depan dari suatu bilangan bulat
(define (depan a)
(if (number? a)
(if (< a 10) a
(depan (floor (/ a 10)))
)
0)
)
hasil compile :
Description: scheme10

Selasa, 04 Juni 2013

MARTIN COOPER sang PENEMU PONSEL


Martin Cooper merupakan penemu ponsel yang digunakan lebih dari separuh populasi dunia. Handset pertama dilahirkannya pada 1973 dengan bantuan tim Motorola dengan berat dua kilogram.

Ketika dia menderita di jalanan New York dan membuat panggilan ponsel pertama dari prototipe ponselnya, dia tidak pernah membayangkan perangkat buatannya itu akan sukses suatu saat. Untuk memproduksi ponsel pertama, Motorola memerlukan biaya setara dengan US$1 juta. “Di 1983, ponsel portabel berharga US$4 ribu (Rp36 juta) setara dengan US$10 ribu (Rp90 juta) hari ini,” ujarnya.


Cooper mengatakan bahwa timnya menghadapi tantangan bagaimana memasukkan semua bahan ke dalam sebuah ponsel untuk pertama kalinya. Namun akhirnya desainer industri telah melakukan pekerjaan super dan insinyur menyelesaikan dua kilogram perangkat ponsel pertama.

“Bahan yang sangat penting untuk ponsel pertama adalah baterai dengan berat empat atau lima kali daripada ponsel yang ada saat ini. Waktu hidup baterai 20 menit, tetapi hal tersebut bukan masalah karena pengguna tidak akan menggunakannya selama itu,” ujarnya.

Setelah memproduksi ponsel, tantangan terbesar adalah mengadaptasi infrastruktur untuk mendukung panggilan ponsel mobile. “Tantangannya adalah menciptakan jaringan dengan hanya membutuhkan 3 MHz spektrum, setara dengan lima channel TV yang tersalur ke seluruh dunia,” imbuhnya. Dia dan timnya berharap bahwa suatu hari setiap orang bisa memiliki handset mereka sendiri.

“Faktanya kami bergurau dengan mengatakan di masa depan, ketika seseorang lahir maka harus menandatangani sebuah nomor telepon dan jika tidak menjawab panggilan telepon, maka pengguna akan meninggal. Kami tidak memiliki bayangan dalam waktu 35 tahun separuh manusia di bumi akan memiliki ponsel dan mereka memberikan ponsel kepada orang lain secara cuma-cuma,” katanya.

Pada awalnya ponsel secara resmi dibuat untuk menolong dokter dan staf rumah sakit meningkatkan komunikasi mereka. Cooper berharap perangkat ini akan membantu keamanan dan kebebasan bagi orang-orang, tetapi ternyata implikasi sosial yang muncul melebihi pemahaman Cooper hampir selama empat dekade lalu.

“Kami tidak pernah mengira bahwa hal seperti Facebook dan Twitter dan semua konsepnya akan terjadi di dalam ponsel,” terangnya.

Generasi baru yang disebut sebagai ponsel pintar telah merevolusi industri ponsel mobile dan mengubah cara orang menggunakannya. Teknologi dalam handset telah berubah fokus dari ‘voice’ menjadi fungsi lainnya semacam pemutar media portabel, jelajah web dan kamera.

Dengan mempelajari keseluruhan teknologi, Cooper percaya bahwa operator dan produsen ponsel telah mengubah handheld ponsel menjadi layaknya monster.

“Buku petunjuk saat ini lebih besar dan berat bila dibandingkan dengan ponsel itu sendiri,” ujar Cooper. “Teknologi yang baik adalah intuitif, ponsel memaksa tiap orang menjadi seorang insinyur.”

Tetapi Cooper masih menikmati menguji coba ponsel terbaru, karena dia ingin memahami inovasi yang terjadi di pasar ponsel. “Anda harus menyelam ke dalam produk dan menggunakannya untuk lebih memahami, itulah mengapa saya memiliki sebuah ponsel baru setiap satu atau dua bulan,” ujar Cooper.

Seiring dengan perkembangan ponsel ke generasi ke-empat, dengan fitur baru di setiap pembaruannya, penemu ponsel tersebut mengatakan bahwa handset di masa depan harus bertujuan meningkatkan kualitas kehidupan pengguna. “Teknologi membuat hidup lebih baik, lebih nyaman, aman, mendidik, menghibur dan sebagian besar membuat lebih produktif dan sehat,” ujar Cooper.

Dalam terminologi pengembangan fisik ponsel yang telah mengecil dari awalnya seukuran batu bata, dia percaya bahwa pengguna masa depan akan bisa berbagi dengan perangkat tersebut.

“Ponsel dalam jangka panjang akan bisa dimasukkan ke bawah kulit belakang telinga dengan komputer canggih yang akan membuat kerja lebih keras,” tegasnya.
sumber: http://isi-bumi-kita.blogspot.com


Senin, 20 Mei 2013

Pengertian Dan Contoh Progam J2ME


J2ME merupakan sebuah versi yang direduksi dari Java API dan Java Virtual Machine (JVM) yang didesain untuk dapat dioperasikan dalam komputer dan mikrokomputer. J2ME diarahkan untuk diaplikasikan pada piranti komputasi kecil seperti handphone, PDA, smartphone, dll.
Untuk mendukung berbagai macam piranti ini, J2ME memiliki konfigurasi dan profil yang mendefinisikan kelas Java API yang dapat digunakan oleh aplikasi. J2ME sendiri pada dasarnya terdiri dari tiga buah bagian, yaitu konfigurasi, profil dan paket-paket opsional.

Konfigurasi merupakan bagian yang berisi JVM dan beberapa library kelas lainnya. Hanya ada dua macam konfigurasi yang disediakan oleh Sun Microsystem, yaitu:
• Connected Limited Device Configuration (CLDC), bersifat pribadi yaitu piranti yang kadang-kadang terhubung dengan jaringan. Konfigurasi ini banyak digunakan dalam aplikasi Java pada perangkat komunikasi mobile kita seperti handphone, PDA, dll.
• Connected Device Configuration (CDC), bersifat terus-menerus yaitu piranti yang terus menerus terhubung dengan jaringan.
Profil merupakan bagian perluasan dari konfigurasi. Artinya, selain kumpulan kelas yang terdapat pada konfigurasi, terdapat juga kelas-kelas khusus yang didefinisikan di dalam profil. Dengan kata lain profil membantu menyediakan kelas-kelas yang tidak terdapat pada level konfigurasi. Salah satu profil yang sangat umum digunakan adalah profil MIDP (Mobile Information Device Profile) yang disediakan oleh Sun Microsystem.

http://www.wattpad.com/88935-Tutorial-membuat-program-java-J2ME-di-HP

J2ME sendiri adalah teknologi dari Java programming language yang di khususkan untuk perangkat mobile seperti Handphone, Pocket PC dan apa lagi yah. Pokoknya buat perangkat kecil yang sering dibawa kemana-mana itu lho. J2ME sebenarnya sama dengan pemrograman menggunakan java sendiri, hanya saja dalam J2ME ada beberapa fungsionalitas yang ditambah dan dikurangi dan di sesuaikan untuk pemrograman perangkat mobile.

Tentunya untuk bisa membuat game di HP kita harus sudah biasa dulu menggunakan pemrograman dengan java, disini saya tidak akan mengulas bahasa pemrograman java -mungkin lain kali dalam postingan yang berbeda- saya mengharapkan anda sudah memiliki pengetahuan java sebelumnya. Disini saya hanya akan memberikan pengetahuan mengenai alat yang digunakan dalam membuat program java di HP dan konsepnya.

Untuk alatnya saya menggunakan IDE(Integrated Development Environment) NetBeans versi 6 yang bisa di download gratis di sini, pilih NetBeans yang sudah termasuk Mobility Pack. Agar kita bisa langusng menulis kode program tanpa harus menginstal macem-macem lagi.

Setelah anda menginstall IDE NetBeans, segera jalankan NetBeans nya. Untuk membuat projek baru pilih File-New Project.

Pilih MIDP Application dan tekan Next.
Input Project Name yang sesuai dengan nama project anda dan hilangkan centang di Create Hello Midlet. Tekan Next
Ini adalah layar untuk menentukan target perangkat yang akan anda buat aplikasinya. Pada baris Emulator Platform adalah pilihan emulator yang anda Install di computer anda, untuk saat ini anda hanya menginstall emulator bawaan dari NetBeans anda. Setelah anda merasa perlu menginstall emulator platform untuk spesifik dari vendor lain seperti Nokia, Sony Ericsson dan Motorola anda dapat mengubahnya disini.

Device adalah perangkat emulator atau HP yang nantinya akan anda jalankan di computer anda, dalam menjalankan program yang akan anda buat. Apabila nantinya anda menginstal emulator platform dari vendor lain anda akan bisa menggunakan HP spesifik dari vendor tersebut.

Device Configuration dan Profile adalah spesifik kemampuan dari paket perangkat yang akan anda jadikan target aplikasi anda, sebagai contoh saya punya HP K608 itu mempunyai spesifikasi CLDC 1.1 dan MIDP 2.0 artinya HP saya bisa menjalankan program dengan paket yang ada di CLDC 1.1 dan MIDP 2.0. Untuk lebih lanjut mengenai perangkat yang anda jadikat target riset lah dahulu dengan melihat spesifikasi HP atau perangkat target anda.
Artikel ini menjelaskan tentang cara memulai membuat aplikasi J2ME (aplikasi Java untuk perangkat kecil, seperti selular, PDA dan lainnya) tanpa menuliskan kode kode programming (source-code) sedikitpun, karena artikel ini ditujukan kepada programmer yang belum pernah membuat aplikasi J2ME, mungkin tidak sedikit programmer desktop PC yang merasa terlalu sulit untuk membuat aplikasi J2ME untuk selular, mudah mudahan artikel singkat ini bisa memberikan penjelasan yang cukup dan memberikan semangat yang positif untuk memulai membuat aplikasi J2ME.

Membuat aplikasi J2ME tidak memerlukan banyak software yang rumit atau besar, salah satu software yang pasti diperlukan adalah J2SE SDK/JDK, dalam J2SE SDK/JDK ini terdapat runtime dan library untuk program Java secara umum termasuk juga untuk J2ME, pada saat artikel ini ditulis telah ada J2SE SDK v1.4.2.

Untuk menulis source-code J2ME, maka kita memerlukan sebuah J2ME IDE (integrated development environment), ada beberapa pilihan IDE yang diantaranya adalah Netbean, Sun One Java Studio Mobility, CodeWarrior dan notepad (atau text editor lainnya), untungnya semua software IDE yang disebutkan ini dapat di download gratis di website resmi masing masing perusahaan, jadi untuk membuat program J2ME maka pihak developer tidak perlu mengeluarkan uang sama sekali untuk membeli software IDE.

Pada artikel ini yang diulas adalah IDE dari Netbean v4.1 dengan tambahan Netbean Mobility Pack v4.1, tambahan ini diperlukan untuk membuat aplikasi J2ME, karena jika hanya dengan Netbean v4.1 hanya dapat membuat aplikasi Java saja, Netbean Mobility Pack adalah module-module aplikasi J2ME dan emulator device untuk testing dalam PC. IDE lainnya boleh dicoba tapi dianjurkan memakai Netbean v4.1 karena versi ini sangat mudah dioperasikan dan dirasakan cukup cepat dibanding IDE lainnya dalam hal loading, compiling, running dan debugging.
Langkah yang dilakukan oleh untuk memulai pembuatan aplikasi J2ME adalah:

1. Install J2SE SDK v1.4.2 (50MB)
2. Install Netbean v4.1 (47MB)
3. Install Netbean Mobility Pack v4.1 (18MB)
4. Jalankan Netbean v4.1, buat projek baru dan pilih kategori “Mobile” dan tipe project “Mobile Application”
5. Pilih lokasi tempat menyimpan file-file project ini, “Set as Main Project” dan “Create Hello MIDlet” jangan dirubah (tercentang)
6. Pada halaman “Platform selection” pilih “Device Configuration” = CLDC-1.0 dan “Device Profile” = MIDP-1.0 (versi terkecil yang dapat digunakan dalam semua selular yang support J2ME)
7. Setelah semua selesai (tempate telah dibuat), jalankan aplikasi ini dengan menekan tombol F6 (Run Main Project).
8. Lalu project ini akan dicompile dan emulator akan keluar, gunakan mouse untuk mengoperasikan emulator tersebut, dengan menekan nekan tombol keypad dalam emulator tersebut mirip seperti selular biasa.
9. Pada saat ini, aplikasi “Hello World” kita telah selesai dibuat dan bisa langsung di tes pada selular yang sebenarnya.
Langkah-langkah untuk testing aplikasi yang telah dibuat, yaitu :
1. Selular phone yang mendukung J2ME (setidaknya MIDP v1).
2. Alat untuk memindahkan aplikasi (.JAR dan .JAD) yang sudah dibuat kedalam selular, dapat berupa kabel data, infrared, bluetooth atau card reader/writer jika selular yang ingin digunakan sebagai test device memiliki slot memory external, seperti MMC, MemoryStick dan lainnya. Cara pemindahan aplikasi J2ME sama seperti cara mengisi ringtone, image dan lainnya.
3. Software untuk memindahkan aplikasi J2ME ke dalam selular, bisa menggunakan aplikasi yang dibuat oleh perusahaan lain (bukan buatan vendor selular tersebut), seperti MobiMB yang berukuran kecil, mudah dan cepat.

Dalam artikel ini, selular yang digunakan sebagai test adalah Nokia 6015 (memakai kabel data USB) dan Nokia 9500 (memakai card reader/writer untuk mengcopi file .JAR dan .JAD ke dalam MMC). File - file yang perlu ditransfer kedalam selular adalah file .JAR (dan .JAD jika diperlukan) yang berada dalam direktori “DIST”, lokasi direktori ini telah ditentukan pada langkah ke 5.

Kita telah selesai membuat aplikasi J2ME “Hello World”, untuk merubah text atau menambah objek - objek lainnya seperti TextBox, RadioBox, tombol- tombol menu dan lainnya dapat kita lakukan dalam Netbean, juga tanpa perlu menuliskan source-code karena Netbean v4.1 sudah memiliki fungsi yang cukup bagus dan mudah dengan drag-and-drop mirip seperti programming Visual Basic dan lainnya yang hanya memerlukan perubahan pada properti-properti objek tersebut jika diperlukan seperti kata - katanya, lebar tingginya dan lain lain.

Memang aplikasi yang telah dibuat ini tidak begitu berguna, tapi bagi para programmer yang telah menguasai bahasa pemrograman Java maka tidaklah sulit untuk membuat aplikasi atau games untuk selular yang mungkin bisa dengan mudah dijual kepada perusahaan perusahaan mobile content aggregator karena bisnis mobile content cukup lumayan saat ini.
Pilihan J2ME untuk membuat aplikasi/games selular sangat bagus, karena ukuran filenya kecil (file JAR Hello World yang telah kita buat ini hanya kurang lebih 1 kilobyte saja), bahasa Java relatif lebih mudah dipelajari dibanding C/C++ untuk Symbian, Palm, Pocket PC dan Linux, dan alasan yang terakhir adalah software IDE untuk J2ME versi sekarang ini sangat baik dan lebih mudah digunakan.

Kemungkinan jika semua langkah yang dijelaskan diatas dicoba dengan sama persis oleh para pemula, maka mungkin hanya membutuhkan waktu kurang dari 10 menit hingga selesai dimasukan dalam selular, pihak editor hanya membutuhkan kurang dari 3 menit untuk menyelesaikannya.


Sumber:





Contoh Progam J2ME

Java merupakan bahasa pemrograman yang diciptakan oleh Jamer Gosling pada tahun 1996 dan mengklaim dirinya mengimplementasikan konsep PBO. Sampai saat ini pengembangan Java berada dibawah Sun Microsystems walaupun akhirakhir ini Java mulai di opensourcekan. Java dapat diimplementasikan pada berbagai aspek kehidupan mulai dari komputer mainframe, PC, telepon genggam/HP, PDA, smart card sampai dengan perlengkapan rumah tangga seperti mesin cuci dan TiVo.

Java menjanjikan sifat platform independent yang berarti program cukup ditulis satu kali dan dicompile satu kali maka akan dapat dijalankan di mesin lain tanpa memerlukan pengubahan kode.
Sampai saat ini Java terbagi menjadi empat kategori yaitu Java 2 Platform Standard Edition (J2SE) untuk aplikari desktop, Java 2 Platform Enterprise Edition (J2EE) untuk aplikasi server kelas enterprise yang biasanya berskala besar, Java 2 Platform Micro Edition (J2ME) untuk aplikasi pada perangkat yang memiliki tingkat komputasi tidak setinggi komputer, misalnya telepon genggam, PDA dan TiVo, dan yang terakhir adalah Java Card yang digunakan untuk pemrograman smart card berbasis Java.

package HAHA;
import java.util.Date;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
/* @author Fer */
//Class Praktikum1 Merupakan class utama, dengan meng extends MIDlet dan Mengim
//plementasikan command listener
//Didalam class ini terdapat constructor serta public puclic pendukungnya
//seperti command action, starapp
public class Praktikum1 extends MIDlet implements CommandListener {
private Display tampil;
private Form Home;
private Form Lampirandata;
private Form Lampiranhasil;
private Form help;

private TextBox TB;
private List List;

private StringItem Nama, NIM, Alamat, TmptLhr,
TglLhr, Email, Prodi, jeniskelamin, hoby;

private Item Bantuan;
private Item Link;
private Item bilang;
private Item home, penjelasan;

private DateField date;

private TextField TextNama;
private TextField TextNim;
private TextField TextAlamat;
private TextField TextTempatlahir;
private TextField TextTanggallahir;
private TextField TextEmail;

private Command Keluar;
private Command Kembali;
private Command Bantu;
private Command Kembaliawal;
private Command proses;
private Command ProsesTB;
private Command TampilList;

private Ticker ticker;
private ChoiceGroup Pilihprodi;
private ChoiceGroup Pilihhoby;
private ChoiceGroup Pilihkelamin;
private int choiceGroupIndex;
private Image img,img2, img3;
private boolean midletPaused;

Program diatas Merupakan Program untuk Pendeklarasian class, disini saya hanya memakai satu class, class ini meng extends MIDlet serta Mengimplementasikan Command Listener, Nantinya didalam class ini juga akan terdapat berbagai Construcor serta Subclass dari class induk.

public void startApp() {

tampil = Display.getDisplay(this);

//Command merupakan code untuk medukung commandlistener, nantinya
//command akan muncul discreen, dan digunakan untuk operasi atau proses
ticker = new Ticker ("Pemrograman Visual Ferdian Aji Prasetya");
Keluar = new Command("Keluar", Command.EXIT, 0);
Kembali = new Command("Kembali", Command.BACK, 0);
proses = new Command("Proses/Lanjut", Command.SCREEN,0);
Bantu = new Command ("Bantuan", Command.SCREEN,1);
Kembaliawal = new Command("Kembali Awal", Command.SCREEN,0);

ProsesTB = new Command("Proses TB", Command.SCREEN,1);
TampilList = new Command("Tampil List", Command.SCREEN, 0);

//FORM HOME
//Form ini akan tampil pada saat tampilan awal, dengan menambahkan Stringitem serta
//Image, Serta juga menambahkan fungsi ticker, disini terdapat 4 Command yang
//dijalankan
//==============================================================================
try {
img2=Image.createImage("/HAHA/b.jpg");

} catch (Exception e){}
Home = new Form ("Aplikasi J2ME");
home = new StringItem(null,"Selamat Datang...\nBerikut Menu Yang di Sajikan:");
penjelasan = new StringItem(null,""
+ "Untuk Memulai -> Pilih Menu - proses/Lanjut\n"
+ "Untuk Bantuan -> Pilih Menu - Bantuan\n"
+ "Untuk Keluar -> Pilih Keluar\n");
StringItem gaul= new StringItem(null,"------=TEKNIK KOMPUTER 2010=------");

Home.setTicker(ticker);
Home.append(home);
Home.append(penjelasan);
Home.append(img2);
Home.append(gaul);
Home.addCommand(Keluar);
Home.addCommand(proses);
Home.addCommand(Bantu);
Home.addCommand(TampilList);

Home.setCommandListener(this);
//==============================================================================

Nah, Subclass ini digunakan untuk memulai sebuah program ketika program dijalankan, ini merupakan Subclass dari MIDlet.
/FORM UNTUK INPUT
//==============================================================================
//Script ini digunakan untuk mengimpor gambar dari disk penyimpanan kita
//namun sebelumnya, agar mudah foto sudah saya simpan di file project untuk
//percobaan ini, yaitu di folder src
try {
img=Image.createImage("/HAHA/coba.png");

} catch (Exception e){}
//------------------------------------------------------------------------------

//TextField digunakan untuk menampung teks dan mengedit Teks
TextNama = new TextField("Nama : ", "", 30, TextField.ANY);
TextNim = new TextField("NIM : ", "", 30, TextField.ANY);
TextAlamat = new TextField ("Alamat : ", "", 30, TextField.ANY);
TextTempatlahir = new TextField("Tempat Lahir : ", "", 30, TextField.ANY);
TextTanggallahir = new TextField("Tanggal Lahir : ", "", 30, TextField.ANY);
TextEmail = new TextField("E-mail : ","",30, TextField.EMAILADDR);

//------------------------------------------------------------------------------

//Untua menampilkan daftar elemen yang dapat dipilih, hampir sama seperti List
Pilihprodi = new ChoiceGroup("Prodi : ", Choice.POPUP);
//Pilihan yang tersedia, Pilihprodi.append -> menunjukan nantinya isi dari
//append ini digunakan sebagai daftar pilihan
Pilihprodi.append("Teknik Komputer", null);
Pilihprodi.append("Manajemen Informatika", null);
Pilihprodi.append("Rekam Medik", null);
Pilihprodi.append("Gizi Klinik", null);
Pilihprodi.append("Teknik Produksi Benih", null);
Pilihprodi.append("Teknik Indsutri Pangan", null);
Pilihprodi.append("Teknik Energi Terbarukan", null);

Pilihhoby = new ChoiceGroup("Hoby : ", Choice.EXCLUSIVE);
Pilihhoby.append("Makan", null);
Pilihhoby.append("Tidur", null);
Pilihhoby.append("Ke WC", null);

Pilihkelamin = new ChoiceGroup("Jenis Kelamin : ", Choice.EXCLUSIVE);
Pilihkelamin.append("Laki- Laki", null);
Pilihkelamin.append("Perempuan", null);
Pilihkelamin.append("Tak terdefinisi", null);

//------------------------------------------------------------------------------

//Script dibawah digunakan untuk mengimpor fasilitas dari Gauge
//terdapat berbagai macam variasi, disesuaikan dengan selera masing masing
Gauge IntGauge = new Gauge("Program Sedang Berjalan :\t", false,
Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);

//------------------------------------------------------------------------------
//Script ini digunakan untuk membuat sebuah LINK
//Yang mana LINK ini saya sambungkan ke Form Help
//Bantuan = new StringItem(null,"Anda Butuh Bantuan? Klick");
//Link = new StringItem(null,"Bantuan",Item.HYPERLINK);
//Link.setDefaultCommand(Bantu);

//------------------------------------------------------------------------------

//Script dibawah digunakan untuk mengimpor date, informasi tanggal
//diimpor langsung dari windows
date = new DateField(" NOW : ", DateField.DATE_TIME);
date.setDate(new Date());

//------------------------------------------------------------------------------

//Memberrikan nama pada Form yang akan ditampilkan/ judul
Lampirandata = new Form("Biodata Diri");
//Form akan meng add beberapa komponen, tergantung apa uang ingin ditampilkan

Lampirandata.append(img);
Lampirandata.append(date);
Lampirandata.append(TextNama);
Lampirandata.append(TextAlamat);
choiceGroupIndex = Lampirandata.append(Pilihkelamin);
Lampirandata.append(TextNim);
Lampirandata.append(TextTempatlahir);
Lampirandata.append(TextTanggallahir);
choiceGroupIndex = Lampirandata.append(Pilihhoby);
Lampirandata.append(TextEmail);
choiceGroupIndex = Lampirandata.append(Pilihprodi);
Lampirandata.append(IntGauge);

//Lampirandata.addCommand(Bantu);
Lampirandata.addCommand(Keluar);
Lampirandata.addCommand(proses);
Lampirandata.addCommand(Kembali);
Lampirandata.addCommand(ProsesTB);
Lampirandata.setCommandListener(this);

//==============================================================================

Digunakan Untuk menginputkan Data, disini menggunakan satu buah Form namun disertai atau diappend juga beberapa turunan dari Form Seperti StringItem, GAuge, dan lain lainya.

/FORM UNTUK OUTPUT
//===============================================================================
//membuat string item untuk menampilkan Komponen pada layar, sesuai dengan
//apa yang telah diisikan dan tergantunga pada source nya misal, Nama, NIM dst
Nama = new StringItem ("Nama ::", null);
NIM = new StringItem ("NIM ::", null);
Alamat = new StringItem ("Alamat ::", null);
TmptLhr = new StringItem("Tmp Lahir ::", null);
TglLhr = new StringItem ("Tgl Lahir ::", null);
Email = new StringItem ("Email ::", null);
Prodi = new StringItem ("Prodi ::", null);
hoby = new StringItem ("Hobi ::", null);
jeniskelamin = new StringItem ("Jenis Kel ::", null);
//Form Hasil
Lampiranhasil = new Form("Info Anda");
//Form Hasil meng add komponen dari komponen pada form data, kemudian datanya akan ditampilkan pada
//form hasil

Lampiranhasil.append(img);
Lampiranhasil.append(Nama);
Lampiranhasil.append(Alamat);
Lampiranhasil.append(jeniskelamin);
Lampiranhasil.append(hoby);
Lampiranhasil.append(NIM);
Lampiranhasil.append(TmptLhr);
Lampiranhasil.append(TglLhr);
Lampiranhasil.append(Email);
Lampiranhasil.append(Prodi);

//mengaktifkan command
Lampiranhasil.addCommand(Keluar);
Lampiranhasil.addCommand(Kembali);
Lampiranhasil.addCommand(Kembaliawal);
Lampiranhasil.setCommandListener(this);
//==============================================================================

Disini menggunakan satu buah Form, Form ini nantinya digunakan untuk output, atau menampilkan data yang telah diinput pada Form Input

//FORM PETUNJUK PENGGUNAAN
//==============================================================================

//Form Help untuk memberikan kemudahan akses kepada user ketika program berjalan
help = new Form("Petunjuk Penggunaan");
bilang = new StringItem(null,"Harus Diisi Lengkap\n"
+ "semua biodata Yang tertera\n"
+ "jawab dengan Kejujuran\n"
+ "Sekian Dan Terima Kasih\n\n"
+ "KLICK kembali untuk menuju Form Home\n");
//Digunakan untuk menambahkan beberapa obyek turunan dari form dan display
help.setTicker(ticker);
help.append(bilang);
help.addCommand(Kembali);
help.setCommandListener(this);

//==============================================================================
Sama Halnya seperti Form diatas, namun disini hanya menggunakan Turunan Form Yaitu StringItem, Dimana Agar user bisa menjalankan Aplikasi J2ME ini tanpa harus bingung.
//TextBOX
//==============================================================================
//Disini kita menggunakan TextBox, Obyek yang menjadi turunan langsung
//dari screen, dimana tingkatanya sama dengan screen
//jadi tidak mungkin bisa bila komponen turunan form diinsertkan ke textbox
TB = new TextBox("Hasil","",255,TextField.ANY);
TB.addCommand(Kembaliawal);
TB.setCommandListener(this);

//==============================================================================
TextBox Sama halnya dengan FormOutput, digunakan untuk menampilkan Inputan dari Form Input, namun dalam Bentuk TEXTBOX

//LIST
//==============================================================================
//List tingakatanya sama dengan Form dan Textbox, namun tetap turunan
//dari obyek scree, sehingga komponen turunan Form, serta txtbox sendiri
//tidak bisa ditambahkan, dengan kata lain tidak bisa dalam satu tampilan
try {
img3=Image.createImage("/HAHA/c.jpg");

} catch (Exception e){}
List = new List ("Langkah Program", Choice.IMPLICIT);
List.append("Masuk Program", img3);
List.append("Pilih Menu (Bantuan Atau Proses)", img3);
List.append("Jika Pilih Bantuan, Tampil Form help", img3);
List.append("Jika Proses tampil Lampiran data", img3);
List.append("Isikan data", img3);
List.append("Pilih output TB atau Form", img3);
List.append("Selesai", img3);
List.size();

List.addCommand(Kembaliawal);
List.setCommandListener(this);

//==============================================================================

//menampilkan form LampiranData sebagai tampilan awal
tampil.setCurrent(Home);

List Ini berfungsi Petunjuk Atau Alur Pemakaian Sebuah Program
public void commandAction(Command comman, Displayable displayjeh) {
//Kondisi dari Command Action, disesuaikan dengan Screen yang
//ditampilkan
* if (displayjeh == Home){
if (comman == Keluar){
destroyApp(true);
notifyDestroyed();
}
if (comman == proses){
tampil.setCurrent(Lampirandata);
}
if (comman == Bantu){
tampil.setCurrent(help);
}
if (comman == TampilList){
tampil.setCurrent(List);
}
}
if (displayjeh == Lampirandata){
if (comman == proses){
//Inisialisasi variabel digunakan untuk menyimpan nilai dari type data
String na,ni,al,tmpt,tgl,pro,em,hob,kel = null;
//Kondisi, bila proses program akan memproses Input dari user
//Mengambil data yang diinput user
na = TextNama.getString();
ni = TextNim.getString();
al = TextAlamat.getString();
tmpt = TextTempatlahir.getString();
tgl = TextTanggallahir.getString();
em = TextEmail.getString();
pro = Pilihprodi.getString(Pilihprodi.getSelectedIndex());
hob = Pilihhoby.getString(Pilihhoby.getSelectedIndex());
kel = Pilihkelamin.getString(Pilihkelamin.getSelectedIndex());

//Menampilkan data yang dinputkan user ke variabel yang berbeda
Nama.setText(na);
NIM.setText(ni);
Alamat.setText(al);
TmptLhr.setText(tmpt);
TglLhr.setText(tgl);
Email.setText(em);
Prodi.setText(pro);
hoby.setText(hob);
jeniskelamin.setText(kel);

//Digunakan untuk mengaktifkan command, setelah ditekan, form akan berganti
//ke form hasil
tampil.setCurrent(Lampiranhasil);

}
if (comman == Keluar){
destroyApp(true);
notifyDestroyed();
}
if (comman == Kembali){
tampil.setCurrent(Home);
}
if (comman == ProsesTB){
//Untuk mengambil data yang diinput oleh user, yang di
//masukan dalam teksfield dan choicegroup, kemudian Textbox
//Mengimpornya
TB.setString(TextNama.getString()+"\n"+TextNim.getString()
+"\n"+TextAlamat.getString()+"\n"+TextTempatlahir.getString()
+"\n"+TextTanggallahir.getString()+"\n"+TextEmail.getString()
+"\n"+Pilihprodi.getString(Pilihprodi.getSelectedIndex())+"\n"
+"\n"+Pilihhoby.getString(Pilihhoby.getSelectedIndex())+"\n"
+"\n"+Pilihkelamin.getString(Pilihkelamin.getSelectedIndex()));
tampil.setCurrent(TB);

}
}
if (displayjeh == Lampiranhasil)
if (comman == Kembali){
tampil.setCurrent(Lampirandata);
}
if (comman == Kembaliawal){
tampil.setCurrent(Home);
}
if (comman == Keluar){
destroyApp(true);
notifyDestroyed();
}
if (displayjeh == help){
if (comman == Kembali){
tampil.setCurrent(Home);
}
}
if (displayjeh == TB){
if (comman == Kembaliawal){
tampil.setCurrent(Home);
}
}
if (displayjeh == List){
if (comman == Kembaliawal){
tampil.setCurrent(Home);
}
}
}
}

Command Action, digunakan Untuk mengeksekusi Perintah, dengan membandingkan berbagai kondisi, sesuai screen apa yang ditampilkan, dan command apa yang ditekan

Untuk Gambar Hasil Akhirnya seperti Berikut INI :

 
TAMPILAN PROSES

 

TAMPILAN OUTPUT PADA FORM






TAMPILAN OUTPUT DENGAN TEXT BOX


Sumber:
http://gaulcomputer.blogspot.com/2012/03/program-j2me-sederhana-praktikum1.html

Oleh : Ria Ardiana Septin (1100631031)