وب سایت فنی مهندسی داینامیک

چرا جاوا زبانی جالب است؟

> مقالات کامپیوتری

در یكی از مقالات شركت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 به یك برنامه جاوا اجازه می‌دهد كه روش‌هایی از اشیاء دور دست جاوا را به همان صورتی كه اگر آن اشیاء محلی بودند آنها را می‌خواند، بخواند .( جاوا حتی از سیستم شبكه‌ای سطح پایین كه شامل آدرس مقصد و مسیر جریانی كه توسط سوكت‌ها متصل شده است ، نیز پشتیبانی می‌كند).

طبیعت توزیع شده‌ی جاوا زمانیكه با امكانات پویای بارگذاری كلاس همراه می‌شود، واقعا درخشنده است . این خصوصیات با هم این امكان را برای مفسر جاوا به وجود می‌آورند كه كدها را از اینترنت بارگذاری و اجرا كند. ( همان طور كه بعدا خواهیم دید جاوا باعث می‌شود كه با وجود ابزار قدرتمند و ایمن این كار به طور مطمئن انجام شود). این چیزی است كه در هنگام بارگذاری و اجرای یك برنامه كاربردی از اینترنت توسط مرورگر وب، اتفاق می‌افتد. اما داستان پیچیده تر از این هم می‌تواند باشد. تصور كنید یك پردازشگر كلمه چند رسانه‌ای در جاوا نوشته شده است. وقتی از این برنامه پرسیده می‌شود كه چند نوع از داده‌هایی را كه قبلا هرگز وارد نشده را نمایش دهد، ممكن است به طور دینامیكی یك كلاس را كه می‌تواند داده را شناسایی كند، از شبكه بارگذاری كند و بعد كلاس دیگری را كه بتواند داده را از درون یك پوشه تركیبی بخواند‌، باز به طور دینامیكی بارگذاری می‌كند.

جاوا یك زبان ساده است. طراحان جاوا سعی در این داشتند تا زبانی بوجود بیاورند كه برنامه نویسان بتوانند به سرعت آن را یاد بگیرند. بنابراین تعداد ساختارهای این زبان تقریبا كم است. هدف دیگر طراحی این زبان این بود كه به منظور راحتی انتقال آن، آن را طوری طراحی كنند كه برای عده‌ی زیادی از برنامه نویسان آشنا باشد. اگر شما یك برنامه نویس C یا C++ هستید، خواهید فهمید كه جاوا از بسیاری از ساختار های C و C++ استفاده می‌كند .

برای اینكه این زبان را هم به طور ساده و هم آشنا و ملموس و هم كوچك نگه دارند بسیاری از خصوصیات C و C++ را در آن حذف كردند. اینها خصوصیاتی بودند كه باعث می‌شدند برنامه نویسی ضعیفی صورت بگیرد یا آنهایی بودند كه به ندرت در برنامه استفاده می‌شدند. برای مثال جاوا از دستور goto استفاده نمی‌كند، در عوض از دستورهای break , continue در مواقع نیاز استفاده می‌كند.

جاوا از سر فایل‌ها(header files) استفاده نمی‌كند و پردازشگر C را هم حذف كرده است. به این دلیل كه جاوا یك زبان شی گرا است، ساختارهای C مثل struct , union از آن برداشته شده است. جاوا حتی بارگذاری مجدد و خواص چندگانه ارث بری از C++ را هم حذف كرده است. شاید مهم‌ترین پارامتر ساده بودن جاوا عدم استفاده این زبان از اشاره گرها باشد. اشاره گرها یكی از بیشترین موجودیت‌های دردسرساز در C , C++ هستند. چون جاوا ساختمان ندارد و آرایه‌ها و رشته‌ها اشیاء آن هستند، بنابراین احتیاجی به اشاره گر نیست. جاوا به طور خودكار آدرس‌دهی و دسترسی به محتوای موجود در یك آدرس را برای شما انجام می‌دهد.

 

قدرتمند: Robust

جاوا برای نوشتن نرم افزارهای قدرتمند و بسیار ایمن ساخته شده است. جاوا هنوز هم به طور قطع نرم افزار ها را تضمین نمی‌كند. تقریبا هنوز هم امكان نوشتن برنامه‌های مشكل ساز در جاوا وجود دارد، هرچند كه جاوا برخی از انواع مشخص خطاهای برنامه نویسی را حذف كرده كه به طرز چشمگیری نوشتن نرم افزارهای ایمن را آسان تر كرده است .

جاوا یك زبان تایپ شده قدرتمند است،‌ كه اجازه چك شدن مشكلات و خطاهای تایپی را در زمان كامپایل می‌دهد. جاوا بسیار قویتر از C++ تایپ شده است كه بسیاری از خصوصیات انعطاف پذیر در زمان كامپایل را از C به ارث برده است. مخصوصا هنگام اعلان توابع، جاوا به مدل اعلان صریح احتیاج دارد. این مسئله ما را از اینكه كامپایلر می‌تواند خطاهای زمان اعلان را بدست آورد، مطمئن می‌كند. مسئله‌ای كه منجر به ایجاد برنامه‌های ایمن‌تری می‌شود.

یكی از چیزهایی كه باعث شده كه جاوا ساده باشد عدم وجود اشاره‌گر ها ومحاسبات بر روی آنها است. این ویژگی حتی قدرت جاوا را هم با از میان بردن یك كلاس سراسری اشاره گر افزایش می‌دهد.

ایمن: Secure

یكی از دلایل پرطرفدار بودن جاوا این است كه یك زبان ایمن است. این ویژگی مخصوصا به خاطر طبیعت توزیع شده‌ی آن بسیار مهم است. بدون وجود امنیت شما قطعا نمی‌خواهید كه یك كد را از یك سایت تصادفی اینترنت بارگذاری كنید و به آن اجازه اجرا شدن روی كامپیوتر خودتان را هم بدهید. این دقیقا همان چیزی است كه مردم هرروز با یك كد جاوا انجام می‌دهند. جاوا به صورت ایمن طراحی شده و چندین لایه كنترل امنیت به وجود می‌آورد كه شما را در برابر كد های خطرساز محافظت می‌كنند و به كاربر اجازه می‌دهد كه برنامه‌های ناشناخته را با خیال راحت اجرا كند .

كدهای بایتی خراب یا خطرساز ممكن است از ضعف‌های اجرایی در مفسر جاوا سوء‌ استفاده كنند. لایه‌ای كه در اینجا ما را به طور ایمن محافظت می‌كند، مدل جعبه شنی (Sand box) است: كدهای ناشناخته در یك جعبه شنی قرار می‌گیرند جایی كه می‌توانند به صورت ایمن اجرا شوند، بدون اینكه هیچ صدمه‌ای به بقیه اجزاء یا محیط جاوا بزنند .

وقتی یك برنامه كاربردی یا دیگر كدهای ناشناخته در جعبه شنی در حال اجرا است،‌ چند محدودیت در مورد كاری كه می‌تواند انجام دهد، وجود دارد. واضح‌ترین این محدودیت‌ها این است كه هیچ دسترسی به هیچ یك از فایل‌های محلی سیستم وجود ندارد. در جعبه شنی محدودیت دیگری هم وجود دارد كه به وسیله كلاس مدیریت امنیت اعمال می‌شود. این مدل در ابتدا از اینكه سیستم‌های امنیتی را نصب كرده‌اید یا نه، مطمئن می‌شود، چرا كه همه كلاسهای جاوا نیاز به عملیات حساسی مانند دسترسی به سیستم فایل را دارند . اگر فراخوانی به وسیله یك كد ناشناخته به صورت مستقیم یا غیر مستقیم انجام شد،‌ مدیر امنیت مورد استثناء‌ را می‌فرستد و عملیات صورت نمی‌گیرد .

