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

آزاد دائرۃ المعارف، ویکیپیڈیا سے


Java Programming Language
پیراڈائمMulti-paradigm: generic, اوبجیکٹ اوریئنٹڈ پروگرامنگ (class-based), imperative, reflective
اشاعتمئی 23، 1995؛ 28 سال قبل (1995-05-23)[1]
ڈیزائنرJames Gosling
ترقی دہندہSun Microsystems
مستحکم اشاعتJava SE 13 (ستمبر 17، 2019؛ 4 سال قبل (2019-09-17))
شعبہ تحریرStatic, strong, safe, nominative, manifest
اہم اطلاقاتCompilers: OpenJDK (javac, sjavac), GNU Compiler for Java (GCJ), Eclipse Compiler for Java (ECJ)
Virtual machines: OpenJDK JRE, Oracle JRockit, Azul Zing, IBM J9, Excelsior JET, Gluon VM, Microsoft JVM, Apache Harmony
JIT compilers: HotSpot, GraalVM, Azul Falcon (LLVM)
متاثرAda 83, C++,[2] C#,[3] Eiffel,[4] Mesa,[5] Modula-3,[6] Oberon,[7] Objective-C,[8] UCSD Pascal,[9][10] Object Pascal[11]
موثرAda 2005, BeanShell, C#, Chapel,[12] Clojure, ECMAScript, Fantom, Gambas,[13] Groovy, Hack,[14] Haxe, J#, Kotlin, پی ایچ پی, پائیتھن (پروگرامنگ زبان), Scala, Seed7, Vala
فائل کی توسیع.java, .class, .jar
ویب سائٹoracle.com/java/
Wikibooks logo Java Programming بر ویکی کتب

جاوا ایک عمومی مقصد کی پروگرامنگ زبان ہے جو کلاس پر مبنی ، آبجیکٹ پر مبنی اور اس کے لیے ڈیزائن کی گئی ہے کہ ممکنہ حد تک عمل درآمد پر انحصار کم ہو۔ اس کا مقصد ایپلی کیشن ڈویلپرز کو ایک بار لکھنے دینا ، کہیں بھی چلانے دینا ہے۔ (ڈبلیو او آر اے) ، اس کا مطلب یہ ہے کہ مرتب شدہ جاوا کوڈ ایسے تمام پلیٹ فارمز پر چل سکتا ہے جو دوبارہ تالیف کی ضرورت کے بغیر جاوا کی حمایت کرتے ہیں۔ جاوا ایپلی کیشنز کو عام طور پر بائیک کوڈ پر مرتب کیا جاتا ہے جو کسی بھی جاوا ورچوئل مشین (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 میں جاوا زبان کے منصوبے کا آغاز کیا۔ [15] جاوا کو اصل میں انٹرایکٹو ٹیلی ویژن کے لیے ڈیزائن کیا گیا تھا ، لیکن اس وقت ڈیجیٹل کیبل ٹیلی ویژن انڈسٹری کے لیے یہ بہت ترقی یافتہ تھا۔ [16] زبان کو ابتدائی طور پر بلوط کے درخت کے بعد اوک کہا جاتا تھا جو گوسلنگ کے دفتر کے باہر کھڑا تھا۔ بعد میں یہ منصوبہ گرین کے نام سے چلا گیا اور آخر کار جاوا کافی سے ، انڈونیشیا کی کافی سے جاوا کا نام تبدیل کر دیا گیا۔ گوسلنگ نے جاوا کو C / C ++ اسٹائل نحو کے ساتھ ڈیزائن کیا تھا جس میں سسٹم اور ایپلیکیشن پروگرامرز واقف ہوں گے۔

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

1997 میں ، سن مائکرو سسٹمز نے جاوا کو باقاعدہ بنانے کے لیے آئی ایس او / آئ سی سی جے ٹی سی 1 اسٹینڈرڈ باڈی اور بعد میں ایکما انٹرنیشنل سے رابطہ کیا ، لیکن جلد ہی اس عمل سے دستبردار ہو گیا۔ [18] [19] [20] جاوا میں ایک رہتا ہے <i id="mwqg">اصل</i> معیار کے ذریعے کنٹرول کیا، اعلی درجے کا Java کمیونٹی عمل . [21] ایک زمانے میں ، سن نے اپنے ملکیتی سافٹ ویئر کی حیثیت کے باوجود ، زیادہ تر جاوا پر عمل درآمد کیے۔ جاوا انٹرپرائز سسٹم جیسے خصوصی مصنوعات کے لائسنسوں کی فروخت کے ذریعے سورج نے جاوا سے محصول وصول کیا۔

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

سن کے نائب صدر امیر گرین نے کہا کہ جاوا کے حوالے سے سورج کا مثالی کردار ایک مبشر کی حیثیت سے تھا۔ [23] اوریکل کارپوریشن کے سن 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 عہد وابستہ کے ساتھ بیان کیا ہے۔ [24] اس سے اوریکل نے گوگل کے خلاف اینڈروئیڈ ایس ڈی کے کے اندر جاوا استعمال کرنے کے لیے ( اینڈروئیڈ سیکشن ملاحظہ کریں) قانونی چارہ جوئی کرنے سے کچھ نہیں روکا۔ جاوا سافٹ ویئر لیپ ٹاپ سے لے کر ڈیٹا سینٹرز تک ، گیم کنسولز سے سائنسی سپر کمپیوٹر تک ہر چیز پر چلتا ہے۔ [25] 2 اپریل ، 2010 کو ، جیمز گوسلنگ نے اوریکل سے استعفیٰ دے دیا۔ [26]

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

اصول[ترمیم]

جاوا زبان کی تخلیق میں پانچ بنیادی اہداف تھے: [28]

  1. یہ سادہ ، آبجیکٹ پر مبنی اور واقف ہونا ضروری ہے۔
  2. یہ مضبوط اور محفوظ ہونا چاہیے۔
  3. یہ فن تعمیر غیر جانبدار اور پورٹیبل ہونا ضروری ہے۔
  4. اسے اعلی کارکردگی کے ساتھ عملدرآمد کرنا چاہیے۔
  5. اس کی ترجمانی ، تھریڈ اور متحرک ہونا ضروری ہے۔

بمطابق مارچ 2019 ، جاوا   8 کی حمایت کی ہے؛ اور جاوا دونوں   8 اور 11 بطور لانگ ٹرم سپورٹ (ایل ٹی ایس) ورژن۔ جاوا کے اہم ریلیز ورژن ، ان کی ریلیز کی تاریخوں کے ساتھ:

  • جے ڈی کے 1.0 (23 جنوری ، 1996) [29]
  • جے ڈی کے 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) [30]
  • جاوا SE 12 (19 مارچ ، 2019)
  • جاوا SE 13 (17 ستمبر ، 2019)

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

  • اسمارٹ کارڈز کے لیے جاوا کارڈ۔ [31]
  • جاوا پلیٹ فارم ، مائکرو ایڈیشن (جاوا ME) - محدود وسائل والے ماحول کو نشانہ بنانا۔ [32]
  • جاوا پلیٹ فارم ، معیاری ایڈیشن (جاوا SE) - ھدف بنائے جانے والے ورک اسٹیشن کے ماحول۔ [33]
  • جاوا پلیٹ فارم ، انٹرپرائز ایڈیشن (جاوا ای ای) - بڑے تقسیم شدہ انٹرپرائز یا انٹرنیٹ ماحول کو نشانہ بنانا۔ [34]

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

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

عملدرآمد کا نظام[ترمیم]

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

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

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

کارکردگی[ترمیم]

جاوا میں لکھے جانے والے پروگراموں میں ساکھ اور سی ++ میں لکھے ہوئے پروگراموں کی نسبت زیادہ میموری کی ضرورت ہوتی ہے۔ [36] [37] تاہم، اعلی درجے کا Java پروگراموں 'پر عملدرآمد کی رفتار کے تعارف کے ساتھ نمایاں طور پر بہتر صرف میں وقت تالیف لیے 1997/1998 میں جاوا <span typeof="mw:Entity" id="mwAS4"> </span> 1.1 ، [38] بہتر کوڈ تجزیہ (جیسے اندرونی طبقات ، سٹرنگ بلڈر کلاس ، اختیاری دعوے وغیرہ) کی حمایت کرنے والی زبان کی خصوصیات میں اضافہ اور جاوا ورچوئل مشین میں اصلاح ، جیسے ہاٹ سپاٹ 2000 میں سن کے جے وی ایم کے لیے ڈیفالٹ بن گیا۔ . جاوا کے ساتھ   1.5، کارکردگی سمیت java.util.concurrent پیکج کے علاوہ کے ساتھ بہتر کیا گیا تھا تالا مفت کے نفاذ ConcurrentMaps اور دیگر ملٹی کور مجموعوں اور یہ جاوا کے ساتھ مزید بہتر کیا گیا تھا   1.6۔

نان جے وی ایم[ترمیم]

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

خودکار میموری کا نظم و نسق[ترمیم]

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

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

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

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

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

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

میموری مینجمنٹ کے مسئلے کو حل کرنے سے پروگرامر کو دوسرے طرح کے وسائل جیسے نیٹ ورک یا ڈیٹا بیس کنیکشنز ، فائل ہینڈلز وغیرہ کو خاص طور پر مستثنیات کی موجودگی میں ہینڈل کرنے کے بوجھ سے نجات نہیں ملتی۔ Paradoxically, the presence of a garbage collector has faded the necessity of having an explicit destructor method in the classes, thus rendering the management of these other resources more difficult.[حوالہ درکار] [ <span title="This claim needs references to reliable sources.<nowiki/> (November 2019)">حوالہ کی ضرورت ]

نحو[ترمیم]

جاوا کور کلاسوں کا انحصار گراف (jdeps اور ساتھ پیدا Gephi )

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

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

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

ہیلو دنیا کی مثال[ترمیم]

روایتی ہیلو ورلڈ پروگرام جاوا میں لکھا جا سکتا ہے: [47]

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 [48] ایک مستحکم طریقہ کی نشان دہی کرتا ہے ، جو صرف طبقے سے وابستہ ہوتا ہے نہ کہ اس طبقے کی کسی خاص مثال سے۔ کسی بھی چیز کے حوالہ کے بغیر صرف جامد طریقوں کی مدد کی جا سکتی ہے۔ جامد طریقے کسی بھی طبقے کے ممبروں تک رسائی حاصل نہیں کرسکتے جو جامد بھی نہیں ہوتے ہیں۔ مستحکم نامزد کردہ طریقے مثال کے طریقے نہیں ہیں اور کام کرنے کے لیے کلاس کی ایک مخصوص مثال درکار ہوتی ہے۔

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

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

بنیادی طریقہ کار میں String اشیاء کی ایک صف کو قبول کرنا چاہیے۔ کنونشن کے ذریعہ ، اسے args طور پر حوالہ دیا جاتا ہے حالانکہ کوئی دوسرا قانونی شناخت کنندہ نام استعمال کیا جا سکتا ہے۔ جاوا کے بعد سے   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!" مرتب کرنے والے کے ذریعہ خود بخود اسٹرنگ آبجیکٹ میں تبدیل ہوجاتا ہے۔

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

// 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 جاوا کے بعد اب فرسودہ ہے   2017 میں 8۔ [49]

سریلیٹ[ترمیم]

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

حوالہ جات[ترمیم]

  1. لوا خطا ماڈیول:Citation/CS1/Utilities میں 38 سطر پر: bad argument #1 to 'ipairs' (table expected, got nil)۔
  2. Harry H. Chaudhary (2014-07-28)۔ "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans"۔ اخذ شدہ بتاریخ 29 مئی 2016 
  3. Java 5.0 added several new language features (the enhanced for loop, autoboxing, varargs and annotations), after they were introduced in the similar (and competing) C# language. [1] آرکائیو شدہ مارچ 19, 2011 بذریعہ وے بیک مشین [2] آرکائیو شدہ جنوری 7, 2006 بذریعہ وے بیک مشین
  4. Gosling, James، McGilton, Henry (May 1996)۔ "The Java Language Environment"۔ May 6, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ May 6, 2014 
  5. Gosling, James، Joy, Bill، Steele, Guy، Bracha, Gilad۔ "The Java Language Specification, 2nd Edition"۔ August 5, 2011 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ February 8, 2008 
  6. "The A-Z of Programming Languages: Modula-3"۔ Computerworld.com.au۔ January 5, 2009 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ June 9, 2010 
  7. Niklaus Wirth stated on a number of public occasions, e.g. in a lecture at the Polytechnic Museum, Moscow in September 2005 (several independent first-hand accounts in Russian exist, e.g. one with an audio recording: Filippova, Elena (September 22, 2005)۔ "Niklaus Wirth's lecture at the Polytechnic Museum in Moscow"۔ 01 دسمبر 2020 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 26 دسمبر 2019  ), that the Sun Java design team licensed the Oberon compiler sources a number of years prior to the release of Java and examined it: a (relative) compactness, type safety, garbage collection, no multiple inheritance for classes – all these key overall design features are shared by Java and Oberon.
  8. Patrick Naughton cites Objective-C as a strong influence on the design of the Java programming language, stating that notable direct derivatives include Java interfaces (derived from Objective-C's protocol) and primitive wrapper classes. [3] آرکائیو شدہ جولا‎ئی 13, 2011 بذریعہ وے بیک مشین
  9. TechMetrix Research (1999)۔ "History of Java" (PDF)۔ Java Application Servers Report۔ December 29, 2010 میں اصل (PDF) سے آرکائیو شدہ۔ The project went ahead under the name green and the language was based on an old model of UCSD Pascal, which makes it possible to generate interpretive code. 
  10. "A Conversation with James Gosling – ACM Queue"۔ Queue.acm.org۔ August 31, 2004۔ July 16, 2015 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ June 9, 2010 
  11. In the summer of 1996, Sun was designing the precursor to what is now the event model of the AWT and the JavaBeans component architecture. Borland contributed greatly to this process. We looked very carefully at Delphi Object Pascal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs.White Paper About Microsoft's Delegates
  12. "Chapel spec (Acknowledgements)" (PDF)۔ Cray Inc.۔ October 1, 2015۔ February 5, 2016 میں اصل (PDF) سے آرکائیو شدہ۔ اخذ شدہ بتاریخ January 14, 2016 
  13. "Gambas Documentation Introduction"۔ Gambas Website۔ October 9, 2017 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ October 9, 2017 
  14. لوا خطا ماڈیول:Citation/CS1/Utilities میں 38 سطر پر: bad argument #1 to 'ipairs' (table expected, got nil)۔
  15. Jon Byous (c. 1998)۔ "Java technology: The early years"۔ Sun Developer Network۔ Sun Microsystems۔ April 20, 2005 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 22 اپریل 2005 
  16. Object-oriented programming "The History of Java Technology"۔ Sun Developer Network۔ c. 1995۔ February 10, 2010 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 30 اپریل 2010 
  17. "JAVASOFT SHIPS JAVA 1.0"۔ 10 مارچ 2007 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 13 مئی 2018 
  18. "JSG – Java Study Group"۔ open-std.org۔ August 25, 2006 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ August 2, 2006 
  19. "Why Java™ Was – Not – Standardized Twice" (PDF)۔ January 13, 2014 میں اصل (PDF) سے آرکائیو شدہ۔ اخذ شدہ بتاریخ June 3, 2018 
  20. "What is ECMA—and why Microsoft cares"۔ May 6, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ May 6, 2014 
  21. "Java Community Process website"۔ Jcp.org۔ May 24, 2010۔ August 8, 2006 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 09 جون 2010 
  22. "JAVAONE: Sun – The bulk of Java is open sourced"۔ GrnLight.net۔ May 27, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 26 مئی 2014 
  23. "Sun's Evolving Role as Java Evangelist"۔ O'Reilly Media۔ September 15, 2010 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ August 2, 2009 
  24. "Oracle and Java"۔ oracle.com۔ Oracle Corporation۔ January 31, 2010 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 23 اگست 2010۔ Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency. 
  25. "Learn About Java Technology"۔ Oracle۔ November 24, 2011 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ November 21, 2011 
  26. James Gosling (April 9, 2010)۔ "Time to move on..."۔ On a New Road۔ November 5, 2010 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 16 نومبر 2011 
  27. Dalibor Topic۔ "Moving to a Plugin-Free Web"۔ March 16, 2016 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ March 15, 2016 
  28. ^ ا ب "1.2 Design Goals of the Java™ Programming Language"۔ Oracle۔ January 1, 1999۔ January 23, 2013 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 14 جنوری 2013 
  29. "JAVASOFT SHIPS JAVA 1.0"۔ March 10, 2007 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 05 فروری 2008 
  30. Sharat Chander۔ "Introducing Java SE 11"۔ oracle.com۔ September 26, 2018 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ September 26, 2018 
  31. "Java Card Overview"۔ Oracle Technology Network۔ Oracle۔ January 7, 2015 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 18, 2014 
  32. "Java Platform, Micro Edition (Java ME)"۔ Oracle Technology Network۔ Oracle۔ January 4, 2015 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 18, 2014 
  33. "Java SE"۔ Oracle Technology Network۔ Oracle۔ December 24, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 18, 2014 
  34. "Java Platform, Enterprise Edition (Java EE)"۔ Oracle Technology Network۔ Oracle۔ December 17, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 18, 2014 
  35. "Is the JVM (Java Virtual Machine) platform dependent or platform independent? What is the advantage of using the JVM, and having Java be a translated language?"۔ Programmer Interview۔ January 19, 2015 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 19 جنوری 2015 
  36. Dejan Jelovic۔ "Why Java will always be slower than C++"۔ February 11, 2008 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 15 فروری 2008 
  37. Google۔ "Loop Recognition in C++/Java/Go/Scala" (PDF)۔ اخذ شدہ بتاریخ 12 جولا‎ئی 2012 
  38. "Symantec's Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1"۔ June 28, 2010 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ August 1, 2009 
  39. "Noc-HMP: A Heterogeneous Multicore Processor for Embedded Systems Designed in SystemJ"۔ 2017-07-22 
  40. "NullPointerException"۔ Oracle۔ May 6, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 06 مئی 2014 
  41. "Exceptions in Java"۔ Artima.com۔ January 21, 2009 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 10 اگست 2010 
  42. "Java HotSpot™ Virtual Machine Performance Enhancements"۔ Oracle.com۔ May 29, 2017 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 26 اپریل 2017 
  43. "Java HotSpot VM Options"۔ Oracle.com۔ 2010-09-07۔ March 6, 2011 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 30 جون 2012 
  44. "Garbage-First Collector"۔ docs.oracle.com۔ March 9, 2016 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ March 15, 2016 
  45. "Operator Overloading (C# vs Java)"۔ C# for Java Developers۔ Microsoft۔ January 7, 2015 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 10, 2014 
  46. "Multiple Inheritance of State, Implementation, and Type"۔ The Java™ Tutorials۔ Oracle۔ November 9, 2014 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ December 10, 2014 
  47. "Lesson: A Closer Look at the Hello World Application"۔ The Java™ Tutorials> Getting Started۔ اوریکل کارپوریشن۔ March 17, 2011 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 14 اپریل 2011 
  48. Robert McMillan (August 1, 2013)۔ "Is Java Losing Its Mojo?"۔ wired.com۔ February 15, 2017 میں اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ March 8, 2017۔ Java is on the wane, at least according to one outfit that keeps on eye on the ever-changing world of computer programming languages. For more than a decade, it has dominated the TIOBE Programming Community Index, and is back on top – a snapshot of software developer enthusiasm that looks at things like internet search results to measure how much buzz different languages have. But lately, Java has been slipping. 
  49. "Deprecated APIs, Features, and Options"۔ www.oracle.com۔ اخذ شدہ بتاریخ 31 مئی 2019