09-06-2021, 04:40 PM
پردیس فناوری کیش_طرح مشاوره متخصصین صنعت و مدیریت-گروه فناوری اطلاعات و ارتباطات
معایب برنامهنویسی جاوا چیست ؟
اگر همه مزایای جاوا را تا اینجا خوانده باشید، شاید مشتاقانه قصد دارید در پروژه بعدی خود از زبان برنامهنویسی جاوا استفاده کنید؛ اما از آنجا که هیچ گلی بیخار نیست، باید گفت که جاوا نیز معایبی دارد که در ادامه به برخی از آنها اشاره کردهایم.
لایسنس تجاری پولی
شرکت اوراکل اخیراً اعلام کرده است که از ابتدای سال 2019 استفاده از نسخه JAVE SE 8 در محیطهای تجاری، کسب و کار یا production نیازمند پرداخت هزینه خواهد بود. بدین ترتیب برای دریافت همه اصلاحیههای باگ و بهروزرسانیها باید بر اساس تعداد کاربران یا تعداد پردازندهها هزینهای پرداخت کنید.
امروزه نسخه کنونی جاوا رایگان است و امکان بازتوزیع آن برای محاسبات با مقاصد عمومی وجود دارد. اما در جهت آمادهسازی برای طرح پولی، هر شرکت باید میزان استفاده از جاوا را ارزیابی کرده و در صورتی که ارتقا به نسخه پولی مقرونبهصرفه نباشد، به دنبال فناوریهای جایگزین برود.
عملکرد پایین
هر زبان سطح بالایی خواهناخواه به دلیل مسئله کامپایل و سطح تجرید به یک ماشین مجازی باید با مشکل عملکرد پایین دست و پنجه نرم کند. با این وجود، این تنها دلیل انتقاد عمومی از سرعت پایین جاوا نیست. ابزار بازیاب حافظه (garbage collector) جاوا یک ویژگی مفید است؛ اما متأسفانه در صورتی که بیش از 20 درصد زمان CPU را اشغال کند، میتواند منجر به مسائل مهم عملکردی بشود. پیکربندی کَش بد نیز میتواند منجر به استفاده بیش از حد از حافظه و کاربرد زیاد ابزار بازیابی حافظه شود. همچنین برخی بنبستهای نخ وجود دارند که وقتی چند نخ سعی میکنند به منابع یکسانی دسترسی یابند رخ میدهند و در این وضعیت کابوس هر توسعهدهنده جاوا یعنی خطاهای «خارج از حافظه» (out-of-memory) رخ میدهند. با این که هر یک از این مسائل با برنامهریزی ماهرانه قابل پیشگیری هستند؛ اما در برخی موارد روی هم جمع میشوند و آسیبهای مختلفی ایجاد میکنند.
جاوا روی دسکتاپ ظاهر و شمایل یکسانی ندارد
توسعهدهندگان برای ایجاد رابط گرافیکی برنامه (GUI) از ابزارهای مختلفی که خاص هر زبان استفاده میکنند. بدین ترتیب برای اپلیکیشنهای اندروید نرمافزار اندروید استودیو وجود دارد که به ایجاد اپلیکیشنهایی که حس و ظاهر بومی دارند کمک میکند. با این حال وقتی در مورد UI اپلیکیشنهای دسکتاپ صحبت میکنیم، جاوا فاقد شکل و شمایل شایان ذکری است.
چند سازنده UI مانند Swing، SWT، JavaFX، JSF وجود دارند که برنامهنویسهای جاوا میتوانند از میان آنها انتخاب کنند و این مورد آخر از همه محبوبتر است. Swing یک سازنده GUI قدیمی؛ اما مطمئن چند پلتفرمی و ادغام شده در چندین IDE شامل ایکلیپس و NetBeans است. اما به جز در موارد استفاده از قالبهای از پیشساخته مواردی از ناسازگاری در رابط مشاهده خواهید کرد. SWT از مولفههای بومی استفاده میکند؛ اما برای UI های پیچیده مناسب نیست. JAVAFX ظاهر تمیز و مدرنی دارد؛ اما چندان به بلوغ نرسیده است. در مجموع انتخاب یک رویکرد کاملاً مناسب برای ساخت GUI اپلیکیشن نیازمند تحقیقات بیشتری است.
کد طولانی و پیچیده
منظور ما از کد طولانی این است که کدهای جاوا از کلمات زیادی استفاده میکنند. با این که این وضعیت هنگام تلاش برای درک زبان برنامهنویسی، شاید یک مزیت به حساب بیاید؛ اما جملههای طولانی و بسیار پیچیده باعث میشوند که کد خوانایی کمتری داشته باشد و نتوان به سادگی آن را اسکن کرد. زبانهای سطح بالای زیادی در تلاش برای تقلید از زبان انگلیسی موجب شدهاند که شلوغی زیادی در کد ایجاد شود. جاوا برای کاهش کد غیر قابل درک C++ ایجاد شده تا برنامهنویسان را وادارد دقیقاً آنچه در نظر دارند را تایپ کنند. همین نکته باعث شده است که این زبان شفافیت بیشتری برای افراد غیر خبره داشته باشد؛ اما از سوی دیگر متأسفانه فشردگی آن کاهش یافته است.
اگر جاوا را با رقیبش پایتون مقایسه کنیم، میبینیم که کد پایتون نیاز به نقطهویرگول انتهایی ندارد و از «and»، «or» و «not» به جای عملگرهای «&&»، «||» و «!» در جاوا به عنوان عملگر استفاده میکند. به طور کلی پایتون تشریفات کمتری مانند پرانتز و آکولاد دارد.
معایب برنامهنویسی جاوا چیست ؟
اگر همه مزایای جاوا را تا اینجا خوانده باشید، شاید مشتاقانه قصد دارید در پروژه بعدی خود از زبان برنامهنویسی جاوا استفاده کنید؛ اما از آنجا که هیچ گلی بیخار نیست، باید گفت که جاوا نیز معایبی دارد که در ادامه به برخی از آنها اشاره کردهایم.
لایسنس تجاری پولی
شرکت اوراکل اخیراً اعلام کرده است که از ابتدای سال 2019 استفاده از نسخه JAVE SE 8 در محیطهای تجاری، کسب و کار یا production نیازمند پرداخت هزینه خواهد بود. بدین ترتیب برای دریافت همه اصلاحیههای باگ و بهروزرسانیها باید بر اساس تعداد کاربران یا تعداد پردازندهها هزینهای پرداخت کنید.
امروزه نسخه کنونی جاوا رایگان است و امکان بازتوزیع آن برای محاسبات با مقاصد عمومی وجود دارد. اما در جهت آمادهسازی برای طرح پولی، هر شرکت باید میزان استفاده از جاوا را ارزیابی کرده و در صورتی که ارتقا به نسخه پولی مقرونبهصرفه نباشد، به دنبال فناوریهای جایگزین برود.
عملکرد پایین
هر زبان سطح بالایی خواهناخواه به دلیل مسئله کامپایل و سطح تجرید به یک ماشین مجازی باید با مشکل عملکرد پایین دست و پنجه نرم کند. با این وجود، این تنها دلیل انتقاد عمومی از سرعت پایین جاوا نیست. ابزار بازیاب حافظه (garbage collector) جاوا یک ویژگی مفید است؛ اما متأسفانه در صورتی که بیش از 20 درصد زمان CPU را اشغال کند، میتواند منجر به مسائل مهم عملکردی بشود. پیکربندی کَش بد نیز میتواند منجر به استفاده بیش از حد از حافظه و کاربرد زیاد ابزار بازیابی حافظه شود. همچنین برخی بنبستهای نخ وجود دارند که وقتی چند نخ سعی میکنند به منابع یکسانی دسترسی یابند رخ میدهند و در این وضعیت کابوس هر توسعهدهنده جاوا یعنی خطاهای «خارج از حافظه» (out-of-memory) رخ میدهند. با این که هر یک از این مسائل با برنامهریزی ماهرانه قابل پیشگیری هستند؛ اما در برخی موارد روی هم جمع میشوند و آسیبهای مختلفی ایجاد میکنند.
جاوا روی دسکتاپ ظاهر و شمایل یکسانی ندارد
توسعهدهندگان برای ایجاد رابط گرافیکی برنامه (GUI) از ابزارهای مختلفی که خاص هر زبان استفاده میکنند. بدین ترتیب برای اپلیکیشنهای اندروید نرمافزار اندروید استودیو وجود دارد که به ایجاد اپلیکیشنهایی که حس و ظاهر بومی دارند کمک میکند. با این حال وقتی در مورد UI اپلیکیشنهای دسکتاپ صحبت میکنیم، جاوا فاقد شکل و شمایل شایان ذکری است.
چند سازنده UI مانند Swing، SWT، JavaFX، JSF وجود دارند که برنامهنویسهای جاوا میتوانند از میان آنها انتخاب کنند و این مورد آخر از همه محبوبتر است. Swing یک سازنده GUI قدیمی؛ اما مطمئن چند پلتفرمی و ادغام شده در چندین IDE شامل ایکلیپس و NetBeans است. اما به جز در موارد استفاده از قالبهای از پیشساخته مواردی از ناسازگاری در رابط مشاهده خواهید کرد. SWT از مولفههای بومی استفاده میکند؛ اما برای UI های پیچیده مناسب نیست. JAVAFX ظاهر تمیز و مدرنی دارد؛ اما چندان به بلوغ نرسیده است. در مجموع انتخاب یک رویکرد کاملاً مناسب برای ساخت GUI اپلیکیشن نیازمند تحقیقات بیشتری است.
کد طولانی و پیچیده
منظور ما از کد طولانی این است که کدهای جاوا از کلمات زیادی استفاده میکنند. با این که این وضعیت هنگام تلاش برای درک زبان برنامهنویسی، شاید یک مزیت به حساب بیاید؛ اما جملههای طولانی و بسیار پیچیده باعث میشوند که کد خوانایی کمتری داشته باشد و نتوان به سادگی آن را اسکن کرد. زبانهای سطح بالای زیادی در تلاش برای تقلید از زبان انگلیسی موجب شدهاند که شلوغی زیادی در کد ایجاد شود. جاوا برای کاهش کد غیر قابل درک C++ ایجاد شده تا برنامهنویسان را وادارد دقیقاً آنچه در نظر دارند را تایپ کنند. همین نکته باعث شده است که این زبان شفافیت بیشتری برای افراد غیر خبره داشته باشد؛ اما از سوی دیگر متأسفانه فشردگی آن کاهش یافته است.
اگر جاوا را با رقیبش پایتون مقایسه کنیم، میبینیم که کد پایتون نیاز به نقطهویرگول انتهایی ندارد و از «and»، «or» و «not» به جای عملگرهای «&&»، «||» و «!» در جاوا به عنوان عملگر استفاده میکند. به طور کلی پایتون تشریفات کمتری مانند پرانتز و آکولاد دارد.