با توجه به موقعیت شغلیم، چند وقتیه درگیر برنامه نوسی برای سیستم عامل iOS شدم. کاری که با وجود داشتن MacBook همیشه ازش ترس داشتم. دلیل اصلی این ترس زبان برنامه نوسی objective-c بود که با سینتکس وحشتناکش همیشه منو از این کار منصرف می کرد.
مثل اینکه شرکت اپل ترس من امثال منو درک کرد و پس از مدت ها یک زبان برنامه نویسی رسمی جایگزین برای برنامه نویسی سیستم عامل iOS عرضه کرد. اپل اعلام کرده، Swift یک زبان برنامه نویسی مدرن است که برنامه نوسی رو راحت تر می کنه. Swift یک زبان برنامه نویسی استاتیک و hybrid است (functional و Object oriented) که بسیاری از قابلیت های خودشو از Scala ارث برده و از نظر سینتکس خیلی به Scala شبیه است.
اما رقیب اصلی اپل در دنیای موبایل یعنی گوگل خیلی زودتر از اینها در این فکر بوده و از همان ابتدای کار زبان برنامه نویسی جاوا که بسیار مدرن تر و فراگیرتر از objective-c بود را انتخاب کرد. حالا پس از این تصمیم اپل که با استقبال توسعه دهندگان هم روبرو شده، به نظر میرسه گوگل هم باید به فکر مدرن سازی بیشتر برنامه نویسی اندروید باشه. درسته که زبان برنامه نویسی جاوا به نسبت objective-c خیلی مدرن تره ولی به اندازه Swift مدرن نیست. مطالب و پست های زیادی تو وب وجود دارن که از جاوا بخاطر طول و دراز بودن سینتکسش (verbose) و یا پشتیبانی نکردن از قابلیتهای Functional (تا قبل از جاوا 8) و ... انتفاد می کنند. به نظر من و با توجه به هزینه معرفی یک زبان جدید و همچنین استقبال توسعه دهندگان، گوگل گزینه های زیر رو پیشرو داره:
1- جاوا 8: با توجه به اینکه سینتکس جاوا استفاده شده در اندروید در حال حاضر جاوا 6 رو پشتیبانی میکند و جاوا تا قبل از عرضه نسخه 8 یک زبان برنامه نویسی Object Oriented بود. بروزرسانی سینتکس جاوا استفاده شده در اندروید از 6 به 8، علاوه بر اینکه قابلیتهای Functional به پلتفرم اندروید اضاقه می کند، این مزیت رو برای گوگل داره که نیازی نیست زبان برنامه نویسی جدیدی را ترویج کند و همچنین از نظر پیادهسازی هم فقط باید سینتکس جدید را به ابزار های خود اضافه کند که به نسبت معرفی یک زبان برنامه نویسی جدید کار بسیار سادهتری است.
2- Groovy: در گذشته گوگل با انتخاب gradle بعنوان اتوماسیون build جدید اندروید (جایگزین apache ant) نشان داده که به groovy اعتماد دارد. از طرف دیگر در حال حاضر امکان تولید برنامه اندروید با groovy وجود دارد و تیم groovy هم اعلام کرده از نسخه 2.4 (نسخه در حال توسعه بعدی) بصورت رسمی این امکان در Groovy SDK اضافه می شود. Groovy یک زبان برنامه نویسی داینامیک و اسکریپتی است و بسیاری از قابلیتهای خود را از Python و Ruby به ارث برده است و integration خوبی با جاوا و JVM دارد. این موارد groovy رو به محتمل ترین و کم هزینه ترین گزینه بعد از جاوا 8 تبدیل میکند ولی شاید داینامیک بودن این زبان در انتخاب نشدنش تأثیر داشته باشد.
3- اسکالا: اسکالا یک زبان برنامه نویسی استاتیک ( static type system) و Hybrid مثل Swift است. در حال حاضر بصورت غیر رسمی امکان برنامه نویسی برای اندروید با اسکالا با استفاده از پروژه Scaloid وجود دارد و با در نظر گرفتن اینکه این زبان برنامه نویسی برای برنامه نویسی بر روی JVM است و سازگاری خوبی با جاوا و JVM دارد میتواند گزینه مناسبی برای گوگل می باشد.
4- Dart: این زبان برنامه نویسی برای برنامه نویسی وب و با هدف جایگزینی آن با جاوااسکریپت توسط شرکت گوگل عرضه شده است با توجه به سرمایهگذاری گوگل بر روی این زبان برنامه نویسی، این زبان هم میتواند گزینه خوبی برای جایگزینی با جاوا در اندروید باشد ولی ریسک تازه کار بودن این زبان و همچنین وفق دادن آن با اکوسیستم جاوا میتواند قابل توچه باشد.
در پایان به نظر من گوگل برای عقب نماندن از رقیب اصلی خود در ساده ترین حالت پشتیبانی از سینتکس جاوا 8 و در حالات پیچیدهتر معرفی یک زبان برنامه نویسی جدید جایگزین را باید در دستور کار خود قرار دهد.
هر چند خیلی دوست داشتم اسکالا رو تو اندروید به صورت native تجربه کنم اما خیلی بعیده که گوگل بهش فکر کنه ، محتمل ترین همون جاوا 8 هست** یا ارایه یک زبان جدید.
** : با توجه به اینکه در ورژن های جدید از سینتکس های جاوا ۷ هم تا حدودی میشه استفاده کرد اینطور به نظر میرسه که بعد از مدتی این اتفاق برای جاوا 8 و به ویژه قابلیت lambda اون بیوفته