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

جاوا اک عمومی مقصد د‏‏ی پروگرامنگ بولی اے جو کلاس اُتے مبنی ، آبجیکٹ اُتے مبنی ، تے اس دے لئی ڈیزائن کيتی گئی اے کہ ممکنہ حد تک عمل درآمد اُتے انحصار کم ہوئے۔ اس دا مقصد ایپلی کیشن ڈویلپرز نو‏‏ں اک بار لکھنے دینا ، کدرے وی چلانے دینا ا‏‏ے۔ (ڈبلیو او آر اے) ، اس دا مطلب ایہ اے کہ مرتب شدہ جاوا کوڈ ایداں دے تمام پلیٹ فارمز اُتے چل سکدا اے جو دوبارہ تالیف کيتی ضرورت دے بغیر جاوا د‏‏ی حمایت کردے ني‏‏‏‏ں۔ جاوا ایپلی کیشنز نو‏‏ں عام طور اُتے بائیک کوڈ اُتے مرتب کيتا جاندا اے جو کسی وی جاوا ورچوئل مشین (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) یا ایل ٹی ایس د‏‏ی رہائی وچ منتقلی دا مشورہ دیندا ا‏‏ے۔
thumb| ڈیوک ، جاوا شوبنکر
thumb| جاوا دے خالق ، جیمز گوسلنگ نے 2008 وچ
thumb| 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;

## نحو
thumb| جاوا کور کلاساں دا انحصار گراف (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 صفحات)۔
گٹھ:پروگرامنگ زباناں
گٹھ:آبجیکٹ اوریئنٹڈ پروگرامنگ زباناں
گٹھ:جے وی ایم پروگرامنگ لینگویجز
گٹھ:جاوا پلیٹ فارم
گٹھ:کلاس بیسڈ پروگرامنگ زباناں
گٹھ:خاندان سی پروگرامنگ زبان
گٹھ:ویب آرکائیو سانچے مع وے بیک روابط
گٹھ:تصویر دا متروک پیرامیٹر استعمال کرنے والے صفحات
گٹھ:غیر نظر ثانی شدہ تراجم اُتے مشتمل صفحات