دعوت به تبادل نظر: آینده زبان برنامهنویسی جاوا چیست؟
انسانها همواره دوست دارند در مورد اتفاقاتی که در آینده رخ میدهد پیشبینی کنند. اطلاع از آینده یک تکنولوژی میتواند در تصمیمات امروز ما تاثیرات مفیدی داشته باشد. باتوجه به دیربازده بودن صنعت تولید نرمافزار یک پیشبینی صحیح در مورد آینده زبانبرنامهنویسی در سیاستهای امروز افراد و شرکتها و در موفقیتهای آینده آنان میتواند تاثیر زیادی داشته باشد.
به تازگی کنفرانس javaOne، به عنوان گستردهترین گردهمایی توسعهدهندگان جاوا برگزار گردید و در آن مدیران در مورد اهم دستاوردهای فعلی این زبان و سیاستها و ویژگیهای تصویب شده برای نسخههای آتی آن صحبت کردند. باتوجه به این سیاستها و ویژگیها و همینطور تحولاتی که در نسخههای اخیر جاوا وجود داشته است، آینده جاوا به عنوان محبوبترین زبان برنامهنویسی طبق شاخص TIOBE از چالشیترین بحثهای روز به حساب میآید.
باتوجه به رونق IoTها در چندسال اخیر و حضور موفق جاوا در وسایل، آیا جاوا مسیر خود را در embedded systemها ادامه میدهد؟
آیا جاوا میتواند در زمینه برنامهنویسی تابعی زبانهای تابعی مثل اسکالا را از میدان به در کند؟
آیا جاوا جایگاه خود را در اندروید حفظ میکند؟
آیا جاوا همچنان در زمینه برنامهنویسی server-side مهم خواهد ماند؟
آیا فناوریهای مبتنی بر جاوا به مرور از پیادهسازی لایه واسط کاربری کاملا خارج میشود؟ مثلاً آینده فناوریهایی مثل GWT و Swing چگونه خواهد بود؟
مورد توجه قرار دادن ماژولاریتی در نسخههای آتی، چه تاثیری در آینده آن خواهد داشت؟
لطفاً از طريق بخش «نوشتن دیدگاه» (در پایین همین مطلب) در این بحث شرکت کنید و نظرات و تحلیلهای خود را با ما و سایر خوانندگان درمیان بگذارید.
در یکی از خبرها خواندم که پردازنده های جدیدی که حدود 4 سال بعد می آیند، به دلیل تغییرات زیادی که دارند، تمام برنامه ها باید دوباره نوشته شوند؛ اما زبانی مثل زبان جاوا، چون برای ماشین مجازی می نویسد، هیچ وقت با تغییر سخت افزار، نیازی به تغییر متن برنامه ندارد.
به خصوص که دستگاههای جدیدی در آینده ساخته خواهند شد.
در کل زبان جاوا به همین دلیل، زبانی برای آینده است که هنوز ارزشش درک نشده.
با open source شدن .NET جاوا نابود میشه!
نظرت درحد دانشجوی سال اولی نرم افزار بود.متاسفم که صریح عرض کردم.
اگه مثل دانشجوهای سال اولی نظر بدی اشکال نداره اینکه نظر ندی به گمونم بدتره
به هر حال به نظر من که برای یک برنامه نویس خیلی نباید مهم باشه که یک زبان کهنه
و منسوخ بشه یا فراگیر باشه. بلکه یک برنامه نویس باید خودش رو برای هر شرایطی آماده کنه که اگر زبانی منسوخ شد بتونه راحت به زبان دیگر مهاجرت کنه
دوست من، نظر شما محترم ولی فکر میکنم شناخت کافی ای از جاوا و بستر مجازی اون ندارید! فارغ از مباحث، همیشه سیاست شرکت های بزرگ، سیاست برد برد هست و هرگز اقدام یک شرکت(مایکروسافت) به منزله نابودی ابرمحصول شرکت دیگه(اوراکل) نخواهد بود! همچنین، باید دونست که مفاهیمی چون “شکست”، “نابودی” و… چه معنایی داره؟! تعریف صحیح این واژه ها، خیلی مهم هست! (حس میکنم جنگ جهانی سوم رخ میده با نظر شما)
مایکروسافت یک روزی(دهه 90 میلادی) jre روی از ویندوزهای xp خودش حذف کرد، و همین مسئله موجب شد که جاوا دیدگاه خودش رو چنان تغییر بده که رقابتی با اون ها نداشته باشه(کلاس کار، خیلی فرق کرد)! از طرفی، وقتی زنجیره تکنولوژی های این شرکت ها رو باهم بررسی کنید، خواهید دید که مایکروسافت اغلب موارد رو پیشرو نبوده و صرفا یک نمونه راحت و لایت رو زحمت کشیده!(مثلا Nhibernate یا EF که عملا از Hibernate نمونه برداری شدند(نمیدونم واژه نمونه برداری درست و بجا باشه یا نه؟!)!)
باید در مورد سرنوشت زبان جاوا و بستر جاوا جداگانه صحبت کرد.
پایبندی کم نظیر جاوا به رویکرد استانداردسازی و backward compatibility و توجه به اهمیت و جایگاه community فعال و رویکرد متن باز، موجب انباشت گسترده امکانات و کتابخانه ها و محصولاتی شده که به راحتی قابل صرفنظر یا بازسازی در بسترهای دیگر نیست. بنابراین نمی توان تصور کرد چگونه ممکن است این بستر کنار گذاشته بشود. بستر جاوا در بلندمدت سهم خود را حداقل در server-side و ایجاد میان افزارها حفظ خواهد کرد.
اما در مورد زبان جاوا، مساله پیچیده تر است. اولاً بسترهایی مانند اندروید در کنار بستر اصلی جاوا این زبان را به خدمت گرفته اند و موجب افزایش محبوبیت و کاربرد آن شده اند. احتمالاً با برخورد اوراکل و گوگل چنین کاربردهایی در اینده محدود خواهد بود.
جاوا 8 سعی کرده است با ایجاد ساختارهای جدید کاستی هایش را نسبت به زبانهایی همچون اسکالا و پایتون جبران کند. این اقدام با وجود مزایایش به دلیل افزایش پیچیدگیهای زبان، امکان آموزش جاوا به عنوان اولین زبان برنامه نویسی در دانشگاه ها را کاهش داده و جایگاه آکادمیک این زبان را تنزل خواهد داد.
از طرف دیگر از جاوا 6 رویکرد jvm as as platform آغاز شده و در هر نسخه ابعاد تازه تر و کاملتری از آن پوشش داده می شود. در این رویکرد برنامه نویس برای استفاده از امکانات بستر جاوا الزامی به استفاده از زبان جاوا ندارد و می تواند از بین چندین گزینه همچون Java Script ، Ruby، Scala و Groovy و … گزینه دلخواه خود را انتخاب نماید.
به طور خلاصه پیش بینی من این است که سهم زبان جاوا رو به کاهش است ولی بستر جاوا همچنان سهم قابل توجهی خواهد داشت.
جناب پیشوایی عزیز کار من رو راحت کردن و من با نظرات ایشان کاملا موافقم.
زبان برنامه نویسی جاوا سالیان سال مزیت سادگی داشته که این سادگی امروز بعنوان ضعف برای آن بحساب می آید چون انسان های باهوش تر شده اند و ساختار های ساده جاوا را verbose می نامند.
بنظرم زبان برنامه نویسی جاوا برای حفظ رشد خود باید یک انقلاب در سینتکس خود داشته باشد که با توجه به سیاست backwards compatible بودن آن، این کار غیر ممکن است. یک راه دیگر هم این است که جاوا سیاست ساده بودن خود را ادامه دهد که در اینصورت مطمئنا همانند زبان برنامه نویسی C جایگاه ثابتی در بین توسعه دهندگان خواهد داشت (هر چند جایگاه اول نخواهد بود).
در حال حاضر رویکرد جاوا هیچ کدام از موارد فوق نیست و یک رویکردی بینابینی است که باعث شده در جاوا ۸ راه رفتن ساده خود را نیز فراموش کند. قابلیت های functional که در جاوا ۸ اضافه شده است فقط آدم را قلقلک می دهد که سری به زبان های functional مثل اسکالا بزند و تازه متوجه می شویم که مفاهیم functional چقدر زیبا هستند و جاوا ۸ چقدر ابتدایی و ناقص آنها را عرضه کرده است و آنوقت هست که شما هم نه تنها جاوا را verbose بلکه ناقص هم می نامید! (این اتفاق برای خود من افتاده است) و این یعنی سقوط.
برنامه نویسی functional یکی از trend های فعلی و آینده برنامه نویسی است و جاوا برای حفظ جایگاه خود باید خود را به یک زبان برنامه نویسی hybrid تبدیل کند، حالا اینکه چه زمان و چگونه؟
در رنکینگ TIOBE هیچ کدام از زبان های برنامه نویسی روی JVM بغیر از جاوا رنک بالای ۴۰ نداشتند ولی با این تعلل ها جاوا در حال حاضر اسکالا رنک 24 را دارد و آینده خوبی نیز در انتظار این زبان برنامه نویسی hybrid است.
از نظر من مشکل بزرگ جاوا ۸ این است که مدیران فنی نمی توانند به این سوال پاسخ دهند که حالا که قرار است پیچیدگی های برنامه نویسی functional به تیم تولید من اضافه شود چرا انقدر بد و دست و پا شکسته ؟
من فکر میکنم جاوا در فناوریهای لایه نمایش (presentation layer) ناموفق بوده و خواهد بود. در مواردی مثل server-side و Big Date هم مهم و موفق بوده و خواهد بود. درباره IoT و سیستمهای embedded هم شاید جهشی دوباره در JavaME بهوجود بیاید. شاید.