X بستن تبلیغات
X بستن تبلیغات
header
متن مورد نظر

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

جاوا یک زبان برنامه نویسی شی گرا است. برای یک برنامه نویس این به این معنا است که به جای فکر کردن به قسمت های رویه برنامه، باید به کاربرد داده ها و روش هایی که روی آن داده ها عمل می کنند، توجه شود.اگر شما به برنامه نویسی با اعلان رویه در C عادت کرده اید، ممکن است دریابید که به هنگام استفاده از جاوا مجبور به تغییر در روش و چگونگی برنامه تان هستید. هنگامی که فهمیدید این الگوی جدید چقدر قدرتمند است، به سرعت با آن هماهنگ می شوید . در یک سیستم شی گرا، یک کلاس مجموعه ای از داده ها و روش هایی است که روی آن داده عمل می کنند. همراه بودن داده ها و متد ها رفتار و حالت یک شی را بیان می دارد. کلاس ها به صورت سلسله مراتبی مرتب شده اند، بنابر این یک زیر کلاس می تواند رفتار هایی را از کلاس بالاتر به ارث ببرد. یک کلاس سلسله مراتبی همیشه یک کلاس ریشه دارد که کلاسی است با رفتار های کاملاً عمومی . جاوا به همراه دسته گسترده ای از کلاس هایی است که در بسته هایی مرتب شده اند و شما می توانید از آنها در برنامه خود استفاده کنید. یک شی کلاس(in the java.lang package) به عنوان ریشه کلاس سلسله مراتبی جاوا انجام وظیفه می کند .در یکی از مقالات شرکت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 تفاوت دارد، برای مثال هریک از انواع صحیح می تواند بسته به نوع کامپیوتر۱۶-۳۲ یا ۶۴ بیت طول داشته باشد . هنگامی که به صورت تکنیکی امکان نوشتن برنامه های غیر قابل حمل در جاوا فراهم شد، جلوگیری از چند خاصیت وابسته به نوع کامپیوتر که توسط جاوا API تولید شده و به طور قطع قابل حمل نوشته شده است، آسان است . یک برنامه جاوا به تولید کنندگان نرم افزار کمک می کند تا از قابل حمل بودن کد هایشان اطمینان حاصل کنند. برنامه نویسان فقط برای پرهیز از دام غیر قابل حمل بودن برنامه احتیاج به یک تلاش ساده دارند که شعار تجارتی شرکتSun را زنده نگهدارند و آن شعار این است : « یک بار بنویس، همه جا اجرا کن» .
● پویا و توزیع شده: Dynamic and Distributed
جاوا یک زبان پویا است. هر کلاس جاوا می تواند در هر زمانی روی مفسر جاوا بارگذاری شود. سپس این کلاس های بارگذاری شده پویا می توانند به صورت پویا معرفی شوند. حتی کتابخانه کدهای محلی می تواند به طور پویا بارگذاری شود. کلاس ها در جاوا با کلاس Class فراخوانی می شوند؛ شما می توانید به طور پویا در مورد یک کلاس در زمان اجرا اطلاعاتی بدست بیاورید. این خصوصیت در جاوا به طور درستی موجود است. با وجود بازتاب API اضافه شده (Application Program Interface) که به برنامه ساز امکان می دهد که با برنامه از طریق یک برنامه کاربردی دیگر ارتباط برقرار کند . جاوا حتی با نام زبان توزیع شده نیز خوانده می شود. به طور ساده این به این معنا است که این زبان پشتیبانی سطح بالایی برای شبکه به وجود می آورد. برای مثال کلاس URL و کلاس های مرتبط با آن در بسته ava.net، خواندن فایل های دوردست را به همان سادگی خواندن فایل های محلی کرده است. به طور مشابه در جاوا ۱‎/،۱ احضار روش کنترلی RMI (RemoteMethod Invocation)، API به یک برنامه جاوا اجازه می دهد که روش هایی از اشیاء دور دست جاوا را به همان صورتی که اگر آن اشیاء محلی بودند آنها را می خواند، بخواند .(جاوا حتی از سیستم شبکه ای سطح پایین که شامل آدرس مقصد و مسیر جریانی که توسط سوکت ها متصل شده است، نیز پشتیبانی می کند). طبیعت توزیع شده جاوا زمانیکه با امکانات پویای بارگذاری کلاس همراه می شود، واقعاً درخشنده است. این خصوصیات با هم این امکان را برای مفسر جاوا به وجود می آورند که کدها را از اینترنت بارگذاری و اجرا کند. (همان طور که بعداً خواهیم دید جاوا باعث می شود که با وجود ابزار قدرتمند و ایمن این کار به طور مطمئن انجام شود). این چیزی است که در هنگام بارگذاری و اجرای یک برنامه کاربردی از اینترنت توسط مرورگر وب، اتفاق می افتد. اما داستان پیچیده تر از این هم می تواند باشد. تصور کنید یک پردازشگر کلمه چند رسانه ای در جاوا نوشته شده است. وقتی از این برنامه پرسیده می شود که چند نوع از داده هایی را که قبلاً هرگز وارد نشده را نمایش دهد، ممکن است به طور دینامیکی یک کلاس را که می تواند داده را شناسایی کند، از شبکه بارگذاری کند و بعد کلاس دیگری را که بتواند داده را از درون یک پوشه ترکیبی بخواند ، باز به طور دینامیکی بارگذاری می کند.
● ساده Simple :
جاوا یک زبان ساده است. طراحان جاوا سعی در این داشتند تا زبانی به وجود بیاورند که برنامه نویسان بتوانند به سرعت آن را یاد بگیرند. بنابراین تعداد ساختارهای این زبان تقریباً کم است. هدف دیگر طراحی این زبان این بود که به منظور راحتی انتقال آن، آن را طوری طراحی کنند که برای عده زیادی از برنامه نویسان آشنا باشد. اگر شما یک برنامه نویس C یا C++ هستید، خواهید فهمید که جاوا از بسیاری از ساختار های C و C++ استفاده می کند . برای اینکه این زبان را هم به طور ساده و هم آشنا و ملموس و هم کوچک نگه دارند بسیاری از خصوصیات C و C++ را در آن حذف کردند. اینها خصوصیاتی بودند که باعث می شدند برنامه نویسی ضعیفی صورت بگیرد یا آنهایی بودند که به ندرت در برنامه استفاده می شدند. برای مثال جاوا از دستور goto استفاده نمی کند، در عوض از دستورهای break، continue در مواقع نیاز استفاده می کند. جاوا از سر فایل ها(header files) استفاده نمی کند و پردازشگر C را هم حذف کرده است. به این دلیل که جاوا یک زبان شی گرا است، ساختارهای C مثل struct، union از آن برداشته شده است. جاوا حتی بارگذاری مجدد و خواص چندگانه ارث بری از C++ را هم حذف کرده است. شاید مهم ترین پارامتر ساده بودن جاوا عدم استفاده این زبان از اشاره گرها باشد. اشاره گرها یکی از بیشترین موجودیت های دردسرساز در C، C++ هستند. چون جاوا ساختمان ندارد و آرایه ها و رشته ها اشیاء آن هستند، بنابراین احتیاجی به اشاره گر نیست. جاوا به طور خودکار آدرس دهی و دسترسی به محتوای موجود در یک آدرس را برای شما انجام می دهد.
● قدرتمند Robust:
جاوا برای نوشتن نرم افزارهای قدرتمند و بسیار ایمن ساخته شده است. جاوا هنوز هم به طور قطع نرم افزار ها را تضمین نمی کند. تقریباً هنوز هم امکان نوشتن برنامه های مشکل ساز در جاوا وجود دارد، هرچند که جاوا برخی از انواع مشخص خطاهای برنامه نویسی را حذف کرده که به طرز چشمگیری نوشتن نرم افزارهای ایمن را آسان تر کرده است . جاوا یک زبان تایپ شده قدرتمند است، که اجازه چک شدن مشکلات و خطاهای تایپی را در زمان کامپایل می دهد. جاوا بسیار قویتر از C++ تایپ شده است که بسیاری از خصوصیات انعطاف پذیر در زمان کامپایل را از C به ارث برده است. مخصوصاً هنگام اعلان توابع، جاوا به مدل اعلان صریح احتیاج دارد. این مسأله ما را از اینکه کامپایلر می تواند خطاهای زمان اعلان را بدست آورد، مطمئن می کند. مسأله ای که منجر به ایجاد برنامه های ایمن تری می شود. یکی از چیزهایی که باعث شده که جاوا ساده باشد عدم وجود اشاره گر ها ومحاسبات بر روی آنها است. این ویژگی حتی قدرت جاوا را هم با از میان بردن یک کلاس سراسری اشاره گر افزایش می دهد.
● ایمن Secure:
یکی از دلایل پرطرفدار بودن جاوا این است که یک زبان ایمن است. این ویژگی مخصوصاً به خاطر طبیعت توزیع شده آن بسیار مهم است. بدون وجود امنیت شما قطعاً نمی خواهید که یک کد را از یک سایت تصادفی اینترنت بارگذاری کنید و به آن اجازه اجرا شدن روی کامپیوتر خودتان را هم بدهید. این دقیقاً همان چیزی است که مردم هرروز با یک کد جاوا انجام می دهند. جاوا به صورت ایمن طراحی شده و چندین لایه کنترل امنیت به وجود می آورد که شما را در برابر کد های خطرساز محافظت می کنند و به کاربر اجازه می دهد که برنامه های ناشناخته را با خیال راحت اجرا کند . کدهای بایتی خراب یا خطرساز ممکن است از ضعف های اجرایی در مفسر جاوا سوءاستفاده کنند. لایه ای که در اینجا ما را به طور ایمن محافظت می کند، مدل جعبه شنی (Sand box) است: کدهای ناشناخته در یک جعبه شنی قرار می گیرند جایی که می توانند به صورت ایمن اجرا شوند، بدون اینکه هیچ صدمه ای به بقیه اجزا یا محیط جاوا بزنند . وقتی یک برنامه کاربردی یا دیگر کدهای ناشناخته در جعبه شنی در حال اجرا است، چند محدودیت در مورد کاری که می تواند انجام دهد، وجود دارد. واضح ترین این محدودیت ها این است که هیچ دسترسی به هیچ یک از فایل های محلی سیستم وجود ندارد. در جعبه شنی محدودیت دیگری هم وجود دارد که به وسیله کلاس مدیریت امنیت اعمال می شود. این مدل در ابتدا از اینکه سیستم های امنیتی را نصب کرده اید یا نه، مطمئن می شود، چرا که همه کلاسهای جاوا نیاز به عملیات حساسی مانند دسترسی به سیستم فایل را دارند. اگر فراخوانی به وسیله یک کد ناشناخته به صورت مستقیم یا غیر مستقیم انجام شد، مدیر امنیت مورد استثنا را می فرستد و عملیات صورت نمی گیرد . و سرانجام در جاوا ۱‎/۱ یک راه حل ممکن دیگر برای مشکلات امنیتی وجود دارد، به وسیله ضمیمه کردن یک امضای دیجیتالی به کد جاوا که اصل آن کد می تواند به صورت پنهانی و نهفته ساخته شود. اگر شما اعتماد خود را به یک شخص یا یک سازمان مشخص کرده باشید، کدی که امضای آن هویت مورد اعتماد روی آن قرار دارد، ایمن و مطمئن است. حتی زمانیکه در حال بارگذاری شدن در شبکه است و ممکن است حتی بدون جلوگیری توسط جعبه شنی اجرا شود.
● عملکرد سطح بالا High Performance :
جاوا یک زبان تفسیر شده است، بنابر این هرگز به سرعت زبان کامپایل شده ای مثل C نخواهد بود. کد C کامپایل شده ۱۰ برابر سریع تر از کد های تفسیر شده جاوا اجرا می شود. اما قبل از اینکه به خاطر این موضوع مأیوس شوید، آگاه باشید که این سرعت بیشتر از آن چیزی است که برای برنامه های پرسرعت، کاربردهایGUI (Graphical User Interface)، برنامه های برمبنای شبکه، جایی که برنامه کاربردی معمولاً آماده برای اجرا شدن است، انتظار برای کاربر که یک دستوری اعمال کند و یا انتظار برای دریافت از شبکه، لازم است. به علاوه قسمت هایی که به سرعت های بالا نیاز دارند، که کارهایی از قبیل الحاق رشته ها و مقایسه را انجام می دهند، با کد محلی جاوا اجرا می شوند . علاوه بر این کارایی، بسیاری از مفسرهای جاوا اکنون شامل کامپایلرهای فقط در زمان « just in time » نیز هستند که می تواند کدهای بایتی جاوا را برای هر نوعCPU در زمان اجرا به کد ماشین ترجمه کند. اگر شما خواهان این هستید که قابل حمل بودن کد ها را قربانی بهبود در سرعت آن کنید، می توانید بخش قابل توجهی از برنامه خود را در C و C++ بنویسید و از روش های مخصوص جاوا برای مشترک کردن با این کد محلی جاوا استفاده کنید.
● چند نخ کشی شده Multitbreaded:
در یک برنامه کاربردی بر مبنای GUI شبکه ای، مثل مرورگر وب، تصور اینکه چند چیز بتوانند به طور همزمان اجرا شوند، آسان است. یک کاربر می تواند همزمان با اینکه دارد یک صفحه وب را می خواند به یک کلیپ صوتی گوش دهد و همزمان در پس زمینه مرورگر یک عکس را بارگذاری کند. جاوا یک زبان چندنخ کشی شده است، که از چندین رشته اجرایی (گاهی پردازش سبک وزن خوانده می شود) پشتیبانی می کند و می تواند چندین کار را انجام دهد. یکی از مزیت های چندنخ کشی شده این است که عملکرد سطح بالایی برای کاربردهای گرافیکی برای کاربر فراهم می کند. اگر شما سعی کرده اید که با نخ ها در C و C++ کار کنید، می دانید که کمی مشکل است. جاوا برنامه نویسی با نخ را بسیار آسان کرده است، با به وجود آوردن زبان درون ساخته شده که از نخ ها پشتیبانی می کند. بسته jana.lang یک کلاس بوجود آورده است که از روش هایی برای شروع و پایان یک نخ و مرتب کردن ترتیب گره ها در میان چیزهای دیگر، پشتیبانی می کند.به دلیل اینکه جاوا استفاده از نخ ها را بسیار ساده می کند، کلاس جاوا در شماری از جاها از این نخ ها استفاده می کند. برای مثال هر برنامه کاربردی که انیمیشن اجرا می کند، از نخ ها استفاده کرده است.

۲ نظر

  1. sahar گفته است :
    آبان ۹ام, ۱۳۹۱

     ممنون میشم اطلاعات بیشتری در مورد جاوا واینکه چرا جاوا برای اینترنت مهم هستش در اختیار من قرار بدید 

  2. meysam1366 گفته است :
    آبان ۹ام, ۱۳۹۱

    سلام برای کسب اطلاعات بیشتر درباره جاوا به پست زیر مراجعه کنید

    http://padida.ir/?p=6871

ارسال نظر