Kegunaan SerialVersionUID pada Serialization

Serialization merupakan proses encoding object menjadi byte stream dan merekonstruksi object dari byte stream yang ada. Proses encoding object menjadi byte stream dikenal sebagai serialisasi. Sedangkan rekonstruksi object dari byte stream disebut sebagai deserialisasi.

Serialization biasa digunakan dalam suatu aplikasi yang membutuhkan komunikasi antar aplikasi. Sebagai narasi contoh, saya membuat website jual beli online dimana sistem pembayarannya menggunakan suatu payment gateway (sebut saja paygate A). Aplikasi website tersebut memiliki class Consument pada package com.test.payment. Paygate A juga memiliki class Consument di package com.test.payment.

Bisnis proses yang terbentuk yakni web jual beli mengirimkan object dari class Consument ke paygate A. Selanjutnya paygate A menterjemahkan object yang telah dikirim agar dapat menjadi class Consument milik dirinya sendiri (PayGate A). PayGate A akan melihat nama class, package, dan SerialVersionUID. Disini lah SerialVersionUID digunakan.

Jadi, SerialVersionUID merupakan kunci untuk menserialisasi dan deserialisasi object. Apabila SerialVersionUID pada website jual beli berbeda dengan SerialVersionUID pada PayGate A, maka class yang dikirim akan dianggap berbeda dan menyebabkan ClassCastException pada PayGate A.

Mengenai value dari SerialVersionUID dapat diisi dengan nilai berapa pun yang sesuai dengan dokumentasi API yang digunakan ataupun kesepatakan yang telah ditentukan oleh kedua pengembang aplikasi.

Sekian. Semoga bermanfaat.. 🙂

Java Best Practices Notes

  • Use length() to check empty String. Do not use equal().
  • Wherever possible try to use Primitive types instead of Wrapper classes.
  • When using wrapper class, use faster method to create it. Example:
    • Integer i = Integer.valueOf(100). Do not use Integer i = new Integer(100)
    • String s = “ariestania”. Do not use String s = new String(“ariestania”)
  • Avoid creating unnecessary objects and always prefer to do Lazy Initialization.
    public class ExampleClass {
        private List students;
    	
    	public List getStudents(){
    		if(students==null) {
                students = new ArrayList();
    			//add the list
            }
            return students;
    	}
    }
    
  • Never make an instance fields of class public.
    public class ExampleClass {
        //this is WRONG 
        public String[] workDays = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
         
        //the resolve is make it private then create getter method
    	private String[] privateWorkDays = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
    
    	// Best way to make it unmodifiable is to return a clone of array instead of array itself
    	public String[] getPrivateWorkDays(){
    		return privateWorkDays.clone();
    	}     
    }
    
  • Always try to minimize mutability of a class. Choose wisely when you need to create the class immutable or not. To make a class immutable you can define its all constructors private and then create a public static method to initialize and object and return it.
  • Avoid to returning NULL value.

Will be nice if you add another notes about it. Thanks 🙂

Rumput di Pekarangan Sendiri Akan Selalu Berbeda Dengan Rumput Pekarangan Tetangga

Banyak orang yg mengatakan mengenai “rumput tetangga selalu nampak lebih hijau daripada rumput pekarangan sendiri”. Namun bagi saya, hal tersebut kurang tepat. Saya pikir kalimat yang benar adalah “rumput di pekarangan sendiri akan selalu berbeda dengan rumput pekarangan tetangga”. Hal itu karena setiap hal pasti memiliki sisi negatif dan positif. Semuanya bergantung dari sisi mana kita melihat.

happy

Tumbuh besar dalam belaian kasih penuh nasehat seorang ayah membuat saya bersyukur. Banyak orang merasa kasihan kepada saya karena ditinggalkan oleh sosok ibu yang seharusnya penuh kasih kepada saya. Namun saya tidak demikian melihatnya. Semua pengalaman hidup telah mengajari saya untuk mengenal apa itu tegar, berserah diri, dan berjuang dimana tidak banyak wanita lain yang merasakan apa yang saya alami. Betapa beruntungnya saya.. 🙂

Di bidang pekerjaan, saya mengawali karir sebagai software quality assurance. Lingkup pekerjaannya “cukup mudah”. Melakukan pengujian suatu software untuk memastikan software tersebut telah sesuai dengan requirement yang ada. Saya memilih pekerjaan tersebut karena saya merasa programming bukan lah dunia yang saya gemari.

Continue reading “Rumput di Pekarangan Sendiri Akan Selalu Berbeda Dengan Rumput Pekarangan Tetangga”