Java Serialization nedir

Merhaba arkadaşlar. Bu yazımda Java Serialization (Serileştirme) konusuna değineceğim.

Bir klişe olacak ama Java bilindiği üzerine nesneye yönelik bir dil. Primitive tipler (int, char, boolean … gibi) hariç neredeyse herşey nesne ve bu nesneleri sürekli ve sürekli kullanırız. Ancak nesneleri bazen JVM dışında kullanmak gerekebiliyor. Fakat dışarıda kullandığımız bir nesnemizi tekrar içeride kullanmak istediğimizde nesne içinde kullanılan değerlerin hangi tipte olduğunu öğrenemiyoruz. Yani herhangi bir sınıftan bir nesne üretip, bunu bir dosyaya yazdırıp onu tekrar dosyadan okuğumuzda değerlerin tip bilgisini bilememe problemimiz var. İşte tam bu durumda Java Serialization API yardımımıza koşuyor.

Bu durumu basit bir örnekle anlatarak durumun daha iyi pekişeceğine inanıyorum.

Araba bilgilerini tutan Car diye bir sınıfımız olsun ve bu bilgileri bir dosyaya kaydedip, tekrar okuma işlemi yapalım.

Serileştirme işlemi için Serializable arayüzünü implement etmek gerekiyor.

Araba sınıfımız :

import java.io.Serializable;

public class Car implements Serializable {
    private String brand;
    private String model;

    Car(final String brand, final String model) {
        this.brand = brand;
        this.model = model;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(final String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(final String model) {
        this.model = model;
    }
}

 

Nesnemizi dosyaya yazdırdığımız test sınıfımız :

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Main {
    public static void main(final String[] args) {
        write();
    }
    private static void write(){
        try{
            final Car car = new Car("Seat", "Leon");
            final FileOutputStream file = new FileOutputStream("/Users/okan/Documents/car.txt");
            final ObjectOutputStream write = new ObjectOutputStream(file);
            write.writeObject(car);
            write.close();
        }
        catch(final Exception e){
            System.out.println(e.getMessage());
        }
    }
}

 

Nesnemizi dosyaya yazdığımız zaman dosyamızın çıktısı şu şekilde.

¨ÌsrCarÇ«5xÕçLbrandtLjava/lang/String;Lmodelq~xptSeattLeon

 

Şimdi gelin bu nesneyi dosyadan tekrar okuyalım.

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class Main {
    public static void main(final String[] args) {
        read();
    }

    private static void read() {
        try {
            final FileInputStream file = new FileInputStream("/Users/okan/Documents/car.txt");
            final ObjectInputStream read = new ObjectInputStream(file);
            final Car car = (Car) read.readObject();
            System.out.println(car.toString());
            read.close();
        }
        catch (final Exception e) {
            System.out.println(e.getMessage());
        }
    }

}

 

Çıktımız :

Marka : Seat
Model : Leon

 

Görüldüğü gibi dosyaya yazdırdığımız nesneyi tekrar okuyup, başarılı bir şekilde konsolumuza yazdırabildik.

Bir dahaki yazımda görüşmek üzere, hoşçakalın.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir