جاوا

از ویکی‌پدیا، دانشنامهٔ آزاد.

پرش به: ناوبری, جستجو

جاوا یک زبان برنامه‌نویسی شئ‌گراست که شرکت سان مایکروسیستمز آن را ابداع کرده‌است. زبان جاوا شبیه به ++C اما کوچک‌تر، با قابلیت انتقال بهتر و کاربردی‌تراست. یکی از قابلیت‌های اصلی جاوا این است که مدیریت حافظه را بطور خودکار انجام می‌دهد. ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به این زبان بالا است و وابسته به سیستم عامل خاصی نیست، به عبارت دیگر می‌توان آن را روی هر رایانه با هر نوع سیستم عاملی اجرا کرد. برنامه‌های جاوا به صورت کدهای بیتی همگردانی (کامپایل) می‌شوند. که مانند کد ماشین هستند و به ویژه وابسته به سیستم عامل خاصی نیست. به این ترتیب جاوا برای نوشتن برنامه‌های کاربردی وب مناسب است، زیرا کاربر از طریق انواع مختلف رایانه‌ها می‌تواند برنامه‌های شبکه‌ای جاوا را اجرا کند.


فهرست مندرجات

[ویرایش] تاریخچه

جاوا در مقایسه با سایر زبان‌ها همچون ++C یا بیسیک یا فورترن زبان نسبتاً جدیدی است. شرکت سان مایکروسیستمز در سال ۱۹۹۱ یک پروژه تحقیقاتی به نام Green را آغاز کرد. هدف این پروژه ایجاد یک زبان جدید شبیه به ++C بود که نویسنده اصلی آن، جیمز گاسلینگ، آن را بلوط (Oak) نامید. اما بعدها به دلیل برخی مشکلات حقوقی نام آن به جاوا تغییر کرد.

پروژه گرین به دلیل مشکلات بازاریابی در شرف لغو شدن بود تا اینکه گسترش وب در سال ۱۹۹۳ باعث نمایش توانایی‌های وافر جاوا در این عرصه گشت. اینگونه بود که شرکت سان مایکروسیستمز در مه ۱۹۹۵ جاوا را رسما به بازار عرضه کرد.

[ویرایش] برنامه‌های جاوا و اپلت‌ها

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

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

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

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

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

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

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

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

[ویرایش] تکنولوژی‌های اصلی جاوا در حال حاضر

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

[ویرایش] نمونه‌هایی از برنامه‌های جاوا

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

public class Test{
    public static void main(String[] args) {
        System.out.println("HelloWorld!");
    }
}
برای اجرای برنامه بالا، ابتدا باید یک فایل به نام Test.java ساخته 
وسپس آن را کامپایل کنید:
$ javac Test.java 
سپس یک فایل خروجی به نام <code<Test.class</code< را دریافت
می‌کنید. بعد با استفاده از دستور زیر برنامه را اجرا نمایید:
$ java Test

[ویرایش] توزیع‌های جاوا

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

سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن می‌باشد. در اکثر موارد هنگامی که گفته می‌شود جاوا منظور توزیع سان می‌باشد. تاکنون 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) استفاده می‌کند، نام برد.

[ویرایش] یک اشتباه متداول

برخی مردم به علت شباهت اسمی، جاوا و جاوااسکریپت را با هم اشتباه می‌گیرند. در حالیکه این دو زبان گرچه در ظاهر و کلمات شبیهند ولی بطور ساختاری با یکدیگ متفاوتند. جاوا اسکریپت محصول شرکت نت اسکیپ است.[نیازمند منبع]

[ویرایش] پانویس

  1. ^  فاولر، مارتین صفحات ۲۹-۳۰ .

[ویرایش] منابع

  • Sun MicroSystems Documentation on JDK 1.5
  • Dietell & Dietell , Java How to Program, 6th Ed. Prentice Hall, 2005
  • Bruce Eckel, Thinking in Java, 3rd Edition, www.BruceEckel.com
  • Fowler, Martin. Patterns of Enterprise Application Architecture


زبان‌های اصلی برنامه‌نویسی (ویرایش)

صنعتی-تجاری: آباپ | اِیدا | اسمال‌تاک | اسمبلی | ای‌دبلیو‌کی | ایفل | بیسپ معمولی | پاسکال | پاوربیلدر | پایتون | پرل | پی‌اچ‌پی | پی‌ال/اس‌کیوال | تی‌اس‌کیوال | تی‌سی‌ال | جاوا | جاوااسکریپت | دلفی | روبی | ساس | سی | سی شیء‌گرا | سی++ | سی‌شارپ | فرترن | کوبول | کلدفیوژن | لیسپ | ویژوال بیسیک دات نت | ویژوال بیسیک | ویژوال سی درون کار | ویژوال سی دات نت | ویژوال سی شارپ دات نت | ویژوال سی | ویژوال فاکس پرو

دانشگاهی: ای‌پی‌ال/جی | اسکیم | ام‌ال | پاسکال | پرولوگ | لوگو | هسکل |

تاریخی: الگول | بیسیک | پی‌ال/آی | سیمولا | کلیپر | مدول-۲/مدول-۳ | مامپس