این صفحه صرفا ترجمه شده این مقاله میباشد

ما خوشحالیم که اعلام کنیم، اولین نسخه پیشنمایش از Kotlin/Native که مستقیم از زبان کاتلین به زبان ماشین کامپایل میشود در دسترس است. کامپایلر Kotlin/Native فایل های اجرایی استانداردی را تولید میکند که بدون نیاز به هیچ ماشین مجازی اجرا میشوند.

البته هنوز نسخه کاملا عملی نیست! (این مقاله مربوط به 4 آپریل 2017 است) ولی به اندازه ای قابل استفاده است که بتونید با این تکنولوژی بازی کنید و حتی میتونید اگر خواستین به سرس کدش نگاه بندازین.

هدف :

کاتلین/نیتیو یک مرحله دیگه به سمت استفاده از ار کاتلین در اپلیکیشن های مدرن است. بالاخره این ممکن خواهد بود که از کاتلین در تمامی پلتفرم ها و کامپوننت ها استفاده کنیم، چه سمت سرور، چه سمت کلاینت و چه موبایل! یکی از بزرگترین انگیزه ها این است که شما لازم نیست برای پلتفرم های مختلف مهارت های مختلف رو یاد بگیرید، به عبارت با کاتلین اشتراک مهارت خواهید داشت. انگیزه بزرگ و مهم دیگر هم اینه که شما همون کدی رو استفاده خواهد کرد که در پلتفرم دیگه استفاده میکنید! یا به عبارت اشتراک کد خواهید داشت!

ایده ما برای استفاده از کد بین پلتفرمی (Cross-Platform) به این شرح است: فردی مستقل از پلتفرم ماژول هایی از زبان کاتلین رو طراحی و تست کنه و در انتها برای پلتفرم های ساپورت شده کامپایل کنه که ما تا اینجا به اونا میگیم Common Modules. ولی بعضی قسمت ها ممکنه نیاز به پیاده سازی خاص منظوره برای هر قسمت ها داشته باشند. به عبارتی بعضی از توابع کاتلین نیازمند استفاده از پیاده سازی های خاص یک پلتفرم باشند که اونها هم میتونن با زبان کاتلین نوشته بشن ولی برای خاص هر پلتفرم که به این قسمت ها میگیم Platform Specific modules. حالا یک سری قسمت ها داریم که وظایفی مشترک برای تمامی پلتفرم ها رو انجام میدن و یک سری ماژول ها داریم که وظایفی خاص برای هر پلتفرم انجام میدن. حالا اون قسمت های خاص از قسمت های مشترک استفاده میکنم و شما در انتها یک سری محصول در پلتفرم های مختلف دارین.

دستیافته ها:

کاتلین/نیتیو از زیربنای کامپایلر LLVM برای تولید کد ماشین استفاده میکنه.در این پیشنمایش ما پلتفرم های زیر رو ساپورت میکنیم(این مقاله مربوط به تاریخ 4 اپریل 2017 است):

- Mac OS X 10.10 and later (x86-64)

- x86-64 Ubuntu Linux (14.04, 16.04 and later), other Linux flavours may work as well

- Apple iOS (arm64), cross-compiled on MacOS X host

- Raspberry Pi, cross-compiled on Linux host

تا زمانی که LLVM پلتفرم های مختلف رو دردسترس قراربده، پلتفرم های بیشتری میتونن به این کامپایلر اضافه بشن.البته ما نیز تعدای پلتفرم را نیز خارج از برنامه اضافه خواهیم کرد.

مثل قبل، همکاری پذیری ( قابلیت صدا زدن از/به زبان دیگر ) از اولویت های ماست، و کاتلین/نیتیو به صورت موثر توانایی صدا زدن توابع c و یا دادن و گرفتن دیتا از اون رو داره!

مدیریت مموری:

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

محدودیت های حال حاظر:

همانطور که گفتیم کاتلین/نیتیو هنوز نهایی نیست، و محدودیت هایی داریم که باید تک به تک حذف بشن، به عنوان مثال :

- هیچگونه بهبود عملکردی انجام نشده است، بنابراین بنچمارک کردن کاتلین/نیتیو منطقی نیست.

- دو کتابخانه Standard Library و Reflection support هنوز کامل نشده اند و API های بیشتری اضافه خواهد شد.

- اطلاعات بیشتر را در اینحا بخوانید

برنامه های آینده:

در حال حاظر در تلاشیم که پلتفرم های بیشتری را به اهدافمون اضافه کنیم، به عنوان مثال :

- iOS applications (reusing code with Android)

- Embedded systems/IoT (e.g., Arduino and beyond)

- Data analysis and Scientific Computing

- Server-side and Microservices (low-footprint executables, utilizing the power of coroutines)

- Game Development

نحوه استفاده :

ما دو کامپایلر Mac و iOS و همچنین کامپایلر Linux و Raspberry PI رو آماده کردیم که به همراه سمپل و داکیومنت هاشون میتونید ازشون استفاده کنین.

در ضمن میتونید پروژمون رو در گیتهاب نگاه کنین.