الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعداء كود جافا من السي بلس بلس

بدأه ma_ora في 22 يناير 2010 · 12 رد · 1,252 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الكرم ...

هذا الموضوع نقلته هنا لنصيحة أحد الأخوة بعد أن كان في القسم الآخر

أرجو مساعدتكم العاجلة اذا تكرمتم

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

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

وجزاكم الله خيرا

سلام عليكم

#2

تستعمل JNI عندما تريد استدعاء كود C++ من داخل الجافا، وليس العكس.

1
#3

يا شيخ عصام بصراحة هذا شئ مقزز انه من الصعب استدعاء الـ native method

يا اخى لماذا تجبرني اكتب سي بلس بلس و انا استخدم الجافا ؟؟؟!!!!! :blink: افرض انا ما اعرف السي بلص بلص ؟؟؟؟!!!!!!!!!

لماذا صعوبة محاكاة دالات ال winAPI ؟؟؟؟!!!!!

الا ترى ان ذلك به شئ بسيط من الاحتكار ؟؟؟؟؟؟

يا اخي ما يجعلنى اكتب كود سي بلص بلص لمجرد استدعاء دالة , طيب اكتب البرنامج كله بالسي بلص بلص و في النهاية احصل على برنامج اسرع

من وجهة نظري ان هذا من احد اكبر عيوب لغة الجافا

اتمنى ان تقوم شركة صن بتطوير اي مكتبة في اصداراتها القادمة من ال jdk لتقوم بالتعامل مع المكتبات و الدلات الخارجية بدون كتبة السي :sleep:

ياريت يا شيخ عصام لو عندك اى فكرة ما هى الحكمة في جعل التعامل مع المكتبات الخارجية بهذا الشكل ؟؟؟؟!!!! :blink:

تم تعديل هذه المشاركة بواسطة sameh mahmoud في 23 يناير 2010 في 07:41

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#4
herch كتب:

تستعمل JNI عندما تريد استدعاء كود C++ من داخل الجافا، وليس العكس.

لا يا عصام ,, يمكن استدعاء كود جافا باستخدام JNI من داخل C++ , لكن لم يتسنى لي التجربة .

#5

:resentful: ليست لدي أي خبرة في موضوع JNI

#6

أنا أعرف ما قد قاله عصام

لكن بالنسبة للعكس فهذا غريب علي

لو تفيدنا أكثر في الموضوع يا حج محمد نكون شاكرين

على العموم أعتقد أن الموضوع سهل بالنسبة لـ c++ حيث يمكنها تشغيل سطر الأوامر java

طبعاً لم أجرب هذا الأمر

بالنسبة للحبيب سامح

الموضوع منطقي تماماً يا سامح

نحن نتكلم عن لغة تعمل على غالبية أنظمة التشغيل

وأعتقد أن موضوع تشغيل المكتبات الخارجية آخر ما يفكرون به

ومعنى أن يوفروا دعم لهذه العملية أن يضيعوا وقتاً كبيراً

في شيء ربما لا يستخدمه سوى عشرة بالمئة من مبرمجي جافا

وأنا أقولها صراحة لو أردت التعامل مع العتاد بأي شكل من الأشكال فابتعد عن جاقا قدر ميل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7
اقتباس

يا شيخ عصام بصراحة هذا شئ مقزز انه من الصعب استدعاء الـ native method

يا اخى لماذا تجبرني اكتب سي بلس بلس و انا استخدم الجافا ؟؟؟!!!!! blink.gif افرض انا ما اعرف السي بلص بلص ؟؟؟؟!!!!!!!!!

لماذا صعوبة محاكاة دالات ال winAPI ؟؟؟؟!!!!!

الا ترى ان ذلك به شئ بسيط من الاحتكار ؟؟؟؟؟؟

يا اخي ما يجعلنى اكتب كود سي بلص بلص لمجرد استدعاء دالة , طيب اكتب البرنامج كله بالسي بلص بلص و في النهاية احصل على برنامج اسرع

من وجهة نظري ان هذا من احد اكبر عيوب لغة الجافا

اتمنى ان تقوم شركة صن بتطوير اي مكتبة في اصداراتها القادمة من ال jdk لتقوم بالتعامل مع المكتبات و الدلات الخارجية بدون كتبة السي sleep.gif

ياريت يا شيخ عصام لو عندك اى فكرة ما هى الحكمة في جعل التعامل مع المكتبات الخارجية بهذا الشكل ؟؟؟؟!!!! blink.gif

انا معك في هذا مالذي يمنع صن من تضمين حزمة تقوم بالتعامل مع دوال الAPI مثل حزمة JInvoke ولكن تكون ضمن مكاتب اللغة نفسها ذلك سيكسب اللغة ميزة إضافية إلى جانب ميزة تعدد المنصات.

اقتباس
في شيء ربما لا يستخدمه سوى عشرة بالمئة من مبرمجي جافا

وأنا أقولها صراحة لو أردت التعامل مع العتاد بأي شكل من الأشكال فابتعد عن جاقا قدر ميل

هناك حزم في وتقنيات توفرها الجافا قد تتقاعد وتنهي حياتك قبلما تلاقي فرصة تجربها وربما لايستخدمها إلا 5% من مبرمجي الجافا , لأن كل مبرمج لايستخدم إلا المكاتب التي تلبي حاجته على حسب طبيعة عمله.

لكن لابد ماتلبي لغات البرمجة كل احتياجات المبرمجين لتتميز عن باقي اللغات.

أما بالنسبة للعتاد فممكن يحلوا هذه المشكلة , هل الجافا الآن أضعف مما كانت عليه الفجول بيسك 6؟ كانت لاتعرف شئ أسمه عتاد Hardware كانت حتى ماتستخدم تقنية الoop ولكن الآن مع الدوت نت تتعامل مع كل شئ وطبعاً تستخدم مكاتب مبنية بلغات أخرى كالـ c++ مضمنة ضمن مكاتب اللغة ولكن المبرمج غير مضطر لأستيرادها أو انشائها بنفسه وانما يقوم بإستدعائها من داخل اللغة وكأنك تستدعي الـJOptionPane في الجافا.

فمن باب أولى ان توفر هذه الميزة لغة مبنية بالc++ مثل الجافا ولن تضطر لإضافة أي شئ جديد لأن اللغة الأم توفر هذه الميزة , واعتقد ان التعامل مع العتاد لن يفقدها ميزة تعدد المنصات.

أكبر مشكله في الجافا أنها لاتلاقي دعم من شركة صن مثلما تلاقي الدوت نت من مايكروسوفت , وإلا كانت الجافا تطورت وتعدت الدوت نت بمراحل من كل الجوانب :(

الذي يحيرني فعلاً هو :

1- إن كانت الجافا فعلاً ضعيفة في التعامل مع العتاد فما سبب إهتمام شركة مصنعة للعتاد مثل IBM?

2- في لغة أو برنامج الماتلاب المبني بالجافا يمكن التعامل مع العتاد وكأنك تعمل على c++ مباشرة فكيف تفتقر اللغة التي بنيت بها الماتلاب إلى هذه الميزة؟


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#8

قوة الجافا الحقيقية في التطبيقات التي تستخدم Java Entreprise Edition، وIBM لديها بعض المنتجات في هذا المجال.

صحيح أن Sun أهملت بعض الشيء كل ما يخص التطبيقات المكتبية Desktop والهواتف JavaME لفائدة تطبيقات ال JavaEE.

#9

أعذرني يا محمد

هل شركة IBM تهتم فقط للتعاد؟ انظر لعدد المنتجات البرمجية الخاصة بهذه الشركة

ما تكلفة ماتلاب؟ هل تحب أن تصل تكلفة لغة جافا إلى هذا الحد؟

بالنسبة لمايكروسوفت أخبرني بالله عليك كم مرة تقوم مايركوسوفت ببرمجة .Net Framework

بالمقابل على كم بيئة تشغيل تعمل جافا؟

كل بيئة من هذه البيئات لها API الخاصة بها

هل تتوقع أن تقوم صن بالبرمجة لكل هذه البيئات

أعد النظر في الموضوع ستجد أنك مخطئ تماماً

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#10

جعلتم علاء يتعصب :lol:

الحقيقة أن Sun كانت تعاني من المشاكل منذ مدة، وشراءها من طرف Oracle ما هو إلا الحلقة الأخيرة من مسلسل مشاكلها.

لا ننسى أيضا أن Sun متخصصة في ميادين كثيرة ومتشعبة.

لكن أيضا عندما تقول أنك تريد استدعاء دوال ال WinAPI، فهذه خاصة بالWindows، وفلسفة الجافا هي Write once, run everywhere. أيضا ماذا تعني باستعمال العتاد؟ فعندما تستعمل الsocket مثلا فأنت تستعمل العتاد بصفة غير مباشرة.

وفي النهاية كل لغة لها مجال تتوجه له، والجافا ليست أفضل اختيار للبرامج low level.

#11

<P>بالنسبة للتكلفة ماتهم الله يحفظ شيوخنا الكراكرز <IMG src="http://m7chat.com/m7/images/smilies/118.gif"> <BR>بس والله ياعلاء ماقلت ذاك الكلام إلا من حبي لهذه اللغة وأتمنى لها ان تصل إلى درجة قريبة من الكمال والكمال لله وحده وان تسحق كل اللغات أولها الدوت نت<BR>عشان لانضطر نحول لأي لغة أخرى بسبب حاجتي لشئ لاتوفره الجافا :(<BR><BR>على كل حال بنشوف الآن إلى وين بتوصل بعدما أشترتها أوراكل </P>

تم تعديل هذه المشاركة بواسطة M.Allaw في 25 يناير 2010 في 09:06


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#12

لا تعتمد على الكراكرز كثيراً

لأنه بمجرد أن تريد بيع برنامجك لن ينفع الكراكرز ببصلة

كلنا هذ الرجل يا محمد لكن هذه شركة ومهمتها الأساسية الربح وهم لا يربحون شيئاً منا

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

سلام عليكم

اذا "مستحيل" تستخدم نفس الوظيفة من خلال سى++ ومكتبات زى Boost فأظن انك تخلى برنامج الجافا قابل انه ياخد معاملات مثلا من سطر الأوامر وتنفذه بالمعاملات المناسبة او انك تعمل ويب سرفس تستهلكها فى كود السى++

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…