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

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


Java Programming Language
پیراڈائم Multi-paradigm: generic, object-oriented (class-based), imperative, reflective
اشاعت مئی 23، 1995 (1995-05-23)[1]
ڈیزائنر James Gosling
ترقی دہندہ Sun Microsystems
مستحکم اشاعت Java SE 13 (ستمبر 17، 2019 (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, PHP, Python, Scala, Seed7, Vala
فائل کی توسیع .java, .class, .jar
ویب سائٹ oracle.com/java/
Java Programming بر ویکی کتب

جاوا کو اصل میں سن مائکرو نظام میں جیمز گوسلنگ نے تیار کیا تھا (جو اس کے بعد اوریکل نے حاصل کیا تھا) اور سن مائکرو سسٹم کے جاوا پلیٹ فارم کے بنیادی جزو کے طور پر 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]

عملدرآمد کا نظام

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

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

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

کارکردگی

جاوا میں لکھے جانے والے پروگراموں میں ساکھ اور سی ++ میں لکھے ہوئے پروگراموں کی نسبت زیادہ میموری کی ضرورت ہوتی ہے۔ [36] [37] تاہم، اعلی درجے کا Java پروگراموں 'پر عملدرآمد کی رفتار کے تعارف کے ساتھ نمایاں طور پر بہتر صرف میں وقت تالیف لئے 1997/1998 میں جاوا <span typeof="mw:Entity" id="mwAS4">&nbsp;</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.[حوالہ درکار]

نحو

جاوا کور کلاسوں کا انحصار گراف (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. Binstock, Andrew (مئی 20, 2015)۔ "Java's 20 Years of Innovation"۔ Forbes۔ مورخہ مارچ 14, 2016 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مارچ 18, 2016۔ Unknown parameter |url-status= ignored (معاونت)
  2. Harry H. Chaudhary (2014-07-28)۔ "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans"۔ اخذ شدہ بتاریخ 2016-05-29۔
  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. نسخہ محفوظہ March 19, 2011, در وے بیک مشین نسخہ محفوظہ January 7, 2006, در وے بیک مشین
  4. Gosling, James؛ McGilton, Henry (مئی 1996)۔ "The Java Language Environment"۔ مورخہ مئی 6, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مئی 6, 2014۔ Unknown parameter |url-status= ignored (معاونت)
  5. Gosling, James؛ Joy, Bill؛ Steele, Guy؛ Bracha, Gilad۔ "The Java Language Specification, 2nd Edition"۔ مورخہ اگست 5, 2011 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ فروری 8, 2008۔ Unknown parameter |url-status= ignored (معاونت)
  6. "The A-Z of Programming Languages: Modula-3"۔ Computerworld.com.au۔ مورخہ جنوری 5, 2009 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ جون 9, 2010۔ Unknown parameter |url-status= ignored (معاونت)
  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 (ستمبر 22, 2005)۔ "Niklaus Wirth's lecture at the Polytechnic Museum in Moscow"۔), 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. نسخہ محفوظہ July 13, 2011, در وے بیک مشین
  9. TechMetrix Research۔ "History of Java" (پی‌ڈی‌ایف)۔ Java Application Servers Report۔ مورخہ دسمبر 29, 2010 کو اصل (پی‌ڈی‌ایف) سے آرکائیو شدہ۔ 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. Unknown parameter |url-status= ignored (معاونت)
  10. "A Conversation with James Gosling – ACM Queue"۔ Queue.acm.org۔ اگست 31, 2004۔ مورخہ جولا‎ئی 16, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ جون 9, 2010۔ Unknown parameter |url-status= ignored (معاونت)
  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)" (پی‌ڈی‌ایف)۔ Cray Inc.۔ اکتوبر 1, 2015۔ مورخہ فروری 5, 2016 کو اصل (پی‌ڈی‌ایف) سے آرکائیو شدہ۔ اخذ شدہ بتاریخ جنوری 14, 2016۔ Unknown parameter |url-status= ignored (معاونت)
  13. "Gambas Documentation Introduction"۔ Gambas Website۔ مورخہ اکتوبر 9, 2017 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ اکتوبر 9, 2017۔ Unknown parameter |url-status= ignored (معاونت)
  14. "Facebook Q&A: Hack brings static typing to PHP world"۔ InfoWorld۔ مارچ 26, 2014۔ مورخہ فروری 13, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ جنوری 11, 2015۔ Unknown parameter |url-status= ignored (معاونت)
  15. Jon Byous (c. 1998)۔ "Java technology: The early years"۔ Sun Developer Network۔ Sun Microsystems۔ مورخہ اپریل 20, 2005 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2005-04-22۔
  16. Object-oriented programming "The History of Java Technology"۔ Sun Developer Network۔ c. 1995۔ مورخہ فروری 10, 2010 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2010-04-30۔
  17. "JAVASOFT SHIPS JAVA 1.0"۔ مورخہ 2007-03-10 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2018-05-13۔
  18. "JSG – Java Study Group"۔ open-std.org۔ مورخہ اگست 25, 2006 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ اگست 2, 2006۔
  19. "Why Java™ Was – Not – Standardized Twice" (پی‌ڈی‌ایف)۔ مورخہ جنوری 13, 2014 کو اصل (پی‌ڈی‌ایف) سے آرکائیو شدہ۔ اخذ شدہ بتاریخ جون 3, 2018۔
  20. "What is ECMA—and why Microsoft cares"۔ مورخہ مئی 6, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مئی 6, 2014۔
  21. "Java Community Process website"۔ Jcp.org۔ مئی 24, 2010۔ مورخہ اگست 8, 2006 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2010-06-09۔
  22. "JAVAONE: Sun – The bulk of Java is open sourced"۔ GrnLight.net۔ مورخہ مئی 27, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2014-05-26۔
  23. "Sun's Evolving Role as Java Evangelist"۔ O'Reilly Media۔ مورخہ ستمبر 15, 2010 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ اگست 2, 2009۔
  24. "Oracle and Java"۔ oracle.com۔ Oracle Corporation۔ مورخہ جنوری 31, 2010 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2010-08-23۔ 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۔ مورخہ نومبر 24, 2011 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ نومبر 21, 2011۔
  26. James Gosling (اپریل 9, 2010)۔ "Time to move on..."۔ On a New Road۔ مورخہ نومبر 5, 2010 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2011-11-16۔
  27. Dalibor Topic۔ "Moving to a Plugin-Free Web"۔ مورخہ مارچ 16, 2016 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مارچ 15, 2016۔
  28. "1.2 Design Goals of the Java™ Programming Language"۔ Oracle۔ جنوری 1, 1999۔ مورخہ جنوری 23, 2013 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2013-01-14۔
  29. "JAVASOFT SHIPS JAVA 1.0"۔ مورخہ مارچ 10, 2007 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2008-02-05۔
  30. Sharat Chander۔ "Introducing Java SE 11"۔ oracle.com۔ مورخہ ستمبر 26, 2018 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ ستمبر 26, 2018۔
  31. "Java Card Overview"۔ Oracle Technology Network۔ Oracle۔ مورخہ جنوری 7, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 18, 2014۔
  32. "Java Platform, Micro Edition (Java ME)"۔ Oracle Technology Network۔ Oracle۔ مورخہ جنوری 4, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 18, 2014۔
  33. "Java SE"۔ Oracle Technology Network۔ Oracle۔ مورخہ دسمبر 24, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 18, 2014۔
  34. "Java Platform, Enterprise Edition (Java EE)"۔ Oracle Technology Network۔ Oracle۔ مورخہ دسمبر 17, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 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۔ مورخہ جنوری 19, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2015-01-19۔
  36. Dejan Jelovic۔ "Why Java will always be slower than C++"۔ مورخہ فروری 11, 2008 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2008-02-15۔
  37. Google۔ "Loop Recognition in C++/Java/Go/Scala" (پی‌ڈی‌ایف)۔ اخذ شدہ بتاریخ 2012-07-12۔
  38. "Symantec's Just-In-Time Java Compiler To Be Integrated into Sun JDK 1.1"۔ مورخہ جون 28, 2010 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ اگست 1, 2009۔
  39. Noc-HMP: A Heterogeneous Multicore Processor for Embedded Systems Designed in SystemJ. 2017-07-22.
  40. "NullPointerException"۔ Oracle۔ مورخہ مئی 6, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2014-05-06۔
  41. "Exceptions in Java"۔ Artima.com۔ مورخہ جنوری 21, 2009 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2010-08-10۔
  42. "Java HotSpot™ Virtual Machine Performance Enhancements"۔ Oracle.com۔ مورخہ مئی 29, 2017 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2017-04-26۔
  43. "Java HotSpot VM Options"۔ Oracle.com۔ 2010-09-07۔ مورخہ مارچ 6, 2011 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2012-06-30۔
  44. "Garbage-First Collector"۔ docs.oracle.com۔ مورخہ مارچ 9, 2016 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مارچ 15, 2016۔
  45. "Operator Overloading (C# vs Java)"۔ C# for Java Developers۔ Microsoft۔ مورخہ جنوری 7, 2015 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 10, 2014۔
  46. "Multiple Inheritance of State, Implementation, and Type"۔ The Java™ Tutorials۔ Oracle۔ مورخہ نومبر 9, 2014 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ دسمبر 10, 2014۔
  47. "Lesson: A Closer Look at the Hello World Application"۔ The Java™ Tutorials > Getting Started۔ Oracle Corporation۔ مورخہ مارچ 17, 2011 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ 2011-04-14۔
  48. Robert McMillan (اگست 1, 2013)۔ "Is Java Losing Its Mojo?"۔ wired.com۔ مورخہ فروری 15, 2017 کو اصل سے آرکائیو شدہ۔ اخذ شدہ بتاریخ مارچ 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۔ اخذ شدہ بتاریخ 2019-05-31۔
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.