لماذا استخدام Jython عندما يمكنك فقط استخدام Java؟

الإجابة القياسية هي أنه مفيد عندما تحتاج فقط إلى كتابة بضعة أسطر من التعليمات البرمجية ...

لدي كلتا اللغتين مندمجة داخل Eclipse. لأن Eclipse يعالج ترجمة ، ترجمة ، تشغيل إلخ. كلاهما "تشغيل" بالضبط نفس الشيء.

Eclipse IDE لكلاهما مماثل - تجميع "لحظة" ، intellisense الخ. كلاهما يسمح باستخدام منظور Debug.

إذا كنت أرغب في اختبار بضعة أسطر من Java ، فلا يلزم إنشاء مشروع Java جديد تمامًا - فقط استخدم Scrapbook ميزة داخل Eclipse والتي تتيح لي " تنفيذ تعبيرات Java بدون الحاجة إلى إنشاء برنامج Java جديد. هذه طريقة أنيقة لاختبار فئة موجودة أو تقييمها بسرعة code snippet ".

يسمح Jython باستخدام مكتبات Java - ولكن بعد ذلك (بالتعريف) تقوم Java!

ما هي المزايا الأخرى التي يقدمها جايثون؟

0
من السئ أن هذا السؤال مغلق ؛ نظرًا لوجود نقطة جيدة لا تظهر في أي من الإجابات (ما لم أتجاهل): مع jython ، يمكنني تنفيذ شفرة جديدة في سياق jvm قيد التشغيل. لا يمكنك فعل ذلك مع جافا.
وأضاف المؤلف GhostCat, مصدر
لم أتمكن من فهم سبب إغلاق هذا questin.
وأضاف المؤلف Icche Guri, مصدر
مضحك ، كنت أسأل "لماذا استخدام جافا عندما يمكنك استخدام Jython؟" جرّب فعل Swing من Jython وانظر كم هو لطيف: btn = JButton ("Click me"، actionPerformed = SomeFunction) . الشيء أسهل من الاضطرار إلى كتابة فصل كامل لمجرد التعامل مع نقرات الأزرار ، أليس كذلك؟
وأضاف المؤلف Cam Jackson, مصدر

14 إجابة

لقد اكتشفت Jython للتو ، وكقليل من اللغوي ، أعتقد أنني سأقول أنه يشبه السؤال "لماذا استخدم اللغة اللاتينية عندما يمكنك استخدام اللغة الفرنسية" (متناسين عن حقيقة أن اللاتينية جاءت قبل الفرنسية ، بالطبع) .

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

أظن ، من خلال معرفتي السريعة مع جايثون ، التي أثارت حماسي في الطريق ، أنها ستجعلني أفكر بطرق مختلفة. كنت متشككا جدا بشأن بايثون/جيثون لبعض الوقت ، وقد كنت من كبار المعجبين بجينات جافا على سبيل المثال (مما يقلل من كمية الطباعة ، وبالتالي "اللاتينية" الفرنسية إذا كنت تحب). أنا لا أفهم تماما الانعكاسات الكاملة للغات "التي يتم كتابتها ديناميكيًا" مثل "جايثون" ، لكنني أعتقد أن أفضل شيء هو الذهاب إلى التدفق ومعرفة ما يفعله جايثون في ذهني!

من المضحك كيف تأتي اللغات وتذهب. يمكن اعتبار "اللاتينية" الأخرى بأنها ألغول 68 مع تركيبتها العودية بشكل لا نهائي. لكن الحاجة إلى تطوير قانون متكرر بشكل كبير ، والقدرة على قراءته والتفكير فيه ، لم تشعر به (بعد). يبدو Jython مناسبًا جدًا وأنيقًا مع مكان وجودنا الآن ، مع مكتبات OO ، وقوة Java swing ، وكل شيء يتم وضعه في حزمة أنيقة جدًا. ربما يوم واحد سيتبنى جايثون صيغة متكررة بشكل لا متناه أيضا؟

0
وأضاف

يمكنني استخدام اختبار Jython التفاعلي لرمز Java. هذا غالبا ما يكون أسرع بكثير من كتابة تطبيقات اختبار جافا أو أي لغة برمجة. يمكنني فقط اللعب بالطرق ومعرفة كيفية تفاعلها. من هناك أستطيع أن أتعلم ما يكفي للذهاب وكتابة بعض الكود الحقيقي أو حالات الاختبار.

0
وأضاف

مثال سريع (من http://coreygoldberg. blogspot.com/2008/09/python-vs-java-http-get-request.html ):

لديك نهاية خلفية في Java ، وتحتاج إلى إجراء عمليات إعادة تعيين HTTP GET.

أصلا:

import java.net.*;
import java.io.*;

public class JGet {
    public static void main (String[] args) throws IOException {
        try {
            URL url = new URL("http://www.google.com");

            BufferedReader in = 
                new BufferedReader(new InputStreamReader(url.openStream()));
            String str;

            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }

            in.close();
        } 
        catch (MalformedURLException e) {} 
        catch (IOException e) {}
    }
}

في بايثون:

import urllib
print urllib.urlopen('http://www.google.com').read()

يسمح لك Jython باستخدام قوة java و عند الحاجة ، وضوح Python.

ماذا بعد ؟ كما يقول جورج ...

0
وأضاف
نعم ، عليك فقط ترميزها بنفسك. مثل كل شيء آخر.
وأضاف المؤلف e-satis, مصدر
أولاً ، لا يعمل رمز java أكثر من ذلك بكثير. رمز Python ممتلئ OO و open() التفاف كائن ملف يقوم بالتدفق. بالإضافة إلى ذلك ، لا أرى أي شيء حول إطار هنا. نعم ، هناك استثناء التعامل ، ولكن يمكنك القيام بذلك في بيثون أيضا. المشكلة الحقيقية هنا هي أن java فقط لا تدع لك القيام بذلك بأي طريقة أقصر ، حتى مع ميزات أقل. انها ليست هجوما ضد جافا. وجهة نظري هي فقط: يمكنك استخدام Jython لأنه في بعض الأحيان ، تريد شيء ما.
وأضاف المؤلف e-satis, مصدر
أنت تصنع وجهة نظري: هذا هو السبب في أنك ستستخدم جايثون وليس فقط جافا.
وأضاف المؤلف e-satis, مصدر
قد يكون كود Jython القائم على Java مختصرا مثل Python: inStream = URL (" python.org "). openConnection (). getInputStream() result = s = Scanner (inStream) .useDelimiter (" \\ A "). التالي ()
وأضاف المؤلف tnorgd, مصدر
لا شيء يوقف جافا من وجود فئة المرافق التي تفعل UrlUtil.open ("www.google.com"). اقرأ ().
وأضاف المؤلف Marcio Aguiar, مصدر
إن مثال كوري غولدبرغ الذي يقارن جافا مع بايثون هو مقارنة كاذبة كما يمكن العثور عليه على الإنترنت ، والمثال أعلاه ليس أفضل بكثير. (كما أنه يلمح إلى ثنائية ثنائية/متانة قابلة للنقاش). رمز Java أعلاه يقوم بأكثر من شفرة Python (OO ، القراءة المخزنة ، إطار الاستثناء ، إلخ). هناك أسباب لاستخدام Jython ، ولكن المثال المفتعل للإيجاز ليس مقنعاً للغاية.
وأضاف المؤلف Glenn, مصدر

مكتبات Python؛) على سبيل المثال BeautifulSoup - محلل HTML يقبل الترميز غير الصحيح. AFAIK لا يوجد مماثل جافا نقية ليب.

0
وأضاف
أنت على حق. الإصدار الثابت هو Python 2.2 المكافئ. قد تكون قديمة جدًا ... ولا يزال Jython 2.5 في حالة ألفا. بعد أن يتوفر الإصدار الثابت ، يجب أن يعمل على الرغم من ذلك.
وأضاف المؤلف sumek, مصدر
هل أنت متأكد من أنه يعمل تحت جايثون؟
وأضاف المؤلف Cristian Ciupitu, مصدر

إن بنية بيثون (المستخدمة في Jython) هي أكثر إيجازًا وأسرع بكثير لتطوير العديد من المبرمجين.

بالإضافة إلى ذلك ، يمكنك استخدام مكتبات Python الموجودة في تطبيق Java.

0
وأضاف

كما يمكن استخدام Jython كلغة برمجة نصية مضمنة داخل برنامج Java. قد تجد أنه من المفيد في مرحلة ما كتابة شيء ما بلغة تمديد مضمنة. إذا كان العمل مع Java Jython خيارًا لهذا (Groovy شيء آخر).

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

0
وأضاف

بعض المهام أسهل في بعض اللغات ثم البعض الآخر. إذا اضطررت إلى تحليل بعض الملفات ، فسأختار Python فوق Java في لمح البصر.

0
وأضاف
كنت بحاجة لقراءة ملف خام ، وتحليل أجزاء أساسية من البيانات. اسمحوا لي بتضمين jython في منتصف تطبيق java الخاص بي سهولة مسح الملف باستخدام التعبيرات العادية وفهم القوائم ، ثم إرجاع النتائج التي توصلت إليها إلى رمز java الخاص بي.
وأضاف المؤلف gregturn, مصدر

استخدام بايثون هو أكثر من "السكر النحوي" إلا إذا كنت استمتع بالكتابة (أو إنشاء IDE الخاص بك) مئات الأسطر من رمز لوحة المرجل. هناك ميزة من تقنيات التطوير السريع عند استخدام لغات مكتوبة ديناميكيًا ، على الرغم من أن العيب هو أنه يعقد API الخاص بك والتكامل لأنك لم تعد تمتلك قاعدة برمجية متجانسة. يمكن أن يؤثر ذلك أيضًا على الصيانة نظرًا لأن الجميع في فريقك لا يحبون بايثون بقدر ما تحب ، ولن يكونوا فعالين معها. يمكن أن يكون مشكلة.

0
وأضاف

القياس: لماذا شرب القهوة عندما يمكنك بدلاً من ذلك شرب ماء الصنبور الساخن ومضغه على الفاصوليا المريرة المحمصة. :-)

بالنسبة لبعض المهام ، فإن طعم Python أفضل ، ويعمل بشكل أفضل ، وسريع بما فيه الكفاية (يستغرق وقتًا لتناول الشراب؟). إذا كانت بيئة البرمجة أو النشر الخاصة بك تركز على JVM ، فإن Jython تسمح لك برمز Python ولكن دون تغيير بيئة التشغيل الخاصة بك ووقت التشغيل.

0
وأضاف

سكر الجملة.

0
وأضاف
بلى. يستخدم المبرمجون الحقيقيون إبرة ممغنطة ويد ثابتة (ج) xkcd.com/378 . كل شيء آخر هو السكر في الجملة.
وأضاف المؤلف jfs, مصدر

لا حاجة لتجميع. ربما تريد الحصول على شيء يتدحرج أسرع من استخدام لغة مجمعة ، مثل نموذج أولي.

... ويمكنك تضمين مترجم جايثون في تطبيقاتك. ميزة جميلة ، لا أستطيع أن أقول لقد استعملت ، ولكن tis بارد رغم ذلك.

0
وأضاف

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

0
وأضاف

لدى Python بعض ميزات البرمجة الوظيفية ، مثل lambdas. لا تحتوي Java على هذه الوظيفة ، وستكون بعض البرامج أسهل في الكتابة إذا كان هذا الدعم متوفرًا. وبالتالي من الأسهل في بعض الأحيان كتابة الكود في بايثون ودمجه عبر جايثون لمحاولة كتابة الكود في جاوة.

0
وأضاف
يحتوي Java 8 على lambdas.
وأضاف المؤلف Daniel, مصدر

قد يكون نقل الرمز الموجود إلى بيئة جديدة أحد الأسباب. قد توجد بعض وظائف المنطق والنطاق في بيثون ، وتصر المجموعة التي تكتب هذا الكود على استخدام بايثون. لكن المجموعة التي تقوم بنشرها وحفظها قد ترغب في إمكانية التحكم في مجموعة J2EE للمقياس. يمكنك التفاف المنطق في Jython في EAR/WAR ، ومن ثم تقوم مجموعة النشر فقط بمشاهدة حزمة J2EE أخرى مثل جميع حزم J2EE الأخرى.

بمعنى أنها وسيلة للتعامل مع عدم توافق المعاوقة.

0
وأضاف