جلسه 2ویژگی هاي زبان جاوا ◦
مقدمه
جاوا یک زبان برنامهنویسی شیءگرا، قوی و امن است که توسط شرکت Sun Microsystems (اکنون بخشی از Oracle) توسعه یافته است. به دلیل قابلیت «یک بار بنویس، همهجا اجرا کن» (Write Once, Run Anywhere - WORA)، جاوا به یکی از محبوبترین زبانهای برنامهنویسی در سراسر جهان تبدیل شده است. این ویژگی به برنامههای جاوا اجازه میدهد تا بدون نیاز به تغییر کد، بر روی پلتفرمهای مختلف (ویندوز، مک، لینوکس) اجرا شوند.
1. شیءگرایی (Object-Oriented)
جاوا یک زبان کاملاً شیءگرا است. تمام کدها در جاوا درون کلاسها قرار دارند و از مفاهیم شیءگرایی مانند کپسولهسازی (Encapsulation)، وراثت (Inheritance) و چندریختی (Polymorphism) پشتیبانی میکند.
- مثال:
در جاوا، یک «ماشین» میتواند یک کلاس باشد و هر ماشین خاص (مانند «پراید» یا «پژو») یک شیء از آن کلاس است. کلاس ماشین شامل ویژگیهایی مانند رنگ، مدل و متدهایی مانند «روشن شدن» یا «حرکت کردن» خواهد بود.
2. مستقل از پلتفرم (Platform Independent)
همانطور که گفته شد، جاوا به لطف ماشین مجازی جاوا (Java Virtual Machine - JVM) مستقل از پلتفرم است. کد جاوا ابتدا به بایتکد (Bytecode) کامپایل میشود که یک فرمت میانی است. سپس JVM این بایتکد را در هر پلتفرم مقصد تفسیر یا کامپایل میکند.
- مثال:
برنامهای که با جاوا نوشته شده و بر روی ویندوز کامپایل شده است، میتواند بدون هیچ تغییری بر روی سیستمعامل مک یا لینوکس که JVM مربوط به آن پلتفرم را نصب دارد، اجرا شود.
3. ساده (Simple)
جاوا برای سادگی طراحی شده است. سینتکس آن شبیه به C++ است اما بسیاری از ویژگیهای پیچیده و دشوار C++ (مانند اشارهگرها، عملگرهای سربارگذاری شده و وراثت چندگانه کلاسها) را حذف کرده است.
- مثال:
در جاوا، مدیریت حافظه به صورت خودکار توسط Garbage Collector انجام میشود. برنامهنویس نیازی به تخصیص و آزادسازی دستی حافظه ندارد، که این امر کدنویسی را سادهتر و از بروز خطاهای مربوط به حافظه جلوگیری میکند.
4. امن (Secure)
جاوا دارای ویژگیهای امنیتی قوی است. JVM یک محیط امن برای اجرای بایتکد فراهم میکند و از دسترسی غیرمجاز به حافظه سیستم جلوگیری میکند.
- مثال:
قابلیتهایی مانند Security Manager در جاوا به توسعهدهندگان اجازه میدهد تا سطح دسترسی کد به منابع سیستم (مانند فایلها و شبکه) را محدود کنند، که این امر اجرای کد از منابع نامعتبر را امنتر میسازد.
5. قوی (Robust)
جاوا با تأکید بر قوی بودن طراحی شده است. مدیریت خطای قوی، بررسی نوع داده در زمان کامپایل (Compile-time) و زمان اجرا (Run-time) و مدیریت خودکار حافظه، از دلایل استحکام جاوا هستند.
- مثال:
هنگام کار با آرایهها در جاوا، اگر سعی کنید به عنصری خارج از محدوده آرایه دسترسی پیدا کنید، برنامه با خطای ArrayIndexOutOfBoundsException مواجه میشود و متوقف میشود، به جای اینکه رفتار غیرقابل پیشبینی داشته باشد یا حافظه خراب شود.
6. چندنخی (Multithreaded)
جاوا به طور داخلی از چندنخی پشتیبانی میکند، که امکان اجرای همزمان چندین بخش از برنامه را فراهم میکند. این قابلیت برای ساخت برنامههای کارآمد و پاسخگو بسیار مفید است.
- مثال:
در یک برنامه پخش موسیقی، یک نخ (Thread) میتواند مسئول پخش صدا باشد، در حالی که نخ دیگری مسئول دریافت ورودی کاربر (مانند تغییر آهنگ یا تنظیم صدا) است. این کار باعث میشود برنامه در حین انجام عملیات سنگین، همچنان پاسخگو باقی بماند.
7. تفسیر شده و کامپایل شده (Interpreted and Compiled)
جاوا ترکیبی از هر دو رویکرد است. کد جاوا ابتدا به بایتکد کامپایل میشود و سپس JVM بایتکد را تفسیر یا با استفاده از کامپایلر Just-In-Time (JIT) به کد ماشین محلی کامپایل میکند.
- مثال:
کامپایلر JIT در JVM میتواند بخشهایی از کد را که به طور مکرر اجرا میشوند، شناسایی کرده و آنها را برای افزایش سرعت اجرا، به کد ماشین نیتیو ترجمه کند.
8. عملکرد بالا (High Performance)
اگرچه جاوا یک زبان تفسیری است، اما با استفاده از کامپایلر JIT و بهینهسازیهای JVM، توانسته به سطوح بالایی از عملکرد دست یابد که قابل مقایسه با زبانهای کامپایل شده مانند C++ است.
- مثال:
با پیشرفت JVM در طول سالها، سرعت اجرای برنامههای جاوا به طور قابل توجهی افزایش یافته و آن را برای طیف وسیعی از کاربردها، از برنامههای دسکتاپ گرفته تا سیستمهای مقیاس بزرگ، مناسب ساخته است.
9. توزیع شده (Distributed)
جاوا برای محیطهای توزیع شده طراحی شده است. کتابخانههای جاوا امکان مدیریت آسانتر منابع و ارتباطات در شبکههای توزیع شده را فراهم میکنند.
- مثال:
فریمورکهایی مانند Java EE (اکنون Jakarta EE) ابزارهای قدرتمندی برای ساخت برنامههای کاربردی توزیع شده و مقیاسپذیر در محیطهای سازمانی ارائه میدهند.
خلاصه نکات کلیدی
- شیءگرایی: اساس طراحی جاوا بر پایه کلاسها و اشیاء.
- استقلال از پلتفرم: قابلیت اجرا بر روی هر سیستمی با JVM (WORA).
- سادگی: سینتکس خوانا و حذف پیچیدگیهای C++.
- امنیت: مکانیزمهای قوی برای جلوگیری از آسیبپذیریها.
- قوی بودن: مدیریت خطا و حافظه برای جلوگیری از کرش.
- چندنخی: پشتیبانی داخلی برای اجرای همزمان وظایف.
- ترکیبی (کامپایل/تفسیر): بایتکد و JVM برای انعطافپذیری و عملکرد.
- عملکرد بالا: بهینهسازیهای JVM و JIT برای سرعت.
- توزیع شده: مناسب برای ساخت برنامههای تحت شبکه و توزیع شده.
تمرین پایان فصل
- مفهوم «یک بار بنویس، همهجا اجرا کن» (WORA) در جاوا را توضیح دهید و بگویید چگونه JVM در این امر نقش دارد.
- چرا جاوا به عنوان یک زبان «شیءگرا» شناخته میشود؟ حداقل سه ویژگی اصلی شیءگرایی را نام ببرید.
- یکی از مزایای « Garbage Collector » در جاوا را شرح دهید.
- تفاوت اصلی بین اجرای یک برنامه C++ و یک برنامه جاوا بر روی سیستمهای مختلف چیست؟
- چگونه ویژگی «امنیت» در جاوا به جلوگیری از حملات سایبری کمک میکند؟
- یک مثال عملی برای استفاده از قابلیت «چندنخی» در جاوا بزنید.