در فصل گذشته به مفاهیم بنیادی و اولیه جاوا پرداختیم و شما را با موسس آن آشنا کردیم. حتی علت نامگذاری این زبان و لوگوی جاوا (قهوه جاوا) را بیان کردیم. حال در این فصل قصد داریم به تمام ویژگی های این زبان پرداخته و مقایسه ای با زبان ++C داشته باشیم. در ادامه با ما همراه باشید.
علت اصلی پیدایش جاوا، ساخت زبانی پرتابل، امن و ساده بود. با اینحال جدا از این ویژگی ها، جاوا دارای ویژگی های بسیاری می باشد که آنرا به محبوبیت امروزش رسانده است.
لیستی از مهم ترین ویژگی های جاوا عبارتند از:
جاوا زبانی بسیار ساده می باشد که یادگیری آن به هیچ وجه دشوار نیست و سینتکس (نحو) ساده و تمیزی دارد. دلایل شرکت سان برای سادگی جاوا عبارتند از:
1- سینتکس جاوا بسیار به C++ شباهت دارد و به همین دلیل به راحتی میتوان آنرا پس از C++ فرا گرفت.
2- جاوا قابلیت هایی که به ندرت استفاده می شوند یا گیجکننده هستن مانند پوینتر به شکل مستقیم یا اورلود اپراتورها رو حذف کرده است.
3- در جاوا لازم به حذف اشیای بدون مرجع نمیباشد زیرا به طور اتوماتیک توسطGarbage Collector (جمعآور زباله) جاوا حذف می شوند.
جاوا یک زبان شی گرا می باشد، هرچیزی در جاوا یک شی است. شیگرایی به این معناست که برنامه به عنوان ترکیبی از شی های متفاوت که شامل داده و رفتار می باشند تشکیل و سازماندهی می شود.
شی گرایی متدی است که با ارائه برخی قوانین، کار توسعه برنامه و نگهداری از آن را ساده تر می کند.
مفاهیم پایهای شیگرایی شامل موارد زیر می باشد:
جاوا متفاوت از زبانهایی همچون C++ و C عمل میکند. در زبان های مذکور، کد نوشته شده در پلتفرم های مخصوص هر دستگاه کامپایل (تبدیل به زبان های سطح پایینتر) میشود در حالی که جاوا یکبار نوشته میشود و قابلیت اجرا در هر دستگاهی را دارد. پلتفرم همانطور که قبلا هم تعریف شد، محیط اجرای یک برنامه می باشد.
دو نوع پلتفرم وجود دارد، سختافزار محور و نرمافزار محور. جاوا یک پلتفرم نرمافزار محور در اختیار ما میگذارد.
از آنجایی که پلتفرم نرم افزاری جاوا بر روی پلتفرم های سختافزاری اجرا می شود، با اکثر پلتفرم های دیگر تفاوت می کند. این پلتفرم دارای دو بخش است:
کد جاوا بر روی پلتفرم های متفاوت همچون ویندوز، مک، لینوکس و سان اجرا می شود. این کد ابتدا توسط کامپایلر، کامپایل می شود و به بایت کد تبدیل می شود، از آنجایی که بایت کد در هر پلتفرمی قابل اجرا می باشد، زبان جاوا مستقل از پلتفرم به حساب می آید.
جاوا به دلیل امنیت خود معروف است. به کمک جاوا میتوان برنامه های خالی از ویروس نوشت، از دلایل این امر می توان به موارد زیر اشاره کرد:
1- عدم استفاده صریح و مستقیم از پوینترها
2- اجرا شدن در محیط ماشین مجازی
3- لودکننده کلاسها: یکی از دلایل امنیت جاوا به طرز لود شدن کلاس ها برمی گردد. لودکننده کلاس جاوا که بخشی از محیط اجرا آن می باشد، به طور پویا کلاس ها را در ماشین مجازی لود می کند و برای اینکار کلاسهای محلی را از کلاسهایی که از منابع شبکه وارد شده اند جدا می کند.
4- تاییدکننده بایت کد: قسمتهای مختلف کد را برای کد غیر مجازی که می تواند دسترسی به اشیا را نقض کند، چک می کند.
5- مدیر امنیت: تعیین می کند که چه منابعی را یک کلاس می تواند در اختیار بگیرد مانند خواندن و نوشتن بر دیسک های داخلی.
جاوا بسیار قویست زیرا:
1- از یک سیستم مدیریت حافظه قوی استفاده می کند.
2- از پوینترها که موجب مشکلات امنیتی میشوند، استفاده نمی شود.
3- دارای یک سیستم جمع آوری زباله می باشد که در داخل ماشین مجازی جاوا قرار دارد و اشیا بدون استفاده را از بین میبرد.
4- وجود استثناها (Exceptions) و چک شدن نوع داده ها از دلایل قدرت جاوا می باشند.
معماری جاوا را خنثی میدانیم زیرا هیچ ویژگیای وجود ندارد که وابسته به طرز اعمال ما باشد. به عنوان مثال سایز داده های اولیه ثابت است.
اما مثلا در زبان سی، داده عدد صحیح در معماری 32 بیت، 2 بایت و در معماری 64 بیت، 4 بایت اشغال می کند در حالی که در جاوا، در جفت معماریها، از 4 بایت استفاده می شود.
همانطور که گفته شد، کد جاوا به بایت کد تبدیل می شود و نیازی به پلتفرم یا طرز کار خاصی ندارد و به همین دلیل پرتابل به حساب می آید.
جاوا از دیگر زبانهای تفسیری سنتی سریعتر است زیرا بایت کد در آن تقریبا به زبان ماشین نزدیک است اما از زبان های کامپایلی همچون C++ و C به دلیل آنکه تفسیری می باشد، کندتر است.
جاوا یک زبان توزیعی می باشد و به کمک EJB و RMI می توان در آن برنامه های توزیعی توسعه داد. این ویژگی جاوا این اجازه رو ما به ما میدهد که از هر دستگاهی در اینترنت با صدا زدن متدها به فایلهای خود دسترسی داشته باشیم.
یک ریسه مانند یک برنامه جدا می باشد که به طور همزمان در حال اجرا است، چندریسگی برای برنامههایی که دارای وظایف گوناگون هستند، استفاده می شود؛ مزیت بزرگ چندریسگی در آن است که هر کدام جداگانه حافظه مصرف نمیکنند بلکه یک فضای مشترک حافظه دارند. از ریسهها برای مالتیمدیا و برنامه های وب استفاده می شود.
جاوا زبانی پویا می باشد. لود شدن کلاسها در جاوا به شکل پویا و درست هنگام نیاز انجام میشود. علاوه بر آن جاوا از توابع بومی C و C++ هم پشتیبانی می کند.
این زبان همچنین از کامپایل پویا و مدیریت حافظه (جمعاوری زباله) هم استفاده می کند.
جاوا | C++ | |
پشتیبانی می کند | پشتیبانی نمی کند | استقلال از پلتفرم |
برای برنامهنویسی اپلیکیشن موبایل، وب و سازمانی استفاده می شود | برنامه نویسی سیستم ها | موارد استفاده |
جاوا به عنوان مفسر سیستم های چاپ طراحی شد و سپس برای پشتیبانی محاسبات شبکهای توسعه داده شد. هدف از طراحی جاوا آسان بودن برای یک جامعه فراتر بود | به عنوان ضمیمه C، برای برنامه نویسی سیستم ها و اپلیکیشن طراحی شده است | هدف از طراحی |
ندارد | دارد | Goto |
پشتیبانی نمی کند | پشتیبانی می کند | وراثت چندگانه |
پشتیبانی نمی کند | پشتیبانی می کند | اورلود اپراتور |
به طور داخلی از آن استفاده می شود اما امکان استفاده از آن به طور مستقیم در برنامه ها نیست | پشتیبانی می کند و می توان با آنها مستقیما برنامه نوشت | پوینترها |
از کامپایلر و مفسر استفاده می کند. ابتدا کد را به کمک کامپایلر به بایت کد تبدیل می کند و سپس به کمک مفسر خروجی را از آن تولید می کند. | تنها از کامپایلر استفاده می کند که کد رو به کد ماشین تبدیل می کند و به همین دلیل به پلتفرم وابسته است | کامپایلر و مفسر |
فراخوانی با مرجع در جاوا وجود ندارد. | هر دو را پشتیبانی می کند | فراخوانی با مقدار یا مرجع |
پشتیبانی نمی کند | پشتیبانی می کند | ساختار و اتحاد (Union) |
به طور داخلی پشتیبانی می کند | تنها به کمک کتابخانههای خارجی پشتیبانی می شود | چندریسگی |
پشتیبانی می کند | پشتیبانی نمی کند | کامنت مستندسازی |
از آنجایی که تمام متدهای غیراستاتیک در جاوا میتوانند اورراید شوند، این کلمه کلیدی وجود ندارد | پشتیبانی می کند و امکان اورراید شدن یک تابع رو مشخص میکند |
کلمه کلیدی Virtual |
پشتیبانی می کند؛ برا اعداد مثبت همانند << و صفر رو با اعداد منفی حساب می کند | پشتیبانی نمی کند | نماد <<< |
از آنجایی که تمام کلاسها در جاوا فرزند کلاس Object هستند، تنها از یک درخت وراثت استفاده می کند. | همیشه یک درخت وراثت جدید تولید میکند | درخت وراثت |
تعامل خوبی با سخت افزار ندارد | به سخت افزار نزدیک تر است | سخت افزار |
شی گرا می باشد و همه چیز شی می باشد؛ به دلیلی که گفته شد نیز تنها یک سلسله مراتب دارد | شیگرا می باشد اما در C درخت های وراثت متنوع می باشند. | شیگرایی |
نکات نهایی:
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.