Sunday, May 31, 2009

Lomba Open Jive 2009


Tim JC of SMKN1 Surabaya akan mengikuti Lomba Open Jive yang diadakan oleh Sun Microsystem dan Seamolec Indonesia dengan mengirimkan 4 Team Programming. 1 team terdiri dari 3 siswa. Lomba yang mengusung tema "Teknologi Open Source untuk membangun solusi yang menjawab kebutuhan bisnis akan penghematan biaya dan peningkatan efisiensi bisnis" ini akan menyeleksi tim-tim dari seluruh indonesia .
Adapun Jadwal Seleksi sebagai berikut :
1. Tanggal 15 Juni 2009 Pendaftaran terakhir.
2. Tanggal 18 Juni 2009 hasil karya yang lolos seleksi
3. Tanggal 25 Juni 2009 Hasil karya dikirim ke Web Sun Microsystem
4. Tanggal 30 Juni 2009 Finalis (3 Team) berangkat ke Jakarta berebut juara pertama
Tim yang juara akan mewakili Indonesia dalam kompetisi Open Jive Tingkat Internasional. Untuk itu dukung terus tim JC of SMKN 1 Sby.

Thursday, May 28, 2009

Koneksi JAVA & MySQL via Konsole

By Vavai • Anggota Komunitas OpenSUSE Indonesia, Jan 23rd, 2008 •

Salah satu program yang menarik untuk ditest melalui konsole sebelum nanti mulai menggunakan IDE adalah program koneksi ke database menggunakan JDBC. Mengapa ini menarik karena ada beberapa aspek khas Java yang terkandung didalamnya.


Kita bisa mencobanya dengan melakukan koneksi ke database MySQL melalui Java. Untuk melakukan hal ini, silakan lakukan tutorial sebagai berikut :

  1. Instalasi database server MySQL. Untuk melakukan instalasi database MySQL pada OpenSUSE silakan merujuk pada panduan http://www.vavai.com/index.php?/categories/7-Migrasi-Database
  2. Jalankan service MySQL melalui YAST | SYSTEM | SYSTEM SERVICE (RUNLEVEl)
  3. Download MySQL Connector J melalui alamat http://www.mysql.com/products/connector/j/ . Ambil versi terbaru. Pada saat panduan ini ditulis, versi terbaru adalah mysql-connector-java-5.1.5
  4. Ekstrak file yang didownload dan ambil file mysql-connector-java-5.1.5-bin.jar. Sesuaikan dengan versi MySQL Connector yang didownload.
  5. Copy file jar tersebut ke lokasi library. Untuk keselarasan dengan panduan saya yang lain, silakan copy ke folder /opt/jdk1.6.0/lib
  6. Buka konsole dan ketik perintah
7.           export CLASSPATH=.:/opt/jdk1.6.0/lib/mysql-connector-java.jar:

  1. Untuk kemudahan, perintah diatas bisa di masukkan kedalam file .bash_profile yang ada di home folder masing-masing
  2. Buka teks editor (kate misalnya) dan ketik kode program berikut ini :
11.       public class TestMysql {  public static void main(String args[]) {
12.       try {
13.       /* Test loading driver */
14.       String driver = "com.mysql.jdbc.Driver";System.out.println( "=> loading driver:" );
15.       Class.forName( driver );
16.       System.out.println( "OK" );/* Test the connection */
17.       String url = "jdbc:mysql://localhost/test";System.out.println( "=> connecting:" );
18.       java.sql.DriverManager.getConnection( url, "guest", "" );
19.       System.out.println( "OK" );
20.       }
21.       catch( Exception x ) {
22.       x.printStackTrace();
23.       }
24.       }
25.       }

  1. Simpan dan beri nama TestMysql.java
  2. Buka konsole (ALT+F2, konsole)
  3. Lakukan kompilasi
30.       javac TestMysql.java
  1. Jika tidak ada pesan kesalahan, lanjutkan dengan menjalankan program
32.       java TestMysql

Catatan :

Program diatas menggunakan database MySQL lokal (localhost) dengan database test, user name guest dan password kosong. Setting ini adalah setting default dan selalu ada pada MySQL. Jika ingin memodifikasi, sesuaikan dengan kondisi setting MySQL anda.

Kemungkinan Kesalahan :

  1. java: command not found, biasanya setting PATH belum benar. Coba test dengan menjalankan perintah echo $PATH pada konsole dan apakah responnya menunjukkan lokasi JDK yang diinstalasi
  2. class TestMysql is public, should be declared in a file named TestMysql.java. Terjadi jika nama file berbeda dengan nama class. Ingat bahwa Java menganut case sensitive, jadi TestMysql berbeda dengan testmysql
  3. Cannot resolve symbol
4.           symbol  : class stringlocation: class TestMysqlpublic static void main(string[] args)
5.            
6.           ^
7.            
1 error

Masalah biasanya karena kesalahan ketik

  1. Exception in thread “main” java.lang.NoClassDefFoundError: TestMysql, biasanya terjadi karena menjalankan file class dengan ekstension. Semestinya java TestMysql, bukan java TestMysql.java ataupun TestMysql.class

Semakin banyak latihan, kita akan semakin terbiasa dan lebih tahu apa yang dimaksud pada pesan kesalahan yang ada.

Mendapatkan IP Address dan Host Name

By Vavai • Anggota Komunitas OpenSUSE, Jan 31st, 2008 •

Java menyediakan fungsi InetAddress untuk mendapatkan alamat IP maupun nama host suatu komputer. Alamat IP maupun nama host yang didapatkan tidak tergantung pada alamat ip dan nama host komputer lokal saja, namun juga dapat digunakan untuk mengecek alamat IP dan nama host di Internet, tentu dengan syarat komputer kita terhubung dengan internet. Penggunaan fungsi ini juga terkait erat dengan setting DNS pada komputer yang kita gunakan.

Berikut adalah contoh program yang menunjukkan fungsionalitas tersebut :

  1. Buatlah sebuah project baru Netbeans
  2. Tambahkan sebuah JFrame Form
  3. Lengkapi dengan 2 buah label, 2 buah TextField (txtIPAddress dan txtNamaHost) dan 3 buah Button (btnCheckIPAddress, btnCheckHostName dan btnCheckLokal). Lihat contoh pada gambar berikut :
  4. Ketikkan kode berikut pada btnCheckHostName, event actionPerformed

view plaincopy to clipboardprint?

1.

2. private void btnCheckHostNameActionPerformed(java.awt.event.ActionEvent evt) {

3. try {

4. String strHostName = InetAddress.getByName(txtIPAddress.getText()).getHostName();

5. JOptionPane.showMessageDialog(null, "Host name dari IP Address '" + txtIPAddress.getText() +"' = "+ strHostName);

6. } catch (UnknownHostException ex) {

7. JOptionPane.showMessageDialog(null, ex);

8. Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);

9.

10. }

11.

12. }

 
private void btnCheckHostNameActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            String strHostName = InetAddress.getByName(txtIPAddress.getText()).getHostName();
            JOptionPane.showMessageDialog(null, "Host name dari IP Address '" + txtIPAddress.getText() +"' = "+ strHostName);
        } catch (UnknownHostException ex) {
            JOptionPane.showMessageDialog(null, ex);
            Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);
 
        }
 
    }
  1. Lakukan import library yang diperlukan (import java.net.InetAddress; import javax.swing.JOptionPane;)
  2. Ketikkan kode berikut pada btnCheckIPAddress, event actionPerformed

view plaincopy to clipboardprint?

1.

2. private void btnCheckIPAddressActionPerformed(java.awt.event.ActionEvent evt) {

3.

4. try {

5. String strIPAddress = InetAddress.getByName(txtHostName.getText()).getHostAddress() ;

6. JOptionPane.showMessageDialog(null, "Alamat IP dari '"+txtHostName.getText() +"' ="+ strIPAddress);

7. } catch (UnknownHostException ex) {

8. JOptionPane.showMessageDialog(null, ex);

9. Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);

10.

11. }