و سرانجام در جاوا 1-1 یك راه حل ممكن دیگر برای مشكلات امنیتی وجود دارد، به وسیله ضمیمه كردن یك امضاء دیجیتالی به كد جاوا كه اصل آن كد می‌تواند به صورت پنهانی و نهفته ساخته شود. اگر شما اعتماد خود را به یك شخص یا یك سازمان مشخص كرده باشید، كدی كه امضاء آن هویت مورد اعتماد روی آن قرار دارد،‌ ایمن و مطمئن است. حتی زمانیكه در حال بارگذاری شدن در شبكه است و ممكن است حتی بدون جلوگیری توسط جعبه شنی اجرا شود.

 

عملكرد سطح بالا: High Performance

جاوا یك زبان تفسیر شده است ، بنابر این هرگز به سرعت زبان كامپایل شده‌ای مثل C نخواهد بود . كد C كامپایل شده 10 برابر سریع تر از كد های تفسیر شده‌ی جاوا اجرا می‌شود. اما قبل از اینكه به خاطر این موضوع مایوس شوید، آگاه باشید كه این سرعت بیشتر از آن چیزی است كه برای برنامه‌های پرسرعت، كاربردهایGUI (Graphical User Interface ) ، برنامه‌های برمبنای شبكه، جایی كه برنامه كاربردی معمولا آماده برای اجرا شدن است، انتظار برای كاربر كه یك دستوری اعمال كند و یا انتظار برای دریافت از شبكه، لازم است .

به علاوه قسمت‌هایی كه به سرعت‌های بالا نیاز دارند، كه كارهایی از قبیل الحاق رشته‌ها و مقایسه را انجام می‌دهند، با كد محلی جاوا اجرا می‌شوند .

علاوه بر این كارایی، بسیاری از مفسرهای جاوا اكنون شامل كامپایلرهای فقط در زمان " just in time " نیز هستند كه می‌تواند كدهای بایتی جاوا را برای هر نوعCPU در زمان اجرا به كد ماشین ترجمه كند.

اگر شما خواهان این هستید كه قابل حمل بودن كد ها را قربانی بهبود در سرعت آن كنید ، میتوانید بخش قابل توجهی از برنامه خود را در C و C++ بنویسید و از روش های مخصوص جاوا برای مشترك كردن با این كد محلی جاوا استفاده كنید.

چند نخ كشی شده: Multitbreaded

در یك برنامه كاربردی بر مبنای GUI شبكه‌ای، مثل مرورگر وب، تصور اینكه چند چیز بتوانند به طور همزمان اجرا شوند، آسان است. یك كاربر می‌تواند همزمان با اینكه دارد یك صفحه وب را می‌خواند به یك كلیپ صوتی گوش دهد و همزمان در پس زمینه مرورگر یك عكس را بارگذاری كند.

جاوا یك زبان چندنخ كشی شده است، كه از چندین رشته اجرایی (گاهی پردازش سبك وزن خوانده میشود) پشتیبانی می‌كند و می‌تواند چندین كار را انجام دهد. یكی از مزیت‌های چندنخ كشی شده این است كه عملكرد سطح بالایی برای كاربردهای گرافیكی برای كاربر فراهم می‌كند.

اگر شما سعی كرده اید كه با نخ ها در C و C++ كار كنید، می‌دنید كه كمی مشكل است. جاوا برنامه نویسی با نخ‌ا را بسیار آسان‌ر كرده است، با به وجود آوردن زبان درون ساخته شده‌ی كه از نخ‌ها پشتیبانی می‌کند. بسته jana.lang یك كلاس بوجود آورده است كه از روش هایی برای شروع و پایان یك نخ، و مرتب كردن ترتیب گره ها در میان چیزهای دیگر، پشتیبانی می‌كند .

به دلیل اینكه جاوا استفاده از نخ‌ها را بسیار ساده می‌كند، كلاس جاوا در شماری از جاها از این نخ‌ها استفاده می‌كند. برای مثال هر برنامه كاربردی كه انیمیشن اجرا می‌كند، از نخ ها استفاده كرده است.


نظرات داده شده
ندا صادقی
عالی بود. ممنون
نظر به مطلب
نام:  
ایمیل:
متن:  500 حرف دیگر میتوانید تایپ کنید
کد امنیتی: 16126
   
چهارشنبه 1 آذر 1396
جستجو در مطالب

قدرت گرفته از پرتال ترنم