على مبادئ التصميم جافا مشغل البرنامج النصي

QLExpress هو أداة محرك البرمجة، على غرار رائع، JRuby، هو الوقت المناسب ليحل قواعد العمل الكهرباء تجميع دينامية، والتعبير عن الحسابات الدقيقة، والعمليات المنطقية المعقدة، وظائف مخصصة والرموز العملية، وتوليد شجرة بناء الجملة وغيرها من الاحتياجات وتصميم. QLExpress مشروع مفتوح اعتبارا من عام 2012، حتى الآن كرر أكثر من 60 إصدارات (في مؤشر علي الملكية مفتوحة المصدر المجتمع - Taocode) بعدما بشكل غير متوقع الحصول على استجابة جيدة للغاية داخل المجتمع والجماعات.

ومع ذلك، يجب أن أكون التحدث بصراحة جدا، في كثير من القائمة أداة ممتازة في محرك البرمجة، QLExpress أبعد ما يكون عن الكمال. Benpian بالتزامن مع عملها والبحوث التقنية، هي بعض من أكثر إثارة للاهتمام.

ومعايير تصنيف أول

1، وقد تم تجميعها مقابل analyticity

إذا كان يمكنك إنشاء ملف منفصل ينتمي إلى الطبقة السابقة، على سبيل المثال: فل، simpleEl، رائع

وإلا فإن تعليمات الذاكرة بواسطة مترجم إلى مخصصة ينتمي إلى هذا الأخير، على سبيل المثال: QLExpress، طيار، JEXL

2، جافا بناء الجملة مقابل لغة التعبير (EL لغة التعبير) مقابل النصي (النصي)

إذا كان جافا بناء الجملة ومتسقة، دون أي تمديد، تنتمي إلى الأول:

إذا كان عدد كبير من تركيب مبسطة (مثل إزالة الطبقات عرض والأساليب وتعريفات المتغير، معالجة الاستثناء، وما إلى ذلك حلقة منطق القفزة)، ودعم فقط صيغة حسابية بسيطة، ودعا متغير كائن عضو طريقة، ينتمي إلى الثاني: فل، simpleEl، طيار

بين بين، أي توفير جيدة نحوي السكر، ويدعم أكثر من بناء الجملة جافا: لالحلقات، إذا تعريف الدالة تقرير، تنتمي إلى الثالث: رائع، QLExpress

3، ثابت مقابل دينامية مباراة قوية ضد الضعيف نوع نوع

انظر الفرق هنا: نوع ضعيفة، الكتابة قوية، الطباعة ودينامية، والفرق بين اللغة مطبوعة بشكل ثابت، ما هو؟

لنفترض أن اثنين من محرك البرمجة متطورة للغاية، ويمكن الكتابة قوية أن يكون الترتيب من حيث الحجم أضعف من نوع من كفاءة التشغيل، ولكن أيضا المرونة اللازمة لتقديم الأعمال أسوأ كثيرا. على سبيل المثال فل، simpleEl من رائع والكفاءة QLExpress ستكون بالتأكيد أمر من حجم، وبالتالي، رائع كما يوفر نوع ثابت من نمط للتضحية ببعض المرونة لتحسين الأداء.

الثانية، أفكار التصميم

ويعتقد: استبدال الملفات المصدر جافا عبر النص.

تجميع، وذلك باستخدام أداة جدك (javax.tools.JavaCompiler) أو أدوات كسوف جمعت حيوي في ملفات فئة

تشغيل، وإزالة ملفات فئة في JVM لتشغيلها مباشرة

فكرتين: ANTLR شابه بواسطة محلل تحليل تدفق النص في شجرة جملة مجردة (AST).

عند تصنيف، ترتب AST العقد إلى ملفات فئة أو مجموعة التعليمات.

العملية، حيث خرائط المشغل في المحرك حسب الطلب.

الثالث، نظرة في بعض الحالات

1، simpleEL

الكاتب: شاو ون جين (قطار فائق السرعةalibaba) https://github.com/alibaba/simpleel

رمز DEMO:

خدمة DefaultExpressEvalService = DefaultExpressEvalService جديدة ()؛ service.regsiterVariant (Integer.class، "أ"، "ب")؛ // نوع بيانات السجل service.setAllowMultiStatement (صحيح)؛ // التي أنشئت لدعم بيان متعدد الخطوط خريطة < سلسلة، كائن >  CTX = HashMap جديد ()؛ ctx.put ( "أ"، 2)؛ ctx.put ( "ب"، 1)؛ سلسلة الدي اس ال = "اذا كان (a >  b) {عودةa -b؛} آخر {عودةb -a؛} ". الكائن نتيجة = service.eval (CTX، دي اس ال)؛ // عودة 1

مبدأ التحليل الداخلي:

إذا (a >  b) { العودةa -b. } شيء آخر { العودةb -a. }

بواسطة @ متغير تحديد الهوية، تنظر مباشرة إلى شفرة المصدر جافا ثم تحويلها إلى ملفات فئة

ملف الفئة التي تم إنشاؤها بعد التعليمة البرمجية مصدر decompiled:

مثال آخر:

خدمة DefaultExpressEvalService = DefaultExpressEvalService جديدة ()؛ service.regsiterVariant (MyBean.class "الفول")؛ خريطة < سلسلة، كائن >  CTX = HashMap جديد ()؛ ctx.put ( "الفول"، com.taobao.el.MyBean الجديدة ())؛ سلسلة الدي اس ال = "@ bean.getId () + ':' + @ bean.getName ()" الكائن نتيجة = service.eval (CTX، دي اس ال)؛

ملف الفئة التي تم إنشاؤها بعد التعليمة البرمجية مصدر decompiled:

الميزات:

بسيطة كما يوحي اسمها، فإن معظم بسيط من EL، تنفيذ الكود هو بسيط للغاية.

ويحدد متغير تعتمد بشدة المكتوبة التسجيل، بدون مساعدة من أي أدوات تحليل لغوي، لتحقيق بسيطة وفعالة جدا في حسابات EL.

توقفت والتنمية حتى متابعة عملية بسيطة جدا، توقف بعد استكمال 2014/9/17.

2، فل

الكاتب: غير معروف https://code.google.com/archive/p/fast-el/

رمز DEMO

FelEngine فل = FelEngineImpl جديدة ()؛ FelContext CTX = fel.getContext ()؛ ctx.set ( "الأسعار أولا الثقيلة"، 10.5)؛ ctx.set ( "ثمنا باهظا استمرار"، 2.5)؛ ctx.set ( "الوزن الأول"، 5)؛ ctx.set ( "الوزن الكلي"، 15)؛ سلسلة الدي اس ال = "في المقدمة السعر ثقيلة الوزن الأول + الوزن الزائد * السعر * (الوزن الكلي - الأول)". التعبير إكسب = fel.compile (الدي اس ال، CTX)؛ // بعد كل المتغيرات يجب أن يتم حقن من أجل الترجمة نتيجة كائن = exp.eval (CTX)؛ System.out.println (نتيجة).

مبدأ التحليل الداخلي:

الوزن الأول التجديدات السعر * السعر * + عدد (الوزن الأول - العدد)

ولدت بعد تدفق النص استخدام بسيط جافا مصدر ANTLR تحليل في AST

ملف الفئة التي تم إنشاؤها بعد التعليمة البرمجية مصدر decompiled:

الميزات:

وsimpleEL مقارنة، وهذا هو السعي جدا من الكفاءة النهائية للعمل، فإنه يمكن تحديد تكرار متغير، وظيفة لتوفير فتح باب التسجيل في وقت متأخر SourceBuilder الآخرين الأمثل مترجم، والتي يمكن أن تعقد حتى بعد التعليمة البرمجية مصدر جافا وتجميعها بشكل ثابت فقط أمر من حجم أكثر كفاءة.

نوع ثابت، لا يدعم تعبيرات متعدد الخطوط، كائنات جديدة، وما إلى ذلك، توقف التحديث بعد 2013/03/26

3، رائع

الشهير مشروع مفتوح المصدر: لغة البرمجة أباتشي رائع

التجريبي:

GroovyClassLoader groovyLoader = GroovyClassLoader جديدة ()؛ فئة < سيناريو >  groovyClass = (الفئة < سيناريو > ) GroovyLoader.parseClass ( "أ + ب * ج")؛ النصي النصي = groovyClass.newInstance ()؛ ملزمة ربط = جديد ملزم ()؛ bind.setVariable ( "أ"، 1)؛ bind.setVariable ( "ب"، 2)؛ bind.setVariable ( "ج"، 3)؛ script.setBinding (ربط)؛ نتيجة كائن = script.run ()؛ // عودة 7

الميزات:

ويرجع ذلك إلى الاستخدام الواسع النطاق وتطوير التاريخي، رائع وقوي للا مثيل له نفسه ومصدر جافا الملفات بسهولة، وتوفير الكثير من السكر النحوي والمكتبات.

4، QLExpress

الكاتب: Qianghui، الصف حزمة جي بابا / QLExpress

ExpressRunner عداء = ExpressRunner جديدة ()؛ DefaultContext < سلسلة، كائن >  السياق = DefaultContext جديدة < سلسلة، كائن > ()؛ context.put ( "أ"، 1)؛ context.put ( "ب"، 2)؛ context.put ( "ج"، 3)؛ نتيجة كائن = runner.execute ( "أ + ب * ج"، والسياق، لاغية، صحيح، كاذبة)؛

الميزات:

بدأت أعمال شركات الكهرباء لتطوير من بابا التربة، ومزيج من العديد من الميزات خدمة رائعة ولكن شعبية جدا.

ومنذ بداية عام 2012، وفتح النسخة مصدر 2.0، والآن التكرار والميزات الجديدة كانت ثابتة.

نوع ضعيفة نوع ديناميكية، وارتفاع دقة الحساب العددي، وتطويعه لمنطق معقد، وظائف، والحمولة الزائدة المشغل، غطاء، إعادة تعريف اعتراض أسلوب كائن، وشجرة لغوي، والمتغيرات، وظائف، وهلم جرا تحديد الإخراج.

السيناريو نفسه لديه موضوع آمنة وعالية الأداء والميزات التزامن عالية.

وبالمقارنة مع نفس النوع من رائع:

1، رائع أكثر توافقا من تركيب جافا qlExpress

وظيفة عملية معقدة نسبيا من شريحة واسعة من جافا سكريبت، رائع يمكن نسخ مباشرة فوق لتشغيل،

Qlexpress بناء الجملة خفيفة الوزن، وهناك بعض القضايا التوافق كود جافا الأصلي المطلوبة عادة لإزالة كافة تعريف نوع البيانات، دون معالجة الدعم استثناء، ومثل لكتابة مجموعة من حلقة

2، qlExpress التركيز أكثر من ملحقات رائع

لأن ولد qlExpress علي في أنظمة العمل والكهرباء، وتخصيص خصوصا الكثير من المتطلبات الوظيفية المشتركة (تعريف الماكرو، تحليل، والصيغة، والمنطق المنطقية، التي بنيت لاستبدال وظيفة المشغل)، قراءة وظيفة عمل أكثر المناسب كما هو مطلوب، نظرة مفصلة على تطويره كجزء من qlExpress

3، qlExpress تنفيذ أكثر إيجازا من رائع، ونظام التشغيل والتطبيقات الأوسع

في الوقت الحاضر، لدينا qlExpress لأن كل إعراب، الحسابي الترميز لتحقيق تنفيذ كل بمفرده، يعتمد تحقيق بسيطة للغاية، وعلي في مناطق البيع بالتجزئة الجديدة، وهناك استخدام على نطاق واسع في عدد كبير من نسخة منخفضة آلة نقاط البيع من نظام الروبوت، الاستقرار أمر جيد جدا.

4، qlExpress وأداء رائع جدا

qlExpress ورائع تنتمي جملة كتبتها ضعيفة، مثل + ب، سلاسل دعم والأرقام وغيرها من طرق حساب في وقت التشغيل، فل مقارنة، simpleExpress المطبوعة بقوة اللغة مثل ترتيب الفرق الحجم في الأداء.

يفعلون دعم وظيفة مخبأ الترجمة، qlExpress إلى InstructSet، رائع تتحول إلى فئة فرعية خاصة من groovyclass

ملخص المقال

نظرا لضيق المكان، وهذه المادة لا ثم تعداد المزيد من محرك البرمجة لرائع ولقد QLExpress لم تتطور تماما مبادئ قدم، وأعرب أخيرا بعض من وجهات نظر الصناعة الخاصة.

1، وكيفية خلق عجلة نفسك: محرك لغة البرمجة جافا القائمة على JVM نفسها عتبة ليست عالية.

لقد رأيت عدة القضية: بعد تطوير القدرة على توليد قوية أداة فريق جدك في فهم بايت كود، ANTLR أدوات الجيل النحو ومتعمقة قراءة بعض المواد النظرية مترجم، يمكن أن يكون 1 - المطور داخل محرك النصي في فبراير شباط لقاء وقال طلب الخدمة.

ولكن في كثير من الأحيان بسبب العمل القليل جدا مع نظام اقتران، وظيفة، وبراعة والفقراء، لم يكن لديك الانفتاح وعوامل أخرى تختفي تدريجيا، وليس الترويج على نطاق واسع.

2، وكيفية اختيار العجلات: الأداء، والاستقرار، والمرونة، والنظر في قواعد اللغة

جهة نظر معينة، لأن المحرك السيناريو يمكن أن تؤدي التحليل الديناميكي، تصبح في كثير من الأحيان جزءا من تكوين الخدمة.

منطق التحكم بالخدمة أكثر تعقيدا وتتطلب محرك سير العمل، يحكم المحرك، محرك النصي أو شيء من الأعمال الانسجام.

كما المهندسين المعماريين الأعمال، والجزء السفلي يجب التأكد من اختيار أداة موثوقة وسهلة الاستخدام محرك البرمجة.

الأداء على:

 أداة شعبية > أدوات المتخصصة (هناك العديد من النقاط التي يمكن أن يكون الأمثل لتحقيق أدوات داخلية) كتابة بشدة >  نوع ضعيف (في حالة حيث كلاهما ناضجة ومستقرة)

الاستقرار على:

 مبادئ التصميم بسيطة > قوية مجتمع المصادر المفتوحة > محرك الأدوات المتخصصة

المرونة بناء الجملة:

 لمزيد من الرموز، والمزيد من تطبيقات معقدة تشمل المزيد من الوظائف، نحوي السكر، التسامح مع الخطأ، والتوافق

اشتعلت في فضيحة العنف المنزلي وجهت الفنانات البالغ من العمر 33 عاما بدأ في الطيران لأول مرة في منغوليا بدعم فيلم امامية

لا تتردد، مشاريع صغيرة للعمل في الصيف!

لا تستطيع الأحذية "THE TEN"، ولكن خالية من فيرجيل Abloh س نايك "TEXTBOOK" اعتقد على الاطلاق للغاية من الكتاب!

الجاف: إن شركات الإنترنت يطلب الخلية المقابلة الموضوع

الطبقة E بكين بنز نسخة رمح القياسية المذكورة للبيع 45،38-51،68 وان

هذا الهاتف ميزة خلية هواوي الجديد، بحيث تدفع خطوة سريعة!

الشهر القمري الثاني عشر فترة طويلة منذ وقت طويل بارد حواء 1205 زوجا من الترخيص أصدقاء جدد

الذي يقول الدخل في المناطق الريفية منخفضة؟ مشروع تخصيب هذه هو جيد جدا!

رديس تكرار السيد والعبد ومبدأ التكرار السيد والعبد

أوشان COS1 درجة (Kordsa) قبل 10،38-14،98 وان

ثمانية وعشرون، ناقص 20 درجة، كانغ الحرارة، والفوانيس، والدخان الضفدع، كانغ رئيس

الأخبار السيئة! الفنانين الإناث كبار مرض مفاجئ مات الموت ظهرت في الدراما TVB