INGIN SUKSES

header niko 728 x 90

Rabu, 17 Juni 2009

aplikasi phonebook menggunakan Java





tags: aplikasi gratis, aplikasi java gratis, aplikasi keren, aplikasi phonebook, aplikasi phonebook gratis, aplikasi phonebook java, aplikasi rental film, box.net, contoh aplikasi phonebook java, downlaod aplikasi, download, download java, e'MovieRental, eecchhoo, free aplikasi java, free aplikasi phonebook, free download, Java, java project, movie rental, OpenSource, phonebook, pocong, Swing Make Over, swing styles
by echo

phonebook java Setelah sukses dulu dengan eMovieRental , sekarang saya buat lagi aplikasi yang bernama ePhoneBook :D

Tau dari mana Sukses :D

Yup dari data download eMovieRental yang ada di Box.net

Saat tulisan ini dibuat download eMovieRental udah lebih dari 4700 download :D

Agak kurang percaya juga sich :

image

Diatas itu screen shoot statistik download. Padahal itu diupload tanggal 14 Juli sedangkan sekarang baru akhir Agustus. Hmm baru hampir 2 bulang, ternyata statistik downloadnya bener-bener gede :D

Kembali ke topik!

Sekarang saya buat sebuah aplikasi yang bernama ePhoneBook. Aplikasi ini merupakan aplikasi PhoneBook menggunakan Java. Jadi aplikasi ini gak sekomplek eMovieRental.

Jadi kalo anda gak akan terlalu pusing buat memahami alur program yang saya buat ini :D

image

image

image

Kalo udah penasaran, silahkan download projectnya disini :

http://eecchhoo.wordpress.com/my-project-3/

untuk penggunaannya hampir sama dengan eMovieRental

Semoga Berguna

:D



from → Java Programming

Selasa, 16 Juni 2009

NO smoking



Stop Merokok… Sangat Berbahaya - Ardiz TarakanBanyak orang sadar bahwa merokok dapat membunuhnya. Mereka juga mengetahui merokok menjadi penyebab serangan jantung, stroke , kanker paru-paru dan beberapa penyakit berat lainnya. Namun, para perokok tetap saja tidak peduli dan tetap tersenyum apabila diingatkan dengan ancaman yang setiap saat akan dapat menyiksanya dalam waktu lama, dan bahkan dapat merenggut nyawanya.

Menurut data dari National Health Education, Ministry of Health of Singapore, bahwa 90% kematian karena kanker paru-paru terjadi diantara perokok di Singapura. Penyebab utama kematian di Singapura adalah penyakit jantung. Hasil penelitian membuktikan, 40% kematian karena penyakit jantung sebelum umur 65 tahun berhubungan dengan rokok/perokok. Sementara Stroke menempati peringkat ketiga penyebab kematian di Singapura.

Apakah terbukti bahwa merokok dapat menimbulkan penyakit ?


Stop Merokok… Sangat Berbahaya - Ardiz TarakanSemua Pusat Kesehatan terbesar di dunia setuju bahwa merokok dapat menyebabkan kanker paru-paru, mulut, leher, pancreas, ginjal, kandung kemih, serta menjadi penyebab serangan jantung, stroke, tekanan darah tinggi, dan gangguan pembuluh darah. Juga sebagai penyebab penyakit paru-paru kronik seperti bronchitis dan pembengkakan paru-paru. Perokok lebih sering menderita batuk dan flu, infeksi paru-paru, radang usus, osteoporosis, impotensi dan kemandulan.

Mengapa Rokok Berbahaya ?

Setiap rokok/cerutu mengandung lebih dari 4.000 jenis bahan kimia, dimana 400 dari bahan-bahan tersebut dapat meracuni dan 40 dari bahan tersebut dapat menyebabkan kanker. Ada beberapa contoh zat berbahaya didalam rokok yang perlu di ketahui:

1. Nikotin. Nikotinlah yang menyebabkan ketergantungan. Nikotin menstimulasi otak terus menambah jumlah nikotin yang dibutuhkan. Semakin lama, nikotin dapat melumpuhkan otak dan rasa, meningkatkan adrenalin, yang menyebabkan jantung diberi peringatan atas reaksi hormonal yang membuatnya berdebar lebih cepat dan bekerja lebih keras. Ini berarti jantung membutuhkan lebih banyak oksigen untuk dapat terus memompa. Nikotin juga menyebabkan pembekuan darah lebih cepat dan meningkatkan resiko serangan jantung.

2. Karbon Monoksida. Gas berbahaya pada asap rokok ini seperti yang ditemukan pada asap pembuangan mobil. Karbon monoksida menggantikan sekitar 15% jumlah Oksigen yang biasanya dibawa oleh sel darah merah sehingga jantung siperokok menjadi berkurang suplay oksigennya. Hal ini sangat berbahaya bagi oerang yang menderita sakit jantung dan paru-paru karena akan mengalami sesak napas/napas pendek dan menurunkan stamina. Karbon monoksida juga merusak lapisan pembuluh darah dan menaikan kadar lemak pada dinding pembuluh darah yang dapat menyebabkan penyumbatan.

3. Tar. Tar digunakan untuk melapisi jalan/aspal, pada rokok/cerutu tar-partikel menyebabkan tumbuhnya sel kanker. Sebagian lagi berupa penumpukan zat kapur, nitrosmine dan B-naphthylamine, cadmium dan nikel.

4. DDT. DDT juga terdapat didalam rokok, DDT adalah pestisida untuk membunuh nyamuk dan semut .
5. Arsenik. Arsenik adalah racun pembunuh semut putih dan banyak digunakan pembunuh terkenal.
6. Cadmium. Bahan kimia yang terdapat pada baterai
7. Formaldehyde. Bahan kimia yang biasanya dikenal untuk membalsam mayat
8. Hydrogen Cyanide. Adalah racun yang digunakan untuk hukuman mati pada kamar gas.

9. Naphthalene. Zat mematikan yang terdapat juga pada kapur barus.

10. Polonium-210. adalah Zat Radioaktif.

11. Vinyl chloride. Zat kimia yang digunakan untuk membuat plastic



Apakah merokok membuat ketergantungan ?

Stop Merokok… Sangat Berbahaya - Ardiz TarakanRokok mengandung nikotin yang sama kandungan ketergantungannya dengan heroin atau kokain. Hanya dibutuhkan waktu 10detik bagi nikotin untuk mencapai otak, tempat dimulai reaksinya, yang membuat tubuh dan pikiran seseorang perokok menjadi tergantung terhadap zat tersebut. Orang akan dapat menjadi sangat tergantung setelah merokok beberapa batang. Seseorang perokok akan menemukan dirinya membutuhkan merokok terus menerus untuk menaikan kadar nikotin didalam tubuh. Apabila tidak merokok, seorang perokok akan merasakan perasaan yang tidak nyaman, yang kemunculannya disertai rasa lelah, kesemutan pada tangan, sakit kepala.

Adakah cara merokok aman ?

Tidak ada satupun cara merokok aman. Rokok dengan kandungan tar yang rendah mengandung racun kimia yang sama dengan rokok biasa. Selain itu karena perokok mempunyai ketergantungan dengan nikotin, kandungan tar yang rendah menyebabkan mereka akan menghirup lebih kuat atau merokok lebih dari biasanya. Pada akhirnya, jumlah tar dan nikotin yang masuk kedalam tubuh para perokok tersebut menjadi sama dengan apabila mereka merokok rokok biasa.

Filter rokok dapat menyaring sebagian dari tar dan nikotin, tertapi tidak mengilangkan adanya racun dari rokok yang terisap. Rokok dengan menthol hanya mengubah rasa dari rokok tetapi tidak mengurangi bahaya dari rokok itu sendiri.

Apakah saya akan tetap beresiko apabila rokok tersebut hanya dihirup tanpa menelan asapnya ?

Stop Merokok… Sangat Berbahaya - Ardiz TarakanBanyak zat kimia didalam asap rokok (termasuk nikotin) bisa terserap lewat mulut dan hidung, nikotin bahkan dapat terserap melalui kulit. Asap yang anda tiupkan tetap berada disekeliling udara dan pada saat anda menghela napas berikutnya, asap tersebut langsung terhirup keparu-paru anda. Terlebih banyak perokok yang tidak peduli dan tetap merokok di ruang ber-AC, banyak perokok mengisap tanpa menyadarinya bahwa hal tersebut sama seperti pada saat mereka yang bukan perokok, tetapi berada di ruangan yang sama dengan perokok tersebut.

Apa yang dimaksud dengan perokok pasif dan mengapa berbahaya ?

Seorang perokok pasif adalah orang lain yang menghirup asap dari orang lain yang merokok. Sudah dibuktikan bahwa perokok pasif menderita resiko kesehatan yang sama dengan orang yang merokok. Perokok pasif biasanya menderita iritasi mata, hidung berlendir, sakit tenggorokan dan sakit kepala. Apabila perokok pasif tetap berada di kondisi lingkungan perokok aktif, mereka mempunyai peluang yang lebih besar untuk terkena kanker paru-paru, serangan jantung dan infeksi paru-paru..

Apakah bahayanya bagi anak-anak perokok pasif ?

Anak-anak akan berada dalam keadaan bahaya apabila orang tuanya perokok dan juga merokok dirumah. Pertumbuhan dan perkembangan paru-parunya akan menjadi lambat, mereka akan lebih sering mengalami batuk, flu, dan infeksi seperti pneumonia. Yang berpenyakit asma semakin memburuk atau bagi yang belum pernah mengalami asma, maka penyakit asma akan dapat mengembang. Anak-anak akan mengalami lebih banyak gangguan pada telinga, hidung dan tenggorokan. Pada akhirnya mereka nanti juga akan menjadi perokok sama seperti orang tuanya mencontohkan.

Apa yang terjadi bila wanita merokok saat hamil ?

Pada saat wanita hamil dan merokok, maka zat kimia yang ada akan berpindah dari sang ibu ke darah janin yang dikandungnya. Bayi wanita perokok kemungkinan akan terlahir kekurangan gizi/kekurangan berat badan, premature atau bahkan meninggal. Bayi-bayi tersebut lebih sering meninggal pada tahun pertama kelahirannya. Kalaupun selamat, mereka mempunyai risiko terkena infeksi paru-paru dan keterlambatan /keterbelakangan fisikdan mental. Studi membuktikan, meski wanita hamil tidak merokok, asap yang dihirup dari suami perokok dapat memberikan efek samping kepada janin yang dikandungnya.

Apa keuntungan saya berhenti, setelah merokok bertahun-tahun ?

Apabila perokok berhenti, tubuhnya akan bebas dari nikotin selama delapan jam, dalam kurun waktu satu minggu, banyak efek samping merokok akan menghilangkan. Secara perlahan, tubuh akan memperbaiki sendiri apa yang sudah dirusak tembakau, selama dia belum terkena serangan penyakit ganas sebagai akibat merokok.. Tidak pernah ada kata terlambat untuk berhenti merokok. Perlu diingat, penyesalan tidak pernah berada di awal, khususnya setelah seorang perokok divonis menderita serangan jantung, kanker paru-paru dan stroke.

Cara terbaik berhenti merokok ?

Tidak ada satupun cara terbaik, setiap metode bekerja secara berbeda untuk setiap orang. Satu hal menjadi persamaan semua mantan perokok adalah mereka sangat ingin untuk berhenti merokok. Perlukan tekad dan kemauan sangat keras untuk melawan racun nikotin. Berhenti merokok adalah upaya mengalahkan diri sendiri, kenapa anda tidak mencoba, demi diri sendiri, istri/suami dan keluarga serta anak-anak yang kita cintai dan sayangi. Hidup yang singkat ini jangan kita jalani dengan menyedihkan atau dengan orang yangmenyedihkan, perokok itu orang yang menyedihkan. Selamat berusaha, Good Luck! Salam saya mantan perokok yang sudah sadar selama 15 tahun!

Senin, 01 Juni 2009

Internal Dependency dengan Ivy

Pada artikel sebelumnya, kita telah menyimpan artifact modul person-model di shared repository melalui mekanisme scp dengan private key. Pada artikel ini, kita akan menggunakan artifact person-model tersebut dalam modul person-dao-api. Pengambilan artifact dilakukan melalui mekanisme yang sama, yaitu scp dengan private key.


Berikut struktur folder modul person-dao-api.



Kita memiliki folder src yang berisi source code class PersonDao.java, yang isinya sebagai berikut.
view plaincopy to clipboardprint?
package com.artivisi.tutorial.ivy.dao;

import java.util.List;

import com.artivisi.tutorial.ivy.model.Person;

public interface PersonDao {

/**
* saves Person object into database.
* If object is already exists (denoted by not-null ID field),
* the existing record with the corresponding ID is updated.
* If the object is new (denoted by null ID field),
* new record is inserted.
*
* This method also set the ID field for new record.
* */
public void save(Person person);

/**
* fetch all person object in database.
* @return List of all person
* */
public List getAll();

/**
* fetch Person object with the speficied ID.
* @param id identifier for person object
* @return Person object if there is record found for the speficied id, null otherwise
* */
public Person getById(Long id);
}

Seperti terlihat dalam deklarasi import, class ini menggunakan class Person, yang sudah tersedia di shared repository. Kita akan melakukan build dengan menggunakan script build.xml. Isinya sama dengan yang ada di modul person-model, dengan perkecualian nama projectnya. Berikut isi build.xml.
view plaincopy to clipboardprint?









Dependensi modul person-dao-api terhadap person-model kita deklarasikan dalam ivy.xml sebagai berikut.
view plaincopy to clipboardprint?













Setelah build.xml dan ivy.xml selesai dibuat, kita bisa langsung melakukan build. Panggil target dari command line sebagai berikut:
ant build

Dari output perintah di atas terlihat bahwa Ivy akan menguraikan dependensi project dengan melakukan query ke semua resolver yang terdaftar. Setelah modul yang dibutuhkan (person-model) ditemukan, Ivy akan langsung mendonlodnya ke dalam folder lib. Karena isi folder lib sudah kita daftarkan ke dalam classpath, maka proses kompilasi akan berjalan dengan mulus. Berikut struktur folder person-dao-api setelah melakukan proses resolve.



Pada deklarasi dependensi di atas, terlihat bahwa modul person-dao-api memiliki dependensi terhadap modul person-model dengan revision latest.integration. Ini artinya Ivy akan menggunakan versi terbaru yang ada dalam repository. Untuk melihat kemampuan fitur ini, mari kita publish person-model dengan revision yang lebih baru.

Edit file build.properties dalam modul person-model, sehingga menjadi seperti ini.
view plaincopy to clipboardprint?
build.version = 0.0.2
release.type = integration

Setelah itu, bersihkan hasil kompilasi terdahulu, dan publish modul person-model.
ant clean publish-local

Lalu, pindah ke modul person-dao-api, dan lakukan build lagi.
ant clean build

Terlihat pada output, bahwa modul person-model yang terbaru akan didonlod, dan yang versi lama akan dihapus. Sehingga isi folder lib akan terlihat sebagai berikut.

Ivy memiliki beberapa cara untuk menentukan mana artifak yang terbaru (latest), yaitu: latest-time, latest-revision, dan latest-lexico.

Dengan menggunakan latest-time, Ivy akan melihat tanggal dibuatnya suatu artifak. Kalau artifak berada di repository filesystem, maka tanggal sistem operasi akan digunakan. Bila repository diakses melalui http, Ivy akan melakukan query terhadap http server. Metode ini, walaupun efektif, relatif lambat bila akses jaringan ke repository tidak mumpuni.

Latest-revision membandingkan nama versi artifak, dan mengenali beberapa keyword. Dia dapat menentukan bahwa versi 1.0-alpha lebih baru daripada 1.0-dev1, dan 1.0 lebih baru daripada 1.0-rc1.

Sedangkan strategi latest-lexico hanya membandingkan berdasarkan urutan abjad. Jadi, 1.0-m1 akan lebih baru daripada 1.0-build135.

Ketiga strategi tersebut sudah built-in dalam Ivy dan tidak memerlukan konfigurasi lebih lanjut.

