• 0
com.jkelany

نبذة سريعة عن ال Java ME و شرح برنامج عملى

سؤال

بسم الله الرحمن الرحيم

رمضان كريم اخوانى واخواتى اعضاء منتدى الفريق العربى البرمجه

اسمحوا لى ان اقدم لكم درسا عن استخدام

Java Micro Edition ( JME )

اولا

البعض يعتبر من ان JME

هى برمجه الموبيل واجهزه المحمول فقط

لكن للاسف هذا ليس كل شىء

لكن هذا هو الاستخدام الظاهر لها

تقريبا 90% من استخدامها فى برمجه الموبيلات التى تدعم الجافا

لكن ماذا عن الـ 10 % الاخرى

هى تتمثل فى بعض الاجهزه الاخرى مثل

Pagers , Personal Digital Assistance ( PDA ) , Car Navigations Systems , Set-top-boxes , …

ليس مووضوعنا هنا هو التحدث عن هذه الاجهزه

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

دعنا من كل هذا فهذه مقدمة بسيطه عن الـ JME

==============

هيا بنا نتكلم عن ماذا يتكون اى برنامج موبيل

يتكون برنامج الموبيل من عده شاشات تسمى الـ Form

وبعض العناصر التى تحتويها هذه الشاشات

مثل List , Text Box , StringItem , …

واشياء كثيره ليس مكانها الان

كل هذه الاشياء توضع فى ما يسمى MIDlit

التى تحتوى على كل هذه الشاشات

لكن هناك خطأ شائع

ان بعض المبرمجين المبتدئين يعتبرون ان كل شاشه هى عباره عن MIDlit

ولكن فى الحقيقة ان كل البرنامج كله عباره عن MIDlit

واحده

==============

اولا نقوم بعمل مشروع جديد باستخدام NetBeans

ونقوم بانشاء المشروع فارغ

لانه عندما نقوم بعمل مشروع عادى

يقوم بانشاء Visual Medlit

وهذا الاستخدام به سهل جدا

لكن هناك بعض الاشياء لا تستطيع التحكم بها حيث انه يكون الكود المصنع اتوماتيكيا بواسطه النت بينز

غير قابل للتعديل

وانت تريد ان تعدل عليه لكنك لا تستطيع

وعندما تكثر امامنا شاشات الاستخدام والروابط بينها

فيجعلنا نتحير فى الروابط والشاشات

لكننا سوف نقوم بكتابه الكود الذى يقوم بمثل ما يفعله ال Visual MIDlit

لكن الفائده منه كبيره

فى التعرف على كيفيه عمل الكود

وطريقة كتابته والتعود عليه

ومع ذلك كله فى ان الـ classes

فى جزء الموبيل قليلة ومعروفة ويمكن حفظها بسهولة بعكس الـ J2SE , J2EE

كما قلنا سابقا

اننا نعمل مشروع جديد فارغ

ثم نقوم باضافه MIDlit class

بالضغط كليك يمين الـ pakage

الموجوده لديك ونقوم باختيار New

واختيار من هذه القائمه MIDlit

سوف يقوم بانشاء

MIDlit Class

وسوف نجد بداخلها الكود التالى


public class MobileMidlet extends MIDlet {
public void startApp() {
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

سوف تجد ان الـ MobileMidlet Class

تمتد من الـ MIDlet class

فى الجافا ولكن بها ثلاث دوال

هذه الدوال abstract

فلابد من ان يقوم المبرمج من كتابه الكود الخاص بهم

اول داله

  startApp()

وهى التى تقوم ببدا البرنامج اثناء التشغيل

ثانى داله

pauseApp()

وهى الداله المسئوله عن توقف البرنامج فى حيث يوجد مثلا اتصال هاتفى

يكتب بها الكود الخاص بالتوقف

ثالث داله

 destroyApp()

هى الداله المسئوله عن ماذا تفعل عندما يقوم اغلاق البرنامج

او حدث توقف غير متوقع اصلاحه فى البرنامج

او اجبار البرنامج على الاغلاق من الـ Mobile Manager

دعنا نصف ما يجب فعله فى الكود الخاص بالمشروع الصغير البدائى الخاص بنا

هو اننا نقوم بعمل شاشه رئيسية تظهر بها اختيارين

هاذين الاختيارين يقومنا كل واحد بفتح شاشه اخرى

وفى الشاشة الرئيسية ايضا

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

ونقوم ايضا بعمل شريط يتحرك

كأنه شريط اخبارى فى الموبيل

لكن فى الشاتين الاخرتين نقوم بعمل فى احداهما

بكتابه كلام بها

وفى الاخرى نقوم بعمل قائمه تحتوى على ثلاث عناصر

وكل شاشه من الشاشات الفرعيه تحتوى على زر رجوع الى الشاشه الرئيسيه

هذا كل وصف البرنامج المراد عمله

يتبع ...

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

شارك هذا الرد


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

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

  • 0

تسلمو يا محمود....

أنا بصراحة عاوز أشتغل شوية موبايل, بس عاوز شوية عزيمه :D

الله المتسعان

0

شارك هذا الرد


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

هذا هو الكود كاملا

وسوف نقوم بشرح الكود سطر سطر

لتحميل الكود على الـ netbeans

FirstLessonLearnMobileApplications.zip


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hello;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

/**
* @author Mahmoud Mahrous
*/
public class FirstMidlet extends MIDlet implements CommandListener {

private Form firstForm;
private Form secondForm;
private List friendsList;
// Commands
Command gotoSecondFormCmd;
Command gotoFriendsListCmd;
Command backFromSecondFormCmd;
Command backFromFriendsListCmd;

public void startApp() {
Display.getDisplay(this).setCurrent(getFirstForm());
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

/**
* @return the firstForm
*/
public Form getFirstForm() {
if (firstForm == null) {
firstForm = new Form("First Form");

StringItem message = new StringItem("Hello", "Welcome");
firstForm.append(message);

Ticker ticker = new Ticker("Welcome to my first test application with my self");
firstForm.setTicker(ticker);

// Commands
gotoFriendsListCmd = new Command("Friends", Command.ITEM, 0);
gotoSecondFormCmd = new Command("Second", Command.ITEM, 0);

firstForm.addCommand(gotoSecondFormCmd);
firstForm.addCommand(gotoFriendsListCmd);
firstForm.setCommandListener(this);
}
return firstForm;
}

/**
* @return the secondForm
*/
public Form getSecondForm() {
if (secondForm == null) {
secondForm = new Form("Second Form");

StringItem message = new StringItem("Second form", "Welcome to second form");
secondForm.append(message);

// Commands
backFromSecondFormCmd = new Command("Back", Command.BACK, 0);
secondForm.addCommand(backFromSecondFormCmd);
secondForm.setCommandListener(this);
}
return secondForm;
}

/**
* @return the friendsList
*/
public List getFriendsList() {
if (friendsList == null) {
friendsList = new List("Friends List", List.EXCLUSIVE);
friendsList.append("Mahmoud", null);
friendsList.append("Mahrous", null);
friendsList.append("Waleed", null);

// Commands
backFromFriendsListCmd = new Command("Back", Command.BACK, 0);
friendsList.addCommand(backFromFriendsListCmd);
friendsList.setCommandListener(this);
}
return friendsList;
}

public void commandAction(Command cmd, Displayable d) {
if (cmd == gotoSecondFormCmd) {
Display.getDisplay(this).setCurrent(getSecondForm());
} else if (cmd == gotoFriendsListCmd) {
Display.getDisplay(this).setCurrent(getFriendsList());
} else if (cmd == backFromFriendsListCmd || cmd == backFromSecondFormCmd) {
Display.getDisplay(this).setCurrent(getFirstForm());
}
}
}

هيا بنا نبدا فالشرح

private Form firstForm;
private Form secondForm;

نقوم بانشاء شاشتين

private List friendsList;

وننشأ ايضا قائمة

ثم بعد ذلك نقوم بتحديد الـ Commands

هذه تمثل الزارير فى ال J2ME

بمعنى اخر الاحداث

فى الشاشه الاولى سوف نجد ان هناك حدثين احداهما يذهب الى الشاشه الثانيه والاخر يذهب الى قائمه الاصدقاء

لذلك قمنا بتعريف


Command gotoSecondFormCmd;
Command gotoFriendsListCmd;

لكن عندما نكون فى احدى الشاشتين الفرعيتين نريد الرجوع الى الشاشه الاولى

فهناك حدث نقوم باضافته لكلا من الشاشه الثانية و القائمه

فقمنا بتعريف

Command backFromSecondFormCmd;
Command backFromFriendsListCmd;

وبعد ذلك نقوم بعمل getter الى الشاشتين وقائمه الاصدقاء

نبدا بعمل getFirstForm

فى داخلها نقوم بالاستعلام هل الـ FirstForm = null

اذا كان كذلك يعنى انه لم يتم تعريفه الى الان

نقوم بتعريفه

هكذا

firstForm = new Form("First Form");

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

وذلك يكون من نوع StringItem

نقوم بتعريف كائن نقوم باضافته الى الشاشه الاولى

باستخدام الداله append

firstForm.append(message);

وذكرنا من قبل اننا نريد ان نقوم بعمل شريط اخبارى

وهذا الشريط يكون بانشاء كائن من الـ Ticker Class

ونقوم بكتابه الرساله اللتى تقوم بالعرض فى البناء الخاص بهذا الكائن

لكن عندما نريد ان نضيفه الى الشاشه الاولى

لا نستخدم الداله append

لكن هناك داله خاصه بذلك وهى setTicker

firstForm.setTicker(ticker);

بعد ذلك نقوم باضافه الحدثين الخاصيين بالتنقل

من الشاشه الاولى الى الشاشه الثانيه او قائمه الاصدقاء

نقوم الاول بتعريفهم باستخدام new KeyWord

 gotoFriendsListCmd = new Command("Friends", Command.ITEM, 0);

وفى البناء الخاص به

نكتب اسم الكلمة المراد ان تظهر للمستخدم

وبعد ذلك نحدد نوع الحدث

على انه item command

وبعد ذلك تقوم بوضع درجه الأولوية

لكنها نادرا ما تستخدم فدائما نضعها بصفر

كذلك فى الحدث الاخر الخاص بقائمه الاصدقاء

هناك سطر خاص بالاستماع الى الاحداث كما فى ال actionListener

فى الـ J2SE

لكن لكى نتمكن من استخدام هذا الامر

لابد من ان تكون الـ FirstMidlet

تحتوى على الـ interface

CommandListener

فتكون الكلاس بهذا الشكل

public class FirstMidlet extends MIDlet implements CommandListener {
}

وهناك داله عندما نقول ان هذه الكلاس تستخدم CommandListener

فهناك داله abstract

وهى

public void commandAction(Command cmd, Displayable d) {
}

سوف نقوم بكتابه الكود الخاص بها بعد ذلك

فائدتها هى اللتى تستمع الى الاحداث التى يقوم المستخدم بفعلها

وبهذا نكون قد قمنا من الانتهاء من عمل الـ FirstForm

عمل الـ secondForm

مثل الـ firstForm

سوف نقوم بشرح الجديد وهو الـ FriendsList

نقوم ايضا بالسوال هل تم انشاء القائمه من قبل ام لا

ان كان لالا

فنقوم بتعريف القائمه

وفى البناءا لخاص بيها

friendsList = new List("Friends List", List.EXCLUSIVE);

نقوم بكتابه اسم الـقائمة

ونختار نوع القائمه

فهنا نختار EXCLUSIVE

يعنى انه يتم اختيار عنصر واحد فى وقت واحد

نقوم بعد ذلك باضافه عناصر الى القائمه

friendsList.append("Mahmoud", null);

باستخدام append

اللتى تقوم بكتابه اسم العنصر ونقوم بوضع له صوره ان وجد

ان لم يوجد نكتب null

وكما قولنا قبل ذلك ان هذه الشاشه سوف تحتوى على زر رجوع الى الشاشه الاولى

backFromFriendsListCmd = new Command("Back", Command.BACK, 0);

نقوم بتعريف الحدث الخاص بذلك

ونكتب له اسمه الخاص به

وبعد ذلك نحدد نوعه

سوف يكون من النوع BACK

وبعد ذلك نضيف هذا الحدث على القائمه

  friendsList.addCommand(backFromFriendsListCmd);

وبعد ذلك نقوم بعمل مستمع للقائمه

friendsList.setCommandListener(this);

الى هنا

بقى شيئين هما

الـ CommandListener

والبدايه اللتى يبدا من عندها البرنامج

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

يتبع ....

تم تعديل بواسطه Mahmoud Kelany
1

شارك هذا الرد


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

تسلمو يا محمود....

أنا بصراحة عاوز أشتغل شوية موبايل, بس عاوز شوية عزيمه :D

الله المتسعان

الله يخليك يا اخ هويدى

ان شاء الله كل ما اعرف حاجه هاحاول اشرحها ان شاء الله

ما يلا شد العدة والعتاد الى منتدى الموبيل

0

شارك هذا الرد


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

بعد ما شرحنا الكود باقى من الكود جزئين

هما

من اين يتم بدا عمل هذا البرنامج

يتم البدا من الداله

startApp(){
}

التى قولنا عنها من قبل

نقوم بكتابه الكود التالى داخل هذه الداله


public void startApp() {
Display.getDisplay(this).setCurrent(getFirstForm());
}

من الـ Display Class

نستدعى عليها getDisplay(this)

كما نستدعى الداله

getContentPane();

لكن هنا نستدعى المعروض الان ونقوم بوضع الشاشه الحاليه بـ getFirstForm()

هناك خطأ ايضا ان البعض يقول ان لدى الكائن firstForm

لماذا استدعى الـ getFirstForm

من قبل فى تعريف الكود اننا لم نقوم بتعريف الكائن الخاص بالـ firstForm

الا فى داخل الـ getFirstForm

وايضا اذا وضعنا firstForm

بدلا من getFirstForm

اذا افترضنا انها سوف تعمل

فانه لم يتم وضع اى شىء فى الشاشه الاولى

لان الاشياء اللتى يتم وضعها فى الشاشه الاولى

معرفه داخل الدالة getFristForm

وبهذا تم شرح الداله الابتدائيه لعمل البرنامجناتى الى شرح الداله الخاصه بالاستماع الى الاحداث


public void commandAction(Command cmd, Displayable d) {
if (cmd == gotoSecondFormCmd) {
Display.getDisplay(this).setCurrent(getSecondForm());
} else if (cmd == gotoFriendsListCmd) {
Display.getDisplay(this).setCurrent(getFriendsList());
} else if (cmd == backFromFriendsListCmd || cmd == backFromSecondFormCmd) {
Display.getDisplay(this).setCurrent(getFirstForm());
}
}

يتم الاستماع الى الاحداث الموجوده فى الشاشه

نقوم بعد ذلك

بعمل شرط ان كان الحدث المستخدم يساوى

gotoSecondFormCmd

فانه يتم وضع الشاشه الحاليه هى الشاشه الثانيه

هو نفس الكود المستخدم فى داله startApp()

ونقوم بالتعامل مع جميع الاحداث والاسمتاع اليها

كما فى الحدث الاول


if (cmd == gotoSecondFormCmd) {
Display.getDisplay(this).setCurrent(getSecondForm());
}

هذا يشبه تماما التعامل مع الاحداث فى الجزء الخاص بـ J2SE

وبهذا نكون قد انتهينا من هذا الدرس

ويارب يكون تم شرحه بالتفصيل

سلام عليكم

1

شارك هذا الرد


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

:clapping:

الله يقويق اخ محمود كيلاني

والله جميل

و اخيرا هنالك همة في منتدى الموبايل

شجع الجميع لتعلمها بأسلوب شرحك الجميل :)

+10

0

شارك هذا الرد


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

:clapping:

الله يقويق اخ محمود كيلاني

والله جميل

و اخيرا هنالك همة في منتدى الموبايل

شجع الجميع لتعلمها بأسلوب شرحك الجميل :)

+10

الله يخليك اخى محمد

ان شاء الله هناك جديد باذن الله

بس اعتقد ان الاسلوب مصاغ الى حد ما باللغة العربيه وليس المصرية :lol: :lol:

بدليل انك لم تعلق على الاسلوب :)

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

ورمضان كريم

وكل عام وانت بخير

ويارب يكون الدرس مفيد ان شاء الله

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

شارك هذا الرد


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

شكرا لك يا محمود على هذا الدرس الجميل..تمت اضافته للمواضيع المميزه..

تسلمو يا محمود....

أنا بصراحة عاوز أشتغل شوية موبايل, بس عاوز شوية عزيمه :D

الله المتسعان

بعدين معاك يا هويدي..نفسي أشوفك شغال معانا هنا :P يلا يا عم استنينا كثير :wink:

0

شارك هذا الرد


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

شكرا لك يا محمود على هذا الدرس الجميل..تمت اضافته للمواضيع المميزه..

بعدين معاك يا هويدي..نفسي أشوفك شغال معانا هنا :P يلا يا عم استنينا كثير :wink:

العفو اخى مهدى

ربنا يخليك يارب

ان شاء الله هاحاول انزل درس تانى قريب ان شاء الله

اه عندك حق

وبعدين فكرتنى

فين يا اخ هويدى الفرق بين الـ eclipse , netbeans

متخفش اخوك مش بينسى :P :P

0

شارك هذا الرد


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

@مهدي:

جزيل الشكر لك أخي على التشجيع.... إن شاء الله أبدأ قريبا و لو أني ميال أكثر لتعلم ال objective-c

@محمود:

موش فاكر و الله ياحوده... ممكن تفكرني ؟

0

شارك هذا الرد


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

بيتهيألي أنك مش هتستفيد كثير لو تعلمت objective c

خصوصاً وأنا بسمع أنه نظام symbian بيودع

تحياتي

0

شارك هذا الرد


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

@مهدي:

جزيل الشكر لك أخي على التشجيع.... إن شاء الله أبدأ قريبا و لو أني ميال أكثر لتعلم ال objective-c

@محمود:

موش فاكر و الله ياحوده... ممكن تفكرني ؟

لا سوء تفاهم كان على الفرق بين الـ SWT , SWING

http://www.arabteam2000-forum.com/index.php?showtopic=176433&st=840&p=1109293entry1109293

بيتهيألي أنك مش هتستفيد كثير لو تعلمت objective c

خصوصاً وأنا بسمع أنه نظام symbian بيودع

تحياتي

طب لم يودع

هيعملوا نظام تشغيل الموبيل بايه ياترى؟؟

هل فيه لغة بديله تتعامل مع الهارد وير؟

0

شارك هذا الرد


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

السلام عليكم

عوده من جديد

الى تطوير فى البرنامج الاول لتعليم الـ java ME

هى ملحوظه ممكن يكون اى مستخدم يقول اين يوجد زرار الخروج ؟؟

وكمان يقولك انا عاوز الامرين " Second Fom , Friends List "

يكونوا فى قائمه واختار منها كدا

الحل سهل وبسيط جدا

كيف ؟؟؟

عندما اردت ان تضع زر خروج

فانك الان وضعت ثلاثه اوامر فى الشاشه الرئيسية

ولكن لديك فى الموبيل هما زرارين فقط هما الايسر والايمن

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

فالبرنامج يقوم هو بدمج الاوامر مع بعضها ويضعها فى شكل قائمه ( الحمدلله القائمه التى تريدها ظهرت لوحدها )

وويضع القائمه على الزر الايمن للموبيل لكن و ماذا يكون على الزر الايسر

وكيف يختار الاوامر

هل يضع بالترتيب ؟؟

الاجابه لالا

الاختيار يكون على اساس نوع الـ Command

يعنى

الحدث Second From نوعه Command.ITEM

وايضا الحدث Friends List نوعه Command.ITEM

لكن الحدث الذى يسمى Exit المسئول عن الخروج

فانه يكون من النوع Command.EXIT

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

ولكنه يخصص مكان الزر الايسر للحدث الذى من النوع EXIT

افترضنا ان كل الاحداث من النوع Command.ITEM

يجعل الحدث الاول هو على الزر الايسر للموبيل

ولكن باقى الاحداث يضعها فى قائمه على الزر الايمن للموبيل

دعنا من هذا و هيا بنا نذهب الى تلك الصور

فى الصوره الاولى كل حدث على زر منفصل لان لا يوجد الا اثنين فقط

post-217802-004928300 1281699074_thumb.j

لكن بعد ان تم وضع الزر Exit

هناك 3 ازرار

فقام البرنامج بعمل الاتى كما فى الصوره وقد تم شرحه مسبقا

post-217802-023855000 1281699083_thumb.j

وعند التنقل الى القائمه تجد انها تحتوى على باقى الاوامر التى هي من النوع Command.ITEM

post-217802-015965800 1281699091_thumb.j

سوال سوف يخطر على بال احد

هل الزرار Exit يعمل الان ؟؟

لالا

لم يتم عمل الـ Actionالخاص به

ولم يتم تحديد ما يجب فعله عندما يتم استدعاء حدث هذا الزرار

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

يتم تعريف حدث

Command exit;

وبعد ذلك

فى الجزء الخاص بكود الشاشه الاولى


public Form getFirstForm() {
}

يتم اضافه هذا الكود الذى هو تعريف الحدث exit واعطائه نوع الحدث

واضافته الى الـ firstForm


exit = new Command("Exit", Command.EXIT, 0);
firstForm.addCommand(exit);

وبهذا تم اضافه زرار الخروج الى الشاشه الاولى

لكن هل يعمل الزرار

يعنى اذا ضغطت عليه هل ينفذ الخروج ؟؟

لالالا

لم ينفذ شىء لانك لم تحدد له ماذا يفعل فى الداله التى تسمع الى الاحداث

هذه


public void commandAction(Command cmd, Displayable d) {
}

قم باضافه خيار اخر الى مجموعه الـ if الموجوده داخل الداله التى تسمع الى الاحداث


else if (cmd == exit) {
this.destroyApp(true);
}

فهل يعمل هذا الزرار لالا

بقى شىء واحد

هو انك فى داخل الـ else if السابقه

استدعيت


this.destroyApp(true);

هذه الداله موجوده فى برنامجك

اذهب الى بدايه الـ class

سوف تجدها

قوم بكتابه الكود التالى بداخلها


public void destroyApp(boolean unconditional) {
notifyDestroyed();
}

واخيرا يعمل الزرار الخاص بالخروج

لتحميل المشروع بعد التعديل الذى حدث عليه

MobileApplicationTraining.rar

0

شارك هذا الرد


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

بيتهيألي أنك مش هتستفيد كثير لو تعلمت objective c

خصوصاً وأنا بسمع أنه نظام symbian بيودع

تحياتي

أهلا بعلاء بدكش تتشجع زي هويدي وتيجي معانا :blush:

عموما، أولا نظام Symbian لا يودع بل على العكس ربما يتحسن والان جاري التجهيز ل Symbian ^4 ويبدو أنه جيد.

ثانيا : لا يوجد علاقه بين Objective C و Symbian فهذه اللغه لبرمجه ال iPhone وليست لنظام ال Symbian.

@هويدي أنا أشجعك على تعلمها خاصه اذا بدك تصير مليونير :cool:

شاهد التالي يمكن يخليك تتعلمها اليوم

تم تعديل بواسطه مهدي حجازي
0

شارك هذا الرد


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

ايه ده...كل ده بيحصل من ورايا

ما شاء الله اخى محمود شغل جمييييل..؟

بصراحة لم احب بjme ...بس ان شاء الله ابدأ فيها كويس

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

@@@@شىء خارج الموضوع

محتاجة نصيحة تكسر سدة النفس اللى عندى دى

مش ليا مزاج اعمل اى حاجة

اعمل ايه :ohmy:

تم تعديل بواسطه نفرتاري
0

شارك هذا الرد


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

أهلا بعلاء بدكش تتشجع زي هويدي وتيجي معانا :blush:

عموما، أولا نظام Symbian لا يودع بل على العكس ربما يتحسن والان جاري التجهيز ل Symbian ^4 ويبدو أنه جيد.

ثانيا : لا يوجد علاقه بين Objective C و Symbian فهذه اللغه لبرمجه ال iPhone وليست لنظام ال Symbian.

@هويدي أنا أشجعك على تعلمها خاصه اذا بدك تصير مليونير :cool:

شاهد التالي يمكن يخليك تتعلمها اليوم

فعلا اكيد لازم لا يودع لانه يعتبر اسرع نظام تشغيل لانه يتعامل مع الهارد وير الخاص بالمحمول

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

هل برمجه iPhone فقط ام كل اجهزه المحمول نوكيا , سامسونج , موتورلا ؟؟

0

شارك هذا الرد


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

ايه ده...كل ده بيحصل من ورايا

ما شاء الله اخى محمود شغل جمييييل..؟

بصراحة لم احب بjme ...بس ان شاء الله ابدأ فيها كويس

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

@@@@شىء خارج الموضوع

محتاجة نصيحة تكسر سدة النفس اللى عندى دى

مش ليا مزاج اعمل اى حاجة

اعمل ايه :ohmy:

لا هو مش من ورا حد

هو موجود بس انا عن نفسى بدخل على المنتدى العام للجافا بس

بنسى المنتديات اللى فوق دى :lol:

ربنا يخليكى اختى اسراء

ان شاء الله تحبي الـ JME على ادينا ان شاء الله زى حاجات تانيه

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

حاجه تكسر سدة النفس دى

كلى حاجه ملحه :P

لا طبعا

مممكن تشوفى حاجه بتحبيها وتعمليها

او تفكرى فى عمل مشروع معين

او تذاكرى حاجه معينه انتى عاوزه تذاكريها

اهم حاجه لو فضلتى ساكته هتلاقى الملل زاد اووووى

هذا ما كنت اعانى منه

وربنا يوفقنا جميعا

سلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
هل برمجه iPhone فقط ام كل اجهزه المحمول نوكيا , سامسونج , موتورلا ؟؟

objective-c ل iPhone فقط.....

المشكله التي تواجهني جقا أني لا أستطيع تثبيت mac عندي ..... بسبب إمكانيات الجهاز...

0

شارك هذا الرد


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

objective-c ل iPhone فقط.....

المشكله التي تواجهني جقا أني لا أستطيع تثبيت mac عندي ..... بسبب إمكانيات الجهاز...

اممم

كدا تمام

معلش فهمت الكلام خطا

اصله كان قبل المغرب على طول وفتره فطار بقا :lol:

اعذرنى :)

امممم

لكن اعتقد انها مش مشكله لانك فى وقت ان شاء الله هتعرف تحدث الجهاز بتاعك

فاكيد ان شاء الله المشكله دى ليها حل باذن الله ( اسلفك :lol: )؟

ربنا يوفققك ان شاء الله وتتعلمها باذن الله

0

شارك هذا الرد


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

المشكلة إنه جهاز محمول شبه جديد.... يعني هضطر أشتري واحد جديد, و بصراحة الجهاز اللي معايه مكفيني جدا و موش عاوز أتبطر عليه :D

0

شارك هذا الرد


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

المشكلة إنه جهاز محمول شبه جديد.... يعني هضطر أشتري واحد جديد, و بصراحة الجهاز اللي معايه مكفيني جدا و موش عاوز أتبطر عليه :D

امممم

طب ماشى

ايه الامكانيات اللى عاوز تزودها ؟؟؟

انا معايا Hp compaq

core2due 2 , cash 2 , ram 3G , hard 200 G

لكن ممكن اغير الهارد والرمات وانت كمان

0

شارك هذا الرد


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

ليست مسألة إمكانيات الرام و المعالج,, لكن أظن أن أجهزة HP و DELL تمكنك من تنصيب ال MAC عليها... بعكس جهازي السيمنس

0

شارك هذا الرد


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

ليست مسألة إمكانيات الرام و المعالج,, لكن أظن أن أجهزة HP و DELL تمكنك من تنصيب ال MAC عليها... بعكس جهازي السيمنس

اممم

يعنى العيب فى الماركه نفسها

طيب خلاص حاول تشوف بقا حل فى الجهاز العجيب دا

لان بصراحه انا مش بفضل النوع دا ولا التوشيبا

بفضل الHp , Sony , Dell , appel

انما الانواع التانيه دى :mad: لا طبعا

مش برتاح فيهم بحس ان مقاسها صغير ( اصله تى شيرت :lol: )

0

شارك هذا الرد


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

ليست مسألة إمكانيات الرام و المعالج,, لكن أظن أن أجهزة HP و DELL تمكنك من تنصيب ال MAC عليها... بعكس جهازي السيمنس

هويدي اتكل على الله واشتريلك MAC أحسن من التحايل وتنزيله على جهاز مش MAC, لا أدري هل هذه الطريقه ناجحه وتعمل بدون مشاكل, أنا سمعت انها عويصه جدا ومشاكلها كثيره..

0

شارك هذا الرد


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

للأسف أجهزة ال MAC غاليه جدا في مصر (أسمع أنها أعلى من أسعارها الحقيقية بمضاعفات) , و أسهل شئ هو التحايل عليها...

ممكن قريب أشتري جهاز DELL مثلا

0

شارك هذا الرد


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

مممممممممممممممم

يالنسبة أني أتعلم JavaMe كان لي تجربة معاها زي العسل وأنتا عارفها :(

بالنسبة لموضوع objective c أنا كنت أحسبها لـ symbian جيد أن يجد المرء من يقومه

أخيراً بطل يا هويدي تخرب المواضيع تبعت الناس laugh.giflaugh.giflaugh.gif قال ماك قال tongue.gif

تحياتي

0

شارك هذا الرد


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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

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

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