الفرق بين المراجعتين لصفحة: «Kotlin/js overview»
مراجعة |
إضافة رابطي المكتبة القياسية و Node.js |
||
سطر 2: | سطر 2: | ||
تتيح لغة Kotlin إمكانيّة استهداف [[JavaScript|لغة JavaScript]] من خلال تحويل (transpiling) شيفرات Kotlin إلى ما يماثلها في [[JavaScript]] ؛ إذ تستهدف بالوقت الحاليّ معيارECMAScript 5.1، ومن المُخطَّط له أيضًا التوافق مع معيار ECMAScript 2015 لاحقًا. | تتيح لغة Kotlin إمكانيّة استهداف [[JavaScript|لغة JavaScript]] من خلال تحويل (transpiling) شيفرات Kotlin إلى ما يماثلها في [[JavaScript]] ؛ إذ تستهدف بالوقت الحاليّ معيارECMAScript 5.1، ومن المُخطَّط له أيضًا التوافق مع معيار ECMAScript 2015 لاحقًا. | ||
عند استخدام لغة Kotlin بهدف كتابة شيفرات [[JavaScript]] فستُحوَّل الشيفرات المكتوبة بلغة Kotlin (بعدِّها جزءًا من المشروع | عند استخدام لغة Kotlin بهدف كتابة شيفرات [[JavaScript]] فستُحوَّل الشيفرات المكتوبة بلغة Kotlin (بعدِّها جزءًا من المشروع و<nowiki/>[[Kotlin/stdlib|المكتبة القياسيّة في Kotlin]]) إلى شيفرة [[JavaScript]]، ولكنّ هذا لا يشمل أيًّا ممّا يتعلَّق ببيئة JDK أو JVM أو Java أو أيّ من منصّاتها أو مكتباتها المُستخدَمة، ويُستبعَد أيُّ ملفٍ غير متعلِّقٍ بلغة Kotlin أثناء عملية الترجمة (compilation). | ||
ويهدف مُترجِم Kotlin (Kotlin compiler) لتحقيق الأهداف الآتية: | ويهدف مُترجِم Kotlin (Kotlin compiler) لتحقيق الأهداف الآتية: | ||
سطر 8: | سطر 8: | ||
* أن يصبح الناتج (output) مقروءًا بلغة [[JavaScript]] | * أن يصبح الناتج (output) مقروءًا بلغة [[JavaScript]] | ||
* تحقيق توافقيّة التبديل (interoperability) مع الأنظمة الوحدويّة (module systems) الموجودة | * تحقيق توافقيّة التبديل (interoperability) مع الأنظمة الوحدويّة (module systems) الموجودة | ||
* تحقيق الفعاليّة ذاتها في المكتبة القياسيّة سواءً كان الهدف [[JavaScript]] أو JVM (لأقصى درجةٍ ممكنةٍ) | * تحقيق الفعاليّة ذاتها في [[Kotlin/stdlib|المكتبة القياسيّة]] سواءً كان الهدف [[JavaScript]] أو JVM (لأقصى درجةٍ ممكنةٍ) | ||
== كيف يمكن القيام بذلك؟ == | == كيف يمكن القيام بذلك؟ == | ||
سطر 17: | سطر 17: | ||
* إنشاء شيفرة Kotlin تستهدف [[JavaScript]] من طرف الخادم (server): | * إنشاء شيفرة Kotlin تستهدف [[JavaScript]] من طرف الخادم (server): | ||
** '''العمل مع تقنيات طرف الخادم (server-side technology):''' مثل Node.js. | ** '''العمل مع تقنيات طرف الخادم (server-side technology):''' مثل [[Node.js]]. | ||
ويُمكِن استخدام لغة Kotlin مع المكتبات أو منصّات العمل الخارجيّة مثل [[jQuery]] أو React، إذ تُستخدَم أداة [https://github.com/kotlin/ts2kt ts2kt] للوصول للمنصّات الخارجيّة عبر واجهات API (من نوع strongly-typed) وذلك لتحويل تعريفات TypeScript (الموجودة في مركز توثيق التعريف [http://definitelytyped.org/ Definitely Typed]) إلى لغة Kotlin، أو قد يُستخدَم النمط الديناميكيّ كبديلٍ للوصول إلى أي منصّة دون اللجوء إلى strong typing. | ويُمكِن استخدام لغة Kotlin مع المكتبات أو منصّات العمل الخارجيّة مثل [[jQuery]] أو React، إذ تُستخدَم أداة [https://github.com/kotlin/ts2kt ts2kt] للوصول للمنصّات الخارجيّة عبر واجهات API (من نوع strongly-typed) وذلك لتحويل تعريفات TypeScript (الموجودة في مركز توثيق التعريف [http://definitelytyped.org/ Definitely Typed]) إلى لغة Kotlin، أو قد يُستخدَم النمط الديناميكيّ كبديلٍ للوصول إلى أي منصّة دون اللجوء إلى strong typing. | ||
المراجعة الحالية بتاريخ 11:32، 12 مايو 2018
تتيح لغة Kotlin إمكانيّة استهداف لغة JavaScript من خلال تحويل (transpiling) شيفرات Kotlin إلى ما يماثلها في JavaScript ؛ إذ تستهدف بالوقت الحاليّ معيارECMAScript 5.1، ومن المُخطَّط له أيضًا التوافق مع معيار ECMAScript 2015 لاحقًا.
عند استخدام لغة Kotlin بهدف كتابة شيفرات JavaScript فستُحوَّل الشيفرات المكتوبة بلغة Kotlin (بعدِّها جزءًا من المشروع والمكتبة القياسيّة في Kotlin) إلى شيفرة JavaScript، ولكنّ هذا لا يشمل أيًّا ممّا يتعلَّق ببيئة JDK أو JVM أو Java أو أيّ من منصّاتها أو مكتباتها المُستخدَمة، ويُستبعَد أيُّ ملفٍ غير متعلِّقٍ بلغة Kotlin أثناء عملية الترجمة (compilation).
ويهدف مُترجِم Kotlin (Kotlin compiler) لتحقيق الأهداف الآتية:
- أن يكون الناتج (output) بحجم تخزينٍ مثاليّ
- أن يصبح الناتج (output) مقروءًا بلغة JavaScript
- تحقيق توافقيّة التبديل (interoperability) مع الأنظمة الوحدويّة (module systems) الموجودة
- تحقيق الفعاليّة ذاتها في المكتبة القياسيّة سواءً كان الهدف JavaScript أو JVM (لأقصى درجةٍ ممكنةٍ)
كيف يمكن القيام بذلك؟
هنالك العديد من الوسائل لترجمة شيفرة Kotlin إلى شيفرة JavaScript ، وهي:
- إنشاء شيفرة Kotlin تستهدف JavaScript من طرف العميل (client):
- التعامل مع عناصر DOM (أي Document Object Model): إذ توفِّر Kotlin عددًا من الواجهات الستاتيكيّة (statically-typed interfaces) للتعامل مع نمط DOM ممّا يسمح بإنشاء عناصر DOM وتعديلها.
- التعامل مع الرسوميّات (graphics) مثل WebGL: إذ يُمكن استخدام لغة Kotlin لإنشاء عناصر رسوميّة في صفحة ويب بالاعتماد على WebGL.
- إنشاء شيفرة Kotlin تستهدف JavaScript من طرف الخادم (server):
- العمل مع تقنيات طرف الخادم (server-side technology): مثل Node.js.
ويُمكِن استخدام لغة Kotlin مع المكتبات أو منصّات العمل الخارجيّة مثل jQuery أو React، إذ تُستخدَم أداة ts2kt للوصول للمنصّات الخارجيّة عبر واجهات API (من نوع strongly-typed) وذلك لتحويل تعريفات TypeScript (الموجودة في مركز توثيق التعريف Definitely Typed) إلى لغة Kotlin، أو قد يُستخدَم النمط الديناميكيّ كبديلٍ للوصول إلى أي منصّة دون اللجوء إلى strong typing.
وتعمل شركة JetBrains على تطوير عددٍ من الأدوات المخصّصة لمجتمع React مثل: React bindings و تطبيق Create React Kotlin App ؛ إذ يساعد هذا التطبيق على البدء ببناء تطبيقات React باستخدام Kotlin بدون إعدادات خاصّة بعملية البناء (build configuration).
وتتوافق لغة Kotlin كذلك مع CommonJS و AMD و UMD مما يحقِّق تفاعلًا مباشرًا مع مختلف الأنظمة الوحدويّة (module systems).