Selain revision, Ivy juga mengenal terminologi status. Secara default, Ivy menyediakan tiga status diurutkan dari yang paling stabil/mature, yaitu release, milestone, dan integration. Bila kita menggunakan latest.integration, Ivy akan mengambil artifak terbaru berstatus apapun dari repository. Bila kita gunakan latest.milestone, Ivy akan mengabaikan rilis integration, dan hanya akan membandingkan milestone dan release. Demikian juga bila kita gunakan latest.release, maka versi terbaru hanya akan dicari dari artifak berstatus release.

Cara deklarasi latest.integration di atas disebut dengan dynamic revision, karena nomer revision tidak secara eksplisit disebutkan. Selain menggunakan latest.integration, ada beberapa mekanisme lain, yaitu menggunakan +, dan menggunakan range.

Kita bisa menggunakan + untuk memilih revisi terbaru untuk rilis tertentu. Misalnya bila kita memiliki modul dengan revisi 1.0.1, 1.0.4, 1.0.7, dan 1.1.4 dalam repository, kita dapat menggunakan 1.0.+ untuk memilih versi terbaru dalam lini 1.0, yaitu 1.0.7.

Kita juga bisa menggunakan range, untuk menentukan revisi yang dapat digunakan, misalnya [1.0,2.2] akan memilih semua revisi yang sama atau lebih besar dari 1.0, tapi lebih kecil atau sama dengan 2.2. Lebih lengkap tentang ini bisa dilihat di dokumentasi Ivy tentang dependensi.

Demikianlah deklarasi dependensi dengan Ivy. Pada artikel ini, kita baru mencoba dependensi terhadap modul yang kita buat sendiri. Di artikel selanjutnya, kita akan lihat bagaimana mendeklarasikan dependensi terhadap modul eksternal seperti Spring Framework atau Hibernate.

Null Date di MySQL

Bila memiliki tipe data DATE di database MySQL, format standarnya adalah yyyy-MM-dd.
Jadi, bila kita mau mengisi 17 Agustus 1945, kita lakukan seperti ini
view plaincopy to clipboardprint?
INSERT INTO hari_besar_nasional (tanggal, keterangan)
VALUES ('1945-08-17', 'Hari Kemerdekaan RI');

Bila kita tidak mengisikan tanggal alias NULL, maka MySQL akan mengisi kolom tersebut dengan nilai 0000-00-00. Sayangnya, nilai ini tidak diterima dengan baik oleh driver JDBC MySQL.

Berikut contoh kode program dalam Java
view plaincopy to clipboardprint?
String sql = "select * from hari_besar_nasional";
ResultSet rs = connection.createStatement().executeQuery(sql);

while(rs.next()){
System.out.println("Tanggal : "+rs.getDate("tanggal");
System.out.println("Keterangan : "+rs.getString("keterangan");
}

rs.close();

Jika ada data yang berisi 0000-00-00, maka akan terjadi exception sebagai berikut:

java.sql.SQLException: Cannot convert value ‘0000-00-00 00:00:00′

Masalah ini dijelaskan di dokumentasi MySQL ini.

Solusinya adalah mengganti parameter koneksi database, yang tadinya seperti ini :
jdbc:mysql://localhost/nama_database

menjadi seperti ini
jdbc:mysql://localhost/nama_database?zeroDateTimeBehavior=convertToNull

SSH dengan JSch

Kita sudah biasa mengakses komputer lain menggunakan SSH.
Cukup ketikkan ssh username@namaserver, tekan enter, dan lakukan apa yang kita mau.
Nah, bagaimana kalau kita ingin membuat aplikasi yang butuh mengakses komputer lain?
Misalnya, kita ingin membuat aplikasi sederhana yang menampilkan input IP Address, Username, Password serta tombol Shutdown.
Begitu input field kita isi dan tombol Shutdown ditekan, aplikasi kita akan melakukan ssh ke komputer tersebut dan menjalankan perintah shutdown -h now.

Di Java, hal ini dapat dengan mudah dilakukan menggunakan pustaka JSch. Berikut langkah-langkah untuk menggunakan JSch.

Mendapatkan Pustaka JSch

Tentunya yang pertama kita lakukan adalah membuka website JSch dan mengunduh rilis terbaru. Pilih yang ZIP, jangan yang JAR, karena di dalamnya ada beberapa contoh penggunaan yang akan kita butuhkan untuk mencontek nantinya.

Paket ZIP ini belum dikompilasi, dan kita membutuhkan Ant untuk melakukan proses build. Jika Anda belum pernah menggunakan Ant, baca dulu tutorial ini. Setelah proses build selesai dilakukan, akan muncul file *jar di dalam folder dist.
Template Aplikasi Java

Buatlah project Java menggunakan editor yang Anda sukai. Pastikan jar JSch sudah terdaftar di project Java yang barusan dibuat. Setelah itu, buatlah Java Class sebagai berikut
view plaincopy to clipboardprint?
public class JschDemo {
public static void main(String[] args) throws Exception {

}
}

Untuk selanjutnya, kode program akan ditulis di dalam method main.
Parameter koneksi

Untuk melakukan koneksi ke komputer lain, kita memerlukan beberapa variabel, ditunjukkan dengan kode sebagai berikut.
view plaincopy to clipboardprint?
String host = "localhost";
String user = "endy";
String pass = "java";
String command = "shutdown -h now";

Kita akan melakukan koneksi ke komputer kita sendiri (localhost) dengan username endy dan password java. Setelah berhasil terhubung, kita akan menjalankan perintah shutdown -h now.
Pre Requisite

Agar kode program kita bisa dijalankan, ada beberapa persyaratan sebagai berikut:
Komputer yang ingin dihubungi harus menjalankan SSH server
Komputer yang ingin menghubungi harus melakukan koneksi SSH secara manual terlebih dulu,
agar komputer tujuan terdaftar di file known_hosts
User yang digunakan untuk koneksi harus memiliki akses yang cukup untuk melakukan perintah yang diinginkan
Menggunakan JSch

Setelah parameter koneksi kita deklarasikan, dan juga prasyarat di komputer tujuan dipenuhi, sekarang kita bisa mulai menggunakan JSch.
Pertama, kita instankan dulu object dari class JSch.
view plaincopy to clipboardprint?
JSch jsch = new JSch();

Kemudian, kita berikan database known_hosts, yaitu daftar komputer tujuan beserta public keynya. Ini berguna untuk melakukan verifikasi terhadap komputer tujuan.
view plaincopy to clipboardprint?
jsch.setKnownHosts("/home/endy/.ssh/known_hosts");

File known_hosts ini akan otomatis dibuat bila kita melakukan koneksi SSH ke komputer lain. Itulah sebabnya kita harus melakukan koneksi manual terlebih dulu, sehingga public key komputer tujuan sudah terdaftar dalam file ini. Alternatif dari menggunakan file ini adalah mendaftarkan public key di komputer tujuan dan menggunakan private key untuk login.

Selanjutnya, kita membuka koneksi ke komputer tujuan
Session session = jsch.getSession(user, host);
session.setPassword(pass);
session.connect();

Lalu, kita membuka channel. Channel menggambarkan bentuk interaksi kita dengan komputer tujuan. JSch menyediakan beberapa jenis channel, misalnya exec dan shell. Kita menggunakan exec untuk mengeksekusi satu perintah saja. Sedangkan shell bisa digunakan untuk membuka terminal interaktif yang bisa kita berikan perintah sebanyak kita mau.
view plaincopy to clipboardprint?
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
channel.connect();

Kita bisa membaca output dari perintah yang kita jalankan menggunakan I/O Stream seperti biasa.
view plaincopy to clipboardprint?
BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInputStream()));
String output = reader.readLine();
while (output != null) {
System.out.println(output);
output = reader.readLine();
}
reader.close();

Segera setelah perintah selesai dijalankan, kita mengakhiri channel dan session.
channel.disconnect();
session.disconnect();

