«چیزی که جاوا سعی میکند حل کند و بسیار عالی از عهده آن بر آمده است، گسترش دادن حوزههای متفاوت است؛ میتوانید برنامههای طرف کارگزار (Server) بنویسید؛ میتوانید برای گوشیهای موبایل برنامه بنویسید؛ میتوانید برنامههای علمی بنویسید؛ میتوانید نرمافزار بنویسید؛ میتوانید بین سیارات سفر کنید؛ همه کار …»
جیمز گاسلینگ، پدر زبان جاوا
۱- سال ۱۹۹۱ پروژهای به نام «گرین» در شرکت سان مایکروسیستمز (Sun Microsystems) آغاز شد. هدف این پروژه ساختن یک زبان برنامه نویسی بود که بتواند بر روی کلیه سختافزارها اجرا شود. این هدف، هدف بسیار بزرگی بود. این پروژه در انتهای کار «جاوا» نامیده شد. زمانی که زبان جاوا در حال ساخت بود، زبانهای C و C++ بر سایر زبانهای برنامه نویسی فرمانروایی میکردند. با این حال نقاط ضعف عمده آنها بسیاری از برنامهنویسان را میآزرد. برای مثال اگر میخواستید یک برنامه به زبان C بنویسید و آن را بر روی کامپیوترهای ساخت شرکتهای مختلف اجرا کنید، باید کد منبع (Source Code) آن را در هر کدام از ماشینها کامپایل میکردید و کد اجرایی را در ماشین مورد نظر اجرا میکردید. تا اینجای مسأله خیلی سخت نبود ولی نکته اینجا بود که شما برای کامپایل کردن برنامه مجبور میشدید هر بار کد منبع را تغییر دهید. در کنار این مجبور بودید همواره چندین نسخه کد منبع متفاوت را نگهداری کنید که این مسأله هزینه تولید نرمافزار را به شدت افزایش میداد.
سال ۱۹۹۵ اولین نسخه زبان جاوا به همراه یک فناوری تکان دهنده به نام اپلت (Applet) به دنیا معرفی شد. زبان جدید ادعا میکرد که بر روی همه سیستم عاملهای موجود کار میکند. شما نیازی نیست کدهای منبع متفاوتی برای برنامه خود تهیه و نگهداری کنید. شعار زبان جدید، «یک بار بنویس، همه جا اجرا کن» (Write Once, Run anywhere) بود. زبان جدید آمده بود تا آینده وب را رقم بزند. زبان جدید همه را امیدوار کرد. اشکالات عمده زبانهای قبلی مثل C و C++ را دیگر نداشت و بنابراین با استقبال فراوان برنامهنویسان در سرتاسر جهان مواجه شد.
این زبان سیر طبیعی خود را طی کرد و با توجه به نظرات برنامهنویسان تغییراتی در آن اعمال شد. با این حال جاوا به شدت معتقد به رعایت شعار خود بود و توانسته بود با اقتدار از این ادعای خود دفاع کند. سال ۱۹۹۹ شرکت سان زبان جاوا را به سه شاخه اصلی تقسیم کرد:
- جاوا ۲ نسخه استاندارد یا J2SE: این شاخه شامل کلیه ویژگیهای استاندارد زبان جاوا است.
- جاوا ۲ نسحه سازمانی یا J2EE: این شاخه برای برنامه نویسی سمت کارگزار (Server) است.
- جاوا ۲ نسخه میکرو یا J2ME: این شاخه برای برنامه نویسی دستگاههای الکترونیکی مصرفی از قبیل گوشیهای تلفن همراه است.
رشد طبیعی جاوا ادامه داشت و هر چند گاهی نسخههای جدید و اصلاحات جاوا به جامعه برنامه نویسی ارائه میشد. در سال ۲۰۰۵ شرکت سان تصمیم گرفت که قواعد نامگذاری خود را تغییر دهید. نام زبان جاوا که همراه با شماره نسخه آن بود، چیزی شبیه j2sdk_1.4.06 میشد. پس از این سال و با توجه به تغییرات فراوانی که در زبان جاوا ایجاد شد، این زبان نام Java 5 را برگزید. سه شاخه اصلی زبان جاوا نیز با حفظ اهداف و ویژگیهای قبلی، تغییر نام یافتند. نامهای جدید هر کدام به شکل زیر است: Java SE یا جاوا نسخه استاندارد، Java EE یا جاوا نسخه سازمانی و Java ME یا جاوا نسخه میکرو.
از آن سال شرکت سان هر سال نسخه جدیدی از زبان جاوا را به دنیای کامپیوتر و برنامه نویسی ارائه کرده است. در حال حاضر آخرین نسخه جاوا استاندارد، نسخه ۸ است. در این کتاب سعی میکنیم، مطالب مفید و آموزشی درباره آخرین نسخه جاوا را به اختصار معرفی کنیم.
۲- زبان جاوا چگونه زبانی است؟ زبان جاوا زبانی شیءگرا، مستقل از پلتفرم و امن است که طراحی آن به گونهای است که آموزش آن از C++ آسانتر و استفاده اشتباه از آن در مقایسه با C و C++ سختتر است. شیءگرایی یکی ار شیوههای توسعه نرمافزار است. در این شیوه برنامه از ترکیب اشیا و ارتباطات بین اشیا ساخته میشود. درباره شیءگرایی در فصلهای بعدی بیشتر خواهیم آموخت. مستقل بودن از پلتفرم (سکو) قابلیتی است که نرمافزار بدون تغییر بتواند در انواع پلتفرمها اجرا شود. برنامههای جاوا پس از کامپایل تبدیل به «بایتکد» میشوند. هر ماشینی که ماشین مجازی جاوا را داشته باشد، میتواند «بایتکد»ها را اجرا کند. با استفاده از این ویژگی میتوانید یک برنامه جاوا را در ویندوز نوشته و کامپایل کنید و بعد بایتکدهای تولید شده را در ویندوز، لینوکس، سولاریس و حتی در گوشیهای موبایل مجهز به جاوا (Java Enabled) اجرا کنید. در این باره در همین فصل بیشتر خواهیم گفت.
۳- مراحل نوشتن و اجرای یک برنامه جاوا: در اینجا میخواهیم مراحل نوشتن و اجرای یک برنامه را به صورت مختصر توضیح دهیم. برای درک بهتر این مراحل به تصویر زیر دقت کنید:
مرحله اول: برای شروع کار باید متن برنامه را بنویسید و آن را در یک فایل متنی ذخیره کنید. برای این کار میتوانید از ویرایشگرهای متن مختلف استفاده کنید. فقط باید در هنگام ذخیره کردن فایل متن برنامه (Source Code) دو نکته را در نظر داشته باشید: اول این که متن برنامه را حتماً به صورت متن ساده (text) ذخیره کنید و دوم این که پسوند فایل java باشد.
مرحله دوم: در مرحله دوم کامپایلر جاوا فایل متن برنامه که در مرحله قبل تولید شده است را دریافت و آن را کامپایل میکند. در این مرحله کامپایلر جاوا فایلی به همان نام فایل متن برنامه و با پسوند class ایجاد میکند. این فایل حاوی بایتکد (دستوراتی که ماشین مجازی جاوا آن را میفهمد و میتواند آن را اجرا کند) است.
مراحل سه و چهار و پنج در هنگام اجرای برنامه جاوا اتفاق میافتند.
مرحله سوم: قبل از این که برنامه اجرا شود، برنامهای به نام بارگذار کلاس (Class Loader) که یکی از اجزای اصلی ماشین مجازی جاوا است، اجرا شده و بایتکدها را از فایل class مورد نظر خوانده و آنها را در حافظه اصلی قرار میدهد. در صورتی که بایتکدها نیاز به بایتکدهای کلاسهای دیگر داشته باشند، بارگذار کلاس به تناسب سایر کلاسها را نیز خوانده و آنها را در حافظه قرار میدهد.
مرحله چهارم: در این مرحله یکی دیگر از اجزای ماشین مجازی جاوا به نام اعتبارسنج کلاس (Class Verifier) فعال شده و بایتکدهایی را که در حافظه قرار گرفتهاند بررسی میکند تا ببیند که آیا از قوانین جاوا تخلف کردهاند یا خیر؟ در صورتی که هیچ خطایی وجود نداشته باشد، برنامه برای اجرا آماده میشود.
مرحله پنجم: در این مرحله ماشین مجازی جاوا بایتکدهایی را که اعتبارسنجی شده و به تأیید رسیدهاند به زبان ماشینی که بر روی آن قرار دارد ترجمه نموده و آنها را اجرا میکند.
فرایند ترجمه و اجرای برنامههای جاوا توسط ماشین مجازی جاوا فرایند پیچیدهای است که در یکی از فصلهای این کتاب که با جزئیات به ماشین مجازی جاوا خواهیم پرداخت، آن را بیان میکنیم.
ادامه دارد…