بررسی تفاوت جاوا و net.

NET رقیب JAVA؟ 
.NET فرمی است که به وسیله مایکروسافت MicroSoft برای ساخت سایت ها با قابلیت های زیاد و متفاوت ایجاد شده است به طوری که قسمتی از یک پروژه را می توان با ++CV و بخش دیگر را با برنامه ای دیگر نوشت و در نهایت کل آن توسط یک واسطه به نام MSIL ترجمه شده و در محیط .NET قابل اجرا است.

J2EE نسخه جدید JAVA به وسیله شرکت SUN و با همکاری شرکت های IBM و HP تهیه شده است. در این قالب تنها زبانی که مورد استفاده قرار می گیرد جاوا است، و بر خلاف .NET که فقط روی محیط های سازگار با ویندوز عمل می کند، مستقل از سخت افزار است.
بین .NET و JAVA کدام را انتخاب کنیم؟

– قابلیت انتقال برنامه ها روی سیستم های مختلف و شعار اصلی جاوا یعنی: “یک بار بنویس و هر جا استفاده کن” (Writeonce-Run anywhere) موضوعی بسیار حایض اهمیت است که بسته به نیاز شما و نوع برنامه شما می تواند خیلی مهم باش

جــــاوا یا ســی شــارپ؟

هر دو زبان جاوا و سی شارپ ابزارهایی هستند برای پیاده سازی….
شما نسبت به scale پروژه تصمیم میگیرید که از کدامشان استفاده کنید..
به طور مثال برای سیستم کتابخانه کسی  با java برنامه نویسی  نمی کند… خیلی راحت با C#‎  این کار را انجام میدهد….یا در رابطه با سیستم های خیلی بزرگ مثل فرودگاه … با java کار می کنند..

در مورد زبان های دیگر هم همین طور است…
شما باید با مفهوم های برنامه نویسی آشنا باشید…. زبان های برنامه نویسی همگی ابزارهایی هستند تا شما چیزی را که در ذهن دارید پیاده سازی کنید.

تسلط بر یکی از زبان های شی گرا باعث می شودکه روی بقیه زبان ها نیز تسلط نسبی داشته باشید….اگر به دنبال درامد و گستره ی کاربرد هستید و این که در هر مکان و شرایطی  به راحتی پذیرشتان کنند و با استانداردهای زیادی هماهنگ باشید و با نصب ویژوال استودیو احساس بی نیازی کنید ؛ بهتر است سی شارپ را انتخاب کنید.البته جاوا نیز زبان بسیار قوی و انعطاف پذیری است ولی با توجه به بازار ایران و کسب درامد؛جاوا جایگاه کمتری دارد.

شما با توجه به مسیر زندگی خودتان میتوانید هر کدام را انتخاب کنید و یا حتی هر دو را با هم بخوانید ولی بنا به تجربه ی من؛کنار آمدن با تکنولوژی های مایکروسافتی خیلی راحت تر است و پروژه های بسیار بزرگ را معمولا گروهی انجام میدهند.
بنده هم پروژه های بسیار بزرگ زیادی را دیده ام که با جاوا انجام شده ولی هیچ دلیلی مبنی بر کم توانی سی شارپ در این ضمینه ندیده ام.

ولی در کل انتخاب یکی از این زبان ها بستگی دارد به اینکه بخواهید برای خودتان کار کنید یا در شرکتها کار کنید.
اگر بخواهید برای خودتان کار کنید، هیچگاه به تنهایی نمی توانید پروژه
Enterprise ئئ را بنویسید . ولی میتوانید با همان زبانی که فرا گرفته اید همه آنها را بنویسید . که از این نظر دات نت سریعتر است.
ولی اگر بخواهید در شرکتها کار کنید اکثر پروژه ها مقیاس متوسط به بالا هستند و در طول یک سال هم ممکن است لازم باشد با چند زبان کار کنید. یا حتی از یک تیم به تیم دیگری منتقل شوید .
اگر دانشجو هستید بهترین فرصت است که هم دانشی از جاوا کسب کنید و هم سی شارپ.

——————————————————————-
اوج قدرت جاوا در پروژه های Enterprise است .
در پروژه هایی که transaction ها زیاد هستند دات نت به هیچ وجه نمی تواند پاسخ گو باشد به همین منظور از پلت فرم جاوا استفاده می کنند. مثل بانک ها، بیمه ها، سیستم های رزرو بلیط که در هر ساعت  بیش از ۱۰۰۰ transaction رخ می دهد (عمق فاجعه رو حس می کنی که). جاوا تقریباً تمام function های C را پشتیبانی می کند چون خودش اساسا با C نوشته شده است .
****]  اگه تصمیم گرفتی که جاوا یاد بگیری باید یه برنامه ۵ ساله بریزی. تازه اون موقع می فهمی جاوا چی هست و اصلاً قراره چی کار بکنی (گستردگی کار بسیار بالاست.) چیزی در حدود ۱۳۰ تا پلت فرم جاوا وجود داره (عمق فاجعه رو اینجا لمس کن) و خلاصه اینکه کاره یک شب و دو شب نیست.
اما این رو بدون جاوا رو که یاد بگیری می شی یه آدمی که مستقل از پلت فرم کار می کنه یعنی دیگه برات مهم نیست که با چی کار کنی، مهم برات performance کار هستش چون تو این مدت کاملاً موهات به رنگ سفید درومده و خسته ی خسته….
از لحاظ درآمد هم که بالاترین درآمد رو تو برنامه نویس ها داشته باشن اما خوب جونشون(در اینجا جون همون پدره) درومده[****

—————————————————————

  کار کردن با سی شارپ نسبت به جاوا راحت تر است‌ اما سی شارپ برای یک سری از پروژه های خاص کاربرد دارد…جاوا هم تقریبآ همین طور استبه طور مثال برنامه های کار با سیستم را با ++VC می نویسند چون از سایر زبان ها در این زمینه قویتر است….
تعداد افرادی که با ++VC برنامه نویسی می کنند هم بسیار کم است…..
شما باید نسبت به کاری که می خواهید انجام بدهید زبانتان را انتخاب کنید.

——————————–
یادگیری سی شارپ خیلی ساده و کاربری آن راحت است
اما در رابطه با جاوا  هر چه بیشتر یاد می گیرید علاقه مند تر می شوید چون جاوا واقعا دنیای بزرگی دارد و بسیار هم محبوب است (البته در خارج از ایران).
و این یکی از دلایل خانواده بزرگ جاوا است. منظورم از خانواده بزرگ این است که شما در هر زمینه ای بخواهید با جاوا کار کنید تنوع تکنولوژی ها و کتابخانه ها آنقدر زیاد است که مبهوت می مانید که از کدام استفاده کنید.
برای مثال اگر بخواهید یک سایت سازمانی بزرگ را باجاوا طراحی کنید انتخاب های زیر را در پیش رو دارید:
jsp , servlet , struts , ice faces ,jsf , oracle ADF و ده ها کتابخانه دیگر که هیچ کدام برای خود سان نیستند بلکه شرکت های دیگری این کتابخانه ها را برای معماری j2ee در جاوا طراحی کرده اند و این نشانه محبوبیت جاوا است.
لازم به ذکر است که هر کدام از این کتابخانه ها که معرفی کردم آنقدر بزرگ هستند که یادگیری کار با آنها کلی انرژی می برد و این یک ضعف است اما چون تنوع زیاد است و هر کدام از این کتابخانه ها استفاده مخصوص خود را دارند برنامه نویس یا مدیر پروژه به راحتی می تواند تصمیم بگیرد که برای پروژه ای که در پیش رو دارد از کدام یک از این تکنولوژی ها استفاده کند.
حالا این برای j2ee بود شما با همین مساله برای برنامه های Desktop و mobile نیز روبرو هستید.
برای برنامه های j2ee چندین Application server قدرتمند نیز وجود دارد که برای انتخاب آن در پروژه های بزرگ سازمانی و ملی تنوع زیادی وجود دارد.برای هر کدام از این Application server ها زمان ها و پول ها خرج شده که تمامی ندارند و بسیار قدرتمند هستند.
از جمله آنها می تواند به GlassFish , jBoss , Oracle Application server , sun Application server و .. که هرکدام از این هارا نیز شرکت هایی غیر از sun طراحی کرده اند.
در جاوا سه تا Platform قدرتمند نوشته شده که عبارتند از Eclipse , netbeans , jDeveloper که متاسفانه اکثر برنامه نویسان و حتی جاوا کاران فکر می کنند که این ها فقط IDE هستند در صورتی که این هاPlatform هستند که می توان توسط انها برنامه های بزرگی نوشت یعنی این که یک بستری آماده شده و شما می توانید از قابلیت های آماده این بستر استفاده کرده و نرم افزار های خود را سریعتر و تحت یک چهار چوب قوی ایجاد کنید. برای مثال IDE netbeans یک نرم افزاری است که تحت Platform نت بینز توسعه یافته در حالی که به کسی که بگی netbeans فکر می کنه که فقط یه IDE خالی است.
در حالی که مایکروسافت فقط یه IDE به نام visual studio داره و البته IDE بسیار قدرتمندی است و محبوب ترین IDE در دنیا.
دراین که از جاوا در پروژه های بزرگ استفاده می شه شکی نیست چون من می تونم ده ها پروژه رو که می شناسم برای شما نام ببرم.اما چرا از جاوا در پروژه های کوچک مثلا در اتوماسیون ها استفاده نمیشه ؟ جواب اینکه هزینه استخدام یک جاوا کار معمولی خیلی خیلی بیشتر از یک دات نت کار است (البته در ایران) و این برای یک شرکت اصلا به صرفه نیست که یک نرم افزار کوچک رو با جاوا بنویسه.
اما در کنار این بحث ها حقوق یک برنامه نویس جاوا رو هم در نظر بگیرید که نسبت به برنامه نویس دات نت زیاد است در حال حاضر چیزی بالای یک میلیون تومان و این یک ضعف است چون هزینه تولید نرم افزار رو بالا می برده.
من با هر دوی این زبان ها دارم کار می کنم ، با جاوا در حال طراحی یک پروژه سازمانی بزرگ هستیم و با دات نت در حال کار با وب سرویس های اون هستیم. هر کس هم که پول بیشتری بدهد و با هر تکنولوژی که کارکند (حتی زبان Assembly) برایش کار انجام می دهم.(نکته ای که خیلی ها به اون توجه نمی کنند!)
بنا بر این بهتر است که سعی کنیم در مورد تکنولوژی های مختلف (فرقی نمی کنه دات نت یا جاوا یا هر چیز دیگه) اطلاعات خودمون رو بالا ببریم تا در موقعیت های مختلف بسته به شرایط پروژه بتونیم تکنولوژی مناسب را انتخاب کنیم. البته این نکته رو هم اضافه کنم که : سخت بودن نشان برتری نیست.

خیلی ها فکر می کنند هر چه یادگیری یک زبان برنامه نویسی سخت تر باشد، حتماً بر زبان های دیگر برتری دارد. این تفکر در دنیای امروز واقعاً مسخره است! به طور مثال یکی از سخت ترین زبان های برنامه نویسی سی++ است. به نظر شما یک برنامه نویس سی++ چه برتری بر یک برنامه نویس ویژوال بیسیک دات نت دارد!؟ تفاوت ها نسبی است. مثلاً برنامه نویس سی++ می تواند یک درایور سخت افزاری بنویسد اما برنامه نویس وی بی دات نت نمی تواند. حالا به نظر شما کدام بهتر می توانند یک وب اپلیکیشن بنویسند!؟ کدام سریعتر می تواند یک نرم افزار تولید کند!؟ کدامیک ابزارهای قوی تری برای توسعه در اختیار دارد!؟ خروجی کدامیک سریعتر اجرا می شود!؟
اخیراً بسیاری از برنامه نوسان سی++ به جاوا و سی شارپ روی آورده اند. چرا!؟ مگر سی++ سخت تر نیست! پس چرا این ها به یک زبان ساده تر روی آورده اند!؟پاسخ این است که در دنیای امروز، برنامه نویسان باید پلت فرم محور باشند نه زبان محور. زبان برنامه نویسی هر چقدر هم که قوی و سخت باشد، اگر توسط یک پلت فرم قدرتمند و شناخته شده پشتیبانی نشود هیچ ارزشی نخواهد داشت. به طور مثال در سیستم عامل لینوکس از سی++ به خوبی پشتیبانی می شود اما در وب اینطور نیست. این سی++ را به یک انتخاب مناسب برای نوشتن برنامه های مبتنی بر لینوکس و به یک انتخاب نا مناسب برای نوشتن برنامه های مبتنی بر وب تبدیل می کند. PHP در وب به خوبی پشتیبانی می شود و برای توسعه برنامه های تحت وب بسیار مناسب است اما در بقیه موارد حرفی برای گفتن ندارد.

البته کسی که سی++ بلد باشد و بعد از آن مثلاً PHP را شروع کند خیلی سریعتر و بهتر از کسی که قبلاٌ مثلاً با ویژوال بیسیک آشنا بوده،PHP را یاد می گیرد. همانطور که گفتم پلت فرم از زبان خیلی مهم تر است. من می توانم به شما قول دهم که شما می توانید در عرض ۳ ماه سی++ را به طور کامل یاد بگیرید، اما نمی توانید در فقط ۳ ماه یک برنامه نویس وب حرفه ای شوید. یادگیری سینتاکس یک زبان برنامه نویسی هر چقدر هم که مشکل باشد، در ۳ یا ۴ ماه میسر می شود اما یادگیری یک پلت فرم برنامه نویسی مانند دات نت و حرفه ای شدن در آن به این سادگی ها نیست!

کسانی که خود را محدود به یک زبان برنامه نویسی می کنند هیچ وقت موفق نخواهند شد. سراغ دارم کسانی را که برای تولید نرم افزار از جاوا و اوراکل استفاده می کنند اما نرم افزارشان به اندازه نرم افزاری که با دلفی و اینتربیس تولیدشده، بازدهی مطلوب ندارد. باور کنید استفاده از جاوا و اوراکل کلاس کاری شما را بالا نمی برد. استفاده نابجا از ابزارهای قدرتمند نشان از نا آگاهی و آماتور بودن شما دارد نه کلاس بالای شما!
در دنیای امروز باید بر اساس نیاز و خواست مشتری از این ابزارها استفاده کرد. این ها فقط ابزارهایی هستند در اختیار ما انسان ها، با تعصب بیجا و نا آگاهی انسان هایی در دست این ابزارها نباشیم.
——————————————————————————————————

 و در آخر به برسی کاربرد این زبانها می پردازیم :

برنامه نویسی سیستم های بزرگ
وضعیت در صنایع و سازمان های بزرگ بسیار متفاوت است. در جاهایی مانند صنایع مالی و بانکی، صنایع پتروشیمی و نفت، صنایع مخابراتی، سازمان های دولتی، صنایع خودروسازی و مانند این ها، هنوز هم جاوا و مشتقاتش حرف اول را می زنند. قدرت جاوا در این حوزه ها به قدری است که حتی می توان – البته با کمی احتیاط – گفت موفقیت سیستم های دیگری مانند اوراکل (که مبتنی بر جاوا است) نیز بی ارتباط با استیلای جاوا بر این محیط ها نیست. کارکردن با جاوا در محیط های بزرگ کار آسانی نیست. اوراکل هم آسان نیست و به طور کلی ورود به این عرصه ها چالش های مختلفی را پیش روی برنامه نویسان و شرکت های نرم افزاری قرار می دهد، به همین دلیل سیستم های مبتنی بر جاوا، گران و پرهزینه و غول آ سا هستند. با این حال توجه کنید که منظور از سازمان های بزرگ در اینجا سازمان هایی هستند که از نظر ابعاد، تعداد کلاینت ها و تراکنش ها واقعاً بزرگ هستند و منظور ما از آن شأن و منزلت یک سازمان نیست. در واقع شرکت هایی مانند اپراتورهای موبایل یا صنعت نفت در ایران را می توان نمونه هایی از اینگونه سازمان ها محسوب کرد. اما بسیاری از سازمان های دولتی در ایران صرف نظر از اهمیت استراتژیک یا منزلتشان، به دلیل ساختار قدیمی سازمان و مدرنیزه نشدن و مکانیزه نبودن فرآیندهای سازمان یا تنها به این دلیل که بیشتر از چند هزار کاربر ندارند، جزو سازمان های متوسط در این بحث به حساب می آیند.
● سازمان های متوسط و کوچک شرکت ها و سازمان هایی که کمتر از چند هزار کاربر یا چند صد کلاینت دارند، و آن هایی که خیلی کوچک و در حد مجموعه های ده الی بیست نفره هستند در این خانواده از کاربران سیستم های نرم افزاری قرار می گیرند. برای اغلب این سازمان های کوچک و بزرگ، هنوز هم چند صد هزار تومان هزینه برای توسعه و استقرار سیستم های نرم افزاری، رقم بزرگی به شمار می رود. هم به این دلیل و هم به دلایل فنی، این سازمان ها و شرکت ها باید از فناوری ها و زبان هایی برای توسعه سیستم های نرم افزاری خود استفاده کنند که هزینه کمتری دارند و کارکردن با آن ها ساده تر است. من برای اینگونه مجموعه ها استفاده از زبان سی شارپ و راه حل های مبتنی بر ویندوز (مانند SQL Server) را توصیه می کنم. سهولت و قدرت کار با دیتابیس، یکی از دلایل اصلی قدرت زبان های دات نتی است. البته به تازگی سیستم عامل، لینوکس هم طرفداران زیادی پیدا کرده است ولی موضوع انتخاب پلتفرم و سیستم عامل متفاوت از انتخاب زبان و فناوری برنامه نویسی است. شاید به همین دلیل، برخی به دنبال پیاده سازی سی شارپ در این محیط های غیرمایکروسافتی هستند. اما به هرحال زبان جاوا در سیستم های غیرمایکروسافتی طرفداران خاص خودش را دارد، ضمن این که تردیدی ندارم که هنوز هم استفاده از vb.net و API نرم افزارهای آفیس مایکروسافت (مانند اکسس) بهترین گزینه برای شرکت های کوچک و چندنفره است.
● برنامه نویسی برای موبایل
در حوزه برنامه نویسی وب زبان ++ C و پس از آن زبان جاوا پیشتاز است. زبان های دات نت نیز که اخیراً به این حوزه راه یافته اند، با فاصله زیادی آن دوتای دیگر را تعقیب می کنند. زبان +++ C زبان غامض و پیچیده ای است و به تدریج رو به افول گذاشته است.
اما C و ++ C زبان سخت افزار هستند و هربار که سخت افزار جدید و ناشناخته ای خلق می شود زبان شماره یک آن C است. به تدریج که آن پلتفرم سخت افزاری جان می گیرد، دوباره زبان های شی گرا مانند جاوا و سی شارپ دوروبرش قوت می گیرند.
++ C زبان اصلی سیستم عامل های سیمبیان و ویندوز موبایل است. زبان جاوا نیز که مستقل از سیستم عامل تلقی می شود، در جایی که سیمبیان یا ویندوز موبایل غایب باشند، حرف اول را می زند. البته چنان که می توان حدس زد، هیچ کس روی سیستم عامل ویندوز موبایل جاوا را جدی نمی گیرد و نگاه ها به سوی سی شارپ است.
● زبان های دیگر جدا از برخی زبان های برنامه نویسی که در کاربردهای خاصی مانند هوش مصنوعی ممکن است قدرت بیشتری داشته باشند، سایر زبان ها دیگر کهنه به نظر می رسند؛ فرترن و کوبول از آن جمله اند. البته زبان های کار با بانک های اطلاعاتی رابطه ای مانند T-SQL و PL/SQL موضوع متفاوتی است که در بحث ما نمی گنجد. یک نکته دیگر هم باقی می ماند و آن هم دیدگاه محافل آکادمیک درباره زبان های برنامه نویسی است. بدون تردید زبان جاوا هنوز هم محبوب ترین زبان در محافل آکادمیک است و پس از آن سی شارپ به دلیل شباهتش به جاوا مطرح است. البته در برخی از دانشگاه های ایران هنوز هم ممکن است زبان های قدیمی و فرسوده ای مانند فرترن تدریس شود که اگر چنین باشد جای تأسف است. ولی علاقه محافل آکادمیک به این یا آن زبان ممکن است گمراه کننده باشد. آنچه اهمیت دارد کاربرد و کارایی زبان در یک زمینه به خصوص و انعطاف پذیری آن در مقابل تغییراتی است که در صنعت و نیازهای مصرف کنندگان پدید می آید. دیگر مسائل، همگی سلیقه ای هستند و نباید با تعصب با این موضوع برخورد کرد

بررسی نرم افزارهای RMI

اغلب نرم افزارهای RMI شامل دو برنامه جداگانه ، سرور و کلانیت می باشند. برنامه سرور خاص بعضی از موجودات راه دور را می سازد ، رجوع به این موجودات را قابل دستیابی ساخته و کلانیت ها را منتظر نگه می دارد تا روش هایی را در مورد این موجودات القا کند. برنامه کلانیت خاص در مورد سرور به یک یا چند موجود راه دور ، به منبع راه دور دسترسی پیدا می کند و سپس روش هایی را در مورد آنها القا می کند. RMI مکانیسمی را ارائه می کند که به وسیله آن سرور و کلانیت با هم ارتباط برقرار کرده و اطلاعات را پس و پیش منتقل می کنند. از این نرم افزار غالبا” به عنوان نرم افزار موجود گسترده یاد می شود.

نرم افزارهای موجود گسترده نیاز به انجام مراحل ذیل دارد:

  • قرار دادن موجودات از راه دور: نرم افزارها از مکانیسم های مختلف برای رسیدن به منابع موجودات از راه دور استفاده می کنند. برای مثال، نرم افزار می تواند موجودات راه دور را با تسهیلات ساده نام گذاری RMI ، ثبات RMI ثبت کند. به طور متناوب ، نرم افزار می تواند منابع موجود راه دور را به عنوان بخشی از القاهای راه دور ارسال کرده و برگرداند.
  • ارتباط برقرار کردن با موجودات دور دست: جزئیات برقراری ارتباط بین موجودات راه دور به وسیله RMI کنترل و بررسی می شوند. برای برنامه نویس ، برقراری ارتباط راه دور شبیه به القاهای روش های معمولی جاوا می باشند.
  • بارگذاری تعاریف گروهی برای موجوداتی که ارسال شده اند: چون RMI موجودات را قادر می سازد که به جلو وعقب ارسال شوند ، مکامیسمی را برای بارگیری تعاریف گروهی موجود و برای انتقال داده های موجود فراهم می سازد.

عکس ذیل ، نرم افزار RMIگسترده را ترسیم می کند که از ثبات RMI برای رسیدن به منبع هر موجود راه دور استفاده می کند. سرور با ثبات تماس می گیرد تا نام را به موجود راه دور ربط بدهد. کلانیت از طریق نام در ثبات سرور به بررسی موجود راه دور می پردازد و سپس روشی را در مورد آن القا می کند. عکس همچنین نشان می دهد که سیستم  RMI از سرور وب موجود برای بارگیری تعاریف گروهی از سرور به کلانیت و از کلانیت به سرور برای موجودات در زمان نیاز استفاده می کند

مزایای بارگذاری کد دینامیک

یکی از خصویات محوری و خاص RMI ، توانایی آن برای بارگیری تعریف طبقه موجود می باشد اگر طبقه در دستگاه مجازی جاوا رسیور تعریف نشده است. کل انواع و رفتار موجود ، که قبلا” در یک ماشین مجازی جاوا وجود داشته ، به ماشین مجازی دور دست منتقل می شوند. RMI ، موجودات را از طریق طبقات واقعی آنها منتقل می کند ، از این رو رفتار موجودات تغییر نمی کند زمانی که آنها به دیگر ماشین مجازی جاوا فرستاده می شوند. این قابلیت ، انواع و رفتارهای جدید را قادر می سازد در ماشین مجازی دور دست جاوا وارد شوند، از این رو به طور دینامیکی رفتار نرم افزار تعمیم پیدا می کند. مثال ماشین محاسبه در این اثر از این قابلیت برای وارد کردن رفتار جدید در برنامه گسترده استفاده می کند.

واسط ها، موجودات و روش های راه دور

همانند دیگر نرم افزارهای جاوا ، نرم افزار گسترده ساخته شده با استفاده از RMI جاوا ، از واسط ها و گروه ها ساخته شده است. واسط ها ، روش ها را نشان می دهند. گروه ها (طبقات) روش های ذکر شده در واسط ها را پیاده می کند و احتمالا” روش های دیگر را نشان می دهد. در نرم افزار گسترده ، بعضی از پیاده سازی ها در بعضی از ماشین های مجازی قرار دارند اما نه در تمام آنها . موجودات با روش هایی که در ماشین های مجازی القا می کنند، موجودات راه دور نامیده می شوند.

موجود از طریق پیاده سازی واسط راه دور ، دور دست می شود، که خصوصیات ذیل را دارد:

  • واسط راه دور، واسط را تعمیم می دهد. Java. rmi. Remote
  • هر روش واسط  Java. rmi. Remote Exception را در عبارت throws آن علاوه بر هر گونه استثناهای نرم افزار- خاص نشان می دهد.

RMI متفاوت از موجودات غیر دور دست با موجود راه دور برخورد می کندزمانی که موجود از یک ماشین مجازی جاوا به ماشین مجازی دیگر جاوا ارسال می شود به جای کپی کردن از موجود پیاده سازی در ماشین مجازی دریافت جاوا ، RMI ، stub همانند یک نماینده محلی یا پروکسی برای موجود راه دور عمل می کند و اساسا” برای کلانیت ، منبع دور دست است. کلانیت روشی را در مورد stub محلی القا می کند، که عاملی برای انتقال القای روش در موجود دور دست است

Stub موجود راه دور ، همان مجموعه از واسط های راه دور را محقق می سازد که موجود راه دور پیاده می کند. این ویژگی Stub را قادر می سازد تا قالبی برای واسط هایی باشد که موجود پیاده می کند. از این رو ، تنها روش های تعریف شده در واسط راه دور ، موجود هستند که می توان آنها را از ماشین مجازی دریافت جاوا درخواست کرد.

نرم افزارهای گسترده با استفاده از RMI

استفاده از RMI برای طراحی نرم افزار گسترده مستلزم این مراحل کلی استک

  1. طراحی و پیاده سازی عناصر نرم افزار گسترده
  2. کامپایل کردن منابع
  3. طبقات شبکه را قابل دستیابی ساختن
  4. راه اندازی نرم افزار

طراحی و پیاده سازی عناصر نرم افزار گسترده

نخست ، ساختار نرم افزار را مشخص کنید، من جمله این که عناصر موجودات محلی هستند و این که کدام عناصر از راه دور قابل دستیابی هستند. این مرحله شامل موارد ذیل است:

  • تعریف کردن واسط های راه دور: واسط راه دور ، روش هایی را تصریح می کند که از راه دور به وسیله کلانیت القا می شوند. برنامه کلانیت ها در واسط های راه دور، نه در طبقات پیاده سازی آن واسط ها. طراحی این واسط ها شامل تعیین انواع موجوداتی است که به عنوان پارامترهایی استفاده خواهند شد و برای این روش ها ارزش هایی قائل هستند. اگر هر یک از این واسط ها یا طبقات تاکنون وجود داشته اند، لازم است که شما آنها را تعریف کنید.
  • پیاده سازی موجودات راه دور: موجودات راه دور باید یک یا چند واسط راه دور را پیاده نمایند. طبقه موجود راه دور شامل پیاده سازی های واسط های دیگر و روش هایی است که به طور موضعی وجود دارند. اگر هر یک از طبقات موضعی باید برای پارامترهایا برگرداندن ارزش های هر یک ار این روش ها استفاده شوند، آنها باید محقق گردند.
  • پیاده سازی کلانیت ها: کلانیت هایی که از موجودات راه دور استفاده می کنند، در هر زمانی پیاده می شوند بعد از این که واسط ها  ی راه دور مشخص شوند از جمله بعد از این که موجودات راه دور آرایش شدند.

کامپایل کردن منابع

به همراه برنامه جاوا ، شما از کامپایلرJavac   برای کامپایل کردن فایل ها استفاده کنید.فایل های منبع شامل اعلان های واسط های راه دور ، پیاده سازی های آنان ، دیگر گروه های سرور و طبقات کلانیت هستند. نکته : با توجه به گونه های قبل از پلاتفورم  جاوا ، ویرایش استاندارد ۵٫۰ ، مرحله اضافی لازم است تا طبقات stub با استفاده از کامپایلر rmic ساخته شوند. از این رو این مرحله بیش از این نیاز نیست.

طبقات شبکه را قابل دستیابی ساختن

در این مرحله ، شما تعاریف خاص طبقه شبکه را قابل دستیابی می سازید ، مانند تعاریف مربوط به واسط های راه دور و انواع مربوطه آنها و تعاریف طبقاتی که برای دان لود کردن در کلانیت ها یا سرورها لازم هستند. تعاریف طبقات معمولا” از طریق وب سرور، شبکه را قابل دستیابی می سازد.

راه اندازی نرم افزار

راه اندازی نرم افزار شامل اجرای ثبات موجود راه دور RMI ، سرور و کلانیت است.

مابقی این بخش به بررسی مراحل استفاده شده برای ساخت ماشین محاسبه می پردازد.

ساخت ماشین محاسبه ژنریک

این اثر به بررسی نرم افزار ساده ، و قدرتمندی می پردازد که ماشین محاسبه نامیده می شود. ماشین محاسبه ، موجود راه دور در مورد سرور است که کارهای کلانیت ها را انجام می دهد ، وظایفی را رانش کرده و نتایجی را بر می گرداند. کارها در ماشینی اجرا می شوند که سرور رانش می کند. این نوع نرم افزار گسترده می تواند تعدادی از ماشین های کلانیت را قادر سازد تا از ماشین قدرتمند یا ماشینی استفاده کند که نرم افزار خاصی دارد.

جنبه جدید ماشین محاسبه آن است کهکارهایی که این ماشین انجام می دهد نیازی به تعریف شدن ندارد زمانی که ماشین محاسبه نوشته شده یا راه اندازی می شود. انواع جدیدی از کارها را می توان در هر زمانی بوجود آورد و سپس آنها را به ماشین محاسبه برای رانش داد. تنها شرط لازم کار، این است که طبقه آن، واسط خاصی را پیاده سازی می کند که لازم است برای انجام این کار از طریق سیستم RMI در ماشین محاسبه دان لود می شود. سپس ، ماشین محاسبه ، با استفاده از منابع در ماشین کار را اجرا می کند در جایی که ماشین محاسبه رانش می کند.

توانایی برای انجام کارهای دلخواه ، از طریق ماهیت دینامیکی پلاتفورم جاوا فعال می شود، که بوسیله RMI به شبکه تعمیم یافته است. RMI به طور دینامیک کد کار را در ماشین مجازی موتور محاسبه جاوا بارگذاری می کند و کار را بدون اطلاعات قبلی طبقه ای که کار را پیاده سازی می کند ، رانش می نماید. این نرم افزار که به طور دینامیکی توانایی دان لود کردن کد را دارد ، غالبا” به عنوان نرم افزار رفتار بنیاد نامیده می شود. این نرم افزارها به ساختارهای عامل توانا نیاز دارند. با  RMI ، این نرم افزارهایی بخشی از مکانیسم های اصلی برای محاسبه گسترده در پلاتفورم جاوا هستند.

خلاصه

در این تحقیق با پیدایش و خصوصیات زبان جاوا آشنا شدید،امروزه این زبان یکی از مهمترین و پر استفاده ترین زبانهای برنامه نویسی در جهان می باشد،با استفاده از آن می توان برنامه هایی در تمام سطوح نوشت.

زبان جاوا در سه نسخه ارایه شده است:

J2SE: شامل کامپایلر،اجرا کننده و مجموعه ای از دیگر ابزارها و کتابخانه های زبان جاواست که با استفاده از آن می توان یک برنامه اولیه به زبان جاوا نوشت.به عبارت بهتر برای نوشتن یک برنامه به زبان جاوا،حداقل چیزی که نیاز دارید J2SE است.

J2EE: شامل مجموعه ای از کتابخانه ها و ابزارهاست که برای نوشتن یک برنامه مدرن به آن نیاز دارید.منظور از یک برنامه مدرن،برنامه ای است که ممکن است به صورت توضیع شده روی چندین کامپیوتر اجرا شود یا اجرای آن به Application server  یا Web server نیاز داشته باشد.

J2ME: شامل مجموعه ای از ابزارها و کتابخانه های جاواست که برای نوشتن برنامه برای لوازم خانگی،اسباب -بازی،موبایل و دیگر لوازم الکترونیکی بکار می رود.

دقت داشته باشید که به تمام این نسخه ها، JAVA 2 گفته می شود زیرا معماری جاوا از نسخه۲٫۱ به بعد، به طور اساسی تغییر کرده است(در حال حاضر نسخه جاوا ۱٫۶ می باشد).

هر برنامه ای که به زبان جاوا نوشته می شود،قابل اجرا روی بسیاری از platform های مختلف از قبیل (ویندوز)،(یونیکس)،(مکینتاش) میباشد.بنابراین برنامه ای که به زبان جاوا نوشته می شود همواره مستقل از platform باقی می ماند.برای ایجاد چنین قابلیتی ،جاوا (jvm) یا (ماشین مجازی جاوا) را ارائه کرده است،JVM مسئولیت انطباق یک برنامه را با یک platform خاص بر عهده دارد.

هر برنامه،ابتدا توسط کامپایلر جاوا کامپایل می شود،در این مرحله خطاهای ساختاری برنامه توسط کامپایلر کشف و گزارش می شود،در صورتیکه برنامه فاقد خطا باشد فایلهای .class ساخته می شوند این فایلها حاوی کدهایی هستند که توسط JVM به Platform ای که قرار است روی آن اجرا شوند تفسیر می شوند.

 

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *