Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

در مورد زبان برنامه نویسی جاوا

اطلاعات موضوع

Kategori Adı برنامه های جاوا
Konu Başlığı در مورد زبان برنامه نویسی جاوا
نویسنده موضوع *مینا*
تاریخ شروع
پاسخ‌ها
بازدیدها
اولین پسند ارسالی
Son Mesaj Yazan *مینا*

*مینا*

مــدیـر بـازنشـسـتـه
تاریخ ثبت‌نام
Sep 12, 2013
ارسالی‌ها
3,063
پسندها
366
امتیازها
83
محل سکونت
زیر اسمون خدا
تخصص
ترانه سرا
دل نوشته
هر وقت دلت شکست خورده هاشو خودت جمع کن نزار هر نامردی منت دست زخمیشو روت بزاره
بهترین اخلاقم
بخشیدن
مدل گوشی
سیم کارت
تیم ایرانی مورد علاقه
تیم باشگاهی مورد علاقه

اعتبار :

[h=2]
[/h] نظرات: 0
جاوا، امروزه یکی از متداول ترین زبان های برنامه نویسی جهان است. این زبان از لحاظ ظاهری شباهت های زیادی به ++C دارد ولی در اصل می توان تفاوت های بنیادین زیادی را برای آنها بر شمرد. بر خلاف بسیاری دیگر از زبان های کامپایلری که سورس کد آنها پس از کامپایل شدن به باینری یک ماشین حقیقی ترجمه می شود، برنامه های جاوا پس از کامپایل شدن به باینری ماشینی به نام ماشین مجازی جاوا یا JVM ترجمه می شود. این کد باینری را بایت کد می گویند. ماشین مجازی جاوا عمدتا بصورت نرم افزاری پیاده سازی می شود ولی پیاده سازی های سخت افزاری یا ترکیبی (بیشتر به صورت کمک پردازنده) از آن نیز وجود دارد. استفاده از ماشین مجازی یک روش مدرن در زبان های برنامه نویسی محسوب می شود و مزایای زیادی دارد. ماشین مجازی جاوا می تواند امنیت اجرای برنامه ها را تضمین کند و حق دسترسی های مختلفی برای برنامه ها در نظر بگیرد. همچنین ماشین مجازی جاوا سازگاری اجرای برنامه های جاوا را تحت سیستم عامل های مختلف حفظ می کند. یک باور غلط در بین بسیاری از مردم این است که برنامه های نوشته شده به زبان جاوا کندتر از برنامه های نوشته شده به زبان های کامپایلری اجرا می شود، در حالی که سرعت اجرای یک برنامه جاوا کاملا بستگی به نحوه پیاده سازی ماشین مجازی دارد. ماشین های مجازی جدید جاوا معمولا از تکنیکی به نام کامپایل در زمان لازم یا JIT استفاده می کنند. در این روش در هنگام اجرای برنامه بایت کد ابتدا به کد باینری ماشینی حقیقی که بر روی آن اجرا می شود ترجمه می شود و سپس باینری ترجمه شده بر روی ماشین اصلی اجرا می شود. در این فرآیند ماشین مجازی می تواند بهینه سازی های خاص ماشین حقیقی را بر روی کد انجام دهد که در برخی موارد باعث می شود برنامه های جاوا حتی سریع تر دیگر زبان های کامپایلری اجرا شود.

تاریخچه

جاوا در مقایسه با سایر زبان*ها همچون ++C یا Basic یا Fortran زبان نسبتاً جدیدی است. شرکت سان میکروسیستمز (یا به اختصار سان) در سال 1991 یک پروژه تحقیقاتی به نام Green را آغاز کرد. هدف این پروژه ایجاد یک زبان جدید شبیه به ++C بود که نویسنده اصلی آن، جیمز گاسلینگ، آن را بلوط Oak می نامید. اما بعدها به دلایل مشکلات حقوقی نام آن به جاوا تغییر کرد. پروژه گرین به دلیل مشکلات بازاریابی در شرف لغو شدن بود تا اینکه گسترش وب در سال 1993 باعث نمایش توانایی*های وافر جاوا در این عرصه گشت. و به اینگونه بود که سان در می 1995 جاوا را رسما افتتاح کرد.

برنامه*های جاوا و اپلت*ها

جاوا برای نوشتن انواع برنامه*های کاربردی مناسب است. با جاوا می*توان انواع برنامه*های زیر را نوشت:

* برنامه*های تحت وب؛
* برنامه*نویسی سیستم*های کوچک مانند موبایل، پاکت پی*سی و ...؛
* برنامه*های کاربردی بزرگ (Enterprise)؛
* برنامه*های رومیزی (Desktop)؛
* و غیره.

قابلیت خاصی در جاوا وجود دارد بنام اپلت. اپلتها امکانات فراوانی برای نوشتن برنامه*های تحت وب در اختیار برنامه نویسان قرار می*دهند که دیگر زبانهای برنامه نویسی فاقد آن هستند.[نیاز به ذکر منبع] البته وجود ماشین مجازی جاوا برای اجرای اپلت لازم است.

از خاصیت*های جاوا در برنامه*های بزرگتر نسبت به زبانهایی مثل سی*شارپ، می*توان موارد زیر را نام برد:*[1]

1 - سیستم عامل:

هر چقدر زبانهای .net قوی باشند تنها بر روی پلت فرم ویندوز اجرا می*شوند و برخی ویندوز را سیستم عامل غیر قابل اعتمادی در برنامه نویسی Enterprise می دانند.[نیاز به ذکر منبع] ولی جاوا از این نظر انتخابی خوب است. (هنوز پروژه mono به نتایج پایانی خود نرسیده)

2- قابلیت حمل: جاوا بر روی پلتفرم*های گوناگونی قابل اجرا است، از ATM و ماشین رختشویی گرفته تا سرورهای سولاریس با قابلیت پشتیبانی از 1024 cpu برای پردازش.

3- جاوا بیشتر از یک زبان است: جاوا فقط یک زبان نیست و انجمن*هایی متشکل از بزرگان صنایع و برنامه*نویسان زیادی مشغول به توسعه و ایجاد استانداردهای جدید و به روز هستند.

تکنولوژی*های اصلی جاوا در حال حاضر

* برنامه*نویسی برای سیستم*های رومیزی (J2SE) که از نسخه*ی ۵ به بعد، به Java SE تغییر نام داده است
* برنامه*نویسی سمت سرور (J2EE) که از نسخه*ی ۱.۵ به بعد، به JAVA EE 5 تغییر نام داده است.
* برنامه*نویسی برای سیستم*های موبایل و رایانه*های کوچک (J2ME) که آخرین نسخه*ی آن به Java Platform,Micro Edition تغییر نام داده است.
 

*مینا*

مــدیـر بـازنشـسـتـه
تاریخ ثبت‌نام
Sep 12, 2013
ارسالی‌ها
3,063
پسندها
366
امتیازها
83
محل سکونت
زیر اسمون خدا
تخصص
ترانه سرا
دل نوشته
هر وقت دلت شکست خورده هاشو خودت جمع کن نزار هر نامردی منت دست زخمیشو روت بزاره
بهترین اخلاقم
بخشیدن
مدل گوشی
سیم کارت
تیم ایرانی مورد علاقه
تیم باشگاهی مورد علاقه

اعتبار :


در زیر نمونه*ای از برنامه*ای که در جاوا نوشته شده است را می*آوریم:


public class Test{
public static void main(String[] args){
System.out.println("HelloWorld!");
//sample method
{
{




توزیع*های جاوا

در حال حاضر چهار توزیع کننده عمده جاوا وجود دارند:

سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن می باشد. در اکثر موارد هنگامی که گفته می*شود جاوا منظور توزیع سان می باشد. تاکنون 7 توزیع از این شرکت ارائه شده اند. جاوا 1.0 - 1.1 - که به جاوا 1 مشهورند. جاوا 1.2 – 1.3. 1.4 و 1.5 که به جاوا 2 مشهورند اخیرا نیز توزیع 1.6 از جاوا با کدرمز ماستانگ به صورت آزمایشی منتشر شده است. قابل ذکر است توزیع*های جاوا بر روی اکثر سیستم عامل*ها مانند ویندوز، یونیکس و سولاریس، لینوکس و موارد مشابه عرضه شده است.

GNU Java یا gcj کمپایلر کدباز جاوا می باشد. این توزیع از سوی موسسه نرم افزارهای آزاد منتشر شده و فعلا تنها در سیستم عامل*های لینوکس قابل استفاده است. این کمپایلر توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست.

مایکروسافت J# این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه می باشد که توسط مایکروسافت و در چارچوب .net ارائه شده است. انتظار اینکه در سیستم عاملی غیر از ویندوز هم اجرا شود را نداشته باشید.

AspectJ این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی می باشد که امکان برنامه نویسی Aspect Oriented را به جاوا می افزاید. این برنامه توسط بنیاد برنامه نویسی جلوه گرا و به صورت کد باز ارائه شده است.

نقاط ضعف


مهم*ترین ایرادی که برنامه نویسان سایر زبان*ها به زبان جاوا می گیرند سرعت اجرایی بسیار پایین جاوا است. یک برنامه جاوا به صورت بایت کد می باشد و باید در ماشین مجازی جاوا اجرا گردد. به همین دلیل سرعت اجرای پایینی را در مقابل زبان*های قدرتمندی همچون ++C دارد. به صورت دیگر یک برنامه C به طور متوسط تا 10 برابر سریعتر از برنامه مشابه جاوا اجرا می*گردد. جاوا علی رغم شیء گرا بودن در بخشی از قسمت*ها برای ایجاد انعطاف بیشتر یا بازاریابی بهتر برخی اصول شی گرایی را نادیده گرفته است. از جمله این قسمت*ها قابلیت بازتابش Reflection می باشد. هدف اصلی بازتابش این است که استفاده مجدد از کدها و گسترش کدهای موجود و مهم*تر از همه نوشتن برنامه*های الحاقی آسان گردد ولی این مهم با زیر پا گذاشتن بعضی اصول ممکن شده است. برای نمونه با کمک بازتابش به راحتی می*توان متدهای خصوصی دیگر کلاس*ها را فراخوانی کرد! زبان جاوا در مقابل زبانی مثل ++C ساده تر و یادگیری ان آسانتر است. این آسانتر بودن به سادگی به دست نیامده است بلکه با حذف بسیاری از موارد که باعث قدرتمند تر بودن زبان ++C بوده*اند ایجاد شده است. مهم*ترین این موارد اشاره گرها و وراثت چندگانه بوده*اند که در زبان جاوا یافت نمی شوند. از آنجایی که جاوا زبانی با عدم وابستگی به بستر می باشد پس استفاده از توابع سیستم عامل را در برنامه نمی پذیرد. به همین صورت نمی*توان از واسط*های برنامه نویسی غیر از جاوا در آن استفاده نمود.

پاسخ برنامه*نویسان جاوا به ایرادات

سرعت پایین برنامه*های جاوا در محیطی که اجرا می*شوند ملاک کارایی نبوده زیرا در محیط وب مسئله*ای که سرعت را کند می*سازد، شبکه بوده و ابتدا باید سربار شبکه را از روی برنامه*ها برداشت. از طرف دیگر در برنامه*های رومیزی هم در JDK 5.0 و 6.0، بهینه سازی بسیاری بوجود آمده که این مسئله باعث شده که در آخرین تست کارایی که انجام شده یک برنامه جاوا در محدوده*ی 0.8 تا 1.3 همان برنامه در ++C کارایی داشته باشد که 1.3 آن مربوط به بخش واسط کاربری و سرعت 0.8 آن مربوط به بسته تخلیه حافظه می*شده که هیج الگوریتمی نتوانست از الگوریتم Garbage Collector جاوا پیشی بگیرد. همچنین سال ۱۹۹۹ در مقاله*ای آقای Lutz Prechelt به این مسئله را ثابت کردند که تجربه برنامه*نویسی که برنامه*ای را می*نویسد از انتخاب زبانی که برنامه برروی آن نوشته می*شود در کارایی تاثیر بیشتری دارد و این بدان معناست که کارایی یک برنامه را برنامه*نویس مشخص می*کند و نه زبان برنامه*نویسی( ایشان در همان مقاله از زبان جاوا استفاده نمودند تا ذهنیت بد را از بین ببرند)
حذف اشاره*گرها در جاوا به دلیل مشکلاتی بوده که آنها در طول تاریخشان بوجود آورده*اند، اگرچه این موارد در برنامه*های سیستمی لازم بنظر می*رسد ولی در محیط*های تحت*وب که بستر اصلی جاوا هستند می*توانند اثراتی به مراتب شدیدتر نسبت به آنچه در برنامه*های سیستمی دارند داشته باشند و باعث می*شود که توجه برنامه*نویسان از مسائلی چون کارایی، قابلیت اطمینان و مقیاس*پذیری برنامه به تنظیم اشاره*گرها معطوف گردد.
وجود وراثت چندگانه در زبانی مانند ++C، باعث ایجاد مشکلات اساسی*ای می*گردید که اکثر برنامه*نویسان ++C از آن دوری می*کرده و هنوز هم می*کنند. ولی قابلیت چندریخته شدن یک کلاس از لحاظ شی گرایی بسیار مهم بوده و بنابراین توجیهی برای وجود وراثت چندگانه را فراهم می*نمود. در جاوا با وارد شدن مفهومی به نام واسط برنامه*سازی (Interface)، دیگر نیازی به وجود وراثت چندگانه احساس نشد و بنابراین از زبان جاوا حذف گردید. در حال حاضر اکثر طراحان برنامه*ها حتی به این نتیجه رسیده*اند که وراثت تکی هم باعث ایجاد مشکل بوده و تا آنجایی که می*شود باید از Composition استفاده نمود و در تمامی کتاب*های طراحی که از سال ۲۰۰۰ به این طرف چاپ شده به آن اشاره نموده*اند.
از ابتدای بوجود آمدن جاوا، کتابخانه JNI - Java Native Interface در آن وجود داشته که قابلیت فراخوانی و دستکاری برنامه*هایی در ++C و ... را می*داده که از نمونه*های آن میتوان به Jtwain که یک بسته*ایست که از کتابخانه*های ویندوز برای اسکن عکس استفاده میکند، یا SWT که یک بسته نرم*افزاریست که از کتابخانه*های ویندوز و لینوکس (برحسب سیستم عامل) برای ساخت واسط کاربری (UI) استفاده می*کند، نام برد.
 
بالا پایین