لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
مزیت های اپ اندروید نویسی با ++C نسبت به Java چیست؟

مزیت های اپ اندروید نویسی با ++C نسبت به Java چیست؟

با وجود این که اپل و گوگل از زبان های برنامه نویسی خود -Objective-C و Swift برای iOS اپل و Java برای اندروید گوگل- برای توسعه ی موبایل پشتیبانی می کنند، توسعه دهندگان مستقل موبایل زمان زیادی را صرف می کنند تا یاد بگیرند چطور با استفاده از زبان های برنامه نویسی دیگر می توانند اپلیکیشن های اندروید و آی او اس بسازند. از میان زبان های جایگزین می توان #C و (Pascal (Embarcadero-Rad Studio را نام برد. یکی دیگر از این زبان ها ++C و کیت توسعه ی نرم افزار DragonFire برای iOS و اندروید است. سال گذشته، Android Studio پشتیبانی از (NDK (Native Development Kit را اضافه کرد. بدین ترتیب توسعه دهندگان می توانند از C و ++C در اپلیکیشن های اندرویدی خود استفاده کنند. اما سوالی که مطرح می شود این است: مزیت های استفاده از سی پلاس پلاس برای توسعه ی اپ های اندرویدی چیست؟ برای یافتن پاسخ این سوال، با سکان آکادمی همراه باشید.

کدنویسی سریع تر 
تعدادی از نرم افزار های شناخته شده از سی پلاس پلاس برای توسعه ی چندسکویی استفاده می کنند؛ نرم افزارهایی از جمله Facebook Moments، دراپ باکس، آفیس، اسکایپ و بازی های محبوبی چون Clash of Clans. با توجه به این که سی پلاس پلاس معمولا رابط کاربری استانداردی ندارد، کدهای رابط کاربری با زبان نیتیو نوشته شده اند و سی پلاس پلاس برای منطق برنامه استفاده می شود.

زبان جاوا با بایت کد بهینه سازی شده ی JVM می تواند امکان کدنویسی سریع تر را فراهم کند اما یک زبان نیتیو در زمینه هایی مانند بازی سازی، شبیه سازی فیزیکی و پردازش سیگنال می تواند سریع تر و کارآمدتر باشد. البته تمام این کارها را با استفاده از فریم ورک JNI یا Java Native Interface می توانید با دسترسی محدودتر انجام دهید اما سرعتتان کاهش پیدا می کند. به همین دلیل است که زبان های نیتیو مثل سی پلاس پلاس در این زمینه مزیت دارند.

ویژوال استودیو 
مایکروسافت نسخه ی رایگان Visual Studio Express را در سال 2005 عرضه کرد که در سال 2013 با ویرایش Community تکمیل شد. این نسخه امکان افزودن پلاگین ها و مدیریت آن ها را از طریق Nuget Package Manager فراهم می کند.

ویژوال استودیو از همان ابتدا ++Visual C را پشتیبانی می کرد. اکنون سی پلاس پلاس می تواند به اندروید کامپایل شود و اپلیکیشن های اندرویدی نیتیو تولید کند. این پلتفرم از مجموعه ابزارهای CLANG برای کامپایل کردن اندروید استفاده می کند.

ویژوال استودیو یک امولاتور اندروید سریع در کنار کیت های توسعه ی اندروید -SDK و NDK- دارد که از آن جمله می توان به Apache Ant و Oracle Java JDK اشاره کرد. بنابراین شما برای استفاده از ابزارهای خارجی نیازی به به استفاده از پلتفرم دیگری ندارید. علاوه بر Ant، Gradle و Cmake، Xoreax Incredibuild نیز در ویژوال استودیو ی 2015 قرار گرفته تا با بهره گیری از کامپپیوترهای یک شبکه سرعت ساخت اپلیکیشن را افزایش دهد.

امکان استفاده از سورس کد بازی های موجود 
تعداد زیادی کد بازی ها از جمله موتورهای بازی متن باز و محتوای آزاد وجود دارند. برای شروع می توانید فهرست موجود بازی های متن باز در ویکیپدیا را بررسی کنید و از لینک منابع استفاده کنید. البته همه ی بازی ها با سی پلاس پلاس نوشته نشده اند اما ابزارهای موجود، فرصت ادغام و ترکیب  کدها را برای توسعه دهندگان فراهم می کنند.

مزیت های C++ نسبت به جاوا 
جاوا زبان بی نقصی است اما برای توسعه ی اپلیکیشن های اندروید، سی پلاس پلاس برتری هایی نسبت به جاوا دارد. یکی از این مزیت ها میزان استفاده از حافظه ی کمتر است. سی پلاس پلاس به نوعی بچه ی زبان C است و باید همه ی برنامه های نوشته شده با زبان C را کامپایل کند بنابراین شما می توانید از نرم افزارهای C مجددا استفاده کنید.

مسئله ی دیگر، سرعت است. اغلب ادعا می شود که برنامه های جاوا با سرعت سی پلاس پلاس یا در بعضی موارد حتی سریع تر اجرا می شوند. سورس کد جاوا به صورت بایت کد کامپایل شده و با فرمت فشرده ی jar. ذخیره می شود. در هنگام اجرا، JVM بایت کد فایل jar.  را بارگذاری کرده و آن را به زبان ماشین کامپایل می کند (این ویژگی JIT یا کامپایل در لحظه (Just-In-Time Compilation) نام دارد.)

در مقابل، سی پلاس پلاس زمان Warm-up ندارد و به همین دلیل اپلیکیشن های نوشته شده در سی پلاس پلاس در سخت افزار یکسان نسبت به اپلیکیشن های جاوا سریع تر هستند. به طور مثال، بلوک کد زیر مربوط به NDK برای NativeActivity برای فناوری OpenGL است و به منزله اولین بخشی است که اکتیویتی را استارت می کند:

void android_main(struct android_app* state) {
    struct engine engine;

    // Make sure glue isn't stripped.
    app_dummy();

    memset(&engine, 0, sizeof(engine));
    state->userData = &engine;
    state->onAppCmd = engine_handle_cmd;
    state->onInputEvent = engine_handle_input;
    engine.app = state;

    // Prepare to monitor accelerometer
    engine.sensorManager = ASensorManager_getInstance();
    engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
            ASENSOR_TYPE_ACCELEROMETER);
    engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager,
            state->looper, LOOPER_ID_USER, NULL, NULL);

    if (state->savedState != NULL) {
        // We are starting with a previous saved state; restore from it.
        engine.state = *(struct saved_state*)state->savedState;
    }

پیش از این از ++C برای توسعه ی اندروید استفاده شده است 
در ابتدا که Google Android NDK وجود داشت، گوگل اعلام کرد که گرچه این کیت توسعه برای بسیاری از اپلیکیشن ها کاربرد ندارد اما برای اپلیکیشن های CPU-intensive مانند موتورهای بازی می تواند مفید باشد. سپس Google Labs در سال 2014، fplutil را منتشر کرد. این مجموعه ی کتابخانه و ابزارها برای توسعه ی اپلیکیشن های سی و سی پلاس پلاس برای اندروید مفید بود. فراموش نکنید که Google Play Services، دربرگیرنده ی API زبان برنامه نویسی سی پلاس پلاس است.

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

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

منبع