12. }

 
private void btnCheckIPAddressActionPerformed(java.awt.event.ActionEvent evt) {
 
        try {
            String strIPAddress = InetAddress.getByName(txtHostName.getText()).getHostAddress() ;
            JOptionPane.showMessageDialog(null, "Alamat IP dari '"+txtHostName.getText() +"' ="+  strIPAddress);
        } catch (UnknownHostException ex) {
            JOptionPane.showMessageDialog(null, ex);
            Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);
 
        }
    }
  1. Ketikkan kode berikut pada btnCheckLokal event actionPerformed

view plaincopy to clipboardprint?

1.

2. private void btnCheckLocalActionPerformed(java.awt.event.ActionEvent evt) {

3. try {

4. InetAddress AlamatInternet = InetAddress.getLocalHost();

5. JOptionPane.showMessageDialog(null, "Host name lokal : " +AlamatInternet.getHostName());

6. JOptionPane.showMessageDialog(null, "IP Address lokal : " +AlamatInternet.getHostAddress() );

7. } catch (UnknownHostException ex) {

8. JOptionPane.showMessageDialog(null, ex);

9. Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);

10.

11. }

12. }

 
private void btnCheckLocalActionPerformed(java.awt.event.ActionEvent evt) {
         try {
            InetAddress AlamatInternet = InetAddress.getLocalHost();
            JOptionPane.showMessageDialog(null, "Host name lokal : " +AlamatInternet.getHostName());
            JOptionPane.showMessageDialog(null, "IP Address lokal : " +AlamatInternet.getHostAddress() );
        } catch (UnknownHostException ex) {
            JOptionPane.showMessageDialog(null, ex);
            Logger.getLogger(frmIpAddress.class.getName()).log(Level.SEVERE, null, ex);
 
        }
    }
  1. Simpan dan jalankan aplikasi (SHIFT + F6). Masukkan IP Address dan klik pada “Check Host Name” atau masukkan host name dan klik “Check IP Address”. Check IP dan Host Lokal tidak membutuhkan masukan. Berikut adalah beberapa screenshot pesan yang tampil :

Program ini tidak secara smart mendeteksi masukan apakah itu alamat IP ataukah host name. Untuk kemudahan, saya menggunakan 2 buah TextField sebagai contoh. Pada aplikasi terapan, input IP Address ataupun Host Name bisa didapatkan melalui variabel.

Membaca dan Menulis File Properties Untuk Setting Konfigurasi Aplikasi

By VavaiAnggota KOmunitas OpenSUSE Indonesia, Jan 25th, 2008 •

Salah satu feature yang sering digunakan pada aplikasi terapan adalah kemampuan membaca dan menulis file konfigurasi. Sistem Windows biasa mengenal file konfigurasi dengan ekstension file .ini. Java sendiri tidak mempermasalahkan ekstension nama file. Dalam banyak contoh, kebanyakan malah menggunakan ekstension file yang cukup panjang, .properties.

Apa keuntungan penggunaan file konfigurasi ? Keuntungan utama adalah kemudahan dalam melakukan perubahan on the fly. Contohnya, jika kita menggunakan server ujicoba pada alamat tertentu dan server produksi untuk implementasinya, kita dapat dengan mudah melakukan perubahan pada file konfigurasi tanpa membuka maupun mengubah kode program. Fleksibilitas ini juga bermanfaat jika satu waktu kita harus menggunakan alamat server database yang lain.

Kita bisa mendefinisikan komponen dari file properties sesuai dengan keinginan. Bisa saja kita mendefinisikan nama aplikasi, setting default untuk email, setting konstanta tertentu dan lain sebagainya. Ada juga beberapa aplikasi yang bahkan menyimpan string koneksi database pada file konfigurasi. Hati-hati jika menggunakan hal seperti ini karena saya pernah melihat, password untuk koneksi ke database disimpan dalam bentuk plain text :-).

Berikut adalah langkah-langkah membuat aplikasi untuk membaca dan menyimpan file konfigurasi :

  • Buat 1 project Java Application pada Netbeans. Simpan dengan nama yang diinginkan.
  • Tambahkan 1 buah JFrame Form, beri nama frmKonfigurasi, setting Title dan lengkapi dengan 1 Panel, 2 Label, 2 Text Field (txtNamaAplikasi dan txtHostServer) dan 1 Button (btnSimpanKonfigurasi) seperti pada contoh berikut :


Buat 2 buah method. Method pertama untuk Load Properties sebagai berikut :

1. view plaincopy to clipboardprint?

1.

2. public static Properties loadProperties(String sFile) {

3. Properties p = new Properties();

4. try {

5. FileInputStream in = new FileInputStream(sFile);

6. p.load(in);

7. System.out.println("File konfigurasi '" + sFile + "' berhasil dibuka");

8. in.close();} catch (IOException iOException) {

9. JOptionPane.showMessageDialog(null, iOException);

10. }

11. return p;}

  • Method kedua adalah method untuk Simpan Properties. Berikut adalah kode untuk menyimpan konfigurasi.

2. view plaincopy to clipboardprint?

1. public static void saveProperties(Properties p, String sFile) throws IOException{

2. FileOutputStream out = null;

3. try {

4. out = new FileOutputStream(sFile);

5. p.store(out, "Ini baris komentar\nFile konfigurasi");

6. JOptionPane.showMessageDialog(null, "File konfigurasi '"+sFile+"' sudah disimpan");

7. } catch (FileNotFoundException ex) {

8. Logger.getLogger(frmKonfigurasi.class.getName()).log(Level.SEVERE, null, ex);

9. JOptionPane.showMessageDialog(null, ex.getMessage());

10. } finally {

11. try {

12. out.close();

13. } catch (IOException ex) {

14. Logger.getLogger(frmKonfigurasi.class.getName()).log(Level.SEVERE, null, ex);

15. JOptionPane.showMessageDialog(null, ex.getMessage());

16. }

17. }}

  • Berikutnya adalah kode yang akan dijalankan jika button di click. Letakkan kode ini pada event ActionPerformed pada btnSimpanKonfigurasi sehingga kode program menjadi sebagai berikut :

3. view plaincopy to clipboardprint?

1. private void btnSimpanKonfigurasiActionPerformed(java.awt.event.ActionEvent evt) {

2. try {

3. /**

4. * Menyimpan file properties ke file

5. * @param Properties p Object Properties

6. * @param String sFile String path file tujuan

7. */

8. Properties p = new Properties();//Menetapkan key dan value draft

9. p.setProperty("Nama Aplikasi", txtNamaAplikasi.getText());

10. p.setProperty("Host Server", txtHostServer.getText());

11. saveProperties(p, PROP_FILE);

12. } catch (IOException ex) {

13. Logger.getLogger(frmKonfigurasi.class.getName()).log(Level.SEVERE, null, ex);

14. JOptionPane.showMessageDialog(null, ex.getMessage());

15. }}

Tambahkan kode untuk melakukan pengambilan data konfigurasi. Saya meletakkannya pada setelah init komponen. Untuk pemisahan kode, sebaiknya letakkan kode ini pada satu method tersendiri

1. view plaincopy to clipboardprint?

1. Properties p2 = new Properties();

2. p2 = loadProperties(PROP_FILE);//Mendapatkan nilai key

3. txtNamaAplikasi.setText(p2.getProperty("Nama Aplikasi"));

4. txtHostServer.setText(p2.getProperty("Host Server"));

Jalankan form. Pada saat awal, form akan melakukan loading file konfigurasi.

  • Jika tidak menemukannya, akan timbul pesan bahwa file konfigurasi.properties tidak ditemukan. Untuk aplikasi terapan, pesan ini bisa dinonaktifkan agar tidak membingungkan. Saya menambahkan messagebox sebagai perangkap kesalahan untuk kepentingan debug saja. Pesan ini bisa saja disampaikan pada konsole menggunakan System.out.println();

  • Setelah mengisi dan menyimpan konfigurasi, akan terbentuk file konfigurasi.properties yang akan diletakkan di folder project kita. Isinya kira-kira sebagai berikut :




Silakan lakukan modifikasi program sesuai dengan tujuan yang diinginkan.

Design by - JC Team | SMK Negeri 1 Surabaya