جاوا (پروگرامنگ زبان)

جاوا ایک عمومی مقصد کی پروگرامنگ زبان ہے جو کلاس پر مبنی ، آبجیکٹ پر مبنی  اور اس کے لیے ڈیزائن کی گئی ہے کہ ممکنہ حد تک عمل درآمد پر انحصار کم ہو۔ اس کا مقصد ایپلی کیشن ڈویلپرز کو ایک بار لکھنے دینا ، کہیں بھی چلانے دینا ہے۔ (ڈبلیو او آر اے) ، اس کا مطلب یہ ہے کہ مرتب شدہ جاوا کوڈ ایسے تمام پلیٹ فارمز پر چل سکتا ہے جو دوبارہ تالیف کی ضرورت کے بغیر جاوا کی حمایت کرتے ہیں۔ جاوا ایپلی کیشنز کو عام طور پر بائیک کوڈ پر مرتب کیا جاتا ہے جو کسی بھی جاوا ورچوئل مشین (JVM) پر چل سکتے ہیں اس سے قطع نظر کہ بنیادی کمپیوٹر فن تعمیر سے قطع نظر۔ جاوا کا نحو C اور C ++ کی طرح ہے ، لیکن اس میں ان دونوں میں سے کم سطح کی سہولیات موجود ہیں۔ 2019 تک ، جاٹہ گٹہب کے مطابق استعمال ہونے والی ایک خاص طور پر مقبول پروگرامنگ زبان تھی ، خاص طور پر کلائنٹ سرور ویب ایپلیکیشنز کے لیے ، جن کی اطلاع 9 ملین ڈویلپرز کے ساتھ ہے 

جاوا کو اصل میں سن مائکرو نظام میں جیمز گوسلنگ نے تیار کیا تھا (جو اس کے بعد اوریکل نے حاصل کیا تھا) اور سن مائکرو سسٹم کے جاوا پلیٹ فارم کے بنیادی جزو کے طور پر 1995 میں جاری کیا گیا تھا۔ اصل اور حوالہ پر عمل درآمد جاوا کمپائلرز ، ورچوئل مشینیں  اور کلاس لائبریریاں اصل میں اتوار کے ذریعہ ملکیتی لائسنس کے تحت جاری کی گئیں۔ مئی 2007 تک ، جاوا کمیونٹی پروسیس کی وضاحتوں کی تعمیل میں ، سن نے GNU جنرل پبلک لائسنس کے تحت اپنی زیادہ تر جاوا ٹکنالوجیوں کو دوبارہ سے منسلک کر دیا تھا۔ دریں اثنا ، دوسروں نے ان سن ٹکنالوجیوں کے متبادل نفاذ تیار کیے ہیں ، جیسے جاوا (بائٹ کوڈ مرتب) کے لیے GNU کمپلر ، GNU Classpath (معیاری لائبریری)  اور IcedTea-Web (اپلیٹس کے لیے براؤزر پلگ ان)۔ 

تازہ ترین ورژن جاوا 13 ہیں ، جو ستمبر 2019 میں ریلیز ہوئے ہیں  اور جاوا 11 ، جو فی الحال تعاون یافتہ طویل مدتی سپورٹ (ایل ٹی ایس) ورژن ہے ، جو 25 ستمبر ، 2018 کو جاری کیا گیا تھا۔ اوریکل جاوا 8 ایل ٹی ایس کو جنوری 2019 میں تجارتی استعمال کے لیے آخری مفت عوامی اپ ڈیٹ کے لیے جاری کیا گیا ہے ، جبکہ یہ دوسری صورت میں جاوا 8 کی کم از کم دسمبر 2020 تک ذاتی استعمال کے لیے عوامی اپ ڈیٹ کے ساتھ تعاون کرے گا۔ اوریکل (اور دیگر) بڑی عمر کے انسٹال کرنے کی انتہائی سفارش کرتے ہیں غیر حل شدہ سیکیورٹی امور کی وجہ سے سنگین خطرات کی وجہ سے جاوا کے ورژن۔ چونکہ جاوا 9 (اور 10 اور 12) اب تعاون یافتہ نہیں ہے ، اوریکل اپنے صارفین کو فوری طور پر تازہ ترین ورژن (فی الحال جاوا 13) یا ایل ٹی ایس کی رہائی میں منتقلی کا مشورہ دیتا ہے۔ 
تصغیر| ڈیوک ، جاوا شوبنکر
تصغیر| جاوا کے خالق ، جیمز گوسلنگ نے 2008 میں
تصغیر| 2002 سے 2018 تک TIOBE پروگرامنگ زبان کی مقبولیت انڈیکس گراف۔ 2015 کے وسط سے جاوا مستقل طور پر سر فہرست ہے۔
جیمس گوسلنگ ، مائک شیریڈن  اور پیٹرک نحٹن نے جون 1991 میں جاوا زبان کے منصوبے کا آغاز کیا۔  جاوا کو اصل میں انٹرایکٹو ٹیلی ویژن کے لیے ڈیزائن کیا گیا تھا ، لیکن اس وقت ڈیجیٹل کیبل ٹیلی ویژن انڈسٹری کے لیے یہ بہت ترقی یافتہ تھا۔  زبان کو ابتدائی طور پر بلوط کے درخت کے بعد *اوک* کہا جاتا تھا جو گوسلنگ کے دفتر کے باہر کھڑا تھا۔ بعد میں یہ منصوبہ *گرین کے* نام سے چلا گیا اور آخر کار جاوا کافی سے ، انڈونیشیا کی کافی سے *جاوا* کا نام تبدیل کر دیا گیا۔  گوسلنگ نے جاوا کو C / C ++ اسٹائل نحو کے ساتھ ڈیزائن کیا تھا جس میں سسٹم اور ایپلیکیشن پروگرامرز واقف ہوں گے۔  

سن مائکرو سسٹم نے جاوا کے طور پر پہلا عوامی عمل جاری کیا &nbsp; 1996 میں 1.0۔  اس نے **ایک بار لکھنے ، کہیں بھی چلانے** (WORA) کا وعدہ کیا تھا ، جس سے مشہور پلیٹ فارمز پر بغیر لاگت رن رن اوقات مہیا ہوگا۔ کافی حد تک محفوظ اور قابل تشکیل سیکیورٹی کی خصوصیت ، اس نے نیٹ ورک اور فائل تک رسائی کی پابندی کی اجازت دی۔ بڑے ویب براؤزروں نے جلد ہی ویب صفحات میں جاوا ایپلٹ چلانے کی صلاحیت کو شامل کر لیا  اور جاوا تیزی سے مقبول ہو گیا۔ جاوا &nbsp; جاوا کے ساتھ سختی سے عمل کرنے کے لیے آرتھر وین ہوف کے ذریعہ جاوا میں 1.0 مرتب دوبارہ لکھا گیا تھا &nbsp; 1.0 زبان کی تصریح۔  جاوا کی آمد کے ساتھ &nbsp; 2 (ابتدائی طور پر J2SE کے طور پر جاری کیا گیا &nbsp; 1.2 دسمبر 1998 میں    1999) ، نئے ورژنوں میں پلیٹ فارم کی مختلف اقسام کے لیے متعدد تشکیلات تشکیل دی گئیں۔ جے 2 ای ای میں عام طور پر سرور ماحول میں چلنے والی انٹرپرائز ایپلی کیشنز کے ل technologies ٹکنالوجی اور API شامل ہیں ، جبکہ موبائل ایپلی کیشنز کے ل optim جے 2 ایم ای کی خصوصیت والے API شامل ہیں۔ ڈیسک ٹاپ ورژن کا نام J2SE رکھا گیا ہے۔ 2006 میں ، مارکیٹنگ کے مقاصد کے لیے ، سن نے نئے J2 ورژن کا نام بالترتیب *جاوا EE* ، *جاوا ME*  اور *جاوا SE رکھا* ۔ 

1997 میں ، سن مائکرو سسٹمز نے جاوا کو باقاعدہ بنانے کے لیے آئی ایس او / آئ سی سی جے ٹی سی 1 اسٹینڈرڈ باڈی اور بعد میں ایکما انٹرنیشنل سے رابطہ کیا ، لیکن جلد ہی اس عمل سے دستبردار ہو گیا۔    جاوا میں ایک رہتا ہے  معیار کے ذریعے کنٹرول کیا، اعلی درجے کا Java کمیونٹی عمل .  ایک زمانے میں ، سن نے اپنے ملکیتی سافٹ ویئر کی حیثیت کے باوجود ، زیادہ تر جاوا پر عمل درآمد کیے۔ جاوا انٹرپرائز سسٹم جیسے خصوصی مصنوعات کے لائسنسوں کی فروخت کے ذریعے سورج نے جاوا سے محصول وصول کیا۔ 

13 نومبر ، 2006 کو ، سن نے GNU جنرل پبلک لائسنس (GPL) کی شرائط کے تحت ، اپنی جاوا ورچوئل مشین (JVM) کو مفت اور اوپن سورس سافٹ ویئر (FOSS) کے طور پر جاری کیا۔ 8 مئی 2007 کو ، سورج نے یہ عمل ختم کیا ، اپنے تمام JVM کا بنیادی کوڈ مفت سافٹ ویئر / اوپن سورس تقسیم کی شرائط کے تحت دستیاب کروایا ، کوڈ کے ایک چھوٹے حصے کو چھوڑ کر جس میں سورج کاپی رائٹ نہیں رکھتا تھا۔  

سن کے نائب صدر امیر گرین نے کہا کہ جاوا کے حوالے سے سورج کا مثالی کردار ایک *مبشر کی* حیثیت سے تھا۔  اوریکل کارپوریشن کے سن rosrosysterosms–––– Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun Sun............. acquisition acquisition acquisition acquisition. acquisition. acquisition.................................. of of ste ste Java Java جاوا ٹکنالوجی کا کارخانہ ہونے کی حیثیت سے اپنے آپ کو شرکت اور شفافیت کی ایک جماعت کو فروغ دینے کے ل re عہد وابستہ کے ساتھ بیان کیا ہے۔  اس سے اوریکل نے گوگل کے خلاف اینڈروئیڈ ایس ڈی کے کے اندر جاوا استعمال کرنے کے لیے ( *[[جاوا (پروگرامنگ زبان)|اینڈروئیڈ]]* سیکشن ملاحظہ کریں) قانونی چارہ جوئی کرنے سے کچھ نہیں روکا۔ جاوا سافٹ ویئر لیپ ٹاپ سے لے کر ڈیٹا سینٹرز تک ، گیم کنسولز سے سائنسی سپر کمپیوٹر تک ہر چیز پر چلتا ہے۔  2 اپریل ، 2010 کو ، جیمز گوسلنگ نے اوریکل سے استعفیٰ دے دیا۔  

جنوری 2016 میں ، اوریکل نے اعلان کیا کہ جے ڈی کے 9 پر مبنی جاوا رن ٹائم ماحول براؤزر پلگ ان کو بند کر دے گا۔  

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

     ، جاوا &nbsp; 8 کی حمایت کی ہے؛ اور جاوا دونوں &nbsp; 8 اور 11 بطور لانگ ٹرم سپورٹ (ایل ٹی ایس) ورژن۔ جاوا کے اہم ریلیز ورژن ، ان کی ریلیز کی تاریخوں کے ساتھ: 
* جے ڈی کے 1.0 (23 جنوری ، 1996)  
* جے ڈی کے 1.1 (19 فروری ، 1996) 
* جے 2 ایس ای 1.2 (8 دسمبر ، 1998) 
* جے 2 ایس ای 1.3 (8 مئی ، 2000) 
* جے 2 ایس ای 1.4 (6 فروری ، 2002) 
* جے 2 ایس ای 5.0 (30 ستمبر ، 2004) 
* جاوا ایس ای 6 (11 دسمبر ، 2006) 
* جاوا ایس ای 7 (28 جولائی ، 2011) 
* جاوا SE 8 (18 مارچ ، 2014) 
* جاوا SE 9 (ستمبر 21 ، 2017) 
* جاوا SE 10 (20 مارچ ، 2018) 
* جاوا SE 11 (ستمبر 25 ، 2018)  
* جاوا SE 12 (19 مارچ ، 2019) 
* جاوا SE 13 (17 ستمبر ، 2019) 

سن نے جاوا کے چار ایڈیشن کی وضاحت کی ہے اور اس کی تائید کی ہے جس میں مختلف اطلاق کے مختلف ماحول کو نشانہ بنایا گیا ہے اور اس کے بہت سے APIs کو منقسم کیا گیا ہے تاکہ وہ پلیٹ فارم میں سے ایک سے تعلق رکھتے ہوں۔ پلیٹ فارم یہ ہیں: 
* اسمارٹ کارڈز کے لیے جاوا کارڈ۔  
* جاوا پلیٹ فارم ، مائکرو ایڈیشن (جاوا ME) - محدود وسائل والے ماحول کو نشانہ بنانا۔  
* جاوا پلیٹ فارم ، معیاری ایڈیشن (جاوا SE) - ھدف بنائے جانے والے ورک اسٹیشن کے ماحول۔  
* جاوا پلیٹ فارم ، انٹرپرائز ایڈیشن (جاوا ای ای) - بڑے تقسیم شدہ انٹرپرائز یا انٹرنیٹ ماحول کو نشانہ بنانا۔  

جاوا APIs میں کلاسز کو الگ الگ گروپوں میں منظم کیا جاتا ہے جسے پیکیجز کہتے ہیں ۔ ہر پیکیج میں متعلقہ انٹرفیس ، کلاس اور مستثنیات کا ایک مجموعہ ہوتا ہے ۔ دستیاب پیکیجز کی تفصیل کے لیے علاحدہ پلیٹ فارم سے رجوع کریں۔    &#x5D; 

سن نے پرسنل جاوا کے نام سے ایک ایڈیشن بھی فراہم کیا جس کو بعد میں ، معیار پر مبنی جاوا ایم ای کنفیگریشن پروفائل جوڑیاں بھی خارج کردی گئیں۔ 

## عملدرآمد کا نظام
جاوا کا ایک ڈیزائن مقصد پورٹیبلٹی ہے ، جس کا مطلب یہ ہے کہ جاوا پلیٹ فارم کے لیے لکھے گئے پروگراموں کو ہارڈ ویئر اور آپریٹنگ سسٹم کے کسی بھی مجموعہ پر مناسب رن ٹائم سپورٹ کے ساتھ چلنا چاہیے۔ یہ جاوا لینگویج کوڈ کو براہ راست فن تعمیر کے مخصوص مشین کوڈ کے بجائے ، انٹرمیڈیٹ کی نمائندگی کے لیے جاوا بائیک کوڈ نامی مرتب کرکے حاصل کیا گیا ہے۔ جاوا بائٹ کوڈ کی ہدایات مشین کوڈ کے مشابہ ہیں ، لیکن ان کا مقصد ایک ورچوئل مشین (VM) کے ذریعہ انجام دیا جانا ہے جو خاص طور پر میزبان ہارڈ ویئر کے لیے لکھا گیا ہے۔ اختتامی صارف عام طور پر جاوا رن ٹائم ماحولیات (JRE) ان کی اپنی مشین پر اسٹینڈ جاوا ایپلی کیشنز کے لیے استعمال کرتے ہیں  یا جاوا ایپلٹ کے لیے کسی ویب براؤزر میں استعمال کرتے ہیں۔ 

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

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

#### کارکردگی
جاوا میں لکھے جانے والے پروگراموں میں ساکھ اور سی ++ میں لکھے ہوئے پروگراموں کی نسبت زیادہ میموری کی ضرورت ہوتی ہے۔   تاہم، اعلی درجے کا Java پروگراموں 'پر عملدرآمد کی رفتار کے تعارف کے ساتھ نمایاں طور پر بہتر صرف میں وقت تالیف لیے 1997/1998 میں جاوا nbsp; 1.1 ،  بہتر کوڈ تجزیہ (جیسے اندرونی طبقات ، سٹرنگ بلڈر کلاس ، اختیاری دعوے وغیرہ) کی حمایت کرنے والی زبان کی خصوصیات میں اضافہ  اور جاوا ورچوئل مشین میں اصلاح ، جیسے ہاٹ سپاٹ 2000 میں سن کے جے وی ایم کے لیے ڈیفالٹ بن گیا۔ . جاوا کے ساتھ &nbsp; 1.5، کارکردگی سمیت java.util.concurrent پیکج کے علاوہ کے ساتھ بہتر کیا گیا تھا تالا مفت کے نفاذ ConcurrentMaps اور دیگر ملٹی کور مجموعوں اور یہ جاوا کے ساتھ مزید بہتر کیا گیا تھا &nbsp; 1.6۔ 

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

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

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

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

جاوا C / C ++ اسٹائل پوائنٹر ریاضی کی حمایت نہیں کرتا ہے ، جہاں آبجیکٹ کے پتوں کو ریاضی کے ساتھ جوڑ توڑ کیا جا سکتا ہے (جیسے آفسیٹ کو جوڑ کر یا گھٹا کر)۔ اس سے کوڑا کرکٹ جمع کرنے والا حوالہ دینے والی اشیاء کو منتقل کرنے کی اجازت دیتا ہے اور قسم کی حفاظت اور حفاظت کو یقینی بناتا ہے۔ 

جیسا کہ C ++ اور کچھ دوسری آبجیکٹ پر مبنی زبانوں میں ہے ، جاوا کی ابتدائی اعداد و شمار کی اقسام کے متغیرات یا تو ڈھیروں کی بجائے سیدھے کھیتوں (اشیاء کے لیے) یا اسٹیک (طریقوں کے لیے) میں محفوظ ہیں ، جیسا کہ غیر قدیم اعداد و شمار کے لیے عام طور پر سچ ہے اقسام (لیکن فرار تجزیہ دیکھیں)۔ جاوا کے ڈیزائنرز نے کارکردگی کی وجوہات کی بنا پر یہ شعوری فیصلہ کیا۔ 

جاوا میں متعدد قسم کے کچرے جمع کرنے والوں پر مشتمل ہے۔ بطور ڈیفالٹ ، ہاٹ اسپاٹ متوازی اسکینج کچرا جمع کرنے والا استعمال کرتا ہے۔  تاہم ، وہاں بہت سے دوسرے کوڑے دان جمع کرنے والے بھی موجود ہیں جو ڈھیروں کا انتظام کرنے میں استعمال ہو سکتے ہیں۔ جاوا میں 90٪ ایپلی کیشنز کے لیے ، کونکورینٹ مارک-سویپ (CMS) کوڑے دان جمع کرنے والا کافی ہے۔  اوریکل کا ارادہ ہے کہ CMS کو کچرے کے پھلے کلیکٹر (G1) سے تبدیل کریں۔  

میموری مینجمنٹ کے مسئلے کو حل کرنے سے پروگرامر کو دوسرے طرح کے وسائل جیسے نیٹ ورک یا ڈیٹا بیس کنیکشنز ، فائل ہینڈلز وغیرہ کو خاص طور پر مستثنیات کی موجودگی میں ہینڈل کرنے کے بوجھ سے نجات نہیں ملتی۔    
&#x5B; *[[ویکیپیڈیا:حوالہ درکار|<span title="This claim needs references to reliable sources.<nowiki/&gt; (November 2019)">حوالہ کی ضرورت</span>]]* &#x5D;

## نحو
تصغیر| جاوا کور کلاسوں کا انحصار گراف (jdeps اور ساتھ پیدا Gephi )
جاوا کا نحو زیادہ تر C ++ سے متاثر ہوتا ہے۔ سی ++ کے برعکس ، جو ساخت ، عمومی اور آبجیکٹ پر مبنی پروگرامنگ کے نحو کو جوڑتا ہے ، جاوا تقریبا خاص طور پر آبجیکٹ پر مبنی زبان کے طور پر بنایا گیا تھا۔  تمام کوڈ کلاسوں کے اندر لکھا ہوا ہے  اور ہر اعداد و شمار کی ایک شے ایک ایسی چیز ہے ، جس میں اعداد و شمار کے ابتدائی اقسام (یعنی اعداد ، اعداد ، عدد نمبر ، بولین اقدار  اور حرف) کو چھوڑ کر ، جو کارکردگی کی وجوہات کی بنا پر اشیاء نہیں ہیں۔ جاوا نے C ++ کے کچھ مشہور پہلوؤں کو دوبارہ استعمال کیا (جیسے    طریقہ)۔ 

C ++ کے برعکس ، جاوا آپریٹرز سے زیادہ بوجھ  یا کلاسوں کے لیے متعدد وراثت کی حمایت نہیں کرتا ہے ، حالانکہ انٹرفیس کے لیے متعدد وراثت کی حمایت کی جاتی ہے۔  

جاوا C ++ کی طرح کے تبصرے استعمال کرتا ہے۔ تبصرے کے تین مختلف اسٹائل ہیں: ایک ہی لائن اسٹائل جس میں دو سلیش ( `//` ) کے ساتھ نشان لگا ہوا ہے ، ایک سے زیادہ لائن اسٹائل `/*` ساتھ کھولا گیا ہے اور `*/` ساتھ بند ہوا ہے  اور جاواڈوک تبصرہ کرنے کا انداز `/**` ساتھ کھلا اور `*/` ساتھ بند ہوا . تبصرہ کا Javadoc سٹائل صارف پروگرام کے لیے دستاویزات کی تخلیق کرنے Javadoc کارکردگی کو چلانے کے لیے اور کچھ پڑھ سکتا اجازت دیتا مربوط ترقی کے ماحول جیسے (IDEs کے) چاند اور سورج گرہن IDE کے اندر رسائی دستاویزات کے لیے ڈویلپرز کی اجازت دینے کے لیے. 

### ہیلو دنیا کی مثال
روایتی ہیلو ورلڈ پروگرام جاوا میں لکھا جا سکتا ہے:  
```java
public class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Prints the string to the console.
  }
}
```
 ماخذ فائلوں کو عوامی کلاس کے نام سے منسوب کرنا ضروری ہے ، جس میں اس کا لاحقہ ہوتا ہے۔ `.java` ، مثال کے طور پر ، `HelloWorldApp.java` `.java` ۔ اس کو سب سے پہلے جاوا کمپلر کا استعمال کرتے ہوئے ، `HelloWorldApp.class` نامی ایک فائل تیار کرتے ہوئے مرتب کیا جانا چاہیے۔ تبھی اس کو پھانسی دی جا سکتی ہے  یا لانچ کیا جا سکتا ہے۔ جاوا سورس فائل میں صرف ایک پبلک کلاس ہو سکتی ہے ، لیکن اس میں ایک عوامی سطح پر رسائی نہ کرنے والے متعدد کلاسوں اور متعدد عوامی داخلی کلاسوں پر مشتمل ہو سکتی ہے۔ سورس فائل میں ایک سے زیادہ کلاسوں پر مشتمل ہے تو، یہ ایک کلاس (کی طرف سے متعارف کرایا بنانے کے لیے ضروری ہے کہ `'''class'''` عوامی (کی طرف سے پہلے مطلوبہ الفاظ کی) `'''public'''` مطلوبہ الفاظ) اور یہ کہ عوام کے طبقے کے نام کے ساتھ سورس فائل کا نام. 

ایک ایسی کلاس جس کو پبلک نہیں قرار دیا گیا وہ کسی بھی جاوا فائل میں اسٹور ہو سکتا ہے۔ مرتب ماخذ فائل میں بیان کردہ ہر کلاس کے لیے ایک کلاس فائل تیار کرے گا۔ کلاس فائل کا نام منسلک *.کلاس* کے ساتھ، کلاس کا نام ہے۔ کلاس فائل بنانے کے ل anonym ، گمنام کلاسوں کے ساتھ ایسا سلوک کیا جاتا ہے جیسے ان کا نام ان کی منسلک کلاس ، ایک *$*  اور ایک عدد اعداد کا مجموعہ تھا۔ 

کلیدی لفظ `'''public'''` اشارہ کرتا ہے کہ دوسرے کلاسوں میں کوڈ سے کسی طریقہ کو طلب کیا جا سکتا ہے  یا یہ کہ کلاس کو درجہ بندی کے باہر کی جماعتیں استعمال کرسکتی ہیں۔ کلاس درجہ بندی کا تعلق اس ڈائریکٹری کے نام سے ہے جس میں .جاوا فائل واقع ہے۔ اسے ایک رس لیول موڈیفائر کہا جاتا ہے۔ دیگر رسائی کی سطح میں تبدیلی کرنے والوں میں `'''private'''` اور `'''protected'''` مطلوبہ الفاظ شامل ہیں۔ 

کسی طریقہ کار کے سامنے کلیدی لفظ `'''static'''`  ایک مستحکم طریقہ کی نشان دہی کرتا ہے ، جو صرف طبقے سے وابستہ ہوتا ہے نہ کہ اس طبقے کی کسی خاص مثال سے۔ کسی بھی چیز کے حوالہ کے بغیر صرف جامد طریقوں کی مدد کی جا سکتی ہے۔ جامد طریقے کسی بھی طبقے کے ممبروں تک رسائی حاصل نہیں کرسکتے جو جامد بھی نہیں ہوتے ہیں۔ مستحکم نامزد کردہ طریقے مثال کے طریقے نہیں ہیں اور کام کرنے کے لیے کلاس کی ایک مخصوص مثال درکار ہوتی ہے۔ 

کلیدی لفظ `'''void'''` ہے اس بات کا اشارہ ہے کہ اہم طریقہ کال کرنے والے کو کوئی قیمت نہیں دیتا ہے۔ اگر جاوا پروگرام میں کسی خامی کے کوڈ کے ساتھ باہر نکلنا ہے تو اسے سسٹم ڈاٹ ایسٹ () کو واضح طور پر کال کرنا چاہیے۔ 

طریقہ کا نام `main` جاوا زبان میں کلیدی لفظ نہیں ہے۔ جاوا لانچر پروگرام پر قابو پانے کے ل calls یہ صرف اس طریقہ کا نام ہے۔ جاوا کی کلاسیں جو منظم ماحول میں چلتی ہیں جیسے ایپلٹ اور انٹرپرائز جاوا بین `main()` طریقہ استعمال نہیں کرتے ہیں اور نہ ان کی ضرورت ہوتی ہے۔ جاوا پروگرام میں متعدد کلاسیں شامل ہو سکتی ہیں جن کے `main` طریقے ہیں ، اس کا مطلب یہ ہے کہ VM کو واضح طور پر بتانے کی ضرورت ہے کہ کونسی کلاس شروع کرنا ہے۔ 

بنیادی طریقہ کار میں **String** اشیاء کی ایک صف کو قبول کرنا چاہیے۔ کنونشن کے ذریعہ ، اسے `'''args'''` طور پر حوالہ دیا جاتا ہے حالانکہ کوئی دوسرا قانونی شناخت کنندہ نام استعمال کیا جا سکتا ہے۔ جاوا کے بعد سے &nbsp; 5 ، مرکزی طریقہ کار متغیر دلائل بھی استعمال کرسکتا ہے ، `public static void main(String... args)` ، جس کے ذریعہ `String` دلائل کی صوابدیدی تعداد کے ساتھ اہم طریقہ کار کی اجازت دی جا سکتی ہے۔ اس متبادل اعلامیے کا اثر Semantically یکساں ہے ( `args` پیرامیٹر سے جو اب بھی `String` اشیاء کی ایک صف ہے) ، لیکن یہ صف کو تخلیق کرنے اور پاس کرنے کے لیے متبادل نحو کی اجازت دیتا ہے۔ 

جاوا لانچر نے دی گئی کلاس (کمانڈ لائن پر یا JAR میں ایک وصف کے طور پر مخصوص) لوڈ کرکے اور اس کا `public static void main(String[])` طریقہ کار شروع کرکے جاوا لانچ کیا۔ کھڑے اکیلے پروگراموں کو واضح طور پر اس طریقہ کار کا اعلان کرنا چاہیے۔ `String[] args` پیرامیٹر String آبجیکٹ کی ایک صف ہے جس میں کلاس کو منظور ہونے والے کسی بھی دلائل پر مشتمل ہوتا ہے۔ `main` پیرامیٹرز اکثر کمانڈ لائن کے ذریعہ گذر جاتے ہیں۔ 

پرنٹنگ جاوا کی معیاری لائبریری کا ایک حصہ ہے: **System** کلاس ایک عوامی جامد فیلڈ کی وضاحت کرتی ہے جسے کال کی **out** ۔ `out` اعتراض کی ایک مثال ہے PrintStream کلاس اور پر ڈیٹا پرنٹنگ کے لیے بہت سے طریقے فراہم کرتا معیار کے باہر سمیت **println(String)** بھی گذر سٹرنگ کے لیے ایک نئی لائن شامل پیدا ہوا. 

تار `"Hello World!"` مرتب کرنے والے کے ذریعہ خود بخود اسٹرنگ آبجیکٹ میں تبدیل ہوجاتا ہے۔ 

### طریقوں کے ساتھ مثال کے طور پر

```java
// This is an example of a single line comment using two slashes

/* This is an example of a multiple line comment using the slash and asterisk.
 This type of comment can be used to hold a lot of information or deactivate
 code, but it is very important to remember to close the comment. */

package fibsandlies;
import java.util.HashMap;

/**
 * This is an example of a Javadoc comment; Javadoc can compile documentation
 * from this text. Javadoc comments must immediately precede the class, method, or field being documented.
 */
public class FibCalculator extends Fibonacci implements Calculator {

  private static Map<Integer, Integer> memoized = new HashMap<Integer, Integer>();

  /*
   * The main method written as follows is used by the JVM as a starting point for the program.
   */
  public static void main(String[] args) {
    memoized.put(1, 1);
    memoized.put(2, 1);
    System.out.println(fibonacci(12)); //Get the 12th Fibonacci number and print to console
  }

  /**
   * An example of a method written in Java, wrapped in a class.
   * Given a non-negative number FIBINDEX, returns
   * the Nth Fibonacci number, where N equals FIBINDEX.
   * @param fibIndex The index of the Fibonacci number
   * @return The Fibonacci number
   */
  public static int fibonacci(int fibIndex) {
    if (memoized.containsKey(fibIndex)) {
      return memoized.get(fibIndex);
    } else {
      int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);
      memoized.put(fibIndex, answer);
      return answer;
    }
  }
}
```


## خصوصی کلاسیں
جاوا ایپلٹ ایک ایسے پروگرام تھے جو دوسرے پروگراموں میں سرایت کرتے تھے ، عام طور پر کسی ویب براؤزر میں دکھائے جانے والے ویب صفحے میں۔ جاوا ایپلٹ API جاوا کے بعد اب فرسودہ ہے &nbsp; 2017 میں 8۔ 

### سریلیٹ
جاوا سرویلیٹ ٹیکنالوجی ویب ڈویلپرز کو ایک ویب سرور کی فعالیت کو بڑھانے اور موجودہ کاروباری سسٹم تک رسائی کے ل a ایک سادہ ، مستقل میکانزم فراہم کرتی ہے۔ سرولیٹس سرور کی طرف سے جاوا EE اجزاء ہیں جو مؤکلوں کی طرف سے درخواستوں (عام طور پر HTTP درخواستوں) کو جواب دیتے ہیں (عام طور پر HTML صفحات)۔

## حوالہ جات

زمرہ:آبجیکٹ اوریئنٹڈ پروگرامنگ زبانیں
زمرہ:پروگرامنگ زبانیں
زمرہ:تصویر کا متروک پیرامیٹر استعمال کرنے والے صفحات
زمرہ:جاوا پلیٹ فارم
زمرہ:جے وی ایم پروگرامنگ لینگویجز
زمرہ:خاندان سی پروگرامنگ زبان
زمرہ:سن مائکروسسٹمز
زمرہ:غیر نظر ثانی شدہ تراجم پر مشتمل صفحات
زمرہ:کلاس بیسڈ پروگرامنگ زبانیں
زمرہ:ویب آرکائیو سانچے مع وے بیک روابط
زمرہ:ویکی ڈیٹا سے مطابقت رکھنے والی مختصر تفصیل
زمرہ:امریکی ایجادات
زمرہ:کراس پلیٹ فارم سافٹ ویئر
زمرہ:تحقیق عملیات
زمرہ:1995ء کے سافٹ ویئر
زمرہ:اوریکل سافٹ ویئر
زمرہ:سن مائکروسسٹمز سافٹ ویئر
زمرہ:کمپیوٹر
زمرہ:سافٹ ویئر انجینئرنگ