جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

جاوا دوسری مشہور زبانوں سے کیسے مختلف ہے؟ جاوا سیکھنے کے لیے پہلی زبان کیوں ہونی چاہیے؟ آئیے ایک ایسا منصوبہ بنائیں جو آپ کو شروع سے اور دوسری زبانوں میں پروگرامنگ کی مہارتوں کو لاگو کر کے جاوا سیکھنے میں مدد فراہم کرے۔ آئیے جاوا میں پروڈکشن کوڈ بنانے اور دوسری زبانوں میں تیار کرنے کے درمیان فرق کی فہرست بنائیں۔ میخائل زاتیپیاکن نے یہ رپورٹ مستقبل کے شرکاء کے لیے ایک میٹنگ میں پڑھی۔ انٹرنشپ Yandex اور دوسرے ابتدائی ڈویلپرز - Java Junior میٹ اپ۔


سب کو ہیلو، میرا نام میشا ہے۔ میں Yandex.Market کا ایک ڈویلپر ہوں، اور آج میں آپ کو بتاؤں گا کہ جاوا کیوں سیکھنا ہے اور اسے مؤثر طریقے سے کیسے کرنا ہے۔ آپ ایک معقول سوال پوچھ سکتے ہیں: میں یہ کہانی کیوں سناؤں گا، اور کئی سالوں کا تجربہ رکھنے والا کوئی مضبوط ڈویلپر کیوں نہیں؟ حقیقت یہ ہے کہ میں نے خود حال ہی میں، تقریباً ڈیڑھ سال پہلے جاوا کا مطالعہ کیا تھا، اس لیے مجھے اب بھی یاد ہے کہ یہ کیسا تھا اور اس میں کیا نقصانات ہیں۔

ایک سال پہلے میں نے Yandex.Market میں انٹرنشپ حاصل کی۔ میں نے بیرو کے لیے بیک اینڈ تیار کیا، خود مارکیٹ کے لیے، شاید آپ نے اسے استعمال کیا ہو۔ اب میں وہاں ایک مختلف ٹیم میں کام کرنا جاری رکھتا ہوں۔ ہم کاروباری شراکت داروں کے لیے Yandex.Market کے لیے ایک تجزیاتی پلیٹ فارم بناتے ہیں۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

آو شروع کریں. جاوا کو عملی نقطہ نظر سے کیوں سیکھیں؟ حقیقت یہ ہے کہ جاوا ایک بہت مشہور پروگرامنگ زبان ہے۔ اس کی ایک بہت بڑی کمیونٹی ہے۔

مثال کے طور پر، ایسا TIOBE انڈیکس ہے، جو پروگرامنگ زبانوں کی مقبولیت کا ایک مقبول انڈیکس ہے، اور وہاں جاوا پہلے نمبر پر ہے۔ اس کے علاوہ، جاب سائٹس پر، آپ شاید دیکھیں گے کہ زیادہ تر آسامیاں جاوا کے بارے میں ہیں، یعنی جاوا میں ترقی کر کے، آپ ہمیشہ نوکری تلاش کر سکتے ہیں۔

چونکہ کمیونٹی بہت بڑی ہے، اس لیے آپ کے کسی بھی سوال کا جواب کچھ اسٹیک اوور فلو یا دیگر سائٹس پر مل جائے گا۔ اس کے علاوہ، جاوا میں ترقی کرتے وقت، آپ اصل میں JVM پر کوڈ لکھ رہے ہوتے ہیں، لہذا آپ آسانی سے کوٹلن، اسکالا اور دیگر زبانوں میں جا سکتے ہیں جو JVM استعمال کرتی ہیں۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

نظریاتی نقطہ نظر سے جاوا کے بارے میں کیا اچھا ہے؟ مختلف پروگرامنگ زبانیں ہیں۔ وہ مختلف مسائل کو حل کرتے ہیں، آپ جانتے ہیں کہ. مثال کے طور پر، فوری مسائل کو حل کرنے کے لیے ایک لائن اسکرپٹ لکھنے کے لیے ازگر بہترین ہے۔

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

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

جاوا کن مسائل کو حل کرتا ہے؟ یہ بنیادی طور پر بڑے پروگراموں کو تیار کرنے کے لیے ایک زبان ہے جو کئی سالوں میں، درجنوں یا سینکڑوں لوگوں کے ذریعے لکھے جاتے ہیں۔ خاص طور پر، Yandex.Market میں بہت سا پسدید جاوا میں لکھا گیا ہے۔ ہمارے پاس کئی شہروں میں تقسیم شدہ ٹیم ہے، ہر ایک میں دس افراد۔ اور کوڈ کو برقرار رکھنا آسان ہے، اسے دس سال یا اس سے زیادہ عرصے سے سپورٹ کیا گیا ہے، اور اسی وقت نئے لوگ آتے ہیں اور اس کوڈ کو سمجھتے ہیں۔

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

جاوا کے لیے بہت سارے فریم ورک اور لائبریریاں بھی ہیں، کیونکہ زبان 15 سال سے زیادہ پرانی ہے۔ اس وقت کے دوران، ہر وہ چیز جو لکھی جا سکتی تھی اس پر لکھی گئی تھی، اس لیے ہر چیز کے لیے بہت ساری لائبریریاں موجود ہیں جن کی آپ کو ضرورت ہو گی۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

میری رائے میں، ابتدائی JA کھلاڑی کو کیا بنیادی مہارتیں ہونی چاہئیں؟ سب سے پہلے، یہ جاوا بنیادی زبان کا علم ہے۔ اگلا کچھ قسم کا انحصار انجیکشن فریم ورک ہے۔ اگلا مقرر کرل اس بارے میں مزید تفصیل سے بات کرے گا۔ میں زیادہ گہرائی میں نہیں جاؤں گا۔ اگلا فن تعمیر اور ڈیزائن پیٹرن ہے. ہمیں بڑی ایپلی کیشنز لکھنے کے لیے تعمیراتی لحاظ سے خوبصورت کوڈ لکھنے کے قابل ہونا چاہیے۔ اور یہ ڈیٹا بیس کے ساتھ کام کرنے کے کاموں کے لیے کسی قسم کا SQL یا ORM ہے۔ اور یہ پسدید پر زیادہ لاگو ہوتا ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

جاؤ! جاوا کور۔ میں واقعی یہاں امریکہ کو نہیں دریافت کروں گا — آپ کو خود زبان جاننے کی ضرورت ہے۔ جس پر آپ کو توجہ دینی چاہیے۔ سب سے پہلے، جاوا نے حالیہ برسوں میں بہت سارے ورژن جاری کیے ہیں، یعنی 2014-2015 میں ساتواں ریلیز ہوا، پھر آٹھواں، نواں، دسواں، بہت سارے نئے ورژن، اور ان میں بہت سی نئی ٹھنڈی چیزیں متعارف کروائی گئیں۔ مثال کے طور پر، Java Stream API، lambda، وغیرہ۔ بہت ٹھنڈی، تازہ، ٹھنڈی چیزیں جو پروڈکشن کوڈ میں استعمال ہوتی ہیں، وہ انٹرویوز میں کیا پوچھتی ہیں اور جن کے بارے میں آپ کو جاننے کی ضرورت ہے۔ لہذا، آپ کو جاوا-4 لائبریری میں شیلف سے کتاب نہیں لینا چاہئے اور اسے سیکھنا چاہئے۔ یہ ہمارا منصوبہ ہے: ہم Java-8 یا اس سے زیادہ سیکھتے ہیں۔

ہم سٹریم API، var، وغیرہ جیسی اختراعات پر پوری توجہ دیتے ہیں۔ ان سے انٹرویو کے دوران پوچھا جاتا ہے اور انہیں مسلسل پیداوار میں استعمال کیا جاتا ہے۔ یعنی Stream API loops سے کہیں زیادہ ٹھنڈا ہے، عام طور پر، ایک بہت ہی عمدہ چیز۔ ضرور توجہ فرمائیں۔

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

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

ڈیٹا ڈھانچے. آپ ڈھانچے کے بغیر نہیں جا سکتے، لیکن یہ بہت اچھا ہو گا اگر آپ صرف یہ نہیں جانتے کہ سیٹ، لغات اور شیٹس موجود ہیں۔ اور ڈھانچے کے مختلف نفاذ۔ مثال کے طور پر، جاوا میں ایک ہی لغت میں بہت سے نفاذ ہیں، بشمول HashMap اور TreeMap۔ ان کے پاس مختلف علامات ہیں، وہ اندر سے مختلف طریقے سے بنائے گئے ہیں۔ آپ کو یہ جاننے کی ضرورت ہے کہ وہ کس طرح مختلف ہیں اور کون سا استعمال کرنا ہے۔

یہ بھی بہت اچھا ہو گا اگر آپ جانتے ہیں کہ یہ ڈیٹا ڈھانچے اندرونی طور پر کیسے کام کرتے ہیں۔ یعنی، ان کی علامات کو جاننا آسان نہیں ہے - بیٹ کتنا کام کرتا ہے، پاس کتنی دیر تک کام کرتا ہے، لیکن ڈھانچہ اندر کیسے کام کرتا ہے - مثال کے طور پر، HashMap میں ایک بالٹی کیا ہے۔

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

جیسے ہی آپ کسی بھی بڑے کوڈ، کمپلیکس، لائبریریوں کا استعمال کرتے ہوئے، ملٹی کلاس کوڈ لکھنا شروع کریں گے، آپ کو احساس ہو جائے گا کہ سسٹمز کی تعمیر اور انحصار کو حل کیے بغیر یہ آپ کے لیے مشکل ہے۔ یہ بنیادی طور پر ماون اور گریڈل ہیں۔ وہ آپ کو ایک لائن میں اپنے پروجیکٹ میں لائبریریاں درآمد کرنے کی اجازت دیتے ہیں۔ یعنی، آپ ایک لائن کا xml لکھتے ہیں اور پروجیکٹ میں لائبریریاں درآمد کرتے ہیں۔ عظیم نظام. وہ تقریبا ایک جیسے ہیں، یا تو ایک کا استعمال کریں - Maven یا Gradle.

اگلا - کسی قسم کا ورژن کنٹرول سسٹم۔ میں گٹ کی سفارش کرتا ہوں کیونکہ یہ مقبول ہے اور اس میں بہت سارے ٹیوٹوریل ہیں۔ تقریباً ہر کوئی Git استعمال کرتا ہے، یہ ایک اچھی چیز ہے، آپ اس کے بغیر نہیں رہ سکتے۔

اور کسی قسم کا ترقیاتی ماحول۔ میں IntelliJ Idea کی سفارش کرتا ہوں۔ یہ ترقی کے عمل کو بہت تیز کرتا ہے، آپ کی بہت مدد کرتا ہے، آپ کے لیے تمام بوائلر پلیٹ کوڈ لکھتا ہے، عام طور پر، یہ بہت اچھا ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

سلائیڈ سے لنکس: ایس کیو ایل زو, habrapost

ایس کیو ایل۔ بیک اینڈرز کے بارے میں تھوڑا سا۔ اصل میں یہاں ایک مضحکہ خیز معاملہ تھا۔ میرے دوسرے انٹرنشپ انٹرویو سے دو دن پہلے، ایک HR لڑکی نے مجھے فون کیا اور کہا کہ دو دن میں وہ مجھ سے SQL اور HTTP کے بارے میں پوچھیں گے، مجھے اسے سیکھنے کی ضرورت ہے۔ اور میں SQL یا HTTP کے بارے میں تقریباً کچھ نہیں جانتا تھا۔ اور مجھے یہ ٹھنڈی سائٹ ملی - ایس کیو ایل زو. میں نے 12 گھنٹے میں اس پر ایس کیو ایل سیکھا، میرا مطلب ہے، ایس کیو ایل نحو، SELECT سوالات کیسے لکھیں، جوائن وغیرہ۔ بہت عمدہ سائٹ، میں اس کی سفارش کرتا ہوں۔ درحقیقت، 12 گھنٹوں میں میں نے 90% سیکھ لیا جو میں اب جانتا ہوں۔

اور ڈیٹا بیس کے فن تعمیر کو جاننا بھی بہت اچھا ہے۔ یہ تمام قسم کی چابیاں، اشاریہ جات، نارملائزیشن ہیں۔ Habré پر اس بارے میں پوسٹس کا ایک سلسلہ ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

جاوا میں، ایس کیو ایل کے علاوہ، تمام قسم کے آبجیکٹ-ریلیشنل میپنگ سسٹمز ہیں جیسے JPA۔ کچھ کوڈ ہے۔ پہلے طریقہ میں کچھ ایس کیو ایل کوڈ ہے - SELECT id name FROM info.users WHERE id IN userIds۔ صارفین کے ڈیٹا بیس سے، ٹیبل سے، ان کی شناخت اور نام حاصل کیے جاتے ہیں۔

اگلا، ایک مخصوص میپر ہے جو کسی چیز کو بیس سے جاوا آبجیکٹ میں بدل دیتا ہے۔ اور نیچے ایک تیسرا طریقہ ہے جو دراصل اس کوڈ پر عمل کرتا ہے۔ یہ سب JPA کا استعمال کرتے ہوئے ایک لائن کے ساتھ تبدیل کیا جا سکتا ہے، جو نیچے لکھا گیا ہے۔ یہ ایک ہی کام کرتا ہے - تمام ByIdIn کو تلاش کریں۔ یعنی طریقہ کے نام کی بنیاد پر، یہ آپ کے لیے ایک SQL استفسار تیار کرتا ہے۔

بہت ٹھنڈی بات۔ میں نے خود، جب میں SQL نہیں جانتا تھا، JPA استعمال کیا۔ عام طور پر، توجہ دینا. اگر آپ SQL سیکھنے میں بہت سست ہیں، تو یہ ایک تباہی ہے۔ اور، عام طور پر، آگ!

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

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

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

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

بہار لکھنے کے ٹیسٹ کو بھی آسان بناتی ہے۔ بڑی ترقی میں جانچ کے بغیر کوئی راستہ نہیں ہے۔ کوڈ کو جانچنے کی ضرورت ہے۔ اس مقصد کے لیے جاوا کے پاس ایک ٹھنڈی لائبریری JUnit 5 ہے۔ اور عام طور پر JUnit، لیکن تازہ ترین ورژن پانچواں ہے۔ جانچ کے لیے سب کچھ ہے، ہر قسم کے دعوے اور دوسری چیزیں۔

اور ایک زبردست موکیٹو فریم ورک ہے۔ تصور کریں کہ آپ کے پاس کچھ فعالیت ہے جسے آپ جانچنا چاہتے ہیں۔ فعالیت بہت ساری چیزیں کرتی ہے، بشمول، درمیان میں کہیں، یہ آپ کی ID کے ساتھ VKontakte میں لاگ ان ہوتی ہے، مثال کے طور پر، اور ID سے VKontakte صارف کا پہلا اور آخری نام وصول کرتا ہے۔ آپ شاید VKontakte کو ٹیسٹوں میں شامل نہیں کریں گے، یہ عجیب بات ہے۔ لیکن آپ کو فعالیت کو جانچنے کی ضرورت ہے، لہذا آپ نے یہ کلاس بنائی، موکیٹو کا استعمال کرتے ہوئے، اسے موک کیا، اس کی تقلید کی۔

آپ کہیں گے کہ جب اس کلاس میں فلاں اور فلاں آئی ڈی کے ساتھ کوئی درخواست آتی ہے، تو یہ کچھ آخری نام لوٹاتا ہے، مثال کے طور پر، واسیا پپکن۔ اور یہ کام کرے گا۔ یعنی، آپ mok ایک کلاس کے لیے تمام فعالیت کی جانچ کریں گے۔ بہت ٹھنڈی بات۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

سلائیڈ سے لنک

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

سب سے زیادہ مقبول پیٹرن کے ساتھ ایک ویب سائٹ ہے - refactoring.guru، آپ اسے پڑھ سکتے ہیں، معلوم کر سکتے ہیں کہ وہاں کیا پیٹرن ہیں، تھیوری کا ایک گروپ پڑھیں۔ مسئلہ یہ ہے کہ یہ عملی طور پر بیکار ہے۔ حقیقت میں، مشق کے بغیر پیٹرن خاص طور پر مفید نہیں ہیں.

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

اور جب تک آپ عملی طور پر کسی دوسرے شخص کے کوڈ میں ایسی جگہ نہیں دیکھتے جس پر یہ نمونہ لاگو ہوتا ہے، آپ اسے خود لاگو نہیں کر پائیں گے۔ لہذا، پیٹرن کے ساتھ مشق بہت ضروری ہے. اور صرف refactoring.guru پر ان کے بارے میں پڑھنا زیادہ مددگار نہیں ہے، لیکن یہ یقینی طور پر کرنے کے قابل ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

پیٹرن کی ضرورت کیوں ہے؟ ہم کہتے ہیں کہ آپ کے پاس ایک مخصوص صارف کی کلاس ہے۔ اس کی ایک شناخت اور ایک نام ہے۔ ہر صارف کے پاس ایک شناخت اور نام دونوں ہونا ضروری ہے۔ اوپر بائیں طرف کلاس روم ہے۔

صارف کو شروع کرنے کے طریقے کیا ہیں؟ دو اختیارات ہیں - یا تو کنسٹرکٹر یا سیٹر۔ دونوں طریقوں کے نقصانات کیا ہیں؟

کنسٹرکٹر نیا صارف (7، "بانڈ")، ٹھیک ہے۔ اب ہم کہتے ہیں کہ ہمارے پاس صارف کی کلاس نہیں ہے، لیکن کوئی اور ہے، سات عددی فیلڈز کے ساتھ۔ آپ کے پاس ایک کنسٹرکٹر ہوگا جس میں لگاتار سات نمبر ہوں گے۔ یہ واضح نہیں ہے کہ یہ نمبر کیا ہیں اور ان میں سے کون کون سی پراپرٹی سے تعلق رکھتا ہے۔ ڈیزائنر عظیم نہیں ہے۔

دوسرا آپشن سیٹر ہے۔ آپ واضح طور پر لکھتے ہیں: setId(7)، setName("Bond")۔ آپ سمجھتے ہیں کہ کونسی پراپرٹی کس فیلڈ سے تعلق رکھتی ہے۔ لیکن سیٹر کو ایک مسئلہ ہے۔ سب سے پہلے، آپ کسی چیز کو تفویض کرنا بھول سکتے ہیں، اور دوسرا، آپ کا اعتراض بدلنے والا نکلا۔ یہ تھریڈ محفوظ نہیں ہے اور کوڈ کی پڑھنے کی اہلیت کو قدرے کم کرتا ہے۔ یہی وجہ ہے کہ لوگ ایک ٹھنڈا نمونہ لے کر آئے - بلڈر۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

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

مسائل کیا ہیں؟ یہاں ہمارے پاس کلاسک بلڈر ہے۔ مسئلہ یہ ہے کہ ہم اب بھی کسی فیلڈ میں چیک کرنا بھول سکتے ہیں۔ اور اگر ہم آئی ڈی پر جانا بھول گئے ہیں، اس صورت میں بلڈر میں اسے صفر پر شروع کیا جاتا ہے، کیونکہ int قسم منسوخ نہیں ہوتی ہے۔ اور اگر ہم نام "بانڈ" بناتے ہیں اور آئی ڈی آفس جانا بھول جاتے ہیں، تو ہمارے پاس ایک نیا صارف ہوگا جس کا آئی ڈی "0" اور نام "بانڈ" ہوگا۔ ٹھنڈا نہیں۔

آئیے اس سے لڑنے کی کوشش کریں۔ بلڈر میں ہم int کو int میں تبدیل کریں گے تاکہ یہ کالعدم ہو جائے۔ اب سب کچھ بہت اچھا ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

اگر ہم "بانڈ" نام کے ساتھ صارف بنانے کی کوشش کرتے ہیں، اس کی ID ڈالنا بھول جاتے ہیں، تو ہمیں ایک null pointer استثنا ملے گا، کیونکہ ID nullable نہیں ہے، اور Builder کے پاس null، خاص طور پر پوائنٹر استثناء ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

لیکن ہم پھر بھی نام رکھنا بھول سکتے ہیں، اس لیے ہم آبجیکٹ ری پلے کو null پر سیٹ کرتے ہیں۔ اب، جب ہم Builder سے اپنا آبجیکٹ بناتے ہیں، تو یہ چیک کرتا ہے کہ فیلڈ nullable نہیں ہے۔ اور یہ سب کچھ نہیں ہے۔

آئیے آخری مثال کو دیکھتے ہیں۔ اس معاملے میں، اگر ہم کسی طرح سے ID کے رن ٹائم میں null ڈال دیتے ہیں، تو یہ جان کر بہت اچھا ہو گا کہ آپ نے یہ کیا ہے اور یہ اچھا نہیں ہے کہ آپ اب غلطی کر رہے ہیں۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

آپ کو صارف کی تخلیق کے وقت نہیں بلکہ جب آپ ID پر null سیٹ کرتے ہیں تو غلطی پھینکنے کی ضرورت ہے۔ لہذا، بلڈر میں ہم سیٹر انٹیجر کو int میں تبدیل کریں گے، اور وہ فوری طور پر قسم کھائے گا کہ انہوں نے null کو پھینک دیا ہے۔

مختصر یہ کہ بات کیا ہے؟ ایک سادہ بلڈر پیٹرن ہے، لیکن اس کے نفاذ میں بھی کچھ باریکیاں ہیں، لہذا پیٹرن کے مختلف نفاذ کو دیکھنا بہت اچھا ہے۔ ہر پیٹرن کے درجنوں نفاذ ہوتے ہیں۔ یہ سب بہت دلچسپ ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

ہم پروڈکشن کوڈ میں بلڈر کیسے لکھتے ہیں؟ یہاں ہمارا صارف ہے۔ ہم لومبوک لائبریری سے اس کے ساتھ ایک بلڈر روٹیشن منسلک کرتے ہیں، اور یہ خود ہمارے لیے ایک بلڈر تیار کرتا ہے۔ یعنی، ہم کوئی کوڈ نہیں لکھتے، لیکن جاوا پہلے ہی یہ سمجھتا ہے کہ اس کلاس کا ایک بلڈر ہے، اور ہم اسے اس طرح کہہ سکتے ہیں۔

میں پہلے ہی کہہ چکا ہوں کہ جاوا میں تقریباً ہر چیز کے لیے لائبریریاں ہیں، بشمول لومبوک، ایک عمدہ لائبریری جو آپ کو بوائلر پلیٹ لکھنے سے بچنے کی اجازت دیتی ہے۔ بلڈر، جی ای ٹی۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

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

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

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

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

یہاں میری سرور ایپلی کیشن کی ایک مثال ہے۔ اپنے دوسرے سال میں، میں نے لڑکوں کے ساتھ ایک ٹرم پیپر لکھا۔ وہ تقریبات کے انعقاد کے لیے ایک موبائل ایپلیکیشن لکھ رہے تھے۔ وہاں، صارفین VKontakte کے ذریعے لاگ ان کر سکتے ہیں، نقشے پر پوائنٹس رکھ سکتے ہیں، ایونٹس بنا سکتے ہیں، اپنے دوستوں کو ان میں مدعو کر سکتے ہیں، ایونٹس کی تصاویر محفوظ کر سکتے ہیں، وغیرہ۔

میں نے اس منصوبے میں کیا کیا؟ ایس کیو ایل کا استعمال کیے بغیر اسپرنگ بوٹ میں سرور ایپلی کیشن لکھی۔ میں اسے نہیں جانتا تھا، میں نے JPA استعمال کیا۔ یہ کیا کر سکتا تھا؟ OAuth-2 کے ذریعے VK میں لاگ ان کریں۔ صارف کا ٹوکن لیں، اس کے ساتھ VK پر جائیں، چیک کریں کہ یہ حقیقی صارف ہے۔ VKontakte کے ذریعے صارفین کے بارے میں معلومات حاصل کریں۔ یہ جے پی اے کے ذریعے بھی ڈیٹا بیس میں معلومات کو محفوظ کرنے کے قابل تھا۔ کمپیوٹر میموری میں تصاویر اور دیگر فائلوں کو مہارت کے ساتھ محفوظ کریں، اور ان کے لنکس کو ڈیٹا بیس میں محفوظ کریں۔ اس وقت میں نہیں جانتا تھا کہ ڈیٹا بیس میں CLOB اشیاء موجود ہیں، لہذا میں نے اسے اس طرح کیا۔ صارفین، کلائنٹ ایپلی کیشنز کے لیے ایک REST API موجود تھا۔ اور بنیادی فعالیت کے لیے یونٹ ٹیسٹ تھے۔

[…] جاوا کے بارے میں میری کامیاب سیکھنے کی ایک چھوٹی سی مثال۔ یونیورسٹی میں میرے پہلے سال میں، مجھے C# پڑھایا گیا اور OOP پروگرامنگ کی سمجھ دی گئی - کلاسز، انٹرفیس، خلاصہ کیا ہیں، اور ان کی ضرورت کیوں ہے۔ اس نے میری بہت مدد کی۔ اس کے بغیر جاوا سیکھنا کافی مشکل ہے؛ یہ واضح نہیں ہے کہ کلاسز کی ضرورت کیوں ہے۔

جاوا کیوں سیکھیں اور اسے مؤثر طریقے سے کیسے کریں۔ Yandex رپورٹ

یونیورسٹی میں میرے دوسرے سال میں، انہوں نے دوبارہ جاوا کور پڑھایا، لیکن میں وہیں نہیں رکا، میں خود اسپرنگ کا مطالعہ کرنے گیا اور ایک کورس پیپر لکھا، اپنا پروجیکٹ، جس کا میں نے اوپر ذکر کیا۔ اور اس سب کے ساتھ، میں Yandex میں انٹرنشپ کے لیے گیا، ایک انٹرویو پاس کیا، اور Yandex.Market میں داخل ہوا۔ وہاں میں نے بیرو کے لیے بیک اینڈ لکھا، یہ ہمارا بازار ہے، اور خود Yandex.Market کے لیے۔

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

شکریہ! مفید لنکس:
- "جاوا 8. ابتدائی رہنما".
- ڈیٹا ڈھانچے.
- ایس کیو ایل زو.
- ڈیٹا بیس کو معمول بنانا.
- ڈیزائن پیٹرن.
- ڈیزائن پیٹرن.
- صاف کوڈ.
- موثر جاوا.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں