پست های قبلی رو خوندم! بعضی جواب ها کاملا از روی تعصب بود! اینکه کمتر فراگیر شده میتونه به همون دلیل کم بودن منابع و تصور اینکه همه سختی هایی که تو سی++ برای ساخت برنامه با محیط گرافیکی لازم بود اینجا هم نیازه.
شما می دونید استفاده از ماشین مجازی چه مزیت هایی داره که با اطمینان دارید میگید جاوا اندروید رو منزوی میکنه ؟ مگه تنها مشکلی که وجود داره اینه که برنامه چه قدر سریع اجرا میشه؟! اصلا بحث امنیت و مدیریت حافظه و..... همه تو حاشیه هستند و فقط مهم هست که کی سریع تره؟!اندروید جاوا رو از منقرض شدن نجات داد. اما جاوا دلیل کنار رفتن اندروید میشه. پرفرمانس خیلی کم جاوا باعث شده که پردازندهای هشت هسته ای سامسونگ پرفرمانس کمتری نسبت به پردازنده دو هسته ای iPhone داشته باشن.
کتابخونه های قدیمی و کند جاوا باعث شده که برنامه نویسهای بازهای حتی اندروید هم سراغ NDK برن که با C++ هست. مثلا یادمه که تا همین چند وقت پیش ( سال ۲۰۱۱) جاوا از OpenGL ES 1.2 (اگه اشتباه نکنم) استفاده می کرد و همون زمان NDK اندروید از OpenGL ES 2.
بیشتر کتابخونه های حرفه ای دنیا با C++ طراحی میشن. نمونه اونها میشه OpenCV، OpenCL و دایرکت ایکس و ... اشاره کرد و بعد به زبانهای دیگه پورت میشن.
و اما در مورد اندروید: اندروید با جاوا نوشته نشده. بر عکس هسته لینوکس داره که با C نوشته شده و درون هسته یه کتابخانه و کامپایلر برای جاوا ساخته شده.
سعی کنید دلیل قانع کننده بیارید
شما که تو جریان این قضیه هستید که هسته اندروید لینوکسی هست و با زبان سی نوشته شده پس حتما میدونید که توابع سیستمی که نقش بسیار زیادی تو سرعت سیستم دارند همه با زبان سی نوشته شده اند و ماشین مجازی از همون توابع پر سرعت داره استفاده میکنه! پس دلیلی نیست که به قول شما کتابخانه های قدیمی و کند جاوا باعث کند شدن سیستم اون قدری بشه که شما پردازنده 8 هسته ای رو با 2 هسته ای مقایسه میکنید! ( حالا این قضیه بماند که تو همین سیستم های اندرویدی اون پردازنده 8 هسته ای بنچ مارک ضعیف تری از رقیب های 4 هسته ی خودش داشت)
اندروید نقص هایی داره و بحث کیفیت اندروید نیست اما مطمئن باشید اگه این سیستم ماشین مجازی سیستم کارآمدی نبود گوگل با این همه برنامه نویسی که داره سراغش نمی رفت!
برسیم به اون قضیه که اون آقا حجم خروجی برنامه های Qt برای اندروید رو گفتن و شما بحث NDK رو وسط کشیدید. این حرف منطقی هست اما حجم بالا رو توجیه نمیکنه!!! مثلا استفاده از انجین هایی مثل cocos2D و امثال این ها که با زبان سی هستند ولی خروجی برای اندروید هم میدن رو برسی کنید میبینید که از همین قضیه NDK و این حرف ها استفاده کرده و حجم فایل خروجی یه چیز معقول هست. اما Qt نمیدونم از چه سیستمی استفاده میی کنه که اینفدر حجم کد بالا میره. این حجم بالا کد نیاز به اجرا شدن نداره!؟ Qt برای اندروید هنوز تا قابل قبول بودن خیلی فاصله داره. حالا خوب بودن بماند.
از هر سیستمی باید به جاش استفاده کرد. سرعت برنامه های native بعضی جاها نیازه.بعضی جاها قابلیت های ماشین مجازی!
خود من از Qt و قدرت Qml خیلی خوشم اومد و توی برنامه های ویندوزی دارم سعی میکنم از سی شارپ به سمت Qt بیام. تازه Qt توی سیستم های Embedded هم کاربرد هایی داره که اصلا همین موضوع من رو جذب خودش کرد. حالا همین سیستم که این قدر ازش تعریف کردم برای جایی مثل اندروید اصلا مناسب نیست. در آینده شاید Qt یه تغییری توی کامپایل شدنش برای اندروید به وجود بیاره و اون رو کارامد کنه اما الان....
خیلی حرف زدم.برای تموم کردن بحث یه نقل قول از یکی از دوستام کنم که میگفت : برنامه نویسی رو یاد بگیر! زبون وسیله هست. شما بلد باشید برنامه نویسی کنید سوییچ کردن بین زبون ها اونقدرا سخت نیست! نیاز رو ببینید و براساس اون تصمیم بگیرید. هملا همین سی شارپ که همه ازش بد میگن! خیلی چه برنامه هایی که با این زبون نوشتن و چه پول هایی که در نیاوردن!