Martinus Ady H. BlOg

July 7, 2007

Apasih Singleton Pattern Itu ?

Filed under: Java

Tulisan ini diambil dari arsip milis netbeans-indonesia@yahoogroups.com
dan ada penambahan url-url yang berkaitan :)

On Mon, 2007-06-18 at 03:41 +0000, Freddy Kresna wrote:

singleton pattern itu apa ya?

Singleton pattern adalah salah satu dari 14 design pattern untuk
programing. Singleton pattern guarantee bahwa object yg di create pasti
cuman 1, tidak multiple instance.
Contoh:


public class SingletonObject {
     private static SingletonObject instance;
	
     // constructor sengaja di hidden supaya tidak bisa di create
     private SingletonObject() {
     }
	
     public static SingletonObject getInstance() {
          if (instance == null) {
              instance = new SingletonObject();
          }
          return instance;
     }
     ...
}

Dari contoh di atas, contructor sengaja di hidden jadi object tsb tidak
bisa di create. contoh:

SingletonObject obj = new SingletonObject(); // pasti error

Jadi untuk mendapatkan instance dari object tsb harus menggunakan public
methodsnya yaitu getInstance() yang hanya mengcreate instance nya 1 kali saja meskipun dipanggil banyak kali, contoh
SingletonObject obj = SingletonObject.getInstance()

Applikasi dari singleton pattern ini banyak, salah satu contohnya bisa
untuk preference / setting / options contoh: Setting dari DB connection,
bisa pake Singleton yang di combine dengan DB Pool, jadi object
connection nya tidak harus di create berulang kali (resources consuming)

Untuk info lebih lanjunt bisa cari di google mengenai Design Pattern
Gang of four, ada kira-kira 14 pattern yg umum di gunakan di programming
mulai dari Singleton, Proxy, Factory dll

Cheers
Tonny Kohar

Citra FX
Photo and Image Enhancements
http://www.kiyut.com

April 22, 2007

Buku SubVersionku Udah Dateng

Filed under: Java

Wah malam minggu kemaren dapat kejutan ;)
Pesanan buku SubVersion yang ditulis oleh om Endy Muhardin udah dateng :)
Klo temen-temen mau(Maklum ga ada di toko buku manapun :D ), bisa pesen langsung ke om Endy Muhardin, dan ini keterangan lengkapnya bagaimana cara pemesanannya.

Untuk teman-teman yang belum tahu apa itu SubVersion, buku ini sangat cocok untuk mengenal apa itu SubVersion. Siang tadi sempatin baca bukunya (belum sampai kelar sih, masih sampai halaman 130 :D ), penjelasan yang ditulis oleh om Endy Muhardin dalam bukunya sangat jelas dan disertai beberapa contoh kasus dalam dunia nyata (jadi pingin cepet-cepet cobain :-D , kemudian instal dirumah. Sembari praktekin apa yang udah ada dibuku ;) ).

Oh iya ini gambar buku yang sudah saya terima :)
Gambar buku

At least, buku ini bagus banget buat pegangan terutama bagi saya yang masih pemula.
Maklum penjelasannya mudah dimengerti :)
Untuk teman-teman yang belum beli, buruan deh beli ga rugi koq ;)
Itung-itung buat persiapan besok klo kerja dalam team :D

July 4, 2006

Perkenalanku dengan ANT

Filed under: Java

Tutorial masalah ant sudah kedownload lama, apache-ant nya pun juga udah ke download lama. Tapi baru 3 hari ini mulai
coba-coba make ant(Dulu bingung sech gimana cara makai-nya, fungsinya buat apa n 1 lagi blm butuh :P ).

Setelah baca-baca di milis jug-indonesia@yahoogroups.com, eh ternyata ant sangat penting sekali dlm pembuatan program.
(Duh dudulnya diriku knp baru sekarang ngerti :( )
Akhirnya yach buka-buka tutorial ant yg ditulis ama Pak Endy Muhardin :) n mulai coba-coba make ant.
Pertama kali coba bikin file build.xml duh pusingnya bukan maen (tapi klo ngikutin apa yg ada ditulisannya Pak Endy
sudah jalan :P . Tapi masih kurang pas dihati :D ), apa sech artinya ini, artinya itu ….pueyeng dah….

Ga cukup hanya bermodalkan tutor yg diberikan ama Pak Endy, akhirnya buka manual-nya ant :D . Apa yg didapat ??
Puyeng ? (Pasti :P maklum masih neewbies)
Akhirnya sedikit-dikit dah mulai paham masalah bagaimana membuat file build.xml ama build.properties :D :)

Hmm… apa yg kurang yach, build.xml-ku dah bisa nge-compile, nge-run, ngebuat file jar n bisa jalanin file jarnya. ??
Akhirnya coba-coba bikin file yang mempunyai koneksi ke database(pasti butuh driver jdbc kan), nah ini saya maunya
spt di netbeans, ada direktori libnya sendiri :) Tapi gimana caranya yach ?

Klo ga make ant seh bisa tinggal tambahin ajah code spt dibawah ini di file MANIFEST.MF:
Class-Path: [driver yg mau disertakan]

Tapi gimana klo di ant ? Wach puyeng nech :( (
Setelah tanya-tanya ama pakde google akhirnya dpt link ini:
http://martin.ankerl.org/2005/11/30/howto-create-manifestmf-classpath-from
-ant/

Wuah senengnya :) , setelah coba sana coba sini akhirnya berhasil dah ngebuat file jar-ku bisa konek dengan database. :)

Setelah sekian hari mainan dengan ant n dah ngerasa klo ant-ku sudah sesuai spt yg diinginkan (kurang masalah
JUnit :( , tapi nanti dulu lah.. :D gantian :P ), akhirnya bisa tidur dengan nyenyak deh malam ini :) .
Ups… salah bukan malam dink tapi pagi :P

Oh iya ini konfigurasi file build.xml yg ada di komputerku:


< ?xml version=\"1.0\" encoding=\"UTF-8\"?>
<project name=\"MyPOS\" basedir=\".\">
	
    <property file=\"build.properties\" />
	
    <!-- Lib yg diperlukan utk project MyPOS -->
    <path id=\"App.POS.class.path\">
        <fileset dir=\"${lib.path}\" includes=\"**/*.jar\" />
        <pathelement location=\"${folder.hasilcompile}\" />
    </path>
    <!-- Lib yg diperlukan utk project MyPOS -->
	
    <target name=\"hapus-jar\" description=\"Hapus hasil pembuatan file jar\">
        <delete file=\"${folder.project}/dist/${ant.project.name}.jar\" />
    </target>
	
    <target name=\"clean\" depends=\"hapus-jar\" description=\"Hapus semua folder hasil compile dan pembuatan jar\">
        <delete dir=\"${folder.hasilcompile}\" />
    </target>
	
    <target name=\"buat-folder\" description=\"Buat folder hasil compile\">
        <mkdir dir=\"${folder.hasilcompile}\" />
    </target>
	
    <target name=\"compile\" depends=\"buat-folder\" description=\"Buat folder hasil compile kemudian compile program\">
        <!-- Kompile file semua file .java di ${folder.src} ke ${folder.hasilcompile} -->
        <javac srcdir=\"${folder.src}\" destdir=\"${folder.hasilcompile}\" deprecation=\"on\">
            <classpath refid=\"App.POS.class.path\" />
        </javac>
    </target>
	
    <target name=\"run\" description=\"Menjalankan file java di folder.hasilcompile\">
        <!-- Menjalankan Program Utama dengan menyertakan classpath yg diperlukan -->
        <java classname=\"gambar\">
            <classpath refid=\"App.POS.class.path\" />
        </java>
    </target>
	
    <!-- Fyuh.. akhirnya dapat juga caranya nambahin classpath di manifest file, url dapat dilihat pd -->
    <!-- http://martin.ankerl.org/2005/11/30/howto-create-manifestmf-classpath-from-ant/ -->
    <target name=\"jar\" description=\"Membuat File jar dan MANIFEST.MF\">
        <!-- Create a property containing a *.jar file -->
        <pathconvert property=\"library\" pathsep=\" \">
            <mapper>
                <chainedmapper>
                    <!-- Remove absoulte path -->
                    <flattenmapper />
	
                    <!-- add/lib prefix -->
                    <globmapper from=\"*\" to=\"lib/*\" />
                </chainedmapper>
            </mapper>
	
            <path>
                <fileset dir=\"${lib.path}\">
                    <include name=\"**/*.jar\" />
                </fileset>
            </path>
        </pathconvert>
	
        <mkdir dir=\"${folder.project}/dist\" />
        <jar destfile=\"${folder.project}/dist/${ant.project.name}.jar\" basedir=\"${folder.hasilcompile}\">
            <manifest>
                <attribute name=\"Main-Class\" value=\"gambar\" />
                <attribute name=\"Class-Path\" value=\"${library}\" />
            </manifest>
        </jar>
    </target>
	
    <target name=\"runjar\">
        <java jar=\"${folder.project}/dist/${ant.project.name}.jar\" fork=\"true\" />
    </target>
</project>

Oh iya file build.xml diatas membutuhkan build.properties, n ini yg ada dikomputerku:

build.properties:
- folder.project = /home/pemula/Latihan/Java/TUGAS_AKHIR/MyPOS/
- folder.src = ${folder.project}/src
- folder.hasilcompile = ${folder.project}/build
- lib.path = dist/lib

Yaaah… mungkin masih ini aja yg bisa dijelasin disini, soalnya yah masih baru belajar :D :)

June 17, 2006

Decompiler Yang MultiPlatform

Filed under: Java

Decompiler Yang MultiPlatform

Wih… setelah baca-baca majalah terbitan netbeans yang pertama, jadi pingin neh download module(plugin)
untuk NetBeansku :)
Setelah surfing di situsnya netbeans, eh ga taunya nemu satu module buat
decompile file .class di java.

Hmmmm.. asyik juga keknya :) , setelah selesai mendownload 2 file yaitu jode.nbm ama ramos-decompiler.nbm akhirnya
coba diinstal di rumah.
Instal module(plugin) di NetBeans gampang banget, tinggal masuk ke menu Tool/Update Center trs kasih centang
pada menu Install Manually Downloaded Modules (.nmb files)

Setelah proses installasi kemudian nge-restat NetBeans, akhirnya cobain deh tuh module dan hasilnya adalah………..
eng…..ing….eng………..
Gambar1:
Ini tampilan program yg akan di decompile:

Click to View Full Image
Source code program asli kek gini:

Click to View Full Image

Gambar2:
Dan ini hasil decompilenya :)

Click to View Full Image

Setelah pikir2x sebentar, file .nbm kan hanya bisa dijalankan ama NetBeans aja.
Jadi klo kita make linux, windows or yg lain, asalkan ada NetBeans yg dah keinstal kita bisa make neh modules :)
Enak kan ?
Jadi namanya Decompiler MultiPlatform :P

Untuk info lebih jelasnya bisa dilihat disini :)
Info decompiler

June 8, 2006

Meng-hidden dan Meng-unhidden JPanel di Java.

Filed under: Java

Meng-hidden dan Meng-unhidden JPanel di Java.

Hhihiiiihi….
Judulnya lucu banget, maklum bhs indonesia ancur ;p (alesan ajah :P )
Kemaren abis baca-baca thread di http://diskusiweb.com/viewthread.php?tid=17640 di bagian
java umum thread help(Masalah hide dan unhide JInternalFrame).

Kebetulan neh, saya dirumah juga lagi pengen bisa bikin tampilan yang punya
tombol kayak gini(gambar ini di ambil dari program MySQLBrowser)

Dan jika tombolnya itu di klik maka akan muncul tampilan kayak gini

Akhirnya setelah ampe dirumah coba dipraktekin :) . Gimana ya klo di coba
di JPanel bukan di JInternalFrame ???
Akhirnya iseng-iseng bikin program dengan code spt dibawah ini:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
	
public class showPanel extends JFrame implements ActionListener {
    private JPanel panelAtas, panelTengah, panelBawah;
    private JButton btnAddUser, btnShow;
    private JTextField txtFieldNama, txtFieldCompany;
    private JLabel labelNama, labelCompany;
	
    public showPanel() {
        createGUI();
    }
	
    private void createGUI() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
	
        setAtas();
        setTengah();
        setBawah();
	
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(panelAtas, BorderLayout.NORTH);
        getContentPane().add(panelTengah, BorderLayout.CENTER);
        getContentPane().add(panelBawah, BorderLayout.SOUTH);
	
        setVisible(true);
        pack();
    }
	
    private void setAtas() {
        panelAtas = new JPanel();
        labelNama = new JLabel(\"Input Nama: \");
        txtFieldNama = new JTextField(20);
	
        panelAtas.setLayout(new FlowLayout());
        panelAtas.add(labelNama);
        panelAtas.add(txtFieldNama);
    }
	
    private void setTengah() {
        panelTengah = new JPanel();
        JLabel label = new JLabel(\"Detail konfirmasi\");
	
        panelTengah.add(label);
        panelTengah.setVisible(false);
    }
	
    private void setBawah() {
        panelBawah = new JPanel();
        btnAddUser = new JButton(\"User\");
        btnShow = new JButton(\"Detail >>\");
	
        btnAddUser.addActionListener(this);
        btnShow.addActionListener(this);
	
        panelBawah.add(btnAddUser);
        panelBawah.add(btnShow);
    }
	
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();
	
        if(obj == btnAddUser) {
            JOptionPane.showMessageDialog(null, \"Ihui sukses boox :P \”);
        }
	
        if(obj == btnShow) {
            // Thx to masnewuser ^*^ baru ketemu setelah baca
                        // postingan sampeyan mas :)
            if(!panelTengah.isVisible()) {
                panelTengah.setVisible(true);
                btnShow.setText(\”Detail < <\");
                pack();
            } else {
                panelTengah.setVisible(false);
                btnShow.setText(\"Detail >>\”);
                pack();
            }
        }
    }   
	
    // Main
    public static void main(String[] args) {
        new showPanel();
    }
}

Setelah disimpan kemudian dicompile hasilnya adalah sebagai berikut:

Setelah btn Detail di klik maka tampilannya adalah sbb:

Hmmmmm….. asyik kan :)
Tapi gimana yach klo di dalam panel tsb ada panel lagi ?
Pengaruh ndak ya ???

Tapi klo pengen buat tampilan yang kek gini gimana yack caranya ??

Apakah make JInternalFrame ? (Klo make ini gimana gapnya yach ? )
JPanel ? (Keknya mungkin make ini, tapi gapnya ? )
(Ini omongnya ga make IDE :D , emang kurang kerjaan seh disaat ada IDE secanggih NetBeans koq ga mau make IDE :P . Tapi gw masih pengen oprek2x di textpad :) dulu, ntar klo ada yg mendesak n perlu dikerjain cepet baru deh keluarin IDE-nya :P )

Fyuah…. pusing :D
Satu-satu dulu ajah ah, kapasitas otak terbatas :)

Get free blog up and running in minutes with Blogsome
Theme designed by Gary Rogers