• 0
مصعب غيلان

3-خطوات تحويل البرنامج المصدر (java) الى(jad ,jar)

سؤال

بصراحة انا لا استطيع الشرح بشكل جيد لكن اتمنى ان تفهموا هذا الموضوع

واريد ارائكم بكل صراحة .

(ولا تتوقعوا اي تحسن في الاداء مالم تنتقدوا الموضوع)

وقد اعتمدت في هذا الشرح على كتاب Learning Wireless for Qusay Moh

هذا الشرح بالنسبة للاشخاص الذين لا يستخدمون JBuilder MobileSet

من اجل تحويل البرنامج او الشفرة المصدرية الى برنامج تنفيذي يعمل على الموبايل يجب المرور بهذة المراحل

1 - تحويل البرنامج من الشفرة المصدرية الى java byte code باستخدام الامر javac

2 - التحقق من byte code باستخدام الامر preverify

3 - تحزيم الملفات .class الى الشكل .jar

3 - تكوين ملف .jad الذي يعمل مع الملف .jar

كل هذة الاوامر ستعمل عل محث dos

تم تعديل بواسطه مصعب غيلان
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

31 إجابة على هذا السؤال .

  • 0

1 - يقوم هذا الامر بترجمة الملف المصدر .java الى .class

والتحقق من الاخطاء القواعدية للغة الجافا

بنية الامر javac

C:\> %jdk1.3.0_02\bin\%javac -g:none -d tmpclasses -bootclasspath $midpapi -classpath $J2MECLASSPATH MyProgram.java

العبارات

javac
-g
-d
-bootclasspath
-classpath

هي عبارات ثابته لا تتغير حسب تغير البرنامج

اما بقية العبارات فهي عبارات متغيرة حسب البرنامج والمجلد او الملفات المتضمنه

مكونات الامر javac

%jdk1.3.0_02\bin\% : الدليل الحالي للملف javac.exe غالبا يكون اسمه jdk1.3.0_02\bin\

ويمكنك الاستغناء عن كتابته اذا قمت بكتابة الامر من داخل الدليل للملف javac.exe

:none : تعني عدم اظهار التنقيح

وهذا الخيار غير مهم ويمكن الاستغناء عنه وعدم كتابته

tmpclasses : المجلد الذي ستوضع فيه الملفات .class بعد ترجمتها

ايظا هذا الخيار غير مهم ويمكن الاستغناء عنه وسيتم وضع الملفات .class في المجلد الحالي %jdk1.3.0_02\bin\% للملف javac.exe

$midpapi : هذا هو package او الكلاسات الاساسية لل J2ME

وتكون مضغوطة على هيئة ملف .zip وغالبا ماتكون في الدليل C:\WTK104\lib\midpapi.zip

$J2MECLASSPATH : الكلاسات الاضافية التي قمت بتضمينها في برنامجك

مثلا لو كان لديك اكثر من كلاس في برنامج واحد يجب عليك تحزيم الكلاسات الاضافية في حزمة واحدة

وبعد ذلك ستقوم بكتابة اسم هذة الحزمة مع المسار بدلا عن الكلمة $J2MECLASSPATH

وغالبا يتم تضمين هذة الكلاسات الى الحزمة C:\WTK104\wtklib\kvem.jar

مثال على ذلك لنفترض انه لدينا البرنامج HelloMidlet والموجود في المجلد C:\java ونريد ترجمته بالعبارة javac

وارسال الملفات الناتجة .class الى الدليل C:\WTK104\bin\Classes\

سنقوم بكتابة الامر

C:\jdk1.3.0_02\bin\javac.exe -g:none -d C:\WTK104\bin\Classes\ -bootclasspath C:\WTK104\lib\midpapi.zip -classpath C:\WTK104\wtklib\kvem.jar C:\Java\HelloMidlet.java

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

مثلا لو قمنا بكتابة -bootclasspath C:\WTK104\lib\MIDPAPI.zip فإنه ستنتج لدينا عبارة خطأ لأن الملف MIDPAPI.zip مكتوب بحروف كبيرة بينما هو في الاصل مكتوب بحروف صغيرة

قد تدور بذهنك هذة الاسئلة

ماذا لو كان لدينا اكثر من ملف ونريد ترجمة كل هذة الملفات

كما ذكرنا سابقا عندما شرحنا $J2MECLASSPATH

نقوم اولا بترجمة الكلاس المستدعى الاضافي -وليس الذي يستدعي-

ونمر بالمراحل الثلاث الى ان نصل الى الشكل .jar

وبعد ذلك نقوم بوضع اسمه مع الدليل بدلا عن المتغير $J2MECLASSPATH

والان سيدور بذهنك سؤال اخر ماذا لو كان كل كلاس يقوم باستدعاء الكلاس الاخر

اي ان الكلاسات تستدعي كلاسات اخرى وهذة الكلاسات الاخرى تستدعي نفس الكلاسات الاصلية

وحل هذة المسأله هي ايظا حل اخر للمسألة السابقة -اي حتى لو كان الكلاسات لا يستدعون بعضهم البعض-

وهو حل في غاية البساطة فقط سوف تقوم بذكر اسماء الملفات .java كلهم في عبارة واحدة

مثال لو كان لدينا الملفات test1.java و test2.java وكان هذان الكلاسان يستدعيان بعضهم البعض او احدهم يستدعي الاخر فإنه يمكن كتابة الامر javac على الشكل

C:\jdk1.3.0_02\bin\javac.exe -g:none -d C:\WTK104\bin\Classes\ -bootclasspath C:\WTK104\lib\midpapi.zip -classpath C:\WTK104\wtklib\kvem.jar test1.java test2.java

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

2 - المرحلة التالية مرحلة التحقق من byte code باستخدام الامر preverify

وتتم في هذه المرحلة التحقق من وجود الكلاسات الاخرى في البرنامج وسوف يتم اضافة مجموعة من البيانات على الكلاس .class

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

وبنية الامر كالتالي

C:\>%WTK104\bin\% preverify -classpath $midpapi;tmpclasses -d classes tmpclasses

العبارات

preverify
-classpath
;
-d

هي عبارات ثابته لا تتغير حسب تغير البرنامج

اما بقية العبارات فهي عبارات متغيرة حسب البرنامج والمجلد او الملفات المتضمنه

%WTK104\bin\% : الدليل الحالي للملف preverify.exe غالبا يكون اسمه WTK104\bin\

ويمكنك الاستغناء عن كتابته اذا قمت بكتابة الامر من داخل المجلد

$midpapi : هو نفسه الملف المشروح في الخظوة السابقة

عبارة عن جميع الكلاسات الخاصة باللغة J2ME

tmpclasses : هو نفسه المجلد المشروح في الفقرة السابقة

الدليل التي تتواجد فيه الكلاسات .class بعد تحويلها من الشفرة المصدرية الى byte code

وسيتم التحقق من كل الكلاسات الموجودة في هذا الدليل ولن نحدد كلاس واحد .class

classes : هذا الدليل او المجلد هو المجلد الذي سيوضع فيه الملفات .class بعد التحقق منها

مثال على ذلك : لنفرض ان الكلاس الذي قمنا بترجمته في الخطوة السابقة وقد قمنا بوضعه في الدليل C:\WTK104\bin\Classes\

والان نريد استخدام الامر preverify

ووضع الكلاسات الناتجة من هذا الامر في المجلد C:\jdk1.3.0_02\bin\

فإننا سنقوم بكتابة الامر التالي

C:\WTK104\bin\preverify.exe -classpath C:\WTK104\lib\midpapi.zip;C:\WTK104\bin\Classes\ -d C:\jdk1.3.0_02\bin\ C:\WTK104\bin\Classes\

ويجب ان تلاحظ هنا ان هذا الامر يقوم بالتنفيذ على عدد من الكلاسات موجودة في مجلد واحد وليس على كلاس واحد بعينه

مثلا لو كان لدينا الكلاسات test2.class test1.class الموجودين في الدليل C:\WTK104\bin\Classes\

سنقوم بكتابة نفس الامر السابق لجميع الكلاسات test2.class test1.class

C:\WTK104\bin\preverify.exe -classpath C:\WTK104\lib\midpapi.zip;C:\WTK104\bin\Classes\ -d C:\jdk1.3.0_02\bin\ C:\WTK104\bin\Classes\

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

3 - تحزيم الملفات باستخدام الامر jar

يقوم هذا الامر بضغط الكلاسات وتجميعها في حزمة واحدة يتم تنفيذها على الموبايل

وبنية هذا الامر كالتالي

%C:\jdk1.3.0_02\bin%> jar cvf MyProgram.jar MyProgram.class

او على الطريقة التالية

%C:\jdk1.3.0_02\bin%> jar cmf MANIFEST.MF MyProgram.jar MyProgram.class

والفرق بين الطريقتين هي انه في الطريقة الاولى لا نقوم بتضمين الملف MANIFEST.MF وهذا الملف مهم جدا على بعض الاجهزة مثل نوكيا وليس مهما على اجهزة اخرى مثل سيمنس

بينما في الطريقة الثانية سنقوم بتضمين الملف MANIFEST.MF الذي سنقوم بشرح كيفية تكوينه فيما بعد

ويجب الانتباه هنا الى اننا قمنا بالدخول الى الدليل اولا قبل استخدام الامر jar على العكس من المراحل السابقة التي لا تشترط ذلك

والدخول الى الدليل مهم جدا من اجل ان يتم تحزيم الكلاسات .class في الدليل الرئيسي للملف .jar

اما في حالة عدم الدخول للدليل المحتوى على الامر jar فإن تحزيم الكلاسات في الملف .jar سيكون داخل الملف الفرعي الموجود فيها الكلاسات التي تم تحزيمها

لا تهتم اذا لم تفهم ما ذكر سابقا فقط قم بالدخول الى الدليل المحتوى على الامر jar واستخدم الامر من داخل المجلد

%C:\jdk1.3.0_02\bin% : الدليل الحالي للملف jar.exe

cvf او cmf او umf : يعبر عن الطريقة المستخدمة في تنفيذ الامر

وسنقوم بشرحها لاحقا

MyProgram.jar : اسم البرنامج .jar الذي تريد تحزيمه

MyProgram.class : اسم الكلاس او الكلاسات التي تريد تحزيمها

مثال سنقوم بتحزيم المثال السابق بالشكل

C:\jdk1.3.0_02\bin\jar.exe cvf Hello.jar  HelloMidlet.class

سيتكون لدينا البرنامج Hello.jar الناتج من تطبيق الامر السابق

والان سيتبادر للذهن ماذا لو كان لدينا اكثر من كلاس واحد ونريد تحزيمها في حزمة واحدة

مثلا الكلاسات test1.class test2.class ونريد تحزيمها الى test.jar

سنقوم بإستخدام الامر التالي

C:\jdk1.3.0_02\bin\jar.exe cvf test.jar  test1.class test2.class

يجب ان نذكر هنا ان استخدام البارامتر umf يستخدم لاضافة الملحقات المستخدمة في البرنامج مثل الصور او ايقونات التطبيق

مثلا لو اردنا اضافة الصورة test.png الى البرنامج Hello.jar

طبعا هذا اذا كنا قد استخدمنا هذة الصورة داخل الكلاس HelloMidlet.class في شفرة البرنامج

سوف نستخدم الامر التالي

C:\jdk1.3.0_02\bin\jar.exe umf MANIFEST.MF Hello.jar Test.png

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

4 - يتم انشاء وتكوين ملفات jad و MANIFEST.MF باستخدام اي محرر للنصوص

ويتم كتابة عدة حقول فيهما منها ما هو ضروري ومنها ما هو ليس ضروري

وهذا الجدول المرفق يشرح هذة الحقول

يمكنك فتح اي ملفات jad لبرامج اخرى لمعرفة كيفية كتابتها

JAD and manifest.doc

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

والان اصبح لدينا برنامج جاهز للعمل على اي موبايل

لتجربة هذا التطبيق قبل تنزيله على الموبايل

اولا قم بنقل التطبيق الى الدليل apps الموجود في الدليل الخاص بال J2ME وليكن C:\WTK104 اي C:\WTK104\apps

بعد ذلك قم بفتح الملف jad باستخدام emulatorw.exe الموجود في الدليل الخاص بال J2ME وليكن C:\WTK104 اي C:\WTK104\bin

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

للسهولة يمكنك عمل قوالب جاهزة بملفات batche file.bat ومن ثم تغييرها عند تغيير اسم البرنامج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

وماذا لو أردت عمل نفس التطبيق ولكن باستخدام JBuilder MobileSet فهل ستكون الخطوات أسهل وعندها ماذا أحتاج لكي أقوم بهذا العمل

لكي أتمكن من عمل تطبيق وتحميله على الجوال

تحياتي لك أنتظر ردك بفارغ الصبر

تم تعديل بواسطه ha98
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ha98 : هل عندك برنامج JBuilder MobileSet ؟؟؟؟

مصعب: شكرا لك ... و اسلوبك مميز

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي رامي حتى لو كان موجود لديه JBuilder MobileSet

مالفائدة البرنامج سيكون كبير جدا

بالنسبة لي سأقوم بتحميله في شهر كامل ان لم يكن اكثر من شهر

في اليمن سعر اي سي دي ثلاثمائة ريال اي ما يعادل دولار ونصف

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

اخي ha98

وماذا لو أردت عمل نفس التطبيق ولكن باستخدام JBuilder MobileSet فهل ستكون الخطوات أسهل

ستكون كبسة زر واحدة بعد كتابة البرنامج لترى التنفيذ امامك على محاكي الموبايل

لهذا نبحث عن JBuilder MobileSet

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك أخي العزيز مصعب

أولا : أنا لايوجد لدي JBuilder MobileSet

ثانيا : هل هذا برنامج تابع للجافا أو مستقل

ثالثا : ماقصدك بكبر الحجم هل هو حجم التطبيق الناتج الذي سيحمل للجوال أو حجم JBuilder MobileSet

رابعا : هل يشترط أن يكون برنامج التطبيق مبرمج بالجافا

يعني لو كنت عامله بالدت نت هل سيعمل مع JBuilder MobileSet

خامسا : من أين يمكن الحصول على JBuilder MobileSet

في الأخير لايسعني إلا شكرك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي h98 لازم تعمل download لل MobileSet من العنوان التالي وكمان اخي لازم يكون عندك معلومات عن الجافا

يا شباب الي عنده JBuilder بقدر يعمل update ويحصل عليه بس ما بعرف سرعة النت عندكم كبير هوي ما بزبط اضعه هون اذا حد بعرف طريقة ابعثلكم ايا من عيوني والله

MobileSet

التسجيل يا اخوان مجاني عشان download

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي ha98

ثانيا : هل هذا برنامج تابع للجافا أو مستقل

JBuilder MobileSet عبارة عن IDE بيئة تطوير يتم فيها كتابة التطبيق بلغة الJ2ME ومن ثم تكوين البرنامج التنفيذي له

ثالثا : ماقصدك بكبر الحجم هل هو حجم التطبيق الناتج الذي سيحمل للجوال أو حجم JBuilder MobileSet

حجم JBuilder MobileSet اكثر من 50 ميجا وهذا يعني انني لن استطيع تحميله لان الخط عندي ضعيف

رابعا : هل يشترط أن يكون برنامج التطبيق مبرمج بالجافا

JBuilder يمكنك معرفة ذلك من الاسم Java Builder

اي انه يختص بتطبيقات الجافا

للاسف الشديد فإنه لا يوجد الى الان حسب علمي اي جهاز يدعم الدوت نت

كل الاجهزة تدعم J2ME

واذا علمت بجهاز موبايل يدعم الدوت نت فأخبرنا على طول

خامسا : من أين يمكن الحصول على JBuilder MobileSet

اتبع ما قاله الاخ Student_1981 اذا كان الخط عندك سريع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي مصعب غيلان

هذه خطوات طويلة ومملة

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

وأعتقد ان هذا البرنامج سوف يسهل الكثير في عملية التحويل

وشكرا ........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالفعل مملة وقد طورت برنامج يقوم بهذا العمل

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

وهذه نظرة على البرنامج

وهذا هو البرنامج

تم تعديل بواسطه مصعب غيلان
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تشكر يا أخ مصعب على جهودك التي تتميز بالأريحية

دروس شيقة ماشاء الله عليك حفظك الله و نتمنى لك التوفيق

وهكذا جميع من لا يبخل بما اعطاه الله من علم أو مال أو غيره

اطلعت على أغلب دروسك وأتمنى أن أحصل على J2ME و J2SE لكي أبدأ بالتنفيذ والتجارب

توجد عندي معظم الأدوات التي ذكرتها انت في دروسك مثل javac.exe وjar.exe وغيرها

كما توفرت عندي مؤخراً ++visualjاصدار6

وتنقصني جميع مكتبات javax وكذلك preverify.exe

-------------------------

وأنا اؤيد ما طرحه الأخ alanabi20 وذلك بعمل برنامج خدمة تجميع خطوات العمل ويا حبذا لو يكون عربي قدر الأمكان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي انت تحتاج J2ME حتى تبدا العمل وتجدها على الرابط التالي بعد ما تعمل install وبعدها اختر

J2ME Wireless Toolkit

start-J2ME Wireless toolkit 1.0.4_01 -KToolbar

اختار File -new Project وبالنافذة التي تظهر اكتب

Project name : HelloSuite

MIDlet class Name :HelloMidlet

وبعدها create والنافذة التى تظهر اضغط ok

وبعدها اكتب HelloMidlet في الملف التالي

c:\WTK20\apps\HelloSuite\src وقم بتخزينه

وبعدها (من نافذة Ktoolbar )على build واذاما في اخطاء اضغط Run وبشتغل ان شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما قصرت ياأخي Student_1981

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

لا نزال ننتظر تطوير الاتصالات كي تكون عن طريق قنوات انتركوم عبر خط الهاتف

ولا تشغل الخط ،،،

سوف أبحث عنه في المحلات وسوف أجده بإذن الله .

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شوفو كذه هذه المشكلة

ماني عارف احلها

--------------------Custom Tool: javac--------------------

Command : C:\j2sdk1.4.2_04\bin\javac.exe -d C:\WTK20\bin\Classes\ -bootclasspath C:\WTK20\lib\midpapi.zip -classpath C:\WTK20\wtklib\kvem.jar D:\WORKAREA\MyOwnTry\HelloMidlet.java

Directory :

D:\WORKAREA\MyOwnTry\HelloMidlet.java:5: error while writing HelloMidlet: C:\WTK20\bin\Classes\HelloMidlet.class (The system cannot find the path specified)

public class HelloMidlet extends MIDlet

^

1 error

Process completed.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طبعا مع tollKit

انا ماعندي مشكلة لكن

مع cmd هنا المشكلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عرفت المشكلة بالرغم من اني توقفت عنها كثيرا لاصل الى الحل

المشكلة في المجلد Classes فهو غير موجود على ما اعتقد

لا تقوم ToolKits بانشاء اي مجلد ولكن عليك انت انشاءه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك أخي مصعب

أعتقد انه ستعمل الان

ملاحظت جدا دقيقة

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم,

مشكور أخي على الموضوع الأكثر من رائع.

سؤالي هو: هل هناك عملية عكسية لاسترجاع ملف *.java من ملف *.jar ؟

مع الشكر سلفاً.

رامي خطيب

تم تعديل بواسطه ramigraph
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قم البحث في قسم الجافا اعتقد كان موضوع عن هذا الشئ ولا استطيع الاجابة لانني لست متاكدا منها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم,

أخي مجدي محمود شكراً لردك و لكني قمت بالبحث قبل طرح السؤال و لم أجد طلبي.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

في الحقيقة لا اعرف برامج تقوم بهذا العمل قم بالبحث في جوجل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم,

أشكرك أخي مجدي على كل حال جاري البحث

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .