در مورد بحث desktop application دوستمون به خوبی توضیح دادن.
اما دلیل این که اکثر برنامههای جاوا سرعت اجرای پایینی دارن و رم زیادی مصرف میکنن، دلایل مختلفی میتونه داشته باشه. یکیش اینه که توی جاوا دستوری به نام delete مثل ++C نداریم! بنابراین شما شیء رو درست میکنید، و رهاش میکنید به امان خدا! تا وقتی که Garbage Collector بیاد سراغش و حذفش کنه. اما توی ++C شما خودتون باید شیء رو از بین ببرید. برای همین معمولاً کسی که میتونه کد ++C بزنه، کدش سریعتر و بهینهتر هست! و البته سختتر، برای همین هم کمتر به سمت ++C میرن.
نکتهی دیگه اینه که جاوا یه JVM داره که ماشین مجازی هست و کد رو اون اجرا میکنه، نه این که سیستم عامل و CPU مستقیم کد رو اجرا کنن. که این خودش یه لایهی اضافه هست و باعث کندتر شدنش میشه (البته موجودی به نام JIT هم وجود داره که این مشکل رو تا حد زیادی رفع میکنه).
و در نهایت هم یه نکته در مورد بهینهسازی کد جاوا بگم: یکی از راههای سریعتر کردن اجرای کد جاوا، بهینهسازی تنظیمات JVM هست، یعنی تغییری توی کد نداره و فقط پارامترهای JVM رو دستکاری میکنید. مثلاً تنظیمات GC خییییلی میتونن توی بالا رفتن performance کد جاوا تأثیر داشته باشن (مخصوصاً توی RAM های بالا، مثلاً ۴ گیگ و بالاتر).
به عنوان مثال من eclipse رو مطرح میکنم: یه فایل هست کنار فایل اجرایی eclipse به نام eclipse.ini که توش آدرس کلاس اصلی اجرایی eclipse نوشته شده:
org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
همچنین دو تا دایرکتوری توی eclipse وجود داره که شامل فایلهای jar اش هست:
plugins
و
features
خلاصه: مطمئن باشید با جاوا نوشتنش! :)
دلیلش هم اینه که وقتی زبون سطح بالاتر میره، سرعت کد زدن براش بیشتر میشه، به دو دلیل: یکی این که توی زبانهای سطح بالاتر درگیر یه سری مسائل سطح پایین نمیشید و در نتیجه تمرکزتون روی کل کار بیشتر میشه. دوم این که زبانهای سطح بالاتر راحتتر از زبانهای سطح پایینتر هستند، و در نتیجه تعداد بیشتری آدم پیدا میکنید که روش کار کنن و همچنین community بزرگتری دارن.
یه دلیل دیگه که اینا رو با جاوا مینویسن اینه که pluggable باشه. اگه نگاه کنید، تعداد plugin های موجود برای eclipse خیییییییییییییییییییییییی ییلی زیاده! خوب دلیلش اینه که پلاگین نوشتن برای جاوا خیلی راحتتر از پلاگین نوشتن برای ++C هست. کلاً زبانهایی که VM دارن خیلی قابلیت انعطافشون بالاتره و در نتیجه خیلی راحتتر میتونن از پلاگینها پشتیبانی کنن.
و در نهایت یه نکته بگم: این که میگید مثلاً eclipse این مشکل رو نداره و مثل برنامههای native با کارایی بالا اجرا میشه، خیلی درست نیست. eclipse هم بعضی وقتها چنان قاطی میکنه که دیگه تکون نمیخوره! هر کاری میخواین توش بکنین بدون اغراق ۵ ثانیه طول میکشه! اعصاب آدم به هم میریزه! البته معمولاً با یه restart مشکلش حل میشه! تا وقتی که دوباره به این وضعیت برسه!
یعنی کلاً برنامههای جاوایی از برنامههای native سنگینتر هستن...