Codename One هي أول بيئة متنقلة عبر الأنظمة الأساسية لمطوري Java وKotlin. يمكنه تجميع Java bytecode إلى الملفات التنفيذية لنظام التشغيل الأصلي (iOS وAndroid وUWP وما إلى ذلك). إنها منصة متنقلة كاملة تتميز بالأجهزة الافتراضية والمحاكاة وأدوات التصميم (السمة المرئية/المنشئ/CSS)، وتكاملات IDE، ومنافذ لأنظمة تشغيل متعددة وغير ذلك الكثير. فهو يوفر وصولاً كاملاً إلى كود نظام التشغيل الأصلي الأساسي (مثل Objective-C، C#، Dalvik/ART) من خلال تجريد محمول يتيح إعادة استخدام الكود بنسبة 100٪.
على عكس المحاكيات التي يمكنك رؤيتها في Android وما إلى ذلك، يستخدم Codename One جهاز محاكاة. وهذا يعني أنه يبدأ بسرعة حتى عند تصحيح الأخطاء. يمكنك الاستمتاع بميزات IDE مثل إعادة تحميل التعليمات البرمجية المباشرة لتعديل التعليمات البرمجية في وقت التشغيل وما إلى ذلك.
وهذا يعني دورة تصحيح أسرع وعملية تطوير أسرع!
اختر من بين مجموعة كبيرة من "أسطح" الأجهزة لترى كيف سيبدو تطبيقك على أجهزة معينة. يأخذ الجلد في الاعتبار عوامل مثل الدقة وكثافة الجهاز لتوفير عرض تقديمي مثالي لتطبيقك، كما سيظهر على الجهاز الحقيقي. يكون التبديل بين أشكال الجهاز فوريًا تقريبًا.
يمكنك تحرير الأسطح والمساهمة فيها في مشروعهم مفتوح المصدر هنا.
تفاعل مع واجهات برمجة التطبيقات الخاصة بالتطبيق الخاص بك في وقت التشغيل باستخدام وحدة تحكم Groovy التفاعلية. افحص حالة التطبيق أو قم بتجربة التغييرات أثناء تشغيل التطبيق.
يتيح لك هذا التحقيق في المشكلات والتجربة دون تحمل أي تكاليف إضافية لإعادة الترجمة.
يتيح لك جهاز المحاكاة الاستفادة من ميزة "إعادة تحميل الفئات المتغيرة" في IntelliJ (المسماة "تطبيق تغييرات التعليمات البرمجية" في NetBeans) بحيث يتم تطبيق التغييرات التي تجريها في كود مصدر Java الخاص بك على الفور على تطبيقك قيد التشغيل بالفعل في جهاز المحاكاة.
لاحظ أن هذا غالبًا ما يكون متفوقًا على وحدة التحكم التفاعلية ولكن هناك قيود مثل القدرة على إضافة طرق/تغيير بنية التعليمات البرمجية. لا تنطبق هذه الحدود على وحدة التحكم التفاعلية!
عندما تقوم بإجراء تغييرات على ورقة أنماط CSS لتطبيقك، تنعكس التغييرات على الفور في جهاز المحاكاة. يتضمن ذلك تغيير المظهر والصور والخطوط وما إلى ذلك. يتم تحديث جميع التغييرات فورًا عند الحفظ، ولا حاجة لإعادة التحميل/التحديث أو أي شيء من هذا القبيل!
وهذا يجعل عملية تصميم التطبيق سهلة وسريعة بشكل ملحوظ.
استخدم مفتش المكونات القوي لتصفح التسلسل الهرمي لمكونات واجهة المستخدم في تطبيقك. تسهل هذه الأداة معرفة مصدر هذه الحشوة الإضافية أو سبب عدم اصطفاف شيء ما بالطريقة التي تريدها. يمكنك أيضًا تغيير UIID (المحدد) لأحد المكونات في وقت التشغيل لمعرفة مدى تأثيره على واجهة المستخدم ومعرفة أي مكون في التسلسل الهرمي يعين عنصرًا في شجرة المكونات (ما يعادل DOM).
شاهد جميع اتصالات الشبكة التي يجريها تطبيقك باستخدام مراقب الشبكة. تكون هذه الأداة القيمة مفيدة عندما تحاول معرفة سبب عدم عمل طلب HTTP لديك. تحقق من رؤوس ونصوص كل من الطلب والاستجابة. يمكنك حتى خنق الشبكة لمحاكاة اتصال الشبكة البطيء.
استخدم أداة مسجل الاختبار لتسجيل اختبارات الوحدة لتطبيقك. بمجرد بدء التسجيل، سيتم حفظ تفاعلاتك في اختبار الوحدة الذي يمكن تشغيله لاحقًا للتحقق من أن السلوك لا يزال صحيحًا.
يمكنك بعد ذلك ربط الاختبارات المسجلة بعملية CI الخاصة بك بما في ذلك الاختبار الآلي على الجهاز.
Codename One هو مشروع ناضج مفتوح المصدر تعود جذوره إلى شركة Sun Microsystems (2006) حيث تم تطوير أحد مكوناته الأساسية وجعله مفتوح المصدر. يمكنك التعرف على تاريخها وكيفية عملها في هذا الفيديو.
تعمل تطبيقات Codename One مثل التطبيقات الأصلية، لأنها تطبيقات أصلية حقيقية.
يتم تجميعها بشكل ثابت في ثنائيات أصلية باستخدام أدوات البناء الرسمية للنظام الأساسي المستهدف.
على الأنظمة الأساسية التي لا تدعم Java محليًا، مثل iOS، يتم أولاً نقل الكود الثانوي JVM الخاص بالتطبيق إلى نموذج تقبله أدوات الإنشاء الأصلية. على نظام التشغيل iOS، يتم تحويل كود JVM الثانوي الخاص بالتطبيق إلى كود مصدر C، في مشروع xcode حقيقي. على نظام Android، بما أن Java مدعومة محليًا، فلا داعي لمثل هذا التحويل. يتم تجميع جرة التطبيق مباشرةً في مشروع Android studio gradle، والذي يمكن إنشاؤه مباشرةً باستخدام أدوات إنشاء Android SDK.
يمكنك النقر على الصورة لتكبيرها أو عرض نسخة PDF هنا.
نصيحة: نحن ننتقل حاليًا إلى Maven، وقمنا بإنشاء طريقة جديدة أبسط لإنشاء المشاريع. قم بزيارة https://start.codenameone.com للبدء الآن.
هناك الكثير مما يجب معرفته عن Codename One، وهذا الفيديو الذي تبلغ مدته 3 دقائق يقدم عرضًا موجزًا للغاية وعالي المستوى. لاحظ أن هناك مقاطع فيديو مشابهة لـ Eclipse وIntelliJ/IDEA وNetbeans هنا:
يمكن توسيع Codename One بسهولة باستخدام مكتبات الجهات الخارجية التي يمكن أن تتضمن كود نظام التشغيل الأصلي. توجد قائمة واسعة بهذه المكتبات (cn1libs) هنا. يتم إنشاء قائمة المكتبات تلقائيًا بناءً على مشروع جيثب هذا.
يمكنك معرفة المزيد حول Codename One وإمكانياته على الموقع الرئيسي ويمكنك الاطلاع على قائمة واسعة من الوثائق والبرامج التعليمية هنا.
يمكنك البدء بالعرض الثنائي وعرض عين الطائر في قسم التنزيل. الروابط المهمة الإضافية هي:
ملاحظة: نحن بصدد الترحيل من Ant إلى Maven، مما يبسط عملية البناء من المصدر. راجع البدء السريع للنملة للحصول على تعليمات بناء النملة القديمة.
تمت تغطية الإعداد بعمق في هذه المقالة والفيديو.
هام: يتطلب بناء Codename One JDK 8 حاليًا. لا يمكنك استخدام JDK 11 لأن بعض الوحدات الفرعية يجب أن تستخدم -source 1.5
و -target 1.5
للحفاظ على التوافق مع الإصدارات السابقة مع أجزاء من سلسلة الأدوات.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
سيؤدي هذا إلى إنشاء Codename One وتثبيته في مستودع Maven المحلي لديك. يمكن أن تستغرق هذه العملية بعض الوقت نظرًا لأنها تقوم تلقائيًا بتنزيل التبعيات بحجم يصل إلى 1 جيجابايت تقريبًا.
لبناء مشاريع النموذج الأصلي من المصدر، يجب عليك التحقق من مستودع cn1-maven-archetypes وبنائه أيضًا:
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
الآن بعد أن تم تثبيت Codename One في مستودع Maven المحلي لديك، يمكنك استخدام هذا الإصدار في مشروع بدلاً من إصدار الإصدار. يمكن إنشاء مشروع اختبار جديد بسرعة باستخدام Codename One تهيئة.
بعد تنزيل المشروع واستخراجه، افتح ملف pom.xml الخاص به وابحث عن خصائص <cn1.version>
و <cn1.plugin.version>
. ثم قم بتغيير هذه للإشارة إلى الإصدار الذي تم تثبيته في مستودع maven المحلي الخاص بك عن طريق mvn install
. عادةً ما يكون الإصدار المبني محليًا إصدار SNAPSHOT (على سبيل المثال 7.0.21-SNAPSHOT).
الحصول على المصادر وبناءها
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
تشغيل اختبارات الوحدة
$ ant test-javase
تشغيل العينات
يحتوي دليل العينات على مجموعة متزايدة من نماذج التطبيقات. ليس المقصود من هذه العينات أن تكون عروضًا توضيحية، بل نماذج لكيفية استخدام واجهات برمجة التطبيقات.
يمكنك تشغيل نموذج تطبيق التشغيل من سطر الأوامر باستخدام:
$ ant samples
يعد جهاز iOS VM الخاص بـ Codename One فريدًا تمامًا وهو مفتوح المصدر أيضًا. يمكنك قراءة المزيد عنها في المجلد المخصص لها في هذا المستودع.
ParparVM هو جهاز افتراضي محافظ بشكل فريد يقوم بترجمة Java bytecode إلى كود C. وبالتالي توفير الأداء الأصلي والوصول مع الاستمرار في توفير شبكة أمان. هذا النهج فريد من نوعه بالنسبة إلى Codename One وهو ضروري للتوافق في المستقبل!
تميل Apple إلى تغيير الأشياء بشكل مفاجئ، على سبيل المثال دعم 64 بت والرمز البتي وما إلى ذلك. وبما أن ParparVM ينشئ مشروع Xcode قياسي، لم تكن هناك تغييرات مطلوبة في التعليمات البرمجية لأي من هذه التحولات التكتونية. يبدو الأمر كما لو أنك قمت بترميز المشروع بنفسك!
يمكنك أيضًا فتح المشروع الناتج في xcode وتصحيحه أو إنشاء ملف تعريف له مباشرةً على جهاز iOS. يوفر هذا الكثير من المعلومات المفيدة مثل مكدسات الاتصال القابلة للقراءة وتتبع الأداء القيم/القابل للتنفيذ...
المترجمون التقليديون يفشلون في هذه الحالات.
يحتفظ Codename One بشوكة iKVM وهي JVM لـ CLR. يسمح لنا هذا المنفذ المعدل بتشغيل تطبيق Universal Windows Platform لـ Codename One أصلاً على أجهزة Windows 10.
نحن نقدم الدعم في StackOverflow عندما تقوم بوضع علامة باستخدام codenameone، يمكنك أن تطلب أي شيء هناك ونحاول أن نكون مستجيبين للغاية. يعمل رابط StackOverflow أيضًا بمثابة الأسئلة الشائعة الممتازة التي يوجهها المجتمع لأنه يقوم حرفيًا بتعيين أسئلة المستخدم إلى الإجابات.
يحتوي Codename One على مجموعة مناقشة حيث يمكنك نشر الأسئلة. ومع ذلك، ونظرًا لطبيعة تلك المجموعة، فإننا نحاول الحد من المناقشات حول المصدر. منتدى المناقشة مخصص للاستخدام الأبسط وقد يؤدي اختراق كود المصدر/التجميع الأصلي الأكثر تعقيدًا إلى حدوث ضوضاء هناك.
شكرًا لهؤلاء الأشخاص الرائعين (مفتاح الرموز التعبيرية):
بيزل بيتر | liannacasper | sergeyCodenameOne | توماسH99 | خافيير أنطون | الماس | فرانشيسكو جالجاني |
kutoman | رمسيستوم | معارتينوس | دورانك | ddyer0 | com.carlosverdier | روبرت إيدلمان |
أدالبرت393 | ستيف هانا | com.digappsepp | بافنيت سينغ | com.vprise | JrmyDev | تيري ويلكنسون |
يانوس هانسن | يعقوب جيشر | مايكل مونك | سيدر | ميغيل مونيوز | أحمد أبومالوة | فابيو |
بيوتر | ماتياس باي | ساني سانوف | مكسيم28 | إريك ليونج | ديفيد داي | نيك برايس |
الاحنف بن آزاد | أوكتافيو إي أنينو | ياش بثرة | نينا | FercuNat | ImmediandoSrl | com.davidprimasc |
DB107 | إيكو التوسيار أشيميني |
يتبع هذا المشروع مواصفات جميع المساهمين. المساهمات من أي نوع هي موضع ترحيب! ❤️