# فناوری جاوا > برنامه‌نویسی جاوا > Java SE : نگارش استاندارد جاوا > سوال: JVM Object Serialize

## a.seieddokht

با سلام 
از دوستان عزیز کسی بلده jvm object رو serialize کنه
ممنون میشم توضیح بدید :بوس:

----------


## Ehsan rashydy

> با سلام 
> از دوستان عزیز کسی بلده jvm object رو serialize کنه
> ممنون میشم توضیح بدید


میشه بگید دقیقا منظورتون از jvm object چیه؟

----------


## a.seieddokht

> میشه بگید دقیقا منظورتون از jvm object چیه؟



سلام
دز جاوا 2 نوع object داریم 
1) developer object  که برنامه نویس ایجاد میکند و تعداد ان میتواند n تا باشد و شامل تمام متدها و فیلدها غیر استاتیک و (developer constructor) ها میباشد

2) jvm object : که توسط jvm  ایجاد می شود و ان هم در اولین ارجاع به کلاس یا object و در بین تمام developer object ها مشترک است و تنها یک jvm object از هر کلاس در RAM ساخته میشود حتی اگر ما nتا شی از کلاس بساریم تنها 1 jvm object  در RAM وحود دارد که شامل تمام متد ها فیلدها و بلوک استاتیک (jvm constructor) می باشد

حالا اگه حرف من رو قبول ندارید بگید تا نشون بدم 2نوع object وجود داره :قهقهه:  :لبخند گشاده!:

----------


## Ehsan rashydy

> سلام
> دز جاوا 2 نوع object داریم 
> 1) developer object  که برنامه نویس ایجاد میکند و تعداد ان میتواند n تا باشد و شامل تمام متدها و فیلدها غیر استاتیک و (developer constructor) ها میباشد
> 
> 2) jvm object : که توسط jvm  ایجاد می شود و ان هم در اولین ارجاع به کلاس یا object و در بین تمام developer object ها مشترک است و تنها یک jvm object از هر کلاس در RAM ساخته میشود حتی اگر ما nتا شی از کلاس بساریم تنها 1 jvm object  در RAM وحود دارد که شامل تمام متد ها فیلدها و بلوک استاتیک (jvm constructor) می باشد
> 
> حالا اگه حرف من رو قبول ندارید بگید تا نشون بدم 2نوع object وجود داره



یه لینک به یه reference از گفته هات میتونی به ما بدی؟

----------


## javaphantom

> با سلام 
> از دوستان عزیز کسی بلده jvm object رو serialize کنه
> ممنون میشم توضیح بدید


اگر نیاز به این داری که از یک jvm به یک jvm دیگه object رد وبدل کنی به کمک RMI می تونی این کار رو انجام بدی

----------


## a.seieddokht

> اگر نیاز به این داری که از یک jvm به یک jvm دیگه object رد وبدل کنی به کمک RMI می تونی این کار رو انجام بدی


این موضوع رو استاد من بهم گفت و این که در document  های sun  میتونید پیدا کنید من دقیقا نمی دونم کجاست ولی من خودم اصلا نیازی به reference  ندارم و به شما اثبات میکنم 
شما میگید که 1 نوع object وجود داره دیگه  (developer object) که شامل تمام متدها و فیلدها چه استاتیک و چه غیر استاتیک می باشد.

اگه اینجور باشه پس اگه object  رو serialize  کنیم و بخوابونیم تو فایل xml باید ذخیره بشه دیگه نه این که null باشه 

اثبات 


import java.io.Serializable;

public class ObjectSerialize implements Serializable{
    public static String name;
    public static String family;
    public String id;
    public String address;

}




import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileOutputStream;

public class Runner {
    public static void main(String[] args)throws Exception{
        ObjectSerialize objectSerialize = new ObjectSerialize();
        objectSerialize.name = "ali";
        objectSerialize.family = "hasani";
        objectSerialize.id = "101";
        objectSerialize.address = "tehran";

        File file = new File("D:\\myFile.xml");
        file.createNewFile();

        FileOutputStream fileOutputStream = new FileOutputStream(file);
        XMLEncoder xmlEncoder = new XMLEncoder(fileOutputStream);

        xmlEncoder.writeObject(objectSerialize);
        xmlEncoder.close();
        fileOutputStream.close();

    }
}



حالا برو تو فایل xml ببین نام فامیلی هست  :قهقهه:  

 :لبخند گشاده!:

----------


## javaphantom

> شما میگید که 1 نوع object وجود داره دیگه (developer object) که شامل تمام متدها و فیلدها چه استاتیک و چه غیر استاتیک می باشد.


من هیجا و هیچ وقت همچین حرفی نزدم که شما بخواهین چیزی رو به من اثبات کنید.

----------


## javaphantom

> این موضوع رو استاد من بهم گفت و این که در document  های sun  میتونید پیدا کنید من دقیقا نمی دونم کجاست ولی من خودم اصلا نیازی به reference  ندارم و به شما اثبات میکنم 
> شما میگید که 1 نوع object وجود داره دیگه  (developer object) که شامل تمام متدها و فیلدها چه استاتیک و چه غیر استاتیک می باشد.
> 
> اگه اینجور باشه پس اگه object  رو serialize  کنیم و بخوابونیم تو فایل xml باید ذخیره بشه دیگه نه این که null باشه 
> 
> اثبات 
> 
> 
> import java.io.Serializable;
> ...


یک چیز جالبی که تو کدتون دارم می بینم این هست که توی کلاس ObjectSerialzie که شما دارید دو فیلد static وجود داره.

بعد در قسمت Runner اومدید از کلاس ObjectSerialze یک instance گرفتید و instance رو پاس دادید که بره توی فایل براتون deserialize بشه. مشخص هست دو فیلد static شما فرستاده نخواهد شد نه فامیلی و نه نام چون جزو instance شما نیستن. خوب من هنوز نفهمیدم مشکل شما دقیقا چی هست و باید به نتیجه برسیم. اینکه شما فرمودید دو نوع object هست من بحثی ندارم مشکل من الان این هست که باید چه چیزی رو اثبات کنیم.

----------


## a.seieddokht

:لبخند: 
اقا ببخشید من منظورم به شما نبود که   :ناراحت:  :متعجب: منظورم به اقایی که گفت لینک بدید من معذرت میخوام شما که استادی و ... من هیچ وقت از این حرفا به شما نمیزنم 
موضوع این هست که من گفتم 2 نوع object راریم در جاوا و این که حرفم این که فیلد static جزو instance نیست و وقتی instance ما میره تو فایل  خبری از فیلد های static نیست و میخوام بدونم چطور این فیلدهای static رو ببرم تو فایل یا همون (jvm object) ممنون میشم راهنمایی کنید  :تشویق:

----------


## javaphantom

> اقا ببخشید من منظورم به شما نبود که  منظورم به اقایی که گفت لینک بدید من معذرت میخوام شما که استادی و ... من هیچ وقت از این حرفا به شما نمیزنم 
> موضوع این هست که من گفتم 2 نوع object راریم در جاوا و این که حرفم این که فیلد static جزو instance نیست و وقتی instance ما میره تو فایل  خبری از فیلد های static نیست و میخوام بدونم چطور این فیلدهای static رو ببرم تو فایل یا همون (jvm object) ممنون میشم راهنمایی کنید


شما لطف دارین ولی من استاد نیستم، من هم مثل شما دارم یاد می گیرم. اما تا اونجا که من می دونم static یعنی state of class نه state of object برای همین وقتی یک فیلد static یا transient باشه serialize نمی شه.

اینکه چطور می شه این کار رو کرد من توی دنیای واقعیم تا حالا گیر نکرده بودم اما خوب سرچم زدم چیزی دستگیرم نشد اگر شما راه حلی پیدا کردی به من هم یاد بدین ممنون می شم

----------


## a.seieddokht

> شما لطف دارین ولی من استاد نیستم، من هم مثل شما دارم یاد می گیرم. اما تا اونجا که من می دونم static یعنی state of class نه state of object برای همین وقتی یک فیلد static یا transient باشه serialize نمی شه.
> 
> اینکه چطور می شه این کار رو کرد من توی دنیای واقعیم تا حالا گیر نکرده بودم اما خوب سرچم زدم چیزی دستگیرم نشد اگر شما راه حلی پیدا کردی به من هم یاد بدین ممنون می شم



خیلی ممنون من پرسیدم از استادم که چطور میشه این کارو کرد گفت من بلدم و فقط راهنماییم کرد و گفت خودت برو یادبگیر و ... گفت باید  از native c استفاده کنی و jvm رو  دستکاری کنی تا بتونی این کارو انجام بدی ومن بلد نیستم چجوری تو جاوا c کد بزنم پس کلا بیخیال بشم بهتره ولی از شما و دوستان عزیز اگه کسی یاد گرفت و انجام داد به ما هم یاد بده تو اینجا
ممنون :لبخند: 
موفق باشید
 یا علی

----------


## Ehsan rashydy

> این موضوع رو استاد من بهم گفت و این که در document های sun میتونید پیدا کنید من دقیقا نمی دونم کجاست ولی من خودم اصلا نیازی به reference ندارم و به شما اثبات میکنم


من reference رو واسه شما نگفتم، واسه خودم گفتم که ببینم حرفاتون مستنده یا نه!




> شما میگید که 1 نوع object وجود داره دیگه (developer object) که شامل تمام متدها و فیلدها چه استاتیک و چه غیر استاتیک می باشد.


من کی گفتم که یه نوع آبجکت وجود داره یا 2 نوع آبجکت وجود نداره؟؟
من اصن درباره این موضوع چیزی گفتم؟؟
من فقط واسه حرفاتون یه مرجع خواستم که هنوزم چیزی ارائه ندادید!!!!!!!!


بعد با این مثالی که زدید دقیقا چی رو میخواید اثبات کنید؟
این که developer object داریم و jvm object؟

الان با توجه به مثالتون یکم در مورد  jvm object صحبت میکنید؟ 
این 2 تا  عبارت jvm object و developer object رو میشه بگید از کجا آوردید؟؟؟


از اون طرف تو کداتون، کلاس ObjectSerialize با چه هدفی اینترفیس Serializable رو پیاده کرده؟
شما که میخواید object serialization روی کلاس ObjectSerialize پیاده کنید چرا از کلاس XMLEncoder استفاده کردید؟

----------


## a.seieddokht

> من reference رو واسه شما نگفتم، واسه خودم گفتم که ببینم حرفاتون مستنده یا نه!
> 
> 
> 
> من کی گفتم که یه نوع آبجکت وجود داره یا 2 نوع آبجکت وجود نداره؟؟
> من اصن درباره این موضوع چیزی گفتم؟؟
> من فقط واسه حرفاتون یه مرجع خواستم که هنوزم چیزی ارائه ندادید!!!!!!!!
> 
> 
> ...


اقا سلام چرا ناراحت می شید ؟؟؟!!!! :متعجب:  :ناراحت:  ببخشید من واقعا منظوری نداشتم و اینجا هدف ما باید این باشه که با هم 1 چیزی یا بگیریم ممکن حرف من اشتباه باشه ولی این درسی هست که من خوندم و تو کتاب های  فارسی هم نوشتن البته اسمش تغییر کرده مثلا به فیلدهای static میگن متغیرهای کلاس یا مثلا به static{} میگن بلوک static  خوب ما میگیم jvm constructor استادم میگفت زمان ما تو sun میگفتن jvm object و من شنیدم برنامه هایی هستن که این هارو نشو ن میدن در سطح RAM با جزیتات  موضوع اسم نیست موضوع این که چجور اینارو ذخیره کنیم  
من منظوری نداشتم دوست عزیز ببخش من رو... :گریه:  :ناراحت: 
موفق باشید

----------


## omidbizdotcom

> خیلی ممنون من پرسیدم از استادم که چطور میشه این کارو کرد گفت من بلدم و فقط راهنماییم کرد و گفت خودت برو یادبگیر و ... گفت باید  از native c استفاده کنی و jvm رو  دستکاری کنی تا بتونی این کارو انجام بدی ومن بلد نیستم چجوری تو جاوا c کد بزنم پس کلا بیخیال بشم بهتره ولی از شما و دوستان عزیز اگه کسی یاد گرفت و انجام داد به ما هم یاد بده تو اینجا
> ممنون
> موفق باشید
>  یا علی


اگه استادتون اینو گفته من پیشنهاد می کنم استادتونو عوض کنید 

نمونه native c در جاوا 


http://www.javaworld.com/javatips/jw-javatip23.html
http://en.wikipedia.org/wiki/Java_Native_Interface


نمونه JSNI Java Script Native Interface


public static native void alert(String msg) /*-{ //    $wnd.alert(msg);       $wnd.testJSNI=           $entry(@com.jsni.client.HelloJSNI::testJSNI(IFI));      }-*/;

----------


## cups_of_java

> اقا ببخشید من منظورم به شما نبود که  منظورم به اقایی که گفت لینک بدید من معذرت میخوام شما که استادی و ... من هیچ وقت از این حرفا به شما نمیزنم 
> موضوع این هست که من گفتم 2 نوع object راریم در جاوا و این که حرفم این که فیلد static جزو instance نیست و وقتی instance ما میره تو فایل  خبری از فیلد های static نیست و میخوام بدونم چطور این فیلدهای static رو ببرم تو فایل یا همون (jvm object) ممنون میشم راهنمایی کنید


شما باید با ذهنیت اینکه میخواید از serialization استفاده کنید کلاس ها تون رو طراحی می کردید. من نمی دونم فیلد های staticتون رو برای چه کاری و چه منظوری استفاده می کنید و چرا static شدن! اما یکی از راه هایی که می تونید اون ها رو Serialize کنید این هست:
اصولن متغیر های static وضعیت های سراسری و کلی رو نشون میدن و ازشون یکی هست! شما می تونید فیلد های استاتیک مربوط به هم رو در یک کلاس جدید که درست می کنید قرار بدید و همشون رو توش غیر استاتیک کنید. بعد با استفاده از الگوی Singleton همیشه یک شی از این کلاس جدید داشته باشید و اون شی رو Serialize کنید.
البته بسته به اینکه کاربرد و موضوع شما چیه راه های متنوع دیگه ای هم می تونه باشه...

ضمنن لغاتی مثل JVM Object و اینا رو هم از ذهنتون خارج کنید. جاوا رو ساده یاد بگیرید.

----------


## a.seieddokht

> شما باید با ذهنیت اینکه میخواید از serialization استفاده کنید کلاس ها تون رو طراحی می کردید. من نمی دونم فیلد های staticتون رو برای چه کاری و چه منظوری استفاده می کنید و چرا static شدن! اما یکی از راه هایی که می تونید اون ها رو Serialize کنید این هست:
> اصولن متغیر های static وضعیت های سراسری و کلی رو نشون میدن و ازشون یکی هست! شما می تونید فیلد های استاتیک مربوط به هم رو در یک کلاس جدید که درست می کنید قرار بدید و همشون رو توش غیر استاتیک کنید. بعد با استفاده از الگوی Singleton همیشه یک شی از این کلاس جدید داشته باشید و اون شی رو Serialize کنید.
> البته بسته به اینکه کاربرد و موضوع شما چیه راه های متنوع دیگه ای هم می تونه باشه...
> 
> ضمنن لغاتی مثل JVM Object و اینا رو هم از ذهنتون خارج کنید. جاوا رو ساده یاد بگیرید.


سلام اقا ممنون بله راه درستی مشکلی نداشتم و فقط کنجکاوی بود همین و این که استاده خودم گفت باید از C++‎ استفاده کنید خیلی ممنون ببخشید اگه گفتم jvm ... ممنون سپاس فراوان خدانگهدار :لبخند:

----------

