در یكی از مقالات شركت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 به یك برنامه جاوا اجازه می*دهد كه روش*هایی از اشیاء دور دست جاوا را به همان صورتی كه اگر آن اشیاء محلی بودند آنها را می*خواند، بخواند .( جاوا حتی از سیستم شبكه*ای سطح پایین كه شامل آدرس مقصد و مسیر جریانی كه توسط سوكت*ها متصل شده است ، نیز پشتیبانی می*كند).
طبیعت توزیع شده*ی جاوا زمانیكه با امكانات پویای بارگذاری كلاس همراه می*شود، واقعا درخشنده است . این خصوصیات با هم این امكان را برای مفسر جاوا به وجود می*آورند كه كدها را از اینترنت بارگذاری و اجرا كند. ( همان طور كه بعدا خواهیم دید جاوا باعث می*شود كه با وجود ابزار قدرتمند و ایمن این كار به طور مطمئن انجام شود). این چیزی است كه در هنگام بارگذاری و اجرای یك برنامه كاربردی از اینترنت توسط مرورگر وب، اتفاق می*افتد. اما داستان پیچیده تر از این هم می*تواند باشد. تصور كنید یك پردازشگر كلمه چند رسانه*ای در جاوا نوشته شده است. وقتی از این برنامه پرسیده می*شود كه چند نوع از داده*هایی را كه قبلا هرگز وارد نشده را نمایش دهد، ممكن است به طور دینامیكی یك كلاس را كه می*تواند داده را شناسایی كند، از شبكه بارگذاری كند و بعد كلاس دیگری را كه بتواند داده را از درون یك پوشه
ساده: Simple
جاوا يك زبان ساده است. طراحان جاوا سعي در اين داشتند تا زباني بوجود بياورند كه برنامه نويسان بتوانند به سرعت آن را ياد بگيرند. بنابراين تعداد ساختارهاي اين زبان تقريبا كم است. هدف ديگر طراحي اين زبان اين بود كه به منظور راحتي انتقال آن، آن را طوري طراحي كنند كه براي عده*ي زيادي از برنامه نويسان آشنا باشد. اگر شما يك برنامه نويس C يا C++ هستيد، خواهيد فهميد كه جاوا از بسياري از ساختار هاي C و C++ استفاده مي*كند .
براي اينكه اين زبان را هم به طور ساده و هم آشنا و ملموس و هم كوچك نگه دارند بسياري از خصوصيات C و C++ را در آن حذف كردند. اينها خصوصياتي بودند كه باعث مي*شدند برنامه نويسي ضعيفي صورت بگيرد يا آنهايي بودند كه به ندرت در برنامه استفاده مي*شدند. براي مثال جاوا از دستور goto استفاده نمي*كند، در عوض از دستورهاي break , continue در مواقع نياز استفاده مي*كند.
جاوا از سر فايل*ها(header files) استفاده نمي*كند و پردازشگر C را هم حذف كرده است. به اين دليل كه جاوا يك زبان شي گرا است، ساختارهاي C مثل struct , union از آن برداشته شده است. جاوا حتي بارگذاري مجدد و خواص چندگانه ارث بري از C++ را هم حذف كرده است. شايد مهم*ترين پارامتر ساده بودن جاوا عدم استفاده اين زبان از اشاره گرها باشد. اشاره گرها يكي از بيشترين موجوديت*هاي دردسرساز در C , C++ هستند. چون جاوا ساختمان ندارد و آرايه*ها و رشته*ها اشياء آن هستند، بنابراين احتياجي به اشاره گر نيست. جاوا به طور خودكار آدرس*دهي و دسترسي به محتواي موجود در يك آدرس را براي شما انجام مي*دهد.
قدرتمند: Robust
جاوا براي نوشتن نرم افزارهاي قدرتمند و بسيار ايمن ساخته شده است. جاوا هنوز هم به طور قطع نرم افزار ها را تضمين نمي*كند. تقريبا هنوز هم امكان نوشتن برنامه*هاي مشكل ساز در جاوا وجود دارد، هرچند كه جاوا برخي از انواع مشخص خطاهاي برنامه نويسي را حذف كرده كه به طرز چشمگيري نوشتن نرم افزارهاي ايمن را آسان تر كرده است .
جاوا يك زبان تايپ شده قدرتمند است،* كه اجازه چك شدن مشكلات و خطاهاي تايپي را در زمان كامپايل مي*دهد. جاوا بسيار قويتر از C++ تايپ شده است كه بسياري از خصوصيات انعطاف پذير در زمان كامپايل را از C به ارث برده است. مخصوصا هنگام اعلان توابع، جاوا به مدل اعلان صريح احتياج دارد. اين مسئله ما را از اينكه كامپايلر مي*تواند خطاهاي زمان اعلان را بدست آورد، مطمئن مي*كند. مسئله*اي كه منجر به ايجاد برنامه*هاي ايمن*تري مي*شود.
يكي از چيزهايي كه باعث شده كه جاوا ساده باشد عدم وجود اشاره*گر ها ومحاسبات بر روي آنها است. اين ويژگي حتي قدرت جاوا را هم با از ميان بردن يك كلاس سراسري اشاره گر افزايش مي*دهد.


LinkBack URL
About LinkBacks
پاسخ با نقل قول
