سؤال

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

فعلى سبيل المثال, الشيء الذي فاجأني و يضيع الكثير من الوقت هو غياب العقارات على كائن فئة (شيء افترضت كل OOP اللغات).هناك العديد من gotchas.لقد ذهبت إلى أماكن مختلفة حيث أنها مقارنة تركيب جافا vs C#, ولكن هناك لا يبدو أن يكون أي المواقع التي قل من الأشياء البحث عن عند الانتقال إلى جاوة.

البيئة هي كلها مسألة أخرى كل ذلك معا.بلاك بيري IDE هو ببساطة رهيبة.نظرة يذكرني Borland C++ for Windows 3.1 - انها التي عفا عليها الزمن.بعض القضايا الأخرى المدرجة متقطعا التحسس ، وضعف التصحيح ، الخ...بلاك بيري لا يملك بيتا من الكسوف المساعد, ولكن من دون دعم التصحيح, انها مجرد محرر مع الهوى إعادة بيع ديون الأدوات.

لذا أي مشورة بشأن كيفية مزيج جافا ؟

هل كانت مفيدة؟

المحلول

هذا الرجل هنا قد جعل معكوس انتقالية.حتى انه قائمة أعلى 10 الخلافات من Java و C#.لقد المواضيع تظهر كيف يتم ذلك في جاوة:

مسكتك #10 - أعطني الإخراج القياسي!

الطباعة إلى الإخراج القياسي في جاوة:

System.out.println("Hello");

مسكتك #9 - مساحات == الحرية

في جافا لا تملك حرية مساحات الأسماء.بنية المجلد الخاص بك فئة يجب أن يطابق اسم حزمة.على سبيل المثال, فئة في الحزمة org.اختبار يجب أن يكون في المجلد org/اختبار

مسكتك #8 - ماذا حدث السوبر ؟

في جاوة إلى الرجوع إلى الفائقة استخدام الكلمة المحجوزة super بدلا من base

مسكتك #7 - تسلسل منشئات إلى قاعدة منشئ

لا يكون هذا في جافا.عليك الاتصال منشئ من قبل نفسك

مسكتك #6 - Dagnabit كيف فرعية موجودة الصف ؟

إلى فئة فرعية فئة في جافا القيام بذلك:

public class A extends B {
}

وهذا يعني أن الدرجة A هو فئة فرعية من فئة B.في C# سيكون class A : B

مسكتك #5 - لماذا لا الثوابت تبقى ثابتة ؟

تعريف ثابت في جافا استخدام الكلمة final بدلا من const

مسكتك #4 - أين هو ArrayList, Vector أو Hashtable?

الأكثر استخداما هياكل البيانات في جافا هي HashSet, ArrayList و HashMap.تنفيذ Set, List و Map.بالطبع ، هناك مجموعة أكثر.قراءة المزيد حول المجموعات هنا

مسكتك #3 - من Accessors و Mutators (حاصل على واضعي)

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

مسكتك #2 - لا أستطيع تجاوز!?

لا يجب أن يعلن طريقة virtual في جافا.كل الطرق - باستثناء تلك التي أعلن final - يمكن تجاوزها في جاوة.

و #1 مسكتك...

في جافا البدائية أنواع int, float, double, char و long لا Objects كما في C#.كل منهم على وجوه منها التمثيل مثل Integer, Float, Double, ، وما إلى ذلك.

هذا هو.لا ننسى أن نرى الرابط الأصلي, هناك مناقشة أكثر تفصيلا.

نصائح أخرى

جافا لا تختلف كثيرا عن C#.على بحتة النحوية المستوى ، وفيما يلي بعض المؤشرات التي قد تحصل خلال اليوم:

  1. في جافا لديك أسر اثنين من الاستثناءات: java.lang.Exception وكل ما يشتق منه ، RuntimeException.هذا هو مغزى لأنه في جافا استثناءات فحص;هذا يعني أنه من أجل رمي أي غير وقت استثناء تحتاج أيضا إلى إضافة throws الشرح طريقة الإعلان.وبالتالي فإن أي طريقة استخدام لك سيكون لديك للقبض على هذا الاستثناء أو تعلن أن ذلك كما يلقي نفسه استثناء.الكثير من الاستثناءات لك أمرا مفروغا منه ، مثل NullPointerException أو IllegalArgumentException, في الواقع مستمدة من RuntimeException و بالتالي لا تحتاج إلى تعريف لهم.فحص الاستثناءات هي نقطة خلاف بين اثنين من التخصصات ، لذلك أنصح لك محاولة منهم لنفسك وانظر إذا كان ذلك يساعد أو يزعج لك.على المستوى الشخصي أعتقد فحص الاستثناءات تحسين رمز العوملة ومتانة بشكل ملحوظ.

  2. على الرغم من أن جافا دعمت autoboxing لفترة طويلة, لا يزال هناك عدد قليل من الاختلافات بين C# و Java تطبيقات التي يجب أن تكون على علم.بينما في C# يمكنك أن تستخدم بالتبادل int كما كل نوع قيمة و نوع مرجع في جافا انهم حرفيا ليس نفس النوع:يمكنك الحصول على نوع القيمة البدائية int و مرجع مكتبة نوع java.lang.Integer.وهذا يظهر في اثنين من الطرق الشائعة:لا يمكنك استخدام القيمة أنواع حسب نوع عام المعلمة (لذلك عليك استخدام ArrayList<Integer> بدلا من ArrayList<int>), وفائدة الطرق (مثل parse أو toString) بشكل ثابت تنفيذها في إشارة نوع (حتى انها ليست int a; a.toString(); بل int a; Integer.toString( a );).

  3. جافا نوعين متميزين من تداخل الطبقات ، ج# واحد فقط.في جافا فئة ثابتة والتي لم يعلن عنها مع static التعديل يسمى الطبقة الداخلية, و قد ضمنا الوصول إلى أرفق الفئة سبيل المثال.هذه نقطة مهمة لأنه على عكس C#, Java أي مفهوم من المندوبين ، الطبقات الداخلية في كثير من الأحيان استخدامها لتحقيق نفس النتيجة مع قليل نسبيا النحوية الألم.

  4. الأدوية في جافا يتم تنفيذها في مختلف جذريا الطريقة من#C;عندما الوراثة وضعت جافا تقرر أن التغييرات سوف تكون محض النحوية مع أي وقت التشغيل دعم من أجل الحفاظ على التوافق مع كبار السن VMs.مع عدم المباشرة الأدوية الدعم في وقت التشغيل جافا تنفذ الأدوية باستخدام تقنية تسمى نوع المحو.هناك عدد قليل من العيوب نوع المحو على C# تنفيذ الأدوية ، ولكن أهم نقطة أن تأخذ من هذا أن معلمات أنواع عامة في جافا ليس لديهم مختلف أنواع runtime.وبعبارة أخرى, بعد تجميع أنواع ArrayList<Integer> و ArrayList<String> هي أي ما يعادل.إذا كنت تعمل بشكل كبير مع الأدوية سوف تواجه هذه الاختلافات الكثير في وقت أقرب مما كنت اعتقد.

هناك في رأيي ثلاثة أصعب جوانب لغة C# مطور جروك.بخلاف ذلك هناك أدوات التطوير و مكتبة الفئة.

  1. في جافا, هناك علاقة مباشرة بين حزمة (مساحة), اسم الفئة واسم الملف.تحت الدليل الجذر ، الطبقات com.example.SomeClass و org.apache.SomeOtherClass سوف حرفيا في com/example/SomeClass.class و org/apache/SomeOtherClass.class على التوالي.أن نكون حذرين من محاولة لتحديد فئات متعددة في واحد ملف جافا (فمن الممكن للحصول على دروس خاصة ، ولكن لا ينصح به) ، والتمسك بهذه بنية الدليل حتى كنت أكثر راحة مع بيئة التطوير.

  2. في جافا لديك مفاهيم class-path والفئة محمل التي لا بسهولة خريطة C# (هناك الخام حكمه التي ليست شائعة الاستعمال من قبل معظم .صافي المطورين).Classpath يقول Java VM حيث المكتبات الطبقات هي التي يمكن العثور عليها (سواء لك و النظام المكتبات المشتركة!), ويمكنك التفكير في فئة لوادر كما سياق في أنواع حية.فئة لوادر تستخدم لتحميل أنواع (فئة ملفات) من مواقع مختلفة (القرص المحلي, الانترنت, ملفات الموارد ، غيرها) ولكن أيضا تقييد الوصول إلى تلك الملفات.على سبيل المثال, تطبيق الخادم مثل القط سوف يكون محمل فئة لكل تطبيق مسجل ، أو السياق ؛ وهذا يعني أن فئة ثابتة في التطبيق سوف لا تكون نفس فئة ثابتة في تطبيق ب ، حتى لو كان لديهم نفس الاسم وحتى لو كانت حصة نفس تعليمات البرمجة الأساسية.AppDomains توفير تشبه إلى حد ما وظيفة في .صافي.

  3. فئة Java مكتبة مشابهة BCL;الكثير من الاختلافات التجميل ، ولكن يكفي أن تحصل على الترشح الوثائق (و/أو جوجل) مرارا وتكرارا.للأسف أنا لا أعتقد أن هناك أي شيء القيام به هنا — عليك فقط بناء الألفة مع المكتبات كما تذهب.

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

الجواب القصير هو - انها سوف تكون مزعجة ، ولكن ليس من الصعب.

Java و C# يكون كل نفس المفاهيم و الكثير من المكتبات هي قريبة جدا في الاسلوب ولكن أنت ذاهب للحفاظ على ارتطام رأسك عبر مختلف الخلافات.

إذا كنت تتحدث عن فئة خصائص جافا تلك.بناء الجملة هو

public class MyClass {
    public static int MY_CLASS_PROPERTY = 12;
}

أود أن أقترح على محمل الجد يمكنك الحصول على أفضل IDE.أي من Netbeans, Eclipse, فكرة, JBuider هو الذهاب إلى جعل الانتقال الخاص بك الكثير أكثر متعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top