زبان برنامه نویسی جاوا به زبان ساده یکی از رایجترین و گستردهترین زبانهای برنامهنویسی و پلت فرم است. پلت فرم محیطی است که به توسعه و اجرای برنامههای نوشته شده در هر زبان برنامهنویسی کمک میکند.جاوا سریع، قابلاعتماد و مطمئن است.
جاوا به سرعت به سمت استاندارد شدن در اینترنت پیش می رود و اکثر مرورگرهای وب نظیرnavigator، netscape، internet wxplorer، applet viewr جاوا را پشتیبانی می نمایند و در آینده به عنوان جزئی از سیستم های عامل در خواهد آمد.
جاوا در سال 1991 میلادی در شرکت sun microsystem و توسط جمعی از مهندسان مدیران این شرکت به وجود آمد.این شرکت در آغاز راه تبدیل شدن به بزرگترین تولید کننده ایستگاه های کاری یونیکس بود. عامل عمده موفقیت سان کارهای پیشتازانه اش در ایجاد شبکه های باز بود و در این زمینه هیچ کس به پای آن نمی رسید.
یکی از زمینه های مورد توجه شرکت سان بازار لوازم الکترونیکی بود . مهندسان شان توجه خود را به میکرو پروسسورهایی معطوف کردند که دارای قابلیت استفاده در این گونه سیستم ها باشند. اگر این پروژه می خواست موفق باشد باید کاری می کرد تا سیستم مزبور بتواند به راحتی به بسترهای سخت افزاری مختلف منتقل شود. آنها پروژه Green را بر روی کامپایلر C++ انجام دادند ولی بزودی نارسایی C++ در این زمینه خودرا نشان داد. در این زمان یکی از مهندسان شرکت sun به نام جیمز گاسلینگ (James Gosling) شروع به بسط زبان C++ نمود. آماده سازی اولین نسخه این زبان 18 ماه طول کشید، این زبان ابتدا oak نامیده شد اما بعداًدر سال 1995 نام آن به “Java” تغییر یافت.
بنابراین جاوا از ویرانه های یک پروژه شکست خورده (پروژه Green ) سر برآورد. بعدها گروهی که در پروژه Green کار کرده بودند شرکت جاوا سافت (Java soft) را بنیان کردند.
جالب توجه این است که انگیزه اولیه ابداع جاوا، اینترنت نبوده است، بلکه انگیزه اولیه آن نیاز به یک زبان مستقل از محیط زیربنایی (platform-independent) بود که بتواند نرم افزارهایی تولید نماید که قابلیت کاربرد در وسائل مصرف الکترونیکی مختلف نظیر اجاقهای مایکروویو و کنترل از راه دور را داشته باشد.
همچنین از آنجائیکه در آن زمان، زبانهای C++/C بسیار رایج بودند و تنها مشکل C++/c این است که آنها برای کامپایل شدن روی یک هدف مشخص طراحی می شوند. و اگرچه می توان یک برنامه C++ را برای هر نوع CPU کامپایل نمود،اما برای این کار نیاز به یک کامپایلر کامل است و از آنجا که تولید کامپایلرها بسیار پر هزینه وزمان بر است.برای رفع این مشکل نیاز به یک راه حل کم هزینه و کاراتر وجود داشت. در تلاش برای حل این مشکل بود که gosling وهمکارانش کار روی یک زبان قابل حمل (portable) و
مستقل از محیط زیر بنایی (platform-independent) را شروع کردند تا بتوانند کدهایی ایجاد نمایند که روی انواع cpu و تحت محیط های مختلف اجرا شود. این تلاش منجر به تولد زبان جاوا شد.
زبان برنامه نویسی جاوا به انگلیسی : Java که مخفف عبارت Jsut Another Vague Acronym است.
به زبان ساده زبان جاوا یک زبان مبتنی بر کلاس و شیگرا است که به همین دلیل قابلیت انعطاف بسیار بالایی دارد و توسعه دهنده می تواند با یک بار نوشتن کد، بارها و بارها از آن در پلتفرم های مختلف استفاده کنند. جاوا یک زبان برنامهنویسی چندمنظوره و شیگرا است که تا حدودی زیادی به C و ++C شباهت دارد؛ اما استفاده از آن آسانتر است و امکان ساخت برنامههایی قدرتمند با آن وجود دارد.
دلیل معروفیت این زبان می تونه دوتا بخش باشه : اولی اینکه این زبان کاملا رایگان است و هرفردی می تونه از اون استفاده کنه و دلیل دوم اینه که این زبان از برنامه نویسی شی گرایی یا (OOP) پشتیبانی می کند.
زبان برنامه نویسی جاوا با شعار (Write Once Run Anywhere )یک بار بنویس و همه جا اجرا کن. این شعار به این معنی است که شما می توانید کد های جاوا خود را یک بار نوشته ، و بدون هیچ تغییری اون رو روی هر سیستم دیگری که قابلیت جاوا رو داشته باشه اجرا کنید.
حال یک بار بنویس و همه جا اجرا کن یعنی چی :
اینجاست که ما به Java Virtual Machine و یا ماشین مجازی جاوا (JVM) نیاز پیدا میکنیم. کاری که این ماشین مجازی برای ما انجام میدهد به دو صورت است:
در حقیقت شما یکبار برنامه را مینویسید و به کمک ماشین مجازی جاوا (JVM) آنرا در سایر پلتفرمها اجرا میکنید، به همین دلیل است که میگوییم جاوا یک زبان چندسکویی (Cross Platform) است، همین امر در ابتدای کار به شدت بر محبوبیت این زبان افزود.
جاوا در ابتدا بر اساس زبانهای C و ++C و با حذف برخی ویژگیهایی که قابلیت سردرگم کننده داشتند مدلسازی شد. از جمله این ویژگیها میتوان به اشارهگرها، پیادهسازی چندباره وراثت و بارگذاری بیش از حد عملگرها اشاره کرد که در جاوا حذف شدند. یکی از ویژگیهایی که در C++/C وجود نداشت؛ اما جزو ویژگیهای اساسی جاوا به شمار میآید، امکان بازیافت حافظه (garbage-collection) است که به طور خودکار اشیا و آرایههای بی استفاده را حذف میکند.
تمرکز شیگرایی جاوا موجب شده است که توسعهدهندگانی که از این زبان استفاده میکنند، از آن برای حل یک مسئله استفاده کنند و نه سروکله زدن با آن برای رفع محدودیتهای مسئله. این وضعیت موجب تمایز بین جاوا و C شده است.
کتابخانه وسیع شبکه در جاوا باعث شده است که امکان کار با پروتکل کنترل انتقال/پروتکل اینترنت (TCP/IP) و پروتکلهای شبکه مانند HTTP (پروتکل انتقال ابرمتن) و FTP (پروتکل انتقال فایل) سادهتر شود و همچنین وظیفه ایجاد اتصالهای شبکه آسانتر گشته است. به علاوه برنامههای جاوا میتوانند از طریق شبکه TCP/IP، از طریق URLها، به اشیا دسترسی داشته باشند و این دسترسی به همان سادگی دسترسی روی سیستم فایل محلی است.
یک برنامه جاوا در زمان اجرا به طور غیر مستقیم از طریق یک ماشین مجازی (که بازنمایی نرمافزاری از یک پلتفرم فرضی است) و محیط زمان اجرای مرتبط با آن با واسطه روی یک پلتفرم زیرساخت (مانند ویندوز یا لینوکس) اجرا میشود. این ماشین مجازی بایتکدها (دستورالعملها و دادههای مرتبط) را از طریق تفسیر به دستورالعملهای خاص پلتفرم ترجمه میکند. منظور از تفسیر، عمل شناسایی معنی دستورالعملها و سپس انتخاب دستورالعملهای خاص پلتفرم برای اجرا است. در ادامه ماشین مجازی این دستورالعملهای خاص پلتفرم را اجرا میکند. این ویژگی تفسیری بودن جاوا باعث شده است که خطایابی برنامههای جاوا آسانتر شود، چون اغلب اطلاعات در زمان کامپایل در واقع در محیط اجرا وجود دارند. تفسیری بودن جاوا همچنین امکان به تأخیر انداختن پیوند بین قطعات مختلف برنامه جاوا تا زمان اجرا را فراهم ساخته است و این مسئله موجب افزایش سرعت توسعه برنامه میشود.
برنامههای جاوا باید قابل اعتماد باشند، زیرا هم در اپلیکیشنهای مصرفی و هم مأموریتهای حیاتی استفاده میشوند که از پخشکنندههای بلوری تا ناوبری خودرو یا سیستمهای کنترل هوایی را شامل میشود. ویژگیهای زبان جاوا که باعث استحکام آن میشوند، شامل اعلانها، بررسی دوباره نوع داده، یک بار در زمان کامپایل و بار دیگر در زمان اجرا (برای جلوگیری از عدم تطبیق نسخهها)، آرایههای واقعی با بررسی خودکار کرانها و کنار گذاشتن اشارهگرها است.
برنامههای جاوا در محیطهای شبکهبندی شده/ توزیع یافته مورد استفاده قرار میگیرند. از آنجا که برنامههای جاوا میتوانند روی پلتفرمهای مختلف شبکه اجرا شوند، امن ساختن این پلتفرمها در برابر کدهای مخرب که موجب گسترش ویروسها، سرقت اطلاعات کارتهای بانکی یا اجرای اعمال خرابکارانه میشوند، امری حائز اهمیت است. ویژگیهایی که موجب استحکام زبان جاوا میشوند شامل کنار گذاشتن اشارهگرها هستند که به همراه ویژگیهای امنیتی مانند مدل امن sandbox جاوا و رمزنگاری کلید عمومی فعالیت میکنند. این دو نوع از ویژگیها در کنار هم از تأثیر ویروسها و دیگر کدهای خطرناک روی پلتفرمهای مشکوک جلوگیری میکنند. جاوا از لحاظ تئوریک امن است؛ اما در عمل آسیبپذیریهای امنیتی مختلفی شناسایی و مورد سوءاستفاده قرار گرفته است. در نتیجه در زمانهای قبل، شرکت سان مایکروسیستمز و اینک شرکت اوراکل همواره اقدام به انتشار بهروزرسانیهای امنیتی برای جاوا میکنند.
شبکهها موجب اتصال پلتفرمهایی با معماری مختلف ریزپردازندهها و سیستمهای عامل میشوند. نمیتوان انتظار داشت که جاوا دستورالعملهای خاص پلتفرم را ایجاد کند و انتظار داشته باشد که این دستورالعملها از سوی همه انواع پلتفرمهایی که بخشی از شبکه هستند درک شود. در عوض جاوا دستورالعملهای بایتکد مستقل از پلتفرم ایجاد میکند که تفسیر آن برای هر پلتفرم (از طریق پیادهسازی JVM) آسان است.
عدم وابستگی به معماری موجب پرتابل شدن جاوا شده است. با این حال پرتابل بودن جاوا چیزی فراتر از مستقل بودن دستورالعملهای بایتکدها از پلتفرم است.کتابخانههای جاوا نیز به پرتابل بودن آن کمک میکنند. این کتابخانهها در موارد ضروری، انواع دادهای را ارائه میکنند که به روشی تا حد امکان پرتابل، کد جاوا را به قابلیتهای خاص پلتفرم متصل میسازد.
ویژگی تفسیری بودن جاوا موجب شده است عملکرد بالایی داشته باشد که در اکثر موارد بیش از حد کفایت است. جاوا در مورد اپلیکیشنهای با عملکرد بسیار بالا از کامپایل درجا (just-in-time) استفاده میکند یعنی دستورالعملهای بایتکد تفسیر شده را تحلیل میکند و دستورهای تفسیر شده با بسامد بالا را به دستورالعملهای خاص پلتفرم کامپایل میکند. تلاشهای بعدی برای تفسیر این دستورالعملهای بایتکد موجب اجرای همان دستورالعملهای خاص پلتفرم میشود و به این ترتیب عملکرد نرمافزار را ارتقا میبخشد.
جاوا برای بهبود عملکرد برنامههایی که چندین وظیفه را به یک باره اجرا میکنند، از مفهوم اجرای چند نخی پشتیبانی میکند. برای نمونه برنامهای که رابط گرافیکی کاربر (GUI) را مدیریت میکند و در همین حال منتظر ورودی از یک اتصال شبکه است، از نخ (thread) دیگری به جای نخ GUI برای این انتظار استفاده میکند. بدین ترتیب رابط گرافیکی برنامه همچنان پاسخگو است. ابتکارهای همگامسازی جاوا به نخها اجازه میدهد که دادهها را بدون هیچ تأثیر مخربی بین خود مبادله کنند.
به دلیل ارتباطهای متقابل بین کد برنامه و کتابخانهها که در زمان اجرا به صورت دینامیک صورت میپذیرند، نیازی به ایجاد لینک صریح بین آنها وجود ندارد. در نتیجه زمانی که یک برنامه یا یکی از کتابخانههای آن تکامل مییابد (برای مثال باگ اصلاح میشود یا عملکرد بهبود مییابد) توسعهدهنده تنها باید برنامه یا کتابخانه بهروزرسانی شده را منتشر سازد. با این که رفتار دینامیک جاوا موجب شده است به کد کمتری هنگام تغییر کد نیاز باشد؛ اما این روش انتشار میتواند موجب تداخلهایی نیز بشود. برای نمونه یک توسعهدهنده ممکن است یک نوع کلاس را از یک کتابخانه حذف کند یا نام آن را تغییر دهد. وقتی شرکتی کتابخانه به روز شده را منتشر میکند، برنامههای موجود که به آن نوع کلاس وابسته هستند از کار میافتند. برای حل این مشکل جاوا از نوع رابط (interface type) پشتیبانی میکند که مانند تعامل بین دو طرف است.
۱ : Java SE (Standard Edition) این پلتفرم که با نام J2SE نیز شناخته شده است، شامل کتابخانههای اصلی زبان برنامه نویسی جاوا است و با استفاده از آن، کاربران میتوانند برنامههای جاوا خود را برای دسکتاپ، سرورها و محیطهای جاسازی شده توسعه دهند. مولفههای این پلتفرم، شامل کیت توسعه جاوا (JDK)، محیط زمان اجرای جاوا (JRE) و رابط برنامهنویسی کاربردی (API) این پلتفرم است. کیت توسعه جاوا، شامل JRE، کامپایلرها و اشکال زداهایی است که برای توسعه اپلتها و برنامههای کاربردی موردنیاز است. محیط زمان اجرا هم کتابخانهها، ماشین مجازی جاوا و سایر مولفههای موردنیاز برای اجرای اپلت و برنامههای جاوا را شامل میشود.
۲:Java EE (Enterprise Edition) این پلتفرم، به عنوان نسخه تجاری برای ساخت وب و برنامههای تجاری ارائه شد. این پلتفرم با نام J2EE شناخته شده است. با کمک این پلتفرم میتوانیم مولفههای سمت سروری ایجاد کنیم که میتواند به درخواست-پاسخ مبتنی بر وب پاسخ بدهد. در نتیجه، میتوانیم برنامههایی ایجاد کنیم که میتواند با کلاینتهای مبتنی بر اینترنت شامل مرورگرهای وب، کلاینتهای مبتنی بر CORBA و حتی سرویسهای وب میتنی بر REST و SOAP، تعامل داشته باشد.
۳:Java ME (Micro Edition) این نسخه، یک پلتفرم سبک وزن برای توسعه تلفنهای همراه است که در گذشته با عنوان J2ME شناخته میشد. این نسخه، برتری خود را در عرصه توسعه ابزارهای جاسازی شده یا دستگاههای تعبیه شده ثابت کرده و الان در تلاش است در عرصه توسعه گوشیهای هوشمند نیز پیشرو باشد.
۴: Java FX این پلتفرم، یک پلتفرم پیشرفته واسط گرافیکی کاربر است. به عنوان مثال، JavaFX Scene Builder، یک ابزار طراحی بصری است که کاربر میتواند به صورت بصری و بدون کد زدن، واسطهای گرافیکی موردنظر خود را ایجاد کند. کاربران مولفههای واسط کاربری را از منو مولفهها انتخاب میکنند و این مولفهها، در فضای کاری نمایش داده میشود. سپس کاربر میتواند ویژگیهای این مولفهها را تغییر دهد یا فایلهای css را برای تنظیم شمایل و استایل، به این مولفهها اعمال کند.
5:پلتفرم java Card این پلتفرم درواقع به منظور استفاده از این زبان برنامه نویسی با دستگاه های با امکانات سخت افزاری محدود می باشد.
زبان برنامه نویسی جاوا ، ابزار های قدرتمندی مانند Eclipse و NetBeans را در حول محور خود دارد.نوشتن کد داخل این ابزار های قدرتمند علاوه بر زیباسازی مزایای دیگری هم داره .نوشتن کد در ابزاری مانند notepad علاوه بر محیط جذابی که نداره از مشکلات دیگری مثل نداشتن پیشنهاد هم بهره نمیبره.
با کدنویسی در ابزار هایی بالا هنگامی که شما کدی را به صورت اشتباه وارد می کنید خود ابزار به شما این اطلاع را می دهد و همچنین برخی از کد های لازم رو به شما پیشنهاد می دهد که این امکان کاملا بدرد بخور و کارآمد است.