Berikut adalah keseluruhan kode program.
view plaincopy to clipboardprint?
public class JschDemo {

public static void main(String[] args) throws Exception {
String host = "localhost";
String user = "endy";
String pass = "java";
String command = "shutdown -h now";

JSch jsch = new JSch();
jsch.setKnownHosts("/home/endy/.ssh/known_hosts");

Session session = jsch.getSession(user, host);
session.setPassword(pass);
session.connect();

ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
channel.connect();

BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInputStream()));
String output = reader.readLine();
while (output != null) {
System.out.println(output);
output = reader.readLine();
}
reader.close();

channel.disconnect();
session.disconnect();

}
}

Selamat mencoba. Bila percobaan Anda sukses, komputer yang sedang Anda gunakan akan shutdown setelah aplikasi selesai dijalankan.

Java: Tidak untuk Pemula

Beberapa kali sepanjang perjalanan hidup, saya berkesempatan untuk mengajarkan Java kepada orang lain. Satu hal yang saya simpulkan dari pengalaman tersebut adalah “Java kurang cocok bagi pemula”.

Beberapa orang yang tidak setuju sekarang sedang bersiap-siap menggulung scroll-bar ke bawah, ke bagian komentar, untuk menumpahkan uneg-unegnya. Tapi sabar dulu, baca sampai selesai dan Anda akan mengerti maksud saya.

Sebelum kita mulai, mari definisikan dulu kata “pemula”. Pemula yang saya maksudkan adalah orang yang sama sekali belum pernah coding. Bisa memformat harddisk tidak masuk hitungan.

Ok, sekarang bayangkan Anda adalah seorang pemula. Bersemangat tinggi ingin belajar pemrograman, soalnya kayaknya titel programmer terlihat keren di kartu nama. Berdasarkan hasil browsing dan chatting di sana-sini, kata orang sih sekarang jamannya Java. Baiklah, mari kita belajar Java.

Anda ikut training Java -seperti lazimnya sopan santun di dunia pemrograman- hal pertama yang diajarkan instruktur adalah Hello World.

Instruktur: Selamat pagi bapak dan ibu. Sekarang kita akan belajar Hello World. Silahkan buka Notepad, dan ketik kode berikut:

public class HelloWorld {
public static void main(String[] xx){
System.out.println("Hello World");
}
}

Instruktur: Dengan kode di atas, kita akan dapat mencetak tulisan “Hello World” ke layar. Bagaimana? Hebat kan?

Peserta: !@#$%[sumpah serapah disensor ]. Sama sekali tidak hebat. Apa itu class? Kenapa harus public? Apa artinya void? static? Berarti ada dynamic dong? Apa bedanya kurung kotak [] dengan kurung bulat () dan kurung kurawal {} ? …. [lagi-lagi disensor karena pertanyaan terlalu banyak]

Java, memang adalah bahasa yang mature. Sudah stabil (artinya tidak terlalu banyak perubahan fundamental) dan sudah teruji digunakan berbagai aplikasi besar dengan sukses. Tetapi tidak berarti mudah bagi pemula.

Seperti pada contoh sederhana di atas, sebetulnya baris yang ingin kita ajarkan adalah:
System.out.println("Hello World");

Tapi ada banyak baris lainnya yang ikut muncul. Karena ya di Java untuk Hello World memang itu kebutuhan minimalnya. Bandingkan dengan:

Ruby
puts "Hello World"

PHP
view plaincopy to clipboardprint?
echo("Hello World");

Perhatikan bahwa saya tidak mempermasalahkan urusan kompile dan eksekusi, karena itu memang sudah konsep dasar Java bahwa source code harus dikompilasi.

Jadi, kesimpulannya adalah untuk mengajarkan Hello World, kita juga harus mengajarkan tentang:
Apa itu class
Akses level untuk class dan method, kalo gak pake public gimana? Gak bisa diakses di luar package. Jadi, harus ajarkan juga tentang ….
Apa itu package
Konsep method dan return value
Array
Perbedaan class method (static) dan instance method

Waaa …
Berdasarkan keterangan di atas, saran saya untuk yang belum pernah coding sebelumnya adalah belajar dengan bahasa lain dulu. Misalnya PHP yang sintaksnya agak mirip. Nanti kalo sudah tau apa itu array, function, class, object, baru belajar Java.

Ini akan membuat hidup jadi lebih mudah untuk yang belajar, juga untuk yang mengajari.