برنامه نویسی جاوا – قسمت دوم

یکشنبه, ۲۶ام مهر , ۱۳۸۸ | ۷ دیدگاه

اینترنت کمک کرد تا جاوا به صدر جدول برنامه سازی پرتاب شود و جاوا هم به نوبه خود تاثیر زیادی بر اینترنت داشته است زیرا جاوا دنیای اشیایی  که آزادانه قادر به حرکت در فضای کامپیوتری Cyberspace هستند را تغییر داده است. در هر شبکه دو دسته گسترده از اشیا در بین سرویس دهنده و کامپیوتر های شخصی منتقل می شوند: اطلاعات غیر فعالPassive و برنامه های پویا و فعال. مثلا وقتی E-mail های خود را چک می کنید یا در حال Download یک برنامه هستید صرفا در حال مشاهده یک سری داده های غیر فعال هستید اما نوع دیگری از اشیا به کامپیوترتان قابل انتقال هستند:یک برنامه پویای خود اجراSelf-executing . این چنین برنامه ها یک عامل یا agent فعال در کامپیوتر سرویس گیرنده به شمار می آیند که می بایست توسط سرویس دهنده آغاز شود.

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

اپلت های جاوا

هر اپلت نوع ویژه ای از برنامه های جاوا است که برای انتقال در اینترنت و اجزای خودکار توسط مرور گرهای سازگار با وب طراحی شده است.به علاوه ا      لت ها در صورت نیاز و تقاضا download می شوند درست مانند یک تصویر با این تفاوت که هر اپلت نوعی برنامه هوشمندintelligent program است و نه صرفا یک فایل رسانه ای به عبارت دیگر هر اپلت برنامه ای است که می تواند نسبت به ورودی کاربر عکس العمل انجام دهد و به طور پویا تغییر کند.

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

امنیت

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

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

قابلیت انتقال

برای آنکه برنامه ها به طور پویا به انواع محیط های متصل به اینترنت download شوند روشی برای تولید کد اجرایی قابل انتقال لازم است.همان مکانیزمی که امنیت را تضمین می کند به دست یافتن به قابلیت انتقال نیز کمک می کند.(در Unitهای بعدی به این مسئله     می پردازیم)

کد های بایتی؛ فصل تمایز جاوا

کلیدی که به جاوا امکان حل کردن مشکل امنیت و قابلیت انتقال را می دهد؛آن است که خروجی کامپایلر آن کد اجرایی نیست بلکه در عوض کد بایتی است.کد بایتی مجموعه ای مفید از دستورالعملهایی است که برای اجرا توسط سیستم”زمان-اجرای”جاوا طراحی شده است.این سیستم ماشین مجازی جاواJVM نام دارد. در حقیقت JVM نوعی مفسرinterpreter برای کد بایتی است.

بیشتر زبانهای نوین به گونه ای طراحی شده ان که نتیجه کامپایل آنها کد اجرایی باشد و نه کد قابل تفسیر که دلیل این امر هم همان مسائل مربوط به کارایی است اما این حقیقت که برنامه های جاوا توسطJVM تفسیر می شوند به حل مسائل مربوط به download کردن برنامه ها در اینترنت کمک می کند.

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

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

اگر چه جاوا از همان ابتدا به عنوان یک زبان مفسردار طراحی شده است اما از نظر فنی مانعی در رابطه با این زبان وجود ندارد که از کامپایل فوری کد بایتی به کد زبان ماشین و در نتیجه افزایش کارایی جلوگیری کند.به همبن دلیل شرکت سان مدت کمی بعد از ارائه جاوا فناوری HotSpot را نیز عرضه کرداین فناوری کامپایلرJIT(just-in-time) را برای کد بایتی ارائه می دهد. وقتی کامپایلر JIT بخشی ازJVM باشد بخشهای منتخب کد بایتی بلافاصله و قسمت به قسمت بر اساس تقاضا به کد زبان ماشین ترجمه می شوند.

اصطلاحات مهم جاوا

هیچ بحثی در مورد جاوا بدون بررسی اصطلاحات آن کامل نمی شود پس با هم به بررسی این اصطلاحات می پردازیم:

۱- سادگی

جاوا به گونه ای طراحی شده است که فراگیری آن برای برنامه سازان حرفه ای آسان باشد با کمی تجربه در برنامه سازی تسلط یافتن بر جاوا اصلا مشکل نیست.اگر برنامه سازی شی گرا را فراگرفته باشید مثلا با زبانی مثلC++ آشنا باشید تلاش کمی برای روی آوردن به جاوا باید انجام دهید.

۲- شی گرایی

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

۳- استحکام

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

برای آنکه چگونگی استحکام جاوا ره بهتر درک کنید دو مورد از دلایل اصلی عدم موفقیت برنامه ها را در نظر بگیرید: ۱- اشتباهات مدیریت حافظه و ۲- استثناهایی که به درستی مدیریت نشده اند(خطا های زمان اجرا) . مدیریت حافظه در محیط های برنامه سازی قدیمی می تواند به امری دشوار و کسل کننده تبدیل شود. برنامه سازان در C وC++ باید حافظه پویا را به صورت دستی تخصیص دهند و آزاد کنند و این امر به خاطر دلایلی مثل فراموشی یا اشتباه در آزاد سازی حافظه مشکل آفرین است. جاوا عملا این مشکل را با مدیریت تخصیص و آزاد سازی حافظه حذف کرده است.در حقیقیت این عمل در جاوا به صورت خودکار انجام می شود(جاوا ویژگی مدیریت حافظه های بلااستفاده را برای  شی های بدون استفاده فراهم ساخته است). استثناهاexception در محیط های قدیمی در شرایطی مانند تقسیم بر صفر یا عدم وجود فایل ایجاد می شوندو باید با ساختارهای گرامری که درک مشکلی دارند مدیریت شوند اما جاوا با فراهم ساختن امکان مدیریت استثناها به برنامه سازان کمک کرده است.

۴Multithreaded

جاوا برای ایجاد برنامه های محاوره ای و تحت شبکه طراحی شده است و برای رسیدن به این هدف از برنامه سازیMultithreaded پشتیبانی می شود که قادر به نوشتن برنامه هایی است که برای انجام چند عمل در یک زمان است؛ می باشد. سیستم زمان-اجرای جاوا با راه حل ساده و در عین حال پیچیده ای برای همگام سازیSynchronization فرآیند های همزمان ایجاد شده است تا امکان ساخت سیستم های محاوره ای فراهم شود.

۵- معماری مستقل

از جمله مسائل اصلی که برنامه سازان با ان مواجه هستند این است که هیچ تضمینی وجود ندارد که برنامه ای که امروز نوشته اند فردا هم اجرا شود حتی در همان کامپیوتر.ارتقاء سیستم عامل؛ ارتقاء پردازنده و تغییرات منابع سیستمی از جمله دلایل بروز این مشکل هستند ما جاوا با طراحی ویژه اش در پی رسیدن به این هدف بود: یک بار بنویسید ؛ هر وقت و برای همیشه در همه جا اجرا کنید.!

۶– مفسر دار و بسیار کارآمد

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

۷- توزیع شده

جاوا برای محیط های توزیع شده اینترنت طراحی شده است چرا که پروتکل های TCP/IP را به خوبی مدیریت می کند. جاوا همچنین از RMI(Remote Method Invocation)  پشتیبانی می کند که این ویژگی امکان فراخوان متد ها در شبکه را برای برنامه ها فراهم می سازد.

۸- پویا

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

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

اگه سوالی داشتید به این آدرس ایمیل ارسال کنید: schoneDame2294@yahoo.com

خانم مینا هوشمند نویسنده جدید سایت ITT هستند که فعلا بصورت آزمایشی و در آینده ای نزدیک بصورت رسمی به تیم ما خواهند پیوست.

پستهای مرتبط :

برنامه نویسی جاوا – قسمت ۱

Be Sociable, Share!


۷ دیدگاه


  1. هادی
    ۲۸ مهر ۱۳۸۸


    خسته نباشید!




  2. هادی
    ۱۲ آبان ۱۳۸۸

    قسمت سوم رو دیر نکنید ها!




  3. mahdijon
    ۲۲ دی ۱۳۸۸

    سلام لطفا هر قسمت رو تو یه فایل pdf قرار بده




  4. سعید
    ۷ آذر ۱۳۸۹

    سلام

    واقعا از سایت و اموزش های خوبتون ممنونم و امیدوارم این سایتتون همیشه اپ دیت و پر ترافیک باشه
    اگه ممکنه اموزش ها رو به صورت PDF هم بزارید

    ممنون




  5. حسین میرزاخانی
    ۱۸ فروردین ۱۳۹۰

    سلام
    بسیار سودمند وپویا هستید امیدوارم در کارتان موفق باشید.




  6. زهرا
    ۱۷ بهمن ۱۳۹۰

    عالی بود ولی کافی نیست




  7. جعفر غلامی
    ۱۸ اردیبهشت ۱۳۹۲

    اگه میشه و زحمت نیست من نمی تونم که همیشه به اینترنت متصل لطفا اگه میشه این ها را به ایمیل من بفرستین متشکرم



دیدگاه خود را بنویسید