الأربعاء، 17 أكتوبر 2012

التسلسل في جافا

مقدمة لتسلسل الكائن "Object Serialization"


يتم استخدام تسلسل الكائن "Object Serialization" في جافا  لتمرير أو بمعنى آخر تحويل كائنات جافا "Java objects" إلى ملف أو قاعدة بيانات أو عملية  أو شبكة أو أي نظام آخر. التسلسل يسوي الكائنات إلى وحدات البايت المتدفقة "stream of bytes" مرتبة أو متسلسلة. ويمكن بعد ذلك لوحدات البايت المتدفقة "stream of bytes" أن تُقرأ في وقت لاحق، أو في بيئة أخرى، لإعادتها الى الكائنات الأصلية.
تسلسل جافا لا يمكن أن يتم لحقول عابرة أو ثابتة. بالمناسبة الحقل العابر "field transient" يمنع " object state " من ان يتم كتابتها في التدفق "stream" و من استعادتها عند عملية إلغاء التسلسل "deserialization". جافا يقدم فئات لدعم كتابة الكائنات في التدفق "stream" و استعادة الكائنات من التدفق "stream". يمكن فقط للكائنات التي تدعم الواجهة  java.io.Serializable  أو الواجهة  java.io.Externalizable  الكتابة في التدفق "stream".

الواجهة العامة Serializable


الواجهة Serializable ليس لديها مناهج أو حقول. (واجهة ماركر)
فقط كائنات الفئات التي تقوم بتنفيذ واجهة java.io.Serializable يمكنها التسلسل أو فك التسلسل

الحقول العابرة "Transient Fields" والتسلسل في جافا "Java Serialization" 


الكلمة الأساسية العابرة "transient keyword" هي تعديل يُطبق على المتغيرات المثيلة "instance variables" في الفئة. وهي تحدد أن المتغير ليست جزءا من الحالة "state" المستمرة للكائن، وبالتالي لن يتم حفظها خلال التسلسل.
يمكنك استخدام الكلمة العابرة لوصف المتغيرات المؤقتة ، أو المتغيرات التي تحتوي على المعلومات المحلية، مثل معرف العملية "process ID" أو مرور الزمن "time lapse".

الإدخال والإخراج لجداول كائن "Object Streams"


ObjectOutputStream هي فئة تدفق الإخراج الأولية التي تطبق الواجهة ObjectOutput لتسلسل الكائنات. ObjectInputStream هي فئة تدفق الإدخال الأولية التي تطبق الواجهة ObjectInput deserializing لفك التسلسل للكائنات.
هذه الجداول ذات المستوى العال مرطبة  بتدفق السلاسل ذات المستوى المنخفض ، مثل FileInputStream أو FileOutputStream.
الجداول ذات المستوى المنخفض "low-level streams" تقوم بمعالجة بايت من البيانات "bytes of data". المنهج writeObject يحفظ حالة الفئة عن طريق كتابة الحقول الفردية في ObjectOutputStream. يستخدم المنهج readObject لإلغاء تسلسل كائن من تدفق إدخال الكائن "object input stream".

الحالة 1 : فيما يلي مثال يوضح تسلسل الكائن في ملف


PersonDetails هي الفئة النوات التي تطبق الواجهة Serializable



GetPersonDetails هي الفئة التي تستخدم لإلغاء تسلسل الكائن من الملف (person.txt).




PersonPersist هي الفئة التي تستخدم لتسلسل الكائن في الملف (person.txt).


الحالة 2 : فيما يلي مثال يوضح تسلسل الكائن في  قاعدة البيانات


PersonDetails يبقى نفسه كما هو مبين أعلاه
GetPersonDetails يبقى نفسه كما هو مبين أعلاه

إنشاء جدول SerialTest


PersonPersist هي الفئة التي تستخدم لتسلسل الكائن في جدول قاعدة البيانات SerialTest .




الحالة 3 : فيما يلي مثال يوضح تسلسل الكائن في  قاعدة البيانات  باستخدام قاعدة التشفير 64


PersonDetails يبقى نفسه كما هو مبين أعلاه

GetPersonDetails يبقى نفسه كما هو مبين أعلاه

إنشاء جدول SerialTest


PersonPersist هي الفئة التي تستخدم لتسلسل الكائن في جدول قاعدة البيانات SerialTest



أدناه هو برنامج يبين تسلسل الكائن JButton إلى ملف و تدفق مصفوفة بايت "Byte Array Stream". كما في السابق من اجل تسلسل theobject يجب تطبيق الواجهة Serializable.

PersonDetails هي الفئة النوات التي تطبق الواجهة Serializable

ليست هناك تعليقات:

إرسال تعليق