الفرق بين المراجعتين ل"Kotlin/js overview"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (تعديل الروابط وتصحيح بعض الجمل)
(مراجعة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:استخدام لغة Kotlin في نطاق JavaScript}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:استخدام لغة Kotlin في نطاق JavaScript}}</noinclude>
تتيح لغة Kotlin إمكانيّة استهداف لغة 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، ولكنّ هذا لا يشمل أيًّا ممّا يتعلَّق ببيئة JDK أو JVM أو Java أو أيّ من منصّاتها أو مكتباتها المُستخدَمة، ويُستبعَد أثناء عملية الترجمة (compilation) أيُّ ملفٍ غير متعلِّقٍ بلغة Kotlin.
+
عند استخدام لغة Kotlin بهدف كتابة شيفرات [[JavaScript]] فستُحوَّل الشيفرات المكتوبة بلغة Kotlin (بعدِّها جزءًا من المشروع والمكتبة القياسيّة في Kotlin) إلى شيفرة [[JavaScript]]، ولكنّ هذا لا يشمل أيًّا ممّا يتعلَّق ببيئة JDK أو JVM أو Java أو أيّ من منصّاتها أو مكتباتها المُستخدَمة، ويُستبعَد أيُّ ملفٍ غير متعلِّقٍ بلغة Kotlin أثناء عملية الترجمة (compilation).
  
ويحاول مترجم Kotlin ‏(Kotlin compiler) تحقيق الأهداف الآتية:
+
ويهدف مُترجِم Kotlin ‏(Kotlin compiler) لتحقيق الأهداف الآتية:
* أن يكون الخرج بحجم تخزينٍ مثاليّ
+
* أن يكون الناتج (output) بحجم تخزينٍ مثاليّ
* أن يصبح الخرج مقروءًا بلغة JavaScript  
+
* أن يصبح الناتج (output) مقروءًا بلغة [[JavaScript]]
* تحقيق توافقية التبديل (interoperability) مع الأنظمة الوحدويّة (module systems) الموجودة
+
* تحقيق توافقيّة التبديل (interoperability) مع الأنظمة الوحدويّة (module systems) الموجودة
* تحقيق نفس الفعاليّة في المكتبة القياسيّة سواءً أكان الهدف JavaScript  أو JVM (لأقصى درجة ممكنة)
+
* تحقيق الفعاليّة ذاتها في المكتبة القياسيّة سواءً كان الهدف [[JavaScript]] أو JVM (لأقصى درجةٍ ممكنةٍ)
  
 
== كيف يمكن القيام بذلك؟ ==
 
== كيف يمكن القيام بذلك؟ ==
يمكنك ترجمة شيفرة Kotlin إلى شيفرة JavaScript بإحدى الطرائق الآتية:
+
هنالك العديد من الوسائل لترجمة شيفرة Kotlin إلى شيفرة [[JavaScript]] ، وهي:
* إنشاء شيفرة Kotlin تستهدف JavaScript من طرف العميل client:
+
* إنشاء شيفرة Kotlin تستهدف [[JavaScript]] من طرف العميل (client):
** '''التعامل مع عناصر DOM:''' إذ توفِّر Kotlin عددًا من الواجهات الستاتيكيّة (statically typed interfaces) للتعامل مع نمط Document Object Model ممّا يسمح بإنشاء عناصر DOM وتعديلها.
+
** '''التعامل مع عناصر DOM (أي Document Object Model):''' إذ توفِّر Kotlin عددًا من الواجهات الستاتيكيّة (statically-typed interfaces) للتعامل مع نمط DOM ممّا يسمح بإنشاء عناصر DOM وتعديلها.
** '''التعامل مع الرسوميّات مثل WebGL:''' إذ يمكنك استخدام لغة Kotlin لإنشاء عناصر رسوميّة في صفحة ويب بالاعتماد على WebGL.
+
** '''التعامل مع الرسوميّات (graphics) مثل WebGL:''' إذ يُمكن استخدام لغة Kotlin لإنشاء عناصر رسوميّة في صفحة ويب بالاعتماد على WebGL.
  
* إنشاء شيفرة Kotlin تستهدف JavaScript من طرف الخادم server:
+
* إنشاء شيفرة Kotlin تستهدف [[JavaScript]] من طرف الخادم (server):
** '''العمل مع تقنيات طرف الخادم server-side technology:''' إذ يمكنك استخدام لغة Kotlin للتعامل مع  JavaScript من طرف الخادم server مثل Node.js.
+
** '''العمل مع تقنيات طرف الخادم (server-side technology):''' مثل Node.js.
ويُمكِن استخدام لغة Kotlin مع المكتبات أو منصات العمل الخارجيّة مثل jQuery أو React، إذ إنّه للوصول للمنصات الخارجية عبر واجهات API (من نوع strongly-typed) تستطيع استخدام أداة [https://github.com/kotlin/ts2kt ts2kt] وذلك لتحويل تعريفات TypeScript الموجودة في مركز توثيق التعريف [http://definitelytyped.org/ Definitely Typed] إلى لغة Kotlin، أو يمكنك استخدام [[Kotlin/dynamic type|النمط الديناميكيّ]] كبديلٍ للوصول إلى أي منصة دون اللجوء إلى strong typing.
+
ويُمكِن استخدام لغة Kotlin مع المكتبات أو منصّات العمل الخارجيّة مثل [[jQuery]] أو React، إذ تُستخدَم أداة [https://github.com/kotlin/ts2kt ts2kt] للوصول للمنصّات الخارجيّة عبر واجهات API (من نوع strongly-typed) وذلك لتحويل تعريفات TypeScript (الموجودة في مركز توثيق التعريف [http://definitelytyped.org/ Definitely Typed]) إلى لغة Kotlin، أو قد يُستخدَم النمط الديناميكيّ كبديلٍ للوصول إلى أي منصّة دون اللجوء إلى strong typing.
  
وتعمل شركة JetBrains على تطوير عددٍ من الأدوات خصّيصًا لمجتمع React مثل: [https://github.com/JetBrains/kotlin-wrappers React bindings] و[https://github.com/JetBrains/create-react-kotlin-app Create React Kotlin App] ؛ إذ تساعد أداة Create React Kotlin App على البدء ببناء تطبيقات React باستخدام Kotlin بدون إعدادات خاصّة بعملية البناء (build configuration).
+
وتعمل شركة [https://www.jetbrains.com/ JetBrains] على تطوير عددٍ من الأدوات المخصّصة لمجتمع React مثل: [https://github.com/JetBrains/kotlin-wrappers React bindings] و تطبيق [https://github.com/JetBrains/create-react-kotlin-app Create React Kotlin App] ؛ إذ يساعد هذا التطبيق على البدء ببناء تطبيقات React باستخدام Kotlin بدون إعدادات خاصّة بعملية البناء (build configuration).
  
وتُعدُّ لغة Kotlin متوافقةً مع  CommonJS و AMD و UMD مما [https://kotlinlang.org/docs/tutorials/javascript/working-with-modules/working-with-modules.html يحقِّق تفاعلًا مباشرًا] مع مختلف الأنظمة الوحدويّة (module systems).
+
وتتوافق لغة Kotlin كذلك مع  CommonJS و AMD و UMD مما يحقِّق تفاعلًا مباشرًا مع مختلف الأنظمة الوحدويّة (module systems).
  
 
== مصادر ==
 
== مصادر ==
* [https://kotlinlang.org/docs/reference/js-overview.html صفحة استخدام لغة Kotlin في نطاق JavaScript  في توثيق لغة Kotlin الرسميّ]
+
* [https://kotlinlang.org/docs/reference/js-overview.html استخدام لغة Kotlin في نطاق JavaScript  في التوثيق الرسميّ للغة Kotlin.]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin]]
 
[[تصنيف:Kotlin JavaScript]]
 
[[تصنيف:Kotlin JavaScript]]

مراجعة 11:19، 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).

مصادر