CodeGym /جاوا بلاگ /Random-UR /پرانا درجہ 06
John Squirrels
سطح
San Francisco

پرانا درجہ 06

گروپ میں شائع ہوا۔

جاوا ڈویلپر کا روڈ میپ

میرا ایک دوست سوچ رہا تھا کہ ڈویلپرز ہمیشہ اتنے خوش کیوں رہتے ہیں۔ اس کے ساتھ جو جواب آیا وہ سادہ اور حیران کن تھا: وہ وہی کرتے ہیں جو وہ پسند کرتے ہیں اور بڑی رقم کماتے ہیں۔ سافٹ ویئر ڈویلپرز کی دنیا میں خوش آمدید۔ اولڈ لیول 06 - 1

سافٹ ویئر ڈویلپر کی تنخواہ

میں آپ کو ڈویلپرز کی تنخواہوں کے بارے میں بتانا چاہوں گا۔ تنخواہوں کے ساتھ زمین کس طرح ہے، آپ کو کہاں کام کرنا چاہیے، اور کہاں نہیں جانا چاہیے۔ اگر آپ ڈویلپر نہیں ہیں اور اسے خود ہی حل کرنے کی کوشش کرتے ہیں، تو آپ کو ایک متنازعہ ڈیٹا مل سکتا ہے۔ اہم نکتہ یہ ہے کہ ایک ڈویلپر کی تنخواہ کو متاثر کرنے والا بڑا عنصر اہلیت نہیں، بلکہ ملازمت کی جگہ ہے۔ بعض اوقات، مساوی قابلیت کی سطح کو دیکھتے ہوئے، ملازمت کی اچھی اور بری جگہ کے درمیان فرق 2 سے 10 گنا (!) ہو سکتا ہے ہر ایک لمحے میں آپ کی اہلیت مستقل رہتی ہے۔ آپ ایک مہینے میں دوگنا اہل نہیں بن سکتے اور دگنی تنخواہ نہیں پا سکتے۔ لیکن آپ ایک مہینے میں کام کی جگہ بدل سکتے ہیں اور دو گنا بڑی تنخواہ حاصل کر سکتے ہیں۔ ایک بار دو ماہ کے بہاؤ میں میری تنخواہ تین سے بڑھ گئی (!) - ناقابل فراموش تجربہ۔ تو، آئیے معلوم کریں، کون سی جگہ بہترین ہے۔ یہاں کمپنیوں میں تنخواہ کی سطح کو متاثر کرنے والے تین عوامل ہیں:
  1. چاہے کمپنی کا بنیادی کاروبار سافٹ ویئر ڈویلپمنٹ ہے۔
  2. چاہے کمپنی عالمی یا مقامی مارکیٹ پر مبنی ہو۔
  3. مرکزی دفتر کہاں واقع ہے: ترقی یافتہ ملک یا ترقی پذیر ملک
نوٹ کریں کہ آپ جس شہر میں کام کرتے ہیں وہ غیر متعلقہ ہے۔ مطلب، اگر آپ نیویارک میں آپ کے دوست سے بارسلونا میں پانچ گنا کم کماتے ہیں، تو میں نے جن عوامل کا ذکر کیا ہے، اس نے شاید متاثر کیا تھا۔ 

مخصوص نمبر

چونکہ دنیا کے مختلف حصوں میں تنخواہیں مختلف ہوتی ہیں، اس لیے میں 5 سال کے تجربے کے ساتھ سینئر جاوا ڈیولپر کی تنخواہ کو ابتدائی نقطہ کے طور پر لینے اور اسے "5 سال زیادہ سے زیادہ" کہنے کی تجویز کرتا ہوں۔ ذیل کے تمام اعداد و شمار اس رقم کے فیصد کے طور پر دیئے جائیں گے۔ یہاں دنیا کے مختلف شہروں میں "5 سال کی زیادہ سے زیادہ" تنخواہوں کی کچھ مثالیں ہیں: اولڈ لیول 06 - 2ذیل میں دکھایا گیا ہے کہ 5 سال کا تجربہ رکھنے والا جاوا سینئر ڈویلپر جس کمپنی کے لیے کام کرتا ہے اس پر انحصار کرتے ہوئے کتنا کما سکتا ہے: اولڈ لیول 06 - 3اولڈ لیول 06 - 4موجودہ صورتحال کے بارے میں سب سے عجیب بات کیا ہے؟ تمام پروگرامرز میں سے نصف 1 اور 2 سطح کی کمپنیوں میں کام کرتے ہیں۔ کیا آپ جاننا چاہتے ہیں، کیچ کیا ہے؟ 3 اور 4 درجے کی کمپنیوں میں سینکڑوں اسامیاں کھلی ہوئی ہیں۔ یہ کمپنیاں آپ کو زیادہ تنخواہوں اور عام طور پر کام کے بہتر حالات پیش کرنے کے لیے تیار ہیں۔ میں دو جاوا جونیئر کو جانتا ہوں، ان میں سے ایک کو "5 سال کی زیادہ سے زیادہ" (سطح 1 کمپنی) کا تقریباً 3% ادا کرتے ہوئے نوکری ملی، اور دوسرے کو "5 سال کی زیادہ سے زیادہ" تنخواہ (سطح 4) کے 30% کے ساتھ ملازمت ملی۔ تو کم کیوں؟ پروگرامرز کی مانگ پیشکش سے زیادہ ہے – جہاں آپ کو کم معاوضہ دیا جاتا ہے وہاں کام کرنے نہ جائیں! نتیجہ 1: جاوا ڈویلپرز کی اوسط تنخواہ (کسی بھی تجربے کے ساتھ) "5 سال کی زیادہ سے زیادہ" تنخواہ کا 40%-50% ہے۔ نتیجہ 2: 5 سالوں میں آپ کی اوسط تنخواہ "5 سال کی زیادہ سے زیادہ" تنخواہ کا تقریباً 90%-110% ہوگی، اگر آپ 1 اور 2 درجے کی کمپنیوں کے لیے کام نہیں کرتے ہیں، اور کمپنیوں کی سطح 3 اور 4 کے لیے کام کرتے ہیں۔

آپ کیا حاصل کرسکتے ہیں جب تک کہ آپ احمقانہ کام نہ کریں۔

اگر آپ ابھی پروگرامنگ میں اپنی خود تعلیم پر کام کرنا شروع کرتے ہیں، تو آپ کی تنخواہ اس طرح نظر آسکتی ہے: اولڈ لیول 06 - 5

منصوبہ

0-3 ماہ (طالب علم)

آپ پروگرامنگ کے بارے میں بہت کم جانتے ہیں۔ آپ نے اسے بنیادی سطح پر اسکول یا کالج میں پڑھا ہوگا۔ آپ کو جاوا کو پروگرام کرنے اور سیکھنے کا طریقہ سیکھنے کی ضرورت ہے ۔ آپ کا مقصد لیول 3 یا اس سے اوپر کی کمپنی میں جاوا جونیئر ڈیولپر کے طور پر نوکری حاصل کرنا ہے۔ پلان کے پہلے تین ماہ کے لیے آپ کو کچھ نہیں ملے گا، کیونکہ آپ صرف پروگرام کرنا سیکھ رہے ہیں۔ لیکن جتنی جلدی آپ شروع کریں گے اتنا ہی بہتر ہے۔ بہترین وقت ابھی ہے۔ مستقبل میں، جب آپ کا خاندان ہو اور قرضوں کی بھرمار ہو، تو اسے دوبارہ حاصل کرنا بہت مشکل ہو جائے گا۔ اپنی غلطی کو درست کرنے کے لیے آپ کو کم از کم ایک سال کی عام زندگی کی ادائیگی کے لیے رقم الگ کرنی ہوگی۔ احمقانہ غلطیاں نہ کریں۔

3-15 ماہ (جاوا جونیئر ڈیولپر)

آپ پہلے سے ہی ایک سافٹ ویئر ڈویلپر کے طور پر کام کرتے ہیں اور آپ کا تجربہ روزانہ بڑھتا ہے۔ آرام نہ کرو۔ اوئرز پر آرام کرنے سے پہلے آپ کو بہت کچھ کرنا ہے۔ آپ کو کیا کرنے کی ضرورت ہے – ایک مڈل ڈیولپر کے طور پر آپ کو درکار ٹیکنالوجیز کا مطالعہ کریں۔ یہ سب کیا ہے؟ دنیا مسلسل بدل رہی ہے۔ میں آپ کو مشورے دوں گا اور زندگی یہ سب بدل دے گی۔ ویب پر چند اسامیاں تلاش کریں اور دیکھیں کہ آپ کو کیا درخواست دینے کی ضرورت ہے۔ بروس ایکل کی کتاب "تھنکنگ ان جاوا" ضرور پڑھیں۔ جاوا جونیئر ڈیولپر کے طور پر کام کرنے کے پہلے سال میں آپ کا مقصد Java Middle Developer کی سطح تک پہنچنا ہے۔ کوئی نہیں کہتا کہ یہ آسان ہو گا، لیکن یہ مقصد پر مبنی شخص کے لیے ممکن ہے۔ یہ آپ کی تنخواہ میں "5 سال کی زیادہ سے زیادہ" کے 40% تک ($50K SF اور لندن کے لیے، $6K بنگلور کے لیے) تک بڑھائے گا۔

2-d سالہ پروگرامنگ (جاوا مڈل ڈویلپر، لیول 1)

آپ نے پچھلے سال ایک اچھا کام کیا ہے اور اب آپ جاوا مڈل ڈیولپر ہیں۔ آپ سینئر جاوا ڈیولپر کی تنخواہ کا 50% کما کر بہت اچھی زندگی گزار سکتے ہیں۔ آپ کو کام پر کچھ سنجیدہ کام دیے جا رہے ہیں اور آپ کا تجربہ نمایاں طور پر بڑھ رہا ہے۔ آپ دو یا تین سالوں میں Java سینئر ڈویلپر کی سطح تک پہنچ جائیں گے۔ جلدی کرنے کی ضرورت نہیں۔ آپ کو ویسے بھی تنخواہ میں بڑا اوپر نہیں ملے گا۔ آپ کو ڈیزائن کے نمونے سیکھنے کی ضرورت ہے ، پڑھیں - میک کونل کا کوڈ مکمل۔ اپنے کوڈ اور ٹیم کی مہارت کے معیار کو بہترین بنائیں۔ کمپیوٹر پروگرامنگ پر ہر ماہ 1 کتاب پڑھنے کا اصول بنائیں۔ پھر، 4 سالوں میں آپ باقی تمام کتابوں سے 50 زیادہ ہوشیار ہو جائیں گے۔ اسے ملتوی نہ کریں: آپ کو کوئی زیادہ فالتو وقت نہیں ملے گا، اس کے علاوہ، زیادہ تر امکان ہے کہ آپ ایک خاندان شروع کریں گے، یا اگر آپ کے پاس ہے، تو یہ بڑا ہو جائے گا۔ آپ کا مقصد ایک سینئر جاوا ڈیولپر کے طور پر مہارت حاصل کرنے کے لیے چند ٹیکنالوجیز کا انتخاب کرنا ہے۔ آپ ان سب کو نہیں سیکھ سکتے، آپ جانتے ہیں۔ اور ایک ہی مہارت میں گرو بننا ہمیشہ اچھا فیصلہ ہوتا ہے۔ اولڈ لیول 06 - 6

3-ڈی سالہ پروگرامنگ (جاوا مڈل ڈویلپر، لیول 2)

اب آپ ایک تجربہ کار مڈل ڈویلپر ہیں اور آپ ایک سینئر ڈویلپر بننے کے بارے میں سوچ رہے ہیں۔ یہ خوشگوار ہونے کے ساتھ ساتھ معزز بھی ہے۔ آپ کی تنخواہ "5 سال کی زیادہ سے زیادہ" کے 60% سے زیادہ ہے (بنگلور میں $10K، کیف میں $25K، برلن میں $40K، نیویارک میں $80K)۔ اس لمحے سے آپ جیسے پیشہ ور افراد کی مانگ پر پیشکش بڑھ جاتی ہے۔ آپ ہمیشہ ایک دو دنوں میں نوکری تلاش کرنے کے قابل ہو جائیں گے اور آپ شاید ہی کبھی اس سے کم کمائیں گے جتنا آپ اب کرتے ہیں۔ یہ، یقینا، اگر آپ کچھ بیوقوف نہیں کرتے ہیں. آپ کو کیا کرنے کی ضرورت ہے اپنی منتخب کردہ ٹیکنالوجیز کا مطالعہ کرتے رہیں۔ بہتر کام کریں۔ اپنے آجر کی خاطر نہیں، اپنے لیے۔ امید افزا ٹیکنالوجیز پر مشتمل پروجیکٹس میں حصہ لینے کے لیے درخواست دیں (جیسے بگ ڈیٹا، اس وقت یہ مضمون لکھا جا رہا ہے)۔ آپ ویسے بھی دن میں 8 گھنٹے دفتر میں گزارتے ہوں گے، تو کیوں نہ اس کے لیے تھوڑا اور پیسہ حاصل کیا جائے، اور، اس سے بھی زیادہ اہم، سب سے قیمتی تجربہ کیا ہے جس کی آپ کو مستقبل میں ضرورت ہوگی۔ آپ کا مقصد نئی نوکری تلاش کرنا ہے۔ ایک اچھی ٹیم ہمیشہ مل جاتی ہے۔ آپ کو نئے منصوبوں اور ٹیکنالوجیز کا سامنا کرنا پڑے گا۔ آپ کو اپنی کرسی سے جڑنے کی ضرورت نہیں ہے۔ اگر آپ اب بھی تیسرے درجے کی کمپنی میں کام کر رہے ہیں تو چوتھے درجے کی کمپنی میں ملازمت کرنے کے بارے میں سوچیں۔

پانچویں سالہ پروگرامنگ (جاوا سینئر ڈویلپر، لیول 1

اب آپ ایک سینئر ڈویلپر ہیں۔ شاید، آپ اس کے مستحق نہیں تھے، اور آپ اسے محسوس کرتے ہیں۔ پھر بھی، میری مبارکباد۔ اس سے کوئی فرق نہیں پڑتا کہ آپ ابھی اپنے عہدے کے لائق ہیں یا نہیں، بس اس سے فرق پڑتا ہے کہ آپ مستقبل میں اس کے لائق بنیں گے۔ میرے خیال میں آپ اس بات سے اتفاق کریں گے کہ اچھی نوکری حاصل کرنا بہتر ہے اور مطلوبہ سطح تک بڑھنے کے بعد اس کے برعکس۔ مجھے امید ہے کہ آپ مہینے میں ایک کتاب پڑھنے کا میرا مشورہ نہیں بھولے ہوں گے؟ اب کوئی بھی طالب علم آپ کے علم اور مہارت پر رشک کرے گا۔ مزید مخصوص ہونے کے لیے، وہ ان پر دعا کرے گا۔ ذرا اس کے بارے میں سوچیں: آپ کو "5 سال کی زیادہ سے زیادہ" تنخواہ کے 90% کے قریب، سنجیدہ آمدنی ہوئی ہے۔ آپ شاید ابھی جوان ہیں۔ دنیا آپ کے قدموں میں ہے۔ آپ کو جو کچھ کرنے کی ضرورت ہے وہ ہے آپ کی منتخب کردہ ٹیکنالوجیز کا دوبارہ جائزہ لینا۔ شاید، آپ کو مہارت کو تبدیل کرنے کی ضرورت ہے۔ دنیا بدل گئی ہے، ٹیکنالوجیز بدل گئی ہیں، اور آپ نے پچھلے دو سالوں میں کافی علم حاصل کیا ہے۔ جو آپ ابھی منتخب کرتے ہیں وہ اگلے چند سالوں کے لیے آپ کے لیے سرخی بن جائے گی۔ اپنی پسندیدہ ٹیکنالوجیز کا انتخاب کرنے کا وقت آگیا ہے۔ آپ کا مقصد اپنی ترقی کی سمت کا انتخاب کرنا ہے۔ وہ بے شمار ہیں، کوئی ان سب کا نام نہیں لے سکتا، لیکن آپ کا انتخاب ابھی کرنا ہے۔ اگر آپ آج تھوڑی سی تبدیلی کرتے ہیں، تو آپ کو مستقبل میں ایک بڑی تبدیلی ملے گی۔

6 سالہ پروگرامنگ (جاوا سینئر ڈویلپر، سطح 2)

آپ نے اپنے مستقبل کا فیصلہ کر لیا ہے اور آپ اپنے خواب کو پورا کرنے کے لیے کام کر رہے ہیں۔ آگے بڑھنے کی خواہش کے ساتھ صحیح طریقے سے منتخب کردہ سمت – اور نتیجہ طویل نہیں ہوگا۔ مبارک ہو میں یہ دیکھ کر خوش ہوں کہ ایک اور شخص نے اس کا خواب پورا کیا۔ ایک گہرا سچ ہے۔ لوگ اکثر اس بات کا اندازہ لگاتے ہیں کہ وہ ایک سال میں کیا حاصل کر سکتے ہیں اور کم اندازہ لگاتے ہیں کہ وہ پانچ میں کیا کر سکتے ہیں۔ پانچ سال پیچھے دیکھو۔ ایسا ہی ہے. آپ کو جو کام کرنے کی ضرورت ہے وہ یہ ہے کہ غیر دانشمندانہ فیصلوں سے گریز کریں اور سستی نہ کریں۔ آپ کا مقصد سمت کا انتخاب کرنا اور آگے بڑھنا ہے۔ یا آپ نے سوچا کہ یہ یہاں ختم ہوتا ہے؟ اپنی گریجویشن کو یاد رکھیں۔ یہ اختتام نہیں ہے، یہ صرف آغاز ہے.

آپ مستقبل کی مہارت

پرانا درجہ 06 - 7آپ تکنیکی ماہر (اوپری شاخ)، مینجمنٹ (نچلی شاخ) کے طور پر یا ملازمت پر رکھے گئے پیشہ ور/آزاد کنسلٹنٹ (درمیانی شاخ) کے طور پر ترقی کر سکتے ہیں۔ یہ سب اس بات پر منحصر ہے کہ آپ کیا پسند کرتے ہیں۔

جاوا ڈویلپر کا کیریئر

ڈویلپر کا کیریئر کسی دوسرے سے مختلف ہے۔ اچھا پیسہ کمانے کے لیے آپ کو مینیجر بننے کی ضرورت نہیں ہے۔ اکثر ایسا ہوتا ہے کہ ایک سینئر ڈویلپر اپنے مینیجر-باس سے زیادہ کماتا ہے۔ آپ جتنا زیادہ تجربہ حاصل کریں گے آپ کے باس کے ساتھ آپ کے کام کے تعلقات اتنے ہی مضبوط ہوں گے "باس ماتحت" سے "اسٹار اور مینیجر" میں تبدیل ہو جائیں گے۔ یہ جانتے ہوئے کہ ان کے قابل ڈویلپرز پراجیکٹس اور آسامیوں کا انتخاب کرتے ہیں۔ آئیے اپنے ہی لوگوں کے لیے خوش رہیں۔ تو آپ کو اس قدر قابل قدر اور عالمی سطح پر مقبول ڈویلپر بننے کی کیا ضرورت ہے؟ آپ کو سب سے زیادہ مانگی جانے والی اور نئی ٹیکنالوجیز میں بہت بڑا تجربہ ہونا چاہیے۔ اس کو کیسے حاصل کیا جائے؟ ذیل میں دیکھیں. اولڈ لیول 06 - 8جیسے ہی آپ کو ایک ڈویلپر کے طور پر نوکری ملتی ہے، آپ کے ساتھ دو چیزیں ہونے لگتی ہیں۔ پھر بھی، وہ ہمیشہ نظر نہیں آتے ہیں۔ 1. آپ حقیقی منصوبوں میں تجربہ حاصل کرتے ہیں اور تیزی سے ترقی کرتے ہیں۔ اس نوکری پر ایک سال آپ کو کالج میں 5 سال سے زیادہ تجربہ فراہم کرتا ہے۔ تجربہ اتنا اہم مسئلہ ہے کہ وہ پوسٹ کی گئی آسامیوں میں "جاوا ڈویلپر کے ساتھ 3 سال کا تجربہ درکار ہے" لکھتے ہیں۔ 2. آپ دن میں 8 گھنٹے نئی ٹیکنالوجیز کا مطالعہ کرتے ہیں اور اس کے لیے اچھا معاوضہ حاصل کرتے ہیں۔ آپ واقعی اس حقیقت کو بڑھاوا نہیں دے سکتے۔ کچھ معاملات میں آپ کو حاصل ہونے والی مہارتیں اتنی قیمتی ہوتی ہیں کہ آپ انہیں حاصل کرنے کے لیے مفت میں کام کر سکتے تھے یا ادائیگی بھی کر سکتے تھے۔ اگر آپ ایسے پروجیکٹس کا انتخاب کرتے ہیں جن پر آپ دانشمندی سے کام کرتے ہیں، تو آپ کا سوفٹ ویئر ڈویلپر کیرئیر سر پر گھومنے والا ہے۔ تو… کیا چننا ہے؟ اکثر ایسا ہوتا ہے کہ آپ نہیں جانتے کہ کون سی ٹیکنالوجی کارآمد ہوگی، اس لیے آپ "پسند اور پسند نہیں" اور "فیشن کے رجحانات" کا انتخاب کرنا شروع کر دیتے ہیں۔ آپ خوش قسمت ہوسکتے ہیں یا آپ نہیں ہوسکتے ہیں۔ لہذا آپ اپنی منزل کو پہلے ہی جان لیں گے۔ پروگرامرز کے لیے تیار کرنے کے بہت سارے طریقے ہیں، لہذا، اسے آسان بنانے کے لیے، میں ان میں سے کچھ کا انتخاب کروں گا اور آگے کی صورتحال کے بارے میں اپنا وژن لکھوں گا۔ اس پیٹرن کو سخت لکیر نہ سمجھیں۔ یہ واضح کرنے کے لیے پیش کردہ چیزوں کا ایک آسان نظریہ ہے۔

دو سو سالہ ڈویلپر

اگر آپ سب سے زیادہ پروگرامنگ سے لطف اندوز ہوتے ہیں، تو یہ آپ کا طریقہ ہے: سینئر ڈویلپر، پھر ٹیک لیڈ ڈیولپر اور ایک آرکیٹیکٹ۔ اس طرح آپ ڈیولپر کے طور پر 50 سال اور اس سے زیادہ کے لیے کام کر سکتے ہیں۔ زیادہ تر معاملات میں سینئر ڈویلپرز اور ٹیک لیڈ ڈویلپرز کی تنخواہیں ان کے مینیجرز سے زیادہ ہوتی ہیں۔ تو اپنے پیسے کی قیمت حاصل کریں۔

مینیجر آپ خوش قسمت ہیں کہ آپ دوسروں کی طرح نہیں ہیں۔

آپ دشمن کے پاس چلے گئے۔ صرف مذاق کر رہا ہوں۔ اگر آپ عظیم تنظیمی مہارتیں دریافت کرتے ہیں، تو آپ کے طریقے یہ ہیں: ٹیم لیڈ، اور پھر پروجیکٹ مینیجر۔ یہ آپ کو محکمہ کا سربراہ بننے اور اپنا کاروبار کھولنے کا موقع فراہم کرے گا۔ آپ یہی چاہتے ہیں، ہے نا؟

گھر ہے جہاں دل ہے

اولڈ لیول 06 - 9اگر آپ نے پہلے ہی ایک خاندان شروع کیا ہے ، تو، شاید، آپ مضبوط معاشیات والے ملک میں اچھی اور پرسکون زندگی گزارنا چاہتے ہیں۔ شاید آپ کینیڈا، امریکہ، سوئٹزرلینڈ یا یہاں تک کہ آسٹریلیا جانے پر غور کریں۔ آپ کے پاس بہترین ہنر اور ایک پیشہ ہے جس کی طلب ہے۔ آپ کو برتن دھونے سے شروع کرنے کی ضرورت نہیں ہوگی۔ آپ جاوا سینئر ڈویلپر کے طور پر شروع کریں گے۔ شاید، بہت کمائی. برا نہیں، ہا؟

نیپلز دیکھیں اور مریں نہیں۔

آپ کا ابھی تک کوئی خاندان نہیں ہے اور آپ کو سفر کرنا پسند ہے ۔ oDesk آپ کا سب کچھ ہے۔ ایک کلائنٹ تلاش کریں، $20-$50 فی گھنٹہ کی شرح سے اتفاق کریں، اپنے ساتھ ایک لیپ ٹاپ لیں اور جائیں! آپ کی تنخواہ دنیا میں کہیں بھی رہنے کے لیے کافی ہوگی۔ کیوں نہ اپنے خوابوں کو فوراً پورا کرنا شروع کر دیں؟

میں پروگرام نہیں کرنا چاہتی میں لڑکی ہوں..

اگر آپ لڑکی ہیں تو آپ کو زچگی کی چھٹی لینے کی ضرورت پڑ سکتی ہے ۔ یہ ایک جنسی مذاق کی طرح لگتا ہے، جو یہ ہے. پھر بھی، اس میں بہت سی عقل ہے۔ غالباً، زچگی کی چھٹی لینے سے آپ زچگی کی چھٹی کے بہت سارے پیسے حاصل کر سکیں گے (اعلی سماجی تحفظ والے ممالک میں)۔ ایسی کمپنیاں ہیں جو کچھ نہیں ادا کرتی ہیں، اور ایسی کمپنیاں ہیں جو اچھی ادائیگی کرتی ہیں۔ میرے ایک طالب علم کو زچگی کی چھٹی پر جانے والی سالانہ تنخواہ کا ایک تہائی حصہ ملا۔ اور یہ 2009 کے موسم بہار میں، ملازمتوں کی چھانٹی کے دوران ہوا تھا۔ اور ڈیڑھ سال میں آپ کم از کم مڈل ڈویلپر ہونے کے ناطے واپس آ سکتے ہیں۔

لیول 6

پرانا درجہ 06 - 10

1 ایلی آبجیکٹ کی مرئیت۔ خالی

- ارے، امیگو! - ہیلو، ایلی! کیا آپ مجھے آج کوئی دلچسپ بات بتائیں گے؟ - آج میں آپ کو ایک چیز کی زندگی کے بارے میں بتاؤں گا ۔ کسی شے کے بننے کے بعد، یہ اس وقت تک موجود رہتا ہے (زندگی) جب تک کہ کم از کم ایک متغیر اپنا پتہ محفوظ نہ کر لے (کم از کم ایک آبجیکٹ کا حوالہ ہے)۔ اگر اب کوئی حوالہ نہیں ہے، تو اعتراض مر جاتا ہے. مثالیں: اولڈ لیول 06 - 11- "کیٹ ٹومی" آبجیکٹ اس وقت سے صرف ایک لائن میں موجود ہے جب سے یہ بنایا گیا ہے۔ اگلی سطر میں، صرف متغیر اس کے حوالہ کو ذخیرہ کرنے والے کو null پر سیٹ کیا جاتا ہے اور جاوا ورچوئل مشین آبجیکٹ کو تباہ کر دیتی ہے۔ - آبجیکٹ «کیٹ سیمی» اپنی تخلیق کے بعد متغیر cat1 میں محفوظ ہے۔ یا، بلکہ، cat1 آبجیکٹ کا حوالہ محفوظ کرتا ہے۔ پھر اس حوالہ کے نیچے چند لائنیں متغیر cat2 پر کاپی کی جاتی ہیں۔ اس کے بعد کسی اور چیز کا حوالہ cat1 میں محفوظ کیا جاتا ہے، اور «cat Sammy» کا حوالہ صرف cat2 میں ہی رہتا ہے۔ آخر میں، طریقہ مین کی آخری لائن میں، آبجیکٹ کا آخری حوالہ null پر سیٹ کیا گیا ہے۔ - آبجیکٹ «cat Maisy» صرف ایک لائن میں موجود ہے جب سے یہ بنایا گیا ہے۔ اگلی لائن میں متغیر cat2 کو ایک اور قدر تفویض کی گئی ہے اور «cat Maisy» کا حوالہ ضائع ہو گیا ہے۔ چیز ناقابل رسائی ہو جاتی ہے اور اسے ردی کی ٹوکری (مردہ) سمجھا جاتا ہے۔ - آبجیکٹ «بلی ادرک» اس وقت سے موجود ہے جب سے یہ طریقہ کے اختتام تک بنایا گیا ہے۔ رن ٹائم کے وقت جب طریقہ ختم ہو جائے گا، متغیر cat1 تباہ ہو جائے گا، اور آبجیکٹ کے بعد «cat Ginger» بھی تباہ ہو جائے گا۔ - یہ بات واضح ہے. - تاہم، اگر آپ آبجیکٹ کیٹ کو کسی طریقے سے بناتے ہیں اور اس کا حوالہ کلاس متغیر میں محفوظ کرتے ہیں، تو کیٹ اس وقت تک موجود رہے گی جب تک کہ کسی اور موجودہ چیز سے اس کا حوالہ موجود ہو۔ - عام طور پر، کوئی چیز فوری طور پر تباہ نہیں ہوتی ہے۔ جاوا ورچوئل مشین کبھی کبھار غیر استعمال شدہ اشیاء کو ہٹانے کے لیے کوڑا اٹھانے کو چالو کرتی ہے۔ اس کے بارے میں بعد میں بتاؤں گا۔ - اگر آپ چاہتے ہیں کہ کوئی متغیر کسی آبجیکٹ کے حوالہ کو ذخیرہ کرنا بند کردے، تو آپ اسے null value یا کسی اور چیز کا حوالہ تفویض کر سکتے ہیں۔

2 پروفیسر، کچرا جمع کرنے والا

اولڈ لیول 06 - 12- ارے، امیگو! جاوا میں کچرا جمع کرنے کے بارے میں ایک مفید لنک یہ ہے۔ یہ یقینی طور پر میرے بہترین لیکچرز نہیں ہیں، لیکن یہ کافی اچھا ہے: جاوا گاربیج کلیکشن کی بنیادی باتیں

3 ایلی، حتمی شکل دینا

- ہیلو دوبارہ! اب میں آپ کو طریقہ کا مختصر تعارف دوں گا finalize() ۔ اس طریقہ کو جاوا ورچوئل مشین کے ذریعہ آبجیکٹ کے تباہ ہونے سے پہلے کہا جاتا ہے۔ درحقیقت یہ طریقہ کنسٹرکٹر کے مخالف ہے۔ اس طریقہ میں کسی چیز کے ذریعہ استعمال ہونے والے وسائل کو جاری کرنا ممکن ہے۔ - کلاس آبجیکٹ کے پاس یہ طریقہ ہے، لہذا، ہر کلاس میں یہ ہے ( جاوا میں تمام کلاسوں کو کلاس آبجیکٹ سے وراثت میں لیا جاتا ہے اور اس کے طریقوں کی ایک کاپی پر مشتمل ہے )۔ اگر آپ اپنی کلاس میں فائنلائز() طریقہ لکھتے ہیں اور اس کلاس کی اشیاء کے تباہ ہونے سے پہلے اسے کال کیا جائے گا۔ مثال: اولڈ لیول 06 - 13- سمجھ گیا۔ - لیکن ایک چیز ہے۔ جاوا ورچوئل مشین خود فیصلہ کرتی ہے کہ آیا اس طریقہ کو کال کرنا ہے یا نہیں۔ اکثر، طریقہ کار میں بنائی گئی اشیاء اور باہر نکلنے کے بعد ردی کی ٹوکری کے طور پر اعلان کی جاتی ہیں، فوری طور پر اور حتمی () طریقہ کی کال کے بغیر تباہ ہو جاتی ہیں۔ یہ طریقہ بیرونی (جے وی ایم سے باہر) وسائل کی تقسیم پر کنٹرول کا ایک اور ذریعہ ہے۔ جب آپ آبجیکٹ کو تباہ کرنا چاہتے ہیں تو آپ بہتر طور پر تمام استعمال شدہ بیرونی وسائل کو جاری کریں گے اور ذخیرہ شدہ حوالہ جات کو دوبارہ ترتیب دیں گے۔ میں آپ کو اس طریقہ کار کے فوائد اور 10 یا 20 سطحوں میں اس کے کام کی تفصیلات بتاؤں گا۔ اس دوران، آپ کو دو چیزیں معلوم ہونی چاہئیں: ایسا طریقہ موجود ہے، اور ( حیرت! ) اسے ہمیشہ نہیں کہا جاتا ہے۔

4 ایلی، آبجیکٹ لائف ٹائم

- میں آپ کو آبجیکٹ لائف ٹائم کے بارے میں کچھ دلچسپ باتیں بھی بتانا چاہتا ہوں۔ جاوا میں، حادثاتی طور پر چیز کو کھونا بہت مشکل ہے۔ اگر آپ کے پاس آبجیکٹ کا حوالہ ہے تو اس کا مطلب ہے کہ وہ چیز یقینی طور پر زندہ ہے۔ - کسی آبجیکٹ کے حوالہ کے اندر ایک نمبر ذخیرہ کرتا ہے - میموری میں اس آبجیکٹ کا پتہ۔ آپ اس نمبر کو تبدیل نہیں کر سکتے، اسے بڑھا یا گھٹا نہیں سکتے۔ جب آپ کے پاس صرف میموری میں پتہ ہو تو آپ حوالہ نہیں بنا سکتے۔ آپ صرف ایک نیا آبجیکٹ بنا سکتے ہیں اور اس کا حوالہ متغیر کو تفویض کر سکتے ہیں۔ نیا حوالہ حاصل کرنے کا یہ واحد طریقہ ہے۔ - میں سمجھ گیا، اچھا. یعنی، اگر میں تمام آبجیکٹ حوالہ جات کو کالعدم (مٹانے) پر سیٹ کرتا ہوں، تو مجھے کبھی بھی آبجیکٹ کا حوالہ نہیں ملے گا اور اس تک رسائی حاصل نہیں کروں گا؟ - جی ہاں. لیکن اکثر اس کے برعکس ہوتا ہے - بہت زیادہ زندہ اشیاء غیر استعمال شدہ ہیں۔ زیادہ تر پروگرام درجنوں اشیاء بناتے ہیں اور رن ٹائم پر انہیں مختلف فہرستوں میں محفوظ کرتے ہیں، لیکن ان فہرستوں کو کبھی صاف نہیں کرتے۔ - زیادہ تر، پروگرامر ناپسندیدہ اشیاء کو "حذف شدہ" کے طور پر لیبل کرتے ہیں، بس۔ ان کو فہرستوں سے نکالنے کی کوئی پرواہ نہیں کرتا۔ اس لیے بڑے جاوا پروگرام پھول جاتے ہیں - زیادہ سے زیادہ غیر استعمال شدہ اشیاء میموری میں زندہ رہتی ہیں۔ - یہ سب ہے. مستقبل میں میں ہمیشہ آپ کی توجہ غیر استعمال شدہ اشیاء اور ان کے مناسب ٹھکانے کی طرف مبذول کروں گا۔ - ٹھیک ہے، شکریہ. آپ نے حوالہ جات کے بارے میں ایک دو چیزوں کو صاف کیا ہے۔

5 ڈیاگو، آبجیکٹ لائف ٹائم ٹاسک

- ارے، امیگو! یہاں آپ کے لیے کچھ کام ہیں:
کام
1 1. کیٹ کلاس کا طریقہ
فائنل کریں
3 2. کلاسز بلی اور کتے اور ہر کلاس کے لیے فائنلائز() طریقہ ہر کیٹ اور ڈاگ کلاس میں فائنلائز()
طریقہ لکھیں ، جو اسکرین پر ایک پیغام دکھاتا ہے کہ آبجیکٹ تباہ ہو گیا ہے۔
3 3. کیٹ کلاس کی 50,000 اشیاء اور ڈاگ کلاس کی 50,000 اشیاء
ایک لوپ میں بنائیں کیٹ کلاس کی 50,000 اشیاء اور ڈاگ کلاس کی 50,000 اشیاء۔ (جاوا ورچوئل مشین غیر استعمال شدہ اشیاء کو تباہ کر دے گی، اس لیے طریقہ finalize() کو کم از کم ایک بار کہا جائے گا)۔
4 4. کیٹ کاؤنٹر
کیٹ کلاس کنسٹرکٹر [پبلک کیٹ()] میں، کیٹ کاؤنٹر (اسی کلاس کے جامد متغیر catCount) کو 1 تک بڑھا دیں ۔

6 ایلی، جامد کلاسز اور طریقے

- یہاں ایک نیا دلچسپ موضوع ہے۔ میں آپ کو جامد متغیرات اور طریقوں کے بارے میں بتانا چاہتا ہوں۔ - اوہ، میں نے پہلے ہی جامد متغیر کے بارے میں سنا ہے۔ جامد طریقوں کے بارے میں بھی، میرا اندازہ ہے۔ لیکن میں مزید تفصیلات حاصل کرنا چاہتا ہوں۔ - کلاس میں متغیرات کا اعلان کرتے وقت، ہم اس بات کی وضاحت کرتے ہیں کہ آیا یہ متغیرات ایک مشترکہ مثال میں بنائے گئے ہیں، یا کیا ہر چیز کے لیے ان کی کاپیاں بنانا ضروری ہے۔ پہلے سے طے شدہ طور پر، کلاس متغیر کی ایک نئی کاپی اس کلاس کے ہر آبجیکٹ کے لیے بنائی جاتی ہے۔ یہ اس کی طرح دکھتا ہے: اولڈ لیول 06 - 14- اگرچہ متغیرات cat1.name اور cat2.name ایک ہی کلاس میں اعلان کیے گئے ہیں - Cat، وہ مختلف اقدار کو ذخیرہ کرتے ہیں، کیونکہ وہ مختلف اشیاء کے پابند ہیں۔ - یہ بات واضح ہے. - ایک واحد مثال میں ایک جامد متغیر موجود ہے؛ آپ کو کلاس کا نام استعمال کرکے اس تک رسائی حاصل کرنے کی ضرورت ہے: اولڈ لیول 06 - 15- یہ بھی واضح ہے۔ - کلاس کے طریقوں کو بھی دو قسموں میں تقسیم کیا گیا ہے۔ عام طریقوں کو آبجیکٹ پر بلایا جاتا ہے اور اس چیز کے ڈیٹا تک رسائی حاصل ہوتی ہے۔ جامد طریقوں میں ایسی رسائی نہیں ہوتی ہے ، کیونکہ ان کے پاس آبجیکٹ کا حوالہ نہیں ہوتا ہے۔ جامد طریقے اس کلاس کے جامد متغیر یا دیگر جامد طریقوں تک رسائی حاصل کرنے کے قابل ہیں۔ - جامد طریقے غیر جامد طریقوں یا غیر جامد متغیرات تک رسائی حاصل نہیں کرسکتے ہیں! - ایسا کیوں؟ - ہر عام کلاس متغیر کو ایک آبجیکٹ کے اندر رکھا جاتا ہے۔ کوئی بھی طریقہ اس طرح کے متغیر تک صرف اسی صورت میں پہنچ سکتا ہے جب اس میں اس چیز کا حوالہ ہو۔ اس طرح کا حوالہ جامد طریقہ پر منتقل نہیں کیا جاتا ہے۔ - عام طریقوں کے بارے میں کیا خیال ہے؟ - عام طریقہ کو اس چیز کا پوشیدہ حوالہ دیا جاتا ہے جسے اس طریقہ پر کہا جاتا ہے۔ متغیر جو اس حوالہ کو محفوظ کرتا ہے اسے کہا جاتا ہے ۔ اس طرح، طریقہ ہمیشہ اپنے آبجیکٹ کا ڈیٹا حاصل کرسکتا ہے یا اسی آبجیکٹ کے کسی اور غیر جامد طریقہ کو کال کرسکتا ہے۔ - ایک null کو آبجیکٹ کے حوالہ کے بجائے ایک جامد طریقہ پر منتقل کیا جاتا ہے۔ لہذا، ایک جامد طریقہ غیر جامد متغیرات اور طریقوں تک رسائی حاصل نہیں کرسکتا ہے - اس میں صرف اس چیز کا کوئی حوالہ نہیں ہے جس کے وہ پابند ہیں۔ - میں سمجھ گیا، اچھا. - اس طرح عام غیر جامد طریقے کام کرتے ہیں: اولڈ لیول 06 - 16- اور اس طرح جامد طریقے کام کرتے ہیں: اولڈ لیول 06 - 17- ایک متغیر یا طریقہ جامد ہوتا ہے اگر ان کا کلیدی لفظ static کے ساتھ اعلان کیا جاتا ہے۔ - اور اس طرح کے طریقوں کا کیا فائدہ ہے، اگر وہ اتنے محدود ہیں؟ - اس نقطہ نظر کے اپنے فوائد بھی ہیں۔ - سب سے پہلے، آپ کو جامد طریقوں اور متغیرات تک رسائی کے لیے کسی بھی آبجیکٹ کا حوالہ پاس کرنے کی ضرورت نہیں ہے ۔ - دوسرا، بعض اوقات یہ ضروری ہوتا ہے کہ متغیر ایک قسم کا ہو ۔ جیسے، مثال کے طور پر، متغیر System.out (کلاس سسٹم سے باہر جامد متغیر)۔ - اور تیسرا،بعض اوقات کسی بھی چیز کو بنانے کے قابل ہونے سے پہلے کسی طریقہ کو کال کرنا ضروری ہوتا ہے ۔ - کس موقع پر؟ - آپ کو کیوں لگتا ہے کہ طریقہ کار کو جامد قرار دیا گیا ہے؟ کلاس کے میموری میں لوڈ ہونے کے فوراً بعد اسے کال کرنا اس سے پہلے کہ کسی بھی چیز کو تخلیق کرنا ممکن ہو۔

7 ریشا، جامد کلاسز اور طریقے

- جامد طریقوں کے علاوہ جامد کلاسیں بھی ہیں ۔ ہم اس معاملے پر بعد میں غور کریں گے، میں آپ کو صرف اس کی ایک مثال دکھانے جا رہا ہوں: اولڈ لیول 06 - 18- آپ کلاس کیٹ کی جتنی مرضی اشیاء بنا سکتے ہیں۔ ایک جامد متغیر کے برعکس، جو ایک ہی مثال میں موجود ہے۔ - کلاس ڈیکلریشن سے پہلے modifier static کا بنیادی مقصد کلاس Cat اور کلاس StaticClassExample کے درمیان تعلق برقرار رکھنا ہے ۔ عام طور پر، کلاس کیٹ StaticClassExample آبجیکٹ کا پابند نہیں ہے (اس کا پوشیدہ حوالہ نہیں ہے) اور عام (غیر جامد) StaticClassExample متغیرات تک رسائی حاصل نہیں کر سکتا۔ - تو میں دوسری کلاسوں کے اندر کلاسز بنا سکتا ہوں؟ - جی ہاں. جاوا یہ ممکن بناتا ہے۔ اب اس کے بارے میں زیادہ مت سوچو۔ بعد میں میں کچھ اور چیزوں کی وضاحت کروں گا، اور سب کچھ تھوڑا سا آسان ہو جائے گا. - مجھے امید ہے.

8 ڈیاگو، جامد طریقہ پر کام

- ارے، امیگو! جامد طریقوں پر کچھ دلچسپ کام یہ ہیں:
کام
1 1. کلاس کیٹ اور جامد متغیر catCount کلاس Cat میں ایک جامد متغیر int catCount
لکھیں ۔ ایک کنسٹرکٹر [ public Cat() ] بنائیں، جس میں دیئے گئے متغیر کو 1 سے بڑھایا جائے۔
2 2. جامد طریقے: int getCatCount() اور setCatCount(int)
Cat کلاس میں دو جامد طریقے شامل کریں: int getCatCount( ) اور setCatCount(int) جس کا استعمال کرتے ہوئے آپ بلیوں کی تعداد (متغیر catCount) حاصل / تبدیل کرسکتے ہیں۔
3 3. کلاس Util
ایک جامد طریقہ کو نافذ کریں ڈبل getDistance(x1, y1, x2, y2) ۔ اسے پوائنٹس کے درمیان فاصلے کا حساب لگانا چاہیے۔ پاس شدہ پیرامیٹر کے مربع جڑ کا حساب لگانے کے لیے طریقہ double Math.sqrt(double a) کا استعمال کریں
4 4. Class ConsoleReader
ایک کلاس ConsoleReader لکھیں، جس کے 4 جامد طریقے ہوں گے:
- کی بورڈ سے سٹرنگز پڑھنے کے لیے String readString()
- int readInt() کی بورڈ سے نمبر پڑھنے کے لیے
- ڈبل readDouble() کی بورڈ سے فریکشنل نمبرز پڑھنے کے لیے
- void readLn () انٹر دبانے کا انتظار کرنے کے لیے [استعمال readString()]
5 5. Class StringHelper
ایک کلاس StringHelper لکھیں، جس کے 2 جامد طریقے ہوں گے:
- String multiply(String s، int count) کو سٹرنگ کی بار بار گنتی کے اوقات لوٹانا چاہیے۔
- سٹرنگ ضرب (اسٹرنگ s) کو 5 بار دہرائی گئی سٹرنگ کو لوٹانا چاہیے۔

مثال:
Amigo → AmigoAmigoAmigoAmigoAmigo

9 پروفیسر، آبجیکٹ جامد دائرہ کار اور زندگی بھر

اولڈ لیول 06 - 19- یہ میں ہوں دوبارہ. بدقسمتی سے، میں آج آپ کو کوئی لنک نہیں دے سکتا۔ وہ عظیم لیکچر کہیں کھو گئے ہیں۔ مجھے ڈر ہے آج تمہیں خود ہی کرنا پڑے گا۔ لیکن بہتر ہے کہ آپ ایلی اور ریشا کو زیادہ سنیں، وہ آپ کو ہمیشہ کچھ سکھا سکتے ہیں۔ پھر بھی اسے آزمائیں: آبجیکٹ لائف سائیکل

10 جولیو

- ارے، امیگو! آپ نے آج بہت اچھا کام کیا۔ اس لیے میں آپ کو زیادہ نہیں دے سکتا۔ چلو، بیٹھو، شو شروع ہوتا ہے:

11 کیپٹن گلہری

- ہیلو، فوجی! - صبح بخیر صاحب! - میرے پاس آپ کے لیے کچھ اچھی خبریں ہیں۔ اپنی صلاحیتوں کو تقویت دینے کے لیے یہاں ایک فوری چیک ہے۔ اسے ہر روز کریں، اور آپ اپنی صلاحیتوں میں تیزی سے اضافہ کریں گے۔ کام خاص طور پر Intellij IDEA میں کرنے کے لیے بنائے گئے ہیں۔
Intellij Idea میں کرنے کے لیے اضافی کام
1 کلاس کیٹ اور جامد متغیر catCount کلاس کیٹ میں ایک جامد متغیر عوامی int catCount
لکھیں ۔ ایک کنسٹرکٹر [عوامی کیٹ()] بنائیں۔ جب بھی آپ بلی (ایک نئی آبجیکٹ کیٹ) بناتے ہیں تو جامد متغیر catCount کو 1 تک بڑھنے دیں۔ 10 اشیاء کیٹ بنائیں اور متغیر کی قدر دکھائیں catCount ۔
2 2. جامد بلیاں
  1. کیٹ کلاس میں عوامی جامد متغیر بلیوں (ArrayList<Cat>) کو شامل کریں۔
  2. جب بھی آپ ایک بلی (ایک نئی چیز کیٹ) بناتے ہیں، تو اس نئی بلی کو متغیر بلیوں میں شامل کرنے دیں ۔ 10 اشیاء بلی بنائیں۔
  3. طریقہ پرنٹ کیٹس () کو تمام بلیوں کو ظاہر کرنا چاہئے۔ آپ کو طریقہ کار میں متغیر بلیوں کو استعمال کرنے کی ضرورت ہے۔
ٹپ: بلیوں کے
متغیر بنانے کے لیے کوڈ لائن کا استعمال کریں: عوامی جامد ArrayList<Cat> cats = new ArrayList<Cat>();
3 3. ایک سٹیٹک موڈیفائر کو منتقل کریں
ایک سٹیٹک موڈیفائر کو منتقل کریں تاکہ کوڈ کمپائل ہو جائے۔
4 4. جامد مطلوبہ الفاظ کی کم از کم تعداد کوڈ کو مرتب کرنے اور پروگرام کو کامیابی سے مکمل کرنے کے لیے جامد
مطلوبہ الفاظ کی کم از کم تعداد شامل کریں ۔
5 5. کوئی نیا آئیڈیا؟ چلو سوچتے ہیں...
  1. کلاس حل میں ایک عوامی جامد کلاس آئیڈیا لکھیں۔
  2. کسی بھی غیر خالی پیغام کو واپس کرنے کے لیے کلاس آئیڈیا میں ایک طریقہ عوامی String getDescription() لکھیں۔
  3. کلاس سلوشن میں آئیڈیا کی تفصیل ظاہر کرنے کے لیے ایک جامد طریقہ پبلک void printIdea(Idea idea) بنائیں - یہی طریقہ getDescription() واپس کرتا ہے۔
6 6. KissMyShinyMetalAss
KissMyShinyMetalAss نام کی ایک کلاس لکھیں۔ اس کلاس کا ایک آبجیکٹ بنائیں، پھر اسے اسکرین پر ڈسپلے کریں۔
7 7. تین جامد متغیرات کا نام
3 عوامی جامد متغیرات لکھیں: String Solution.name ، String Cat.name ، String Dog.name
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION