زبان JAVA چیست؟
یکی از محبوبترین زبانهای برنامهنویسی دنیا که به دلیل چند سکویی (Cross Platform) بودن و همچنین پشتیبانی از ویژگی شئگرایی (OOP) مورد توجه افراد بسیار زیادی در دنیا قرار گرفته است.
زبان جاوا شبیه به سیپلاسپلاس است؛اما مدل شیءگرایی آسانتری دارد و از قابلیتهای سطح پائین کمتری پشتیبانی میکند. ایدهی شیءگرایی جاوا از زبان اسمال تاک گرفته شدهاست. یکی از قابلیتهای بنیادین جاوا این است که مدیریت حافظه را بهطور خودکار انجام میدهد. ضریب اطمینان عملکرد برنامههای نوشته شده به این زبان نسبت به زبانهای نسل اول C بالاتر است. برنامههای جاوا به صورت بایت کد میشوند و توسط ماشین مجازی جاوا (JVM) به کدهای ماشین تبدیل و اجرا میشوند. در صورت وجود JVM مانند سایر زبانهای مبتنی بر آن که وابسته به سیستم عامل خاصی نیستند برنامههای نوشته شده به جاوا بر روی هر نوع سیستم عامل و هرگونه وسیله الکترونیکی قابل اجرا میباشند. شعار جاوا یکبار بنویس و همهجا اجرا کن (Write once, Run anywhere) است که به همین ویژگی اشاره دارد. این ویژگی جاوا را مستقل از سکو مینامند.
فلسفه تولید زبان JAVA
اوایل دههی 1990 میلادی آقای جیمز گاسلینگ و همکارانش از پیچیدگی زبان ++C احساس نارضایتی میکردند و به همین دلیل تصمیم گرفتند، زبانی را ابداع کنند که علاوه بر قدرت زبان ++C از سادگی بیشتری برخوردار باشد، جالب است بدانید آنها در ابتدا نام Oak به معنای “بلوط” را روی این زبان گذاشته بودند، دلیل این امر هم این بود که یک درخت بلوط در مجاورت اتاق کار آقای گاسلینگ قرار داشت، پس از مدتی مدیران شرکت سانمایکروسیستمز (شرکت گاسلینگ و همکارانش) تصمیم گرفتند نام مناسبتری را برای این زبان برگزینند.
برای این منظور به یک کافیشاپ مراجعه کردند و حدود نصف روز در حال نوشیدن قهوه به بحث و تبادل نظر در این خصوص پرداختند و در نهایت تصمیم بر این شد که از مخفف نامهای خودشان یعنی James Gosling و Arthur Van Hoff و همچنین Andy Bechtolsheim استفاده کنند و در نهایت نام JAVA را بر روی این زبان نهادند، هرچند در نقل قولی آمده است Arthur و Andy که در تیم اولیه بودند پس از مدتی از شرکت سان جدا شده و در ادامه جیمز گاسلینگ به همراه دو تن از کارمندان سانمایکروسیستمز به نامهای Mike Sheridan و Patrick Naughton به همراه آقای گاسلینگ توسعهی زبان جاوا را تحت نام پروژهی سبز (Green) ادامه داده و سپس با تغییر نام به جاوا آن را منتشر کردند، اما چیزی که واضح است جیمز کاسلینگ کانادایی نقشی حیاتی در خلق این زبان داشته است. به همین علت لوگو این زبان برنامه نویسی به شکل یک فنجان قهوه است.
مزایای زبان برنامه نویسی JAVA
یادگیری جاوا بسیار آسان است. قوانین نحوی یا اصطلاحا syntax آن راحت، واضح و قابل فهم است. طبق گفته شرکت Sun زبان جاوا یک زبان راحت است زیرا: Syntax جاوا بر پایه C++ است، بسیاری از ویژگیهای پیچیده را حذف کرده است، و هیچ نیازی به حذف شیءهای بدون مرجع نیست زیرا Garbage Collection در جاوا به صورت خودکار این کار را انجام می دهد.
جاوا یک زبان برنامه نویسی شیءگرا است. هرچیزی در جاوا یک شیء است. شیءگرایی به این معنا است نرم افزار به صورت ترکیبی از اشیای مختلفی ساخته شود که هرکدام اطلاعات و رفتار منحصر به خود را دارا هستند.
برنامه نویسی شیءگرا (OOP) یک متد است که توسعه نرم افزار و نگهداری آن را با ایجاد یک سری قوانین ساده میکند.
جاوا قابل حمل است است زیرا شما می توانید کد بایتی جاوا را به هر ماشینی منتقل کنید و آن را در هر ماشینی اجرا کنید. این جابجایی نیاز به هیچ گونه تنظیماتی ندارد.
جاوا مستقل از پلتفرم است زیرا این زبان با زبانهای دیگر مانند C و C++که در ماشینهای وابسته به پلتفرم کامپایل میشوند، متفاوت است. یک پلتفرم سخت افزار یا نرم افزاری است که برنامه روی آن اجرا میشود.
به طور کلی دو نوع پلتفرم وجود دارد: بر پایه نرم افزار و بر پایه سخت افزار. پلتفرم جاوا با بیشتر پلتفرمهای موجود متفاوت است. پلتفرم جاوا یک پلتفرم بر پایه نرم افزار است که روی پلتفرمی بر پایه سخت افزار اجرا میشود. این پلتفرم دو جزء دارد:
جاوا بر روی چندین پلتفرم قابل اجرا است برای مثال ویندوز، لینوکس، سولاریس، مکینتاش و ... کدهای جاوا توسط کامپایلر به کدهای بایتی تبدیل میشود. این کدهای بایتی کدهایی مستقل از پلتفرم هستند زیرا میتوانند در پلتفرمهای مختلف اجرا شوند.
جاوا به خاطر امنیتش بسیار شناخته شده است. به کمک جاوا می توانیم سیستم های بدون ویروس بسازیم. جاوا به دلایل زیر امنیت بالایی دارد:
موارد زیر جاوا را به یک زبان قدرتمند تبدیل کرده است:
جاوا مدیریت حافظهی بسیار قوی دارد.
عدم وجود اشارهگرها باعث رفع مشکلات امنیتی شده است.
وجود یک garbage collection باعث میشود اشیائی که از آنها هیچ استفادهای نشده است در ماشین مجازی حذف شوند.
جاوا سیستم مدیریت خطا (exception handling) و مکانیزم بررسی نوع متغیر (type checking) وجود دارد.
جاوا از معماری دستگاه مستقل است زیرا هیچ ویژگی در آن وجود ندارد که به پیادهسازی وابسته باشد. به عنوان مثال اندازه متغیرهای اصلی آن ثابت است. در برنامه نویسی C ، متغیر نوع int در سستم های 64 بیتی 4 بایت و در سیستم های 32 بیتی 2 بایت است. در حالی که در زبان جاوا int 4 بایتی و مستقل از معماری سیستم است.
جاوا از همهی زبانهای برنامه نویسی تفسیری و سنتی سریعتر است زیرا کد بایتی جاوا به کد اصلی جاوا (native code) بسیار نزدیک است. ولی نسبت به زبانهای کامپایلی مانند C++ کمی کندتر عمل میکند. جاوا یک زبان تفسیری است و به همین دلیل از زبانهای کامپایلی مانند C++ کندتر است.
یک نخ (thread) مانند یک برنامه جدا است که به صورت همزمان اجرا میشود. با جاوا میتوان برنامههایی نوشت که با توصیف چند نخ، به طور همزمان چندین task را اجرا کند. فایده اصلی چندنخی این است که برای هر نخ حافظه را اشغال نمیکند بلکه یک فضای مشخص از حافظه را بین نخها به اشتراک میگذارد. ویژگی چند نخی بودن برای برنامه نویسی چندرسانهای و برنامه نویسی وب بسیار مهم است.
جاوا به برنامه نویسان این امکان را میدهد تا بتوانند برنامههای توزیع شده بنویسند. RMI و EJB برای تولید نرم افزارهای توزیع شده مورد استفاده قرار میگیرند. این ویژگی برنامه نویسان را قادر میسازد به فایلها یا متدها در دیگر ماشینها دسترسی داشته باشند.
جاوا یک زبان پویا است زیرا بارگذاری کلاسها به صورت پویا را پشتیبانی میکند. به این معنا که کلاسها بر اساس درخواست بارگذاری می شوند. همچنین جاوا از توابع زبانهای مادری خود که C و C++ هستند پشتیبانی میکند. جاوا همچنین کامپایل و مدیریت حافظه را به صورت خودکار دارد.
با JAVA چه کارهایی میتوانید انجام دهید؟
جاوا یک زبان چندسکویی است، بنابراین میتوانید با استفاده از آن برای سیستمعاملهای مختلفی مانند ویندوز، لینوکس، اواسایکس، اندروید، وب و ... برنامه نویسی کنید، از جاوا در توسعه اپلیکیشنهای اندرویدی، نرمافزارهای وب و دسکتاپ، بازیسازی و دیگر موارد استفاده میشود. در حقیقت یکبار برنامهی خود را بنویسید و همهجا آنرا استفاده کنید.
در ایران نیز برنامههای بسیار زیادی (به خصوص نرمافزارهای دولتی) با این زبان توسعه یافتهاند، بنابراین شما با یادگیری جاوا تقریبا میتوانید به بازار کار بسیار خوبی امیدوار باشید، در کشورهای توسعهیافتهای مانند استرالیا، کانادا، انگلستان و آمریکا شرایط از این نیز بهتر است و تقریبا سرمایهگذاریهای فراوانی روی آن میشود.
اپلیکیشنهای اندرویدی
وجود رشد گسترده کاتلین(Kotlin)؛ جاوا همچنان زبان پیشفرض برای اپلیکیشنهای اندرویدی محسوب میشود که به طور خودکار جمع عظیمی از توسعهدهندگان جاوا را به برنامهنویسان اندروید تبدیل کرده است. با این که اندروید از Android SDK به جای JDK استفاده میکند؛ اما کد آن همچنان به صورت جاوا نوشته میشود.
محصولات نرمافزاری
علاوه بر Hadoop و Apache Storm، جاوا برای ایجاد Eclipse، OpenOffice، Gmail، Atlassian و بسیاری از موارد دیگر مورد استفاده قرار گرفته است.
برنامههای مالی
جاوا با توجه به این که یکی از پر تقاضاترین مهارتهای زبان در بخش مالی محسوب میشود، هم در سمت سرور و هم کلاینت برای ساخت وبسایتهای مطمئن، سریع و ساده مورد استفاده قرار میگیرد. از جاوا به عنوان زبان برنامهنویسی مناسب برای شبیهسازی و مدلسازی دادهها نیز یاد میشود.
سیستمهای نقطه فروش
بسیاری از کسب و کارها از جاوا برای ایجاد سیستمهای PoS استفاده میکنند، زیرا چنین سیستمهایی معمولاً نیازمند عدم وابستگی به پلتفرم و منابع گسترده هستند.
اپلیکیشنهای تجاری
Murex یک برنامه مدیریت بانکی محبوب برای اتصال فرانت و بکاند است که به زبان جاوا نوشته شده است.
برنامههای کلان داده
Hadopp به زبان جاوا نوشته شده است. Scala،Kafka و Sparkاز JVM استفاده میکنند. ضمناً جاوا امکان دسترسی به هزاران کتابخانه، دیباگر و ابزارهای نظارتی کاملاً تست شده را فراهم ساخته است.
جاوا در سالهای اخیر همواره در فهرست پنج زبان برنامهنویسی محبوب با فرصتهای شغلی متعدد، متنوع و درآمد عالی بوده است. کسانی که جاوا را به خوبی یاد میگیرند، میتوانند هر زبان دیگری شامل #C، پایتون و حتی روبی را نیز به سادگی بیاموزند.
برنامهنویسان جاوا به طور عمده از جاوا برای طراحی اپلیکیشنها و وبسایتهایی استفاده میکنند که اجزای دینامیک دارند. برخی از آنها روی اپلیکیشنها و برخی دیگر روی وبسایتها کار میکنند اما در هر صورت اغلب توسعهدهندگان جاوا باید با مفهوم پروژه بودن کارشان آشنا باشند.
بر اساس آخرین پیمایش وبسایت معتبر StackOverflow از میان 64000 برنامهنویس در سال 2018 میانگین حقوق کاربرانی که به زبان جاوا برنامهنویسی میکنند در سرتا سر دنیا برابر با 52000 دلار به صورت سالانه بوده است. همچنین بر اساس پیمایش سال 1396 وبسایت jadi.net از میان 1950 برنامهنویس ایرانی، 1365 نفر اعلام کردهاند که به زبان جاوا نیز برنامهنویسی میکنند. بدین ترتیب جاوا با 70% محبوبیت، در میان توسعهدهندگان ایرانی نیز محبوبترین زبان محسوب میشود.
آمارهای زبان JAVA
در نمودار زیر میتوانید میزان استفاده از جاوا را در مقایسه با سایر زبانهای برنامه نویسی مشاهده نمائید.
در جدول ذیل استفاده معروفترین وبسایتهای دنیا را از زبانهای برنامه نویسی سمت سرور مشاهده میکنید که از میان 13 شرکت حاضر در جدول 8 وب سایت از جاوا استفاده میکنند که بیشترین تعداد در این جدول را در بر میگیرد.
در نمودار زیر میزان محبوبیت و استفتده از ورژنهای مختلف زبان جاوا را از وب سایت معتبر jetbrains.com مشاهده میکنید.
همچنین آمار فریمورکهای جاوا نیز از دیدگاه وب سایت معتبر jetbrains.comبه شرح زیر است.
ورژنهای زبان JAVA
زبان برنامه نویسی جاوا (JAVA) در 23 مه 1995 (برابر با 2 خرداد 1374) از سوی جیمز گاسلینگ (James Gosling) طراحی شده است. جاوا به گواهی سایت معتبر Tiobe از سال 2001 همواره به عنوان اولین یا دومین زبان برنامهنویسی دنیا مطرح بوده است.
در سال 1990 سانمایکروسیستمز در حال توسعه نرمافزاری برای استفاده ابزارهای الکترونیکی بود که مسئولیت تیم که آن را پروژه green نامیدند، جیمز گاسلینگ بر عهده گرفت. در سال 1991 تیم تصمیم گرفت که زبان جدید را OAK بنامند. در سال 1992 تیم پروژه green زبان جدیدی را معرفی کرد که با ابزارهای مختلف خانگی و لمسی کار میکرد. در سال 1993 وب جهانی توسعه یافت و زبان جدید با معرفی اپلت که قابلیتهای زیادی به کامپیوترهای متصل به وب میافزود مشهور شد. در سال 1995 زبان OAK به JAVA تغییر نام پیدا کرد و توسط مایکروسافت و نت اسکیپ پشتیبانی شد. در سال 1996 دیگر java زبانی به صورت همه گیر چند منظوره شناخته شده بود. در سال 2007 زبانهایی با استاندارد JVM مانند groovy ایجاد شد و در سال 2014 جاوا سعی کرد با معرفی نسخه 8 برخی از قابلیتهای زبانهای دیگر را به جاوا اضافه نماید.
این زبان قسمتهای بسیاری از گرامرخود را از C و ++C گرفته اما دارای مدل شیءگرایی سادهای است و امکانات سطح پایین کمی دارد. کاربرد جاوا در کامپایل به صورت بایت کد است که صرف نظر از معماری و خصوصیات آن کامپیوتر، قابلیت اجرا روی تمامی ماشینهای شبیهسازی جاوا را دارد. اجزای اصلی کامپایلرهای جاوا، ماشینهای پیادهسازی و کتابخانههای آن توسط شرکت مذکور از سال 1995 منتشر شد. در مه 1997 این شرکت، نرم افزار رایگان این زبان را فراهم کرد. دیگران هم کاربردهای دیگری از این زبان مثل کامپایلر GNU برای جاوا یا OPENJDK را منتشر کردند.
با پیدایش java2، نسخه جدید توانست ترکیبهای جدیدی را برای نوعهای مختلف سکوهای مختلف ایجاد کند. به عنوان مثال J2EE، باهدف کاربرد برای تشکیلات سازمانی، و نسخه سکوی جاوا، نسخه میکرو برای تلفن همراه منتشر شد. در سال 1996 با هدف بازاریابی، این شرکت نسخه جدید J2 را با نامهای سکوی جاوا نسخه سازمانی، سکوی جاوا نسخه میکرو و سکوی جاوا نسخه استاندارد منتشر کرد. در سال 1997 شرکت سانمایکروسیستمز، ISO/IEC JTC1 standards body و Ecma International را به فرمول جاوا تغییر داد. شرکت Sun بسیاری از کاربردهای جاوا را بدون هیچ هزینهای فراهم آورد. شرکت Sun با فروش مجوز برای بعضی از کاربردهای خاصش مثل Java Enterprise System درآمدی را بدست آورد. در 13 نوامبر 1996 شرکت Sun نرمافزار جاوا را به صورت رایگان و با مجوز عمومی برای همه منتشر کرد.
نسخه 8 و 11 جاوا، نسخههای دارای پشتیبانی بلندمدت میباشند.
نسخههای اصلی زبان جاوا
این زبان از پلتفرمهای مختلفی پشتیبانی میکند، برای برنامهنویسی در هر یک از این پلتفرمها از نسخهی خاصی از جاوا استفاده میشود که در ادامه برخی از مهمترین این نسخهها را با هم بررسی میکنیم: