آموزش جاوا
آموزش برنامه نویسی جاوا
سری اول
در یکی از مقالات شرکتSun، زبان جاوا را با این ویژگیها شرح میدهد:
جاوا یک زبان ساده، شی گرا، توزیع شده، تفسیر شده، قدرتمند، ایمن، با معماری خنثی، قابل حمل، با عملکرد سطح بالا چند نخ کشی شده پویا است.
Sun تصدیق میکند که به طور قطع این کلمات رشتههایی از عبارت های متداول در زبان برنامـه نویسی هستند ، ولی حقیقت این است که این عبارت ها به طور ماهرانهای ویژگیها این زبان را شرح میدهند.
حال به برخی از خصلتهای جاوا در پشت این واژه ها میپردازیم.
شی گرا: Object Oriented
جاوا یک زبان پروگرام نویسی شیگرا است. جهت یک برنامـه نویس این به این معنا است که به جای فکر کردن به پارت های رویه برنامـه ، بایستی به کاربرد داده ها و روشهایی که روی آن داده ها عمل میکنند، توجه شود.
اگر شما به پروگرام نویسی با اعلان رویه در C عادت کرده اید، ممکن است دریابید که به مصرف از جاوا مجبور به تغییر در روش و چگونگی برنامـه تان هستید. ی که فهمیدید این الگوی نو چقدر قدرتمند است، سریع با آن همموسیقی میشوید .
در یک سیستم شی گرا، یک کلاس مجموعهای از دادهها و روشهایی است که روی آن داده عمل میکنند. همراه بودن دادهها و متدها رفتار حالت یک شی را بیان می دارد. کلاسها به صورت سلسله مراتبی مرتب شده اند، پس یک زیر کلاس میتواند رفتار هایی را از کلاس بالاتر به ارث ببرد. یک کلاس سلسله مراتبی همیشه یک کلاس ریشه دارد که کلاسی است با رفتار های کاملا عمومی .
جاوا به همراه دسته ی وسیع ای از کلاس هایی است که در بسته هایی مرتب شده اند شما میتوانید از آنها در پروگرام ی استفاده کنـید .
یک شی کلاس(in the java.lang package) به عنوان ریشه کلاس سلسله مراتبی جاوا انجام وظیفه میکند .
درست است که جاوا طوری طراحی شده است که مثل C++ باشد ویژگی های آن را داشته باشد اما ی که با آن کار نمایید خواهید فهمید که بسیاری از پیچیدهگی های آن زبان را از بین برده است .
چنانچه شما یک برنامـه نویس C++ هستید حتمـا لازم است که ساختار های شی گرایی در جاوا را به دقت بررسی نمایید . البته اگر چه ترکیب و شیوه دستورات آن نسبتا شبیه C++ است، اما رفتار های آن بسیار زیاد مشابه نیست .
تفسیر شده: Interpreted
جاوا یک زبان تفسیر شده است. کامپایلر جاوا به جای ایجاد کد مکانی اتومبیل ، کد بایتی جهت اتومبیل مجازی جاوا ایجاد میکند. برای اجرای دقیق پروگرام ، از مفسر جاوا جهت اجرای کد های بایتی کامپایل شده استفاده میشود. به دلیل اینکه کدهای بایتی جاوا به نوع کامپیوتر بستگی ندارند، پروگرام های جاوا میتوانند روی هر نوع کامپیوتری که JVM (Java Virtual Machine) را دارند، اجرا شوند .
در محیط تفسیر شده، وهله لینک استاندارد گسترش برنامـه از دید کاربر پنهان است. چنانچه جاوا فقط یک وهله لینک داشت، فقط بارگذاری کلاس به محیط پردازش میشد که این خصوصیت با چرخه کامپایل-لینک-اجرا ی آرام و طاقت فرسای زبان هایی مانند C یا C++ در تضاد است .
معماری خنثی قابل حمل: Architecture Neutral and Portable
به اینکه برنامـه های جاوا در فرمت کد بایتی با معماری خنثی کامپایل شده اند، پروگرام کاربردی جاوا میتواند در هر سیستم ی اجرا شود.
اما با این شرط که آن سیستم توانایی پیاده سازی اتومبیل مجازی جاوا را داشته باشد. این مسئله نسبتا برای کاربردهای توزیع شده روی اینترنت یا دیگر شبکههای ناهمگن با اهمیت زیاد است. اما روش معماری خنثی برای کاربردهای بر مبنای شبکه مفید است .
به عنوان یک گسترش دهنده برنامـه های کاربردی، در بازار نرم افزار ی امروز ممکن است بخواهید مـدل های کاربردی خود را گسترش دهید، به طوری که بتواند رویPc، مکینتاش سیسـتم علت Unix اجرا شود .با وجود گونههای مختلف Unix ،Windows روی Pc و مکینتاش قوی ، رفته رفته تولید نرم افزار برای تمام انواع این کامپیوتر ها سخت میشود. اگر شما پروگرام تان را در جاوا بنویسید میتواند روی همهی این کامپیوترها اجرا شود.
در واقع تفسیر شده بودن جاوا وتعریف یک استاندارد، معماری خنثی داشتن فورمت کد بایتی آن از بزرگترین دلایل قابل حمل بودن آن به شمار می آیند .
اما جاوا باز از این بیشتر گام برمیدارد، با اطمینان حاصل کردن از اینکه هیچیک از جنبههای وابستگی اجرایی زبان را ندارد. برای مثال جاوا به طور صریح اندازه هریک از انواع داده را تعریف میکند که این با C فرق دارد، برای مثال هریک از انواع صحیح میتواند بسته به نوع رایانه 16-32 یا 64 بیت طول داشته باشد .
ی که به صورت تکنیکی امکان نوشتن برنامـه های غیر قابل حمل در جاوا فراهم شد، پیشگیری از چند ویژگی وابسته به نوع رایانه که توسط جاوا API تولید شده به طور قطع قابل حمل نوشته شده است، آسان است .
یک برنامـه جاوا به تولید کنندگان برنامـه کمک میکند تا از قابل حمل بودن کد هایشان اطمینان حاصل کنند. پروگرام نویسان تنها برای پرهیز از دام غیر قابل حمل بودن پروگرام احتیاج به یک تلاش آسان دارند که شعار تجارتی شرکتSun را زنده نگهدارند و آن شعار این است :
" یک بار بنویس ، تمام جا اجرا کن" .
پویا توزیع شده: Dynamic and Distributed
جاوا یک زبان پویا است. هر کلاس جاوا میتواند در هر زمانی روی مفسر جاوا بارگذاری شود. پس این کلاسهای بارگذاری شدهی پویا میتوانند به صورت پویا معرفی شوند. حتی کتابخانه کدهای محلی میتواند به طور پویا بارگذاری شود. کلاسها در جاوا با کلاس Class فراخوانی میشوند؛ شما میتوانید به طور پویا درمورد یک کلاس در زمان اجرا اطلاعاتی بدست بیاورید. این خصوصیت در جاوا به طور درستی موجود است . با وجود بازتاب API اضافه شده (Application Program Interface ) که به برنامـه ساز امکان میدهد که با برنامـه از طریق یک پروگرام کاربردی دیگر رابطه برقرار کند .
جاوا حتی با نام زبان توزیع شده خوانده میشود. به طور آسان این به این معنا است که این زبان پشتیبانی سطح بالایی برای شبکه به وجود می آورد. جهت مثال کلاس URL و کلاس های ارتباط با آن در بستهی ava.net ، خواندن فایلهای دوردست را به همان آسانی خواندن فایلهای مکانی کرده است. به طور مشابه در جاوا 1-1، احضارروش کنترلی RMI (Remote Method Invocation ) API به یک برنامـه جاوا اجازه میدهد که روشهایی از اشیاء دور دست جاوا را به همان صورتی که چنانچه آن اشیاء مکانی بودند آنها را میخواند، بخواند .( جاوا حتی از سیسـتم شبکهای سطح پایین که حاوی آدرس مقصد و مسیر جریانی که توسط سوکتها متصل شده است نیز پشتیبانی میکند).
طبیعت توزیع شدهی جاوا زمانیکه با امکانات پویای بارگذاری کلاس همراه میشود، واقعا درخشنده است . این ویژگیها با این امکان را برای مفسر جاوا به وجود میآورند که کدها را از اینترنت بارگذاری اجرا کند. ( همان گونه که بعدا خواهیم دید جاوا باعث میشود که با وجود وسائل قدرتمند و ایمن این کار به طور مطمئن انجام شود). این چیزی است که در زمان بارگذاری و اجرای یک برنامـه کاربردی از اینترنت بوسیله مرورگر وب، اتفاق میافتد. ولی جریان پیچیده تر از این میتواند باشد. تصور نمایید یک پردازشگر کلمه چند رسانهای در جاوا نوشته شده است. وقتی از این پروگرام پرسیده میشود که چند نوع از دادههایی را که قبلا هرگز وارد نشده را نمایش دهد، ممکن است به طور دینامیکی یک کلاس را که میتواند داده را شناسایی کند، از شبکه بارگذاری کند و بعد کلاس دیگری را که بتواند داده را از داخـل یک پوشه ترکیبی بخواند، باز به طور دینامیکی بارگذاری میکند.
- ۹۵/۰۴/۱۳