در يکي از مقالات شرکتSun، زبان جاوا را با اين خصوصيات شرح مي دهد: جاوا يک زبان ساده، شي گرا، توزيع شده، تفسير شده، قدرتمند، ايمن، با معماري خنثي، قابل حمل، با عملکرد سطح بالا چند نخ کشي شده و پويا است. Sun تصديق مي کند که به طور قطع اين کلمات رشته هايي از واژه هاي متداول در زبان برنامه نويسي هستند، اما حقيقت اين است که اين واژه ها به طور ماهرانه اي خصوصيات اين زبان را شرح مي دهند. حال به برخي از خصلت هاي جاوا در پشت اين واژه ها مي پردازيم.
? شي گرا Object Oriented :
جاوا يک زبان برنامه نويسي شي گرا است. براي يک برنامه نويس اين به اين معنا است که به جاي فکر کردن به قسمت هاي رويه برنامه، بايد به کاربرد داده ها و روش هايي که روي آن داده ها عمل مي کنند، توجه شود.اگر شما به برنامه نويسي با اعلان رويه در C عادت کرده ايد، ممکن است دريابيد که به هنگام استفاده از جاوا مجبور به تغيير در روش و چگونگي برنامه تان هستيد. هنگامي که فهميديد اين الگوي جديد چقدر قدرتمند است، به سرعت با آن هماهنگ مي شويد . در يک سيستم شي گرا، يک کلاس مجموعه اي از داده ها و روش هايي است که روي آن داده عمل مي کنند. همراه بودن داده ها و متد ها رفتار و حالت يک شي را بيان مي دارد. کلاس ها به صورت سلسله مراتبي مرتب شده اند، بنابر اين يک زير کلاس مي تواند رفتار هايي را از کلاس بالاتر به ارث ببرد. يک کلاس سلسله مراتبي هميشه يک کلاس ريشه دارد که کلاسي است با رفتار هاي کاملاً عمومي . جاوا به همراه دسته گسترده اي از کلاس هايي است که در بسته هايي مرتب شده اند و شما مي توانيد از آنها در برنامه خود استفاده کنيد. يک شي کلاس(in the java.lang package) به عنوان ريشه کلاس سلسله مراتبي جاوا انجام وظيفه مي کند . درست است که جاوا طوري طراحي شده است که مثل C++ باشد و خاصيت هاي آن را داشته باشد، اما هنگامي که با آن کار کنيد خواهيد فهميد که بسياري از پيچيده گي هاي آن زبان را از بين برده است . اگر شما يک برنامه نويس C++ هستيد حتماً لازم است که ساختار هاي شي گرايي در جاوا را به دقت مطالعه کنيد. اگرچه ترکيب و شيوه دستورات آن تقريباً شبيه C++ است، اما رفتار هاي آن خيلي مشابه نيست .
? تفسير شدهInterpreted :
جاوا يک زبان تفسير شده است. کامپايلر جاوا به جاي ايجاد کد محلي ماشين، کد بايتي براي ماشين مجازي جاوا ايجاد مي کند. براي اجراي دقيق برنامه، از مفسر جاوا براي اجراي کد هاي بايتي کامپايل شده استفاده مي شود. به دليل اينکه کدهاي بايتي جاوا به نوع کامپيوتر بستگي ندارند، برنامه هاي جاوا مي توانند روي هر نوع کامپيوتري که JVM (Java )Virtual Machine را دارند، اجرا شوند . در محيط تفسير شده، مرحله لينک استاندارد توسعه برنامه از ديد کاربر پنهان است. اگر جاوا تنها يک مرحله لينک داشت، فقط بارگذاري کلاس جديد به محيط پردازش مي شد که اين خصوصيت با چرخه کامپايل-لينک-اجرا ي آرام و طاقت فرساي زبان هايي مانند C يا C++ در تضاد است .
? معماري خنثي و قابل حمل:
به دليل اينکه برنامه هاي جاوا در فرمت کد بايتي با معماري خنثي کامپايل شده اند، برنامه کاربردي جاوا مي تواند در هر سيستمي اجرا شود.البته با اين شرط که آن سيستم توانايي پياده سازي ماشين مجازي جاوا را داشته باشد. اين مسأله تقريباً براي کاربردهاي توزيع شده روي اينترنت و يا ديگر شبکه هاي ناهمگن مهم است. اما روش معماري خنثي براي کاربردهاي بر مبناي شبکه مفيد است . به عنوان يک توسعه دهنده برنامه هاي کاربردي، در بازار نرم افزاري امروز ممکن است بخواهيد مدل هاي کاربردي خود را توسعه دهيد، به طوري که بتواند روي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 (RemoteMethod Invocation)، API به يک برنامه جاوا اجازه مي دهد که روش هايي از اشياء دور دست جاوا را به همان صورتي که اگر آن اشياء محلي بودند آنها را مي خواند، بخواند .(جاوا حتي از سيستم شبکه اي سطح پايين که شامل آدرس مقصد و مسير جرياني که توسط سوکت ها متصل شده است، نيز پشتيباني مي کند). طبيعت توزيع شده جاوا زمانيکه با امکانات پوياي بارگذاري کلاس همراه مي شود، واقعاً درخشنده است. اين خصوصيات با هم اين امکان را براي مفسر جاوا به وجود مي آورند که کدها را از اينترنت بارگذاري و اجرا کند. (همان طور که بعداً خواهيم ديد جاوا باعث مي شود که با وجود ابزار قدرتمند و ايمن اين کار به طور مطمئن انجام شود). اين چيزي است که در هنگام بارگذاري و اجراي يک برنامه کاربردي از اينترنت توسط مرورگر وب، اتفاق مي افتد. اما داستان پيچيده تر از اين هم مي تواند باشد. تصور کنيد يک پردازشگر کلمه چند رسانه اي در جاوا نوشته شده است. وقتي از اين برنامه پرسيده مي شود که چند نوع از داده هايي را که قبلاً هرگز وارد نشده را نمايش دهد، ممکن است به طور ديناميکي يک کلاس را که مي تواند داده را شناسايي کند، از شبکه بارگذاري کند و بعد کلاس ديگري را که بتواند داده را از درون يک پوشه ترکيبي بخواند ، باز به طور ديناميکي بارگذاري مي کند.
منبع: www.it4u.blogsky.com