أنت تتعلم من خلال المقارنة بما تعرفه بالفعل. لقد تعرضت مؤخرًا لمشكلة بسبب افتراضي أن Rust تعمل مثل Java فيما يتعلق بحل إصدار التبعيات المتعدية. في هذا المنشور، أريد أن أقارن بين الاثنين. أنت تتعلم من خلال المقارنة بما تعرفه بالفعل. لقد تعرضت مؤخرًا لمشكلة بسبب افتراضي أن Rust تعمل مثل Java فيما يتعلق بحل إصدار التبعيات المتعدية. في هذا المنشور، أريد أن أقارن بين الاثنين.

حل إصدار التبعية الانتقالية في Rust وJava: مقارنة بين الاثنين

2025/09/21 23:00

تتعلم من خلال المقارنة بما تعرفه بالفعل. لقد تعرضت مؤخرًا لمشكلة بسبب افتراضي أن Rust يعمل مثل Java فيما يتعلق بحل إصدار التبعيات العابرة. في هذا المنشور، أريد مقارنة الاثنين.

التبعيات، والعبور، وحل الإصدار

قبل الخوض في تفاصيل كل مجموعة، دعنا نصف المجال والمشكلات التي تأتي معه.

\ عند تطوير أي مشروع فوق مستوى Hello World، من المحتمل أن تواجه مشكلات واجهها الآخرون من قبل. إذا كانت المشكلة منتشرة، فإن احتمالية أن يكون شخص ما لطيفًا وذو عقلية مدنية كافية لحزم الكود الذي يحلها، ليعيد الآخرون استخدامه. الآن، يمكنك استخدام الحزمة والتركيز على حل مشكلتك الأساسية. هكذا تبني الصناعة معظم المشاريع اليوم، حتى لو جلبت مشاكل أخرى: أنت تجلس على أكتاف العمالقة.

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

التبعيات العابرة

في الرسم البياني أعلاه، C و D هما تبعيات عابرة.

\ التبعيات العابرة لها مشاكلها الخاصة. أكبرها هو عندما تكون التبعية العابرة مطلوبة من مسارات مختلفة، ولكن بإصدارات مختلفة. في الرسم البياني أدناه، كل من A و B يعتمدان على C، ولكن على إصدارات مختلفة منه.

أي إصدار من C يجب أن تتضمنه أداة البناء في مشروعك؟ لدى Java و Rust إجابات مختلفة. دعنا نصفها بالتناوب.

حل إصدار التبعيات العابرة في Java

تذكير: يتم تجميع كود Java إلى bytecode، والذي يتم تفسيره بعد ذلك في وقت التشغيل (وأحيانًا يتم تجميعه إلى كود أصلي، ولكن هذا خارج مساحة مشكلتنا الحالية). سأصف أولاً حل التبعيات في وقت التشغيل وحل التبعيات في وقت البناء.

\ في وقت التشغيل، توفر آلة Java الافتراضية مفهوم classpath. عند الحاجة إلى تحميل فئة، يبحث وقت التشغيل عبر classpath المكون بالترتيب. تخيل الفئة التالية:

public static Main {     public static void main(String[] args) {         Class.forName("ch.frankel.Dep");     } } 

\ دعنا نقوم بتجميعها وتنفيذها:

java -cp ./foo.jar:./bar.jar Main 

\ سيبحث ما سبق أولاً في foo.jar عن فئة ch.frankel.Dep. إذا تم العثور عليها، فإنه يتوقف هناك ويحمل الفئة، بغض النظر عما إذا كانت موجودة أيضًا في bar.jar؛ إذا لم يتم العثور عليها، فإنه يبحث أكثر في فئة bar.jar. إذا لم يتم العثور عليها بعد، فإنه يفشل بـ ClassNotFoundException.

\ آلية حل التبعيات في وقت التشغيل في Java مرتبة ولها حبيبية لكل فئة. ينطبق ذلك سواء كنت تقوم بتشغيل فئة Java وتحدد classpath في سطر الأوامر كما هو موضح أعلاه، أو ما إذا كنت تقوم بتشغيل JAR يحدد classpath في بيانه.

\ دعنا نغير الكود أعلاه إلى ما يلي:

public static Main {     public static void main(String[] args) {         var dep = new ch.frankel.Dep();     } } 

\ نظرًا لأن الكود الجديد يشير إلى Dep مباشرة، يتطلب الكود الجديد حل الفئة في وقت التجميع. يعمل حل classpath بنفس الطريقة:

javac -cp ./foo.jar:./bar.jar Main 

\ يبحث المترجم عن Dep في foo.jar، ثم في bar.jar إذا لم يتم العثور عليه. ما سبق هو ما تتعلمه في بداية رحلة تعلم Java الخاصة بك.

\ بعد ذلك، تكون وحدة عملك هي أرشيف Java، المعروف باسم JAR، بدلاً من الفئة. JAR هو أرشيف ZIP مجيد، مع بيان داخلي يحدد إصداره.

\ الآن، تخيل أنك مستخدم لـ foo.jar. يقوم مطورو foo.jar بتعيين classpath محدد عند التجميع، ربما بما في ذلك JARs أخرى. ستحتاج إلى هذه المعلومات لتشغيل أمرك الخاص. كيف يمرر مطور المكتبة هذه المعرفة إلى المستخدمين النهائيين؟

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

\ الآن، للعودة إلى بيان المشكلة: كيف يحل Maven تعارضات الإصدار؟ أي إصدار تبعية سيحل Maven لـ C، 1.0 أو 2.0؟

\ الوثائق واضحة: الأقرب.

حل التبعيات مع نفس التبعية في إصدارات مختلفة

في الرسم البياني أعلاه، المسار إلى v1 له مسافة اثنين، واحدة إلى B، ثم واحدة إلى C؛ في الوقت نفسه، المسار إلى v2 له مسافة ثلاثة، واحدة إلى A، ثم واحدة إلى D، ثم أخيرًا واحدة إلى C. وبالتالي، يشير أقصر مسار إلى v1.

\ ومع ذلك، في الرسم البياني الأولي، كلا إصداري C على نفس المسافة من الأداة الجذرية. لا تقدم الوثائق إجابة. إذا كنت مهتمًا بذلك، فإنه يعتمد على ترتيب إعلان A و B في POM! باختصار، يعيد Maven إصدارًا واحدًا من تبعية مكررة لتضمينه في classpath التجميع.

\ إذا كان A يمكن أن يعمل مع C v2.0 أو B مع C 1.0، رائع! إذا لم يكن كذلك، فمن المحتمل أن تحتاج إلى ترقية إصدار A أو خفض إصدار B، بحيث يعمل إصدار C المحلول مع كليهما. إنها عملية يدوية مؤلمة - اسألني كيف أعرف. الأسوأ من ذلك، قد تكتشف أنه لا يوجد إصدار C يعمل مع كل من A و B. حان الوقت لاستبدال A أو B.

حل إصدار التبعيات العابرة في Rust

يختلف Rust عن Java في عدة جوانب، ولكن أعتقد أن ما يلي هو الأكثر صلة لغرض مناقشتنا:

  • لدى Rust نفس شجرة التبعيات في وقت التجميع ووقت التشغيل
  • يوفر أداة بناء جاهزة، Cargo
  • يتم حل التبعيات من المصدر

\ دعنا نفحصها واحدة تلو الأخرى.

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

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

\ أخيرًا، يحل Java التبعيات من الثنائيات: JARs. على العكس من ذلك، يحل Rust التبعيات من المصادر. في وقت البناء، يحل Cargo شجرة التبعيات بأكملها، ويقوم بتنزيل جميع المصادر المطلوبة، ويقوم بتجميعها بالترتيب الصحيح.

\ مع وضع هذا في الاعتبار، كيف يحل Rust إصدار تبعية C في المشكل

إخلاء مسؤولية: المقالات المُعاد نشرها على هذا الموقع مستقاة من منصات عامة، وهي مُقدمة لأغراض إعلامية فقط. لا تُظهِر بالضرورة آراء MEXC. جميع الحقوق محفوظة لمؤلفيها الأصليين. إذا كنت تعتقد أن أي محتوى ينتهك حقوق جهات خارجية، يُرجى التواصل عبر البريد الإلكتروني service@support.mexc.com لإزالته. لا تقدم MEXC أي ضمانات بشأن دقة المحتوى أو اكتماله أو حداثته، وليست مسؤولة عن أي إجراءات تُتخذ بناءً على المعلومات المُقدمة. لا يُمثل المحتوى نصيحة مالية أو قانونية أو مهنية أخرى، ولا يُعتبر توصية أو تأييدًا من MEXC.

قد يعجبك أيضاً

مراجعة أسبوعية لسوق الكريبتو (10-17 نوفمبر): تدهور الظروف الاقتصادية الكلية يدفع BTC إلى السوق الهابط التقني

مراجعة أسبوعية لسوق الكريبتو (10-17 نوفمبر): تدهور الظروف الاقتصادية الكلية يدفع BTC إلى السوق الهابط التقني

المؤلف: 0xBrooker بعد انخفاض الأسبوع الماضي إلى ما دون الحد الأعلى لـ "قاع ترامب" عند 110,000 دولار، ومع زيادة مفاجئة في عدم اليقين الاقتصادي الكلي، شهد BTC، الذي استقر وارتد الأسبوع الماضي، انهيارًا آخر، حيث انخفض بنسبة 10.04% هذا الأسبوع واخترق مستويين رئيسيين للدعم الفني: الحافة السفلية للقناة الصاعدة لهذا السوق الصاعد والمتوسط المتحرك لـ 360 يومًا. على الرغم من إعادة فتح الحكومة الأمريكية، لم تتدفق الأموال بعد من حسابات الخزانة، وتظل احتياطيات البنوك التجارية منخفضة، مما يفاقم قيود السيولة قصيرة المدى. على المدى المتوسط، يستمر عدد أعضاء التصويت المتشددين في المجلس الاحتياطي الاتحاد في الزيادة، وانخفضت احتمالية خفض سعر الفائدة في ديسمبر إلى أقل من 50%. السوق مليء بأوامر البيع، مع استمرار المستثمرين على المدى الطويل في جني الأرباح وبيع المستثمرين على المدى القصير بخسارة. سجلت قناة BTC ETF ثاني أكبر عملية بيع في يوم واحد في التاريخ. المشترون موجودون، لكنهم سلبيون للغاية، ويبدو أن جميع الدعم الفني قد فقد فعاليته. مع كسر الحافة السفلية للقناة الصاعدة والمتوسط المتحرك لـ 360 يومًا بشكل فعال، دخل BTC فنيًا في سوق هابط. إذا لم تتدفق الأموال بشكل كافٍ في الأسابيع القادمة واستمر ضغط البيع، مما يجعل من الصعب على سعر BTC العودة فوق مستويات المؤشرات الفنية الرئيسية وتأكيد كسر صالح أدنى هذه المستويات على الرسم البياني الأسبوعي، فمن المرجح أن يكون سوق BTC الصاعد الحالي الذي بدأ في عام 2022 قد انتهى رسميًا. السياسة والبيانات المالية الكلية والاقتصادية أعادت الحكومة الأمريكية فتح أبوابها هذا الأسبوع وستصدر مؤشر أسعار المستهلك (CPI) لشهر سبتمبر الأسبوع المقبل، ولكن نظرًا لعدم جمع البيانات أثناء الإغلاق، سيكون مؤشر أسعار المستهلك لشهر أكتوبر مفقودًا بشكل دائم. هذا يقلل بشكل كبير من موضوعية قرار سعر الفائدة للمجلس الاحتياطي الاتحاد في ديسمبر. كانت بيانات الرواتب غير الزراعية غائبة لعدة أسابيع. أظهرت بيانات ADP الأسبوعية الصادرة في 11 أكتوبر أنه في الأسابيع الأربعة المنتهية في أكتوبر، سجل القطاع الخاص متوسط خسارة صافية أسبوعية قدرها 11,000 وظيفة، وهو تحول إلى النمو السلبي مقارنة بزيادة قدرها 14,250 وظيفة أسبوعيًا في وقت سابق من أكتوبر، مما يشير إلى احتمال حدوث انعكاس في زخم التوظيف. هذه "أخبار جيدة" لخفض أسعار الفائدة. لكن المجلس الاحتياطي الاتحاد يواصل موقفه المتشدد. بعد تعليقات متشددة من ثلاثة أعضاء مصوتين في نهاية الأسبوع الماضي، انضم ثلاثة أعضاء متشددين آخرين هذا الأسبوع. وقد أدى ذلك مباشرة إلى خفض احتمالية خفض سعر الفائدة في ديسمبر، من 90% في البداية إلى 44% بحلول يوم الجمعة، مما أدى إلى توقف تسعير خفض سعر الفائدة في ديسمبر مرة أخرى. من حيث السيولة قصيرة المدى، تسبب إغلاق الحكومة في تراكم حساب TGA للخزانة ما يقرب من 1 تريليون دولار، مما أدى إلى ارتفاع معدل SOFR (معدل الأموال المتاحة اجتماعيًا). وصلت ضيق السيولة إلى أعلى مستوى لها مؤخرًا يوم الجمعة، مما تسبب في انخفاض مؤشر ناسداك لعدة أيام متتالية، وكسر ما دون متوسطه المتحرك لـ 60 يومًا يوم الجمعة وانخفض بأكثر من 6% من أعلى مستوى له. ومع ذلك، نظرًا لوصوله إلى مستوى دعم قوي، شهد مؤشر ناسداك انتعاشًا حادًا على شكل V خلال الجلسة، ليغلق في النهاية مرتفعًا بنسبة 0.13% بالقرب من أدنى مستوى له يوم الجمعة الماضي وفوق المتوسط المتحرك لـ 50 يومًا. حاليًا، يمكن وصف التصحيح الأخير في الأسهم الأمريكية بأنه "تصحيح تقييم في أسهم مفهوم الذكاء الاصطناعي المبالغ في تقييمها على خلفية ضيق السيولة وانخفاض احتمالية خفض سعر الفائدة في ديسمبر". بالنسبة للعام المضطرب 2025 بشكل عام، لا يوجد حاليًا مخاطر نظامية أكبر واضحة في سوق الأسهم الأمريكية. سوق العملات المشفرة مقارنة بالأسهم الأمريكية، فإن وضع BTC مؤسف. بعد ثلاثة أيام متتالية من الانخفاض، استمر في الانخفاض بنسبة 5.13% يوم الجمعة، مع اقتراب كل من الانخفاض وحجم التداول من تلك التي شهدها يوم 10 أكتوبر، مما جعله ثاني أسوأ يوم في هذه الجولة من الانخفاض. الرسم البياني اليومي لـ BTC منذ يوليو، بدأ المتداولون على المدى الطويل الموجة الثالثة من البيع في هذه الجولة، وتكثف ضغط البيع في الأسابيع الأربعة الماضية بعد أن بدأ سعر BTC في التعديل نحو الانخفاض. هذه غالبًا ما تكون سمة للانتقال بين الأسواق الصاعدة والهابطة. ظل حجم أوامر البيع المتدفقة إلى البورصات هذا الأسبوع مرتفعًا، وإن كان أقل قليلاً من الأسبوع الماضي. ومع ذلك، تحولت البورصة من التدفق الخارجي إلى التدفق الداخلي، مما قد يؤدي إلى نظرة مستقبلية أضعف للسوق. حجم بيع الصفقات الطويلة والقصيرة والتغيرات في مخزون BTC في البورصات المركزية (أسبوعيًا) ومع ذلك، هناك نقص حاد في الأموال لامتصاص هذه الخسائر. كما هو موضح في معظم أيام التداول الأسبوع الماضي، كان كل من BTC ETF و ETH ETF يشهدان عمليات بيع، وظل الحجم عند مستوى مرتفع. من بين المشترين الرئيسيين هذا الأسبوع، تحولت قناة BTC ETF إلى البيع. وفقًا لتقارير وسائل الإعلام، كانت شركات DAT Strategy و BMNR لا تزال تشتري في السوق هذا الأسبوع، لكن جهودهم وحدها لم تكن كافية للحفاظ على المكاسب. في النهاية، أنهى كل من BTC و ETH الأسبوع بانخفاضات كبيرة. من منظور فني، كسر BTC بشكل فعال أدنى الحافة السفلية للقناة الصاعدة على الرسم البياني اليومي، مما يشير إلى تحول نحو سوق هابط. منذ نوفمبر 2022، وجدت التصحيحات السابقة متوسطة المدى دعمًا باستمرار عند خط القناة هذا؛ هذه هي المرة الأولى التي يتم فيها كسر هذا الدعم الرئيسي في هذه الدورة. إذا فشل BTC في الأسابيع القادمة في التعافي فوق الحافة السفلية على الرسم البياني الأسبوعي، فسيتم تأكيد السوق الهابط. ينخفض سعر BTC إلى ما دون الحافة السفلية للقناة الصاعدة لهذا السوق الصاعد. مع استمرار المجلس الاحتياطي الاتحاد في إصدار السندات، تظل سيولة الدولار على المدى القصير نادرة وقد تزداد سوءًا، مما قد يفاقم وضع التمويل الضيق على المدى القصير، مما يضع ضغطًا مستمرًا على BTC والعملات المشفرة. على المدى المتوسط، تعتبر بيانات مؤشر أسعار المستهلك لشهر سبتمبر التي سيتم إصدارها الأسبوع المقبل حاسمة أيضًا. تم بالفعل تسعير احتمالية خفض سعر الفائدة بنسبة 44%؛ إذا استمر في الانخفاض، فمن المحتمل أن تستمر الأسعار في تصحيحها الهبوطي. على العكس من ذلك، إذا استقر مؤشر أسعار المستهلك ولكن بيانات التوظيف كانت مروعة، فلا يزال خفض سعر الفائدة في ديسمبر احتمالًا. بناءً على هذا الافتراض المتفائل، يمكن أن تتدفق الأموال من خلال صناديق ETF والقنوات الأخرى بسرعة، ويمكن منطقيًا تجنب "أزمة السوق الهابط" الحالية لـ BTC. علاوة على ذلك، يستحق ضغط البيع طويل المدى اهتمامًا وثيقًا؛ إذا تباطأ أو عاد إلى التراكم، يمكن أن يكتسب السوق بعض مساحة للتنفس. المؤشرات الدورية وفقًا لـ eMerge Engine، فإن مؤشر EMC BTC Cycle Metrics هو 0، مما يشير إلى أنه دخل في "اتجاه هبوطي" (سوق هابط).
مشاركة
PANews2025/11/18 14:00
هل انتهت حمى عملات meme؟ إليك ما تقوله البيانات

هل انتهت حمى عملات meme؟ إليك ما تقوله البيانات

ظهر المنشور هل انتهت حمى عملات meme؟ إليك ما تقوله البيانات على BitcoinEthereumNews.com. النقاط الرئيسية لماذا انخفضت عملات meme؟ انخفض سوق عملات meme في الأسبوع الماضي بسبب انخفاض الحجم وزيادة ضغط البيع. هل ستستعيد عملات meme مكانتها مرة أخرى؟ يمكن أن يساعد التحول في المشاعر عبر قطاع الكريبتو بأكمله عملات meme على استعادة حماستها المفقودة. انخفض سوق عملات meme بنحو 1.4% في الـ 24 ساعة الماضية، مع انخفاض القيمة السوقية إلى 52.05 مليار دولار. كان الحجم اليومي أيضًا في انخفاض، حيث بلغ حوالي 5.45 مليار دولار. قادت عملات meme أكبر الانخفاضات عبر قطاعات الكريبتو إلى جانب Layer 1s (L1s) والألعاب، على التوالي. هذا يثير السؤال حول ما إذا كانت حمى عملات meme قد انتهت حقًا للربع الرابع من عام 2025. الأداء الأسبوعي لأفضل 10 عملات meme وفقًا لبيانات CoinMarketCap، عانت عملات meme الأكثر في الأسبوع الماضي، حيث شهدت أفضل 10 عملات من حيث القيمة السوقية خسائر ذات خانتين. انخفضت جميعها بنسب تتراوح بين 9.9% و30%، مع تصدر SPX6900 [SPX] الخسائر. فقدت Shiba Inu [SHIB] أقل قدر من رأس المال ضمن هذه الفئة. بعد انخفاض بأكثر من 10%، كان يتم تداول Dogecoin [DOGE] عند 0.16 دولار. من بين الخاسرين البارزين الآخرين في الأيام السبعة الماضية كانت Pepe [PEPE] وPudgy Penguins [PENGU] وBonk [BONK]، التي انخفضت جميعها بأكثر من 18%. المصدر: CoinMarketCap عكس أداء أفضل 10 عملات meme ما كان يحدث بالفعل للقطاع الأوسع. وهذا يتناقض مع ما حدث في الربع الأخير من عام 2024 عندما ظهرت عملات meme المدعومة بالذكاء الاصطناعي، على سبيل المثال، Fartcoin [FARTCOIN]. لكن ما الذي كان وراء هذا التحول في أداء عملات meme؟ لماذا انخفضت عملات meme؟ كانت عملات meme تنخفض بشكل أكبر من سوق الكريبتو بأكمله، الذي تصل قيمته السوقية إلى 3.25 تريليون دولار. لذلك، يمكننا أن نعزو الانخفاض إلى الهيكل العام والمشاعر في سوق الكريبتو. بالإضافة إلى ذلك، كان حجم عملات meme ينخفض بشدة، مما يشير إلى أن المتداولين كانوا يتجنبون هذه الأسواق. في الواقع، كان ضغط البيع هو الجانب المهيمن...
مشاركة
BitcoinEthereumNews2025/11/18 13:51