آیا جاوا در حال منسوخ شدن است؟

اخیرا خبر های زیادی از رشد زبان های برنامه نویسی مثل JavaScript، Python، GoLang و … شنیده میشه و از طرفی اگر به جداول منتشر شده از منابع معروفی مثل StackOverflow و Github دقت کنیم میبینم که در دو سال اخیر کمی از محبوبیت جاوا کم شده و حتی جایگاهش در رتبه دوم برنامه نویسی از دست داده. حتی در بازار کنونی ایران هم بسیاری از بیزنس ها و کسب و کار های بزرگ دارن از روی Java به GoLang مهاجرت میکنن (به جز صنعت Fintech که تا مغز استخون به جاوا چسبیده و فک نمیکنم حالا حالاها بخواد از جاوا بیاد بیرون)

حقیقت ماجرا چیه؟

برسی مشکل و چالش

بذارید اول برسی کنیم که برنامه نویسان و سازمان ها با چه پارامتر هایی زبان برنامه نویسی خودشونو انتخاب میکنن برای انجام یه کار:

  1. سرعت یادگیری
  2. بازده کد (مثال معروفش اینه که شما توی پایتون با یه خط کد میتونید 100 بار ی جمله ای رو چاپ کنید ولی توی جاوا همون حداقل 10 خط میشه)
  3. سرعت اجرا
  4. کامیونیتی یا جامعه اون زبان
  5. نیروی کار موجود در بازار و قیمتشون

این موارد امیخته از دلایل برنامه نویسان و صاحبان کسب و کار برای انتخاب یه زبون برنامه نویسی خاص هست و بقیه موارد در حقیقت ترکیبی از موارد بالا هستن برای مثال شما ممکنه بگید که زمینه فعالیت بیزنس هم بسیار مهم هست و محبوبیت پایتون در هوش مصنوعی رو بعنوان تایید حرفتون مطرح کنید. در اینجا باید بگم که محبوبیت پایتون در زمینه هوش مصنوعی به خاطر بالا بودن لایبراری ها به خاطر کامیونیتی مناسب در اون زمینه و همینطور و بازده و یاد گرفتن اون هست که به ترییب موارد 4 و 2 و 1 از موارد بالا میشن.

یا مثال دیگه رو هم میتونیم به هزینه نگه داری کد اشاره کنیم. هزینه نگه داری کد شامل تایمی هست از کارمندان برنامه نویسی گرفته میشه (مورد 2) که با توجه به هزینه برنامه نویس و نیروی کار موجود در بازار (مورد 5) میتونیم تشخیص بدیم که ایا هزینه نگهداری یک کد بالا هست یا خیر. (البته توی این مورد خاص میتونیم بگیم که درآمد بیزنس هم ی مقدار تاثیر گذار هست که در موارد بالا نیومده)

حالا با در نظر داشتن این چند پارامتر بیاین ی برسی کنیم که وضعیت جاوا به چه صورت هست.

با یه سرچ ساده توی دنیای اینترنت و مقایسه زبون جاوا با زبان های دیگه ای مثل GoLang (چون همونطور ک گفتم اخیرا زیاد دارن مهاجرت میکنن بهش) موارد زیر رو میتونید بهش برسید: (دیدم که میگم)

  • سرعت یادگیری: اگر جاوا کار باشید و در مصاحبه های شرکت های بزرگ شرکت کرده باشید بدون شک میدونید که جاوا چقدر عمیق هست و پیچیدگی داره. شاید با خودتون بگید که این پیچیدگی رو همه زبون ها دارن و بخاطر پیچیدگی های بیزنس و کار هست که ایجاد میشن اما باید بگم که نه. یه سری از پیچیدگی های جاوا کاملا به خود ساختارش برمیگرده و صد البته ورژن جاوایی که دارید استفاده میکنید. برای مثال شما در زبانی مثل PHP با array() سر و کار دارید و تقریبا لیستی که بهتون میده تموم نیاز هاتون رو جواب گو هست ولی در جاوا تسلط نسبی روی دیتا استراکچر های موجود و تفاوت انواع لیستا تا حدی نیازه علاوه بر اون شما باید کاملا درگیر این موضوع باشید که ایا احتمال وجود فضای Parallel وجود داره یا خیر.
    پس نتیجتا میتونیم بگیم جاوا توی این مورد سرعت یادگیری پایین داره و امتیاز منفی برای جاوا حساب میشه
  • بازده کد: همونطور ک توی مثال پایتون بالا هم بهش اشاره کردم شما میتونید میم های زیادی رو در دنیای اینترنت ببینید که دارن به این موضوع اشاره میکنن که با زبان های دیگه میشه با کد کمتر به خروجی های بیشتری رسید نسبت به جاوا پس مجددا اینجا هم امتیاز منفی ای برای جاوا داریم
  • سرعت اجرا: برخلاف دو مورد قبل یکی از نقاط قوت جاوا بالا بود سرعت اجرای اون نسبت به زبان های سطح بالاتر مثل python، ruby رو در عین حال که سینتکس های اون به سختی زبان هایی مثل C نیست. به نظرم ابزار ها و کد نویسی همچنان توی جاوا راحت تره نسبت به زبونی مثل GoLang چون شما در اونجا هم مثل C درگیر پوینتر و رفرنس میشید (دیگه خودتون حساب کار رو بکنید). در اینجا میتونیم امتیاز مثبت برای جاوا در نظر بگیریم
  • کامیونیتی یا جامعه اون زبان: جامعه زبان جاوا بسیار قدرتمند و بزرگه. جالبه که بدونید اصطلاحی ایجاد شده در جهان تحت عنوان java champion (یه چیزی تو مایه های شاخ جاوا). رسیدن به این سطح بسیار سخت هست و حتی برای ورود به لیست اونا باید یکی از خودشون شما رو تایید و معرفی کنه و این دوستان توی پروسه توسعه هسته جاوا دخیل هستن. خود این موضوع به اندازه کافی نشون دهنده ساختار یافته بودن جامعه اون هست. در کنار این مسله تعداد کتب موجود برای جاوا هم نشون دهنده این موضوع هست. بنابراین در این زمینه هم میتونیم امتیاز مثبت برای جاوا در نظر بگیریم
  • نیروی کار موجود در بازار و قیمتشون: توی این مورد هم با توجه به سختی یادگیری جاوا، طبیعتا نیرهایی هم که در این زمینه فعالیت میکنن هزینه های بالایی دارن و نیروی متخصص هم نسبت به بقیه زبون ها کمتر توی بازار موجود هست که در این مورد هم میتونیم بگیم امتیاز منفی دیگه ای برای جاوا

نکته مهم: دقت کنید که تمام موارد گفته شده کاملا نسبی هست و توی مقایسه ما بیشتر زبان های سطح بالا و GoLang مد نظر بود. اگر جاوا رو با C/C++ مقایسه کنید به احتمالا زیاد موارد برعکس میشن.

با توجه به موارد گفته شده و امتیاز هایی که میبنید طبیعیه که بعضی از کسب و کار ها بنا به نیازشون به سمت جاوا نرن یا حتی اگر روی جاوا هستن از روی اون سوئیچ کنن به زبون های دیگه.

خبر خوب

حالا بخش جالب ماجرا اینجاست که شرکت اراکل (صاحب جاوا) هم از این موضوعات بی اطلاع نیست و داره اقدامات مناسبی رو در این زمینه انجام میده. تاثیرات این اقدامات رو داریم در نسخه های جدیدی که از هسته جاوا منتشر میشه میبینیم. برخی از این تغیرات:

  • شبه dynamic type (شما میتونید برای معرفی متغیر از کلمات کلیدی var و val استفاده کنید به جای اینکه تایپ متغیر رو بذارید که این باعث کاهش کد میشه)
  • افزایش سرعت در نسخه Java 15
  • امکان گرفتن خروجی native و کاهش memory footprint به لطف graalvm و فریم ورک quarkus

برخی از تغیرات هم هنوز منتشر نشدن و شما میتونید توی سایت رسمی openjdk اون ها رو مشاهده کنید. (یکی از هیجان انگیز ترین پروژه هاشون پروژه Loom هست)

علاوه بر اون جاوا فریم ورک های بسیار محبوب و کاربردی ای داره که اونا هم هر روز دارن قوی تر میشن.

نتیجه

یادمه اون اوایل که برنامه نویسی رو شروع کرده بودم یکی از افراد بالادستیم بهم گفت، اگر توی ی چیزی خیلی خوب و عمیق مهارت داشته باشی، هر چقدر هم که علم پیشرفت کنه و سهولت در پیاده سازی اون کار ایجاد بشه برای شما بازم کار هست.

خود منم شخصا اعتقاد دارم که زبان برنامه نویسی ابزار هست و بلاخره هر ابزاری رو بهر کاری ساختن. با تموم علاقه و احترامی که برای جاوا قائلم احتمال اینکه از جاوا برای پروژه های هوش مصنوعی استفاده کنم بسیار پایین هست.

در نهایت به نظرم اتفاقات خوبی داره برای جاوا میوفته و همونطور که اون بزرگوار گفته اگر شما جاوا کار قوی ای باشید در نهایت همیشه براتون کار های سطح بالا و خفن وجود داره.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *