Auto Boxing : امکان تخصیص اتوماتیک مقادیر primitive به نوع متناظر Reference آن بدون new کردن از آن Object
َAuto Unboxing : امکان تخصیص اتوماتیک مقادیر Reference به نوع متناظر primitive بدون تبدیل کردن
Up Cast : یا Widening به عمل ارجاع کردن یک کلاس فرزند به کلاس پدر (در درخت توارث از سمت فرزند به سمت پدر بالا میرویم ) که ایمن است چون تمای متد های فرزند در پدر موجود است و موقع call کردن مشکلی وجود ندارد
Down Cast : یا Narrowing به عمل ارجاع کردن یک کلاس پدر به کلاس فرزند (در درخت توارث از سمت پدر به سمت فرزند پایین میرویم ) که همیشه این کار به علت داشتن method و field های احتمالی بیشتر در کلاس فرزند ، ایمن نیست چون همه متد های فرزند در پدرش ممکن وجود نداشته باشد و موقع call کردن آن متد پیاده سازی ندارد و آن متد و فیلد های فرزند از دسترس خارج خواهند شد چون در Object پدر وجود ندارند که Bind شوند ولی آن فیلد و متد ها در حافظه رم وجود خواهند داشت و اگر زمانی دوباره به Object فرزند cast شوند دوباره قابل استفاده خواهد شد
Mutable : کلاس هایی که field هایشان قابل تغییر هستند Mutable میگویند
Immutable : کلاس هایی که field هایشان تا زمانی که از بین بروند قابل تغییر نیست Immutable میگویند به عبارتی متدی برای تغییر field ها وجود ندارد
component : به کلاس های تشکیل دهنده برنامه گفته میشود
java bean : به کلاس (component) های جاوا که یکسری قواعد مشخص و استاندارد در طراحی آن بکار گرفته شده باشد java bean میگویند
prototype : به ظاهر تعریف متد prototype میگویند
override : مخصوص متد است و رفتار و پیاده سازی به ارث برده را میتوان عوض کرد همین عمل در مورد فیلد ها hide گفته میشود
overload : متدهایی با یک نام و آرگومان های متفاوت برای شرایط مختلف قابل استفاده است
abstract : پیاده سازی ندارد
concrete : پیاده سازی شده است
super class : به کلاس پدر در جاوا super class میگویند
sub class : به کلاس فرزند در جاوا sub class میگویند
Reference Object : به Object پدر هم گفته میشود
Actual Object : به Object فرزند هم گفته میشود
Instance یا Object : در فضای heap یک بخشی به ازای کلاس ساخته شده باشد یک Instance یا Object داریم
Instance Variable : فیلد های کلاس که به ازای هر بار new شدن از کلاس یکی ساخته می شود و static نیستند
Class Variable : فیلد های کلاس که به ازای هر بار new شدن کلاس متغییر آن وجود دارد و static است
Final Method : متدی که قابلیت Override ندارد
Final Class : کلاس که دیگر قابل ارث بری نیست و نوع خاص تری ندارد مثلا کلاس singleton باید final باشد چون ممکن است در کلاس فرزند متد getInstance توسط فرزند override شود
Final Variable : متغییری که مقدار آن قابل تغییر نباشد
ِDynamic Binding : در polymorphism وقتی ما متدی و یک Actual Object به Reference Object نسبت داده باشیم و مشخص نباشد که کد اجرا کننده آن متد کدام یک از متد های سلسله مراتب وراثت است (یعنی متغییر ما Object از نوع reference باشد و برای new شدن از یکی از Actual Object ها استفاده کرده باشیم و حاوی متد هایی باشد با modifier های public ,default , protected که static نباشد ، با توجه به سلسله مراتب Override شدن در وراثت صورت گرفته جاوا بصورت داینامیک)، اتصال متد مناسب در runtime به متد reference را dynamic binding میگویند
Static Binding : وقتی ما متدی داریم با modifier های final , static , private (بخاطر اینکه این سه override نمیشوند )و costractor در compile time آن متد مشخص است که به ازای فراخوانی آن چه کدی باید اجرا شود
به علت static binding بودن متد های private , final , static و costractor میتوان این نتیجه را گرفت که سرعت اجرا بالاتری نسبت به بقیه متد ها دارند و فقط اینا میتوانند inline شوند
inlining : در جاوا اگر مشخص باشد که به ازای متد کدام کد قرار است اجرا شود optimizer جاوا آن کد را inline میکند به جای فراخوانی آن متد
Overloading Resolution : به تشخیص زبان به استفاده از یکی از متد های Overload شده با توجه به آرگومان های ارسالی Overloading Resolution میگویند
Dynamic Loading : در جاوا با استفاده از Reflection میتوان یک Object جدید تنها با دانستن اسمش آنرا ایجاد کرد :
String str = (String) Class.forName("java.lang.String").newInstance();
Class Object : اطلاعات کلاس ما در حافظه در شی ای به نام Class Object ذخیره میشود تا قبل از جاوا 8 ، Class Object ها در بخشی از حافظه به نام (Permanent Generation (PermGen به معنای بخشی از حافظه که قرار است به صورت پایدار باقی بمانند ذخیره میشدند که این مشکل را بوجود می آوردند که اگر پروژه ما خیلی بزرگ بود ممکن بود این فضا پر شود و اجرای برنامه با خطا OutOfMemeoryError مواجه بشود این بیشتر برای پروژه هایی که مجبور بودند کتابخانه های زیادی از استفاده کنند دیده میشد البته راه کارهایی براش وجود داشت مثلا حجم حافظه PermGen را افزایش دهیم : java -XX:MaxPermSize=512m MyClass مشابه کاری که با سویچ های Xms- و Xmx- روی Heap انجام میشد
ولی از جاوا 8 به بالاتر Class Object ها در بخشی از حافظه به نام MetaSpace نگهداری میشود و PermGen حذف شده و دیگر مشکلاتش را هم نداریم . MetaSpace تا جایی که حافظه جا داشته باشد اجازه استفاده را میدهد
Young : بخشی از حافظه Heap است که اشیاء جدید را نگهداری میکند
Tenured : بخشی از حافظه Heap است که اشیاء کهنه را نگهداری میکند
finalize : متدی است که در ابجکت Object موجود است و GC هنگامی که هیچ رفرنسی به آن ابجکت نباشد قبل از گاربیج کردن این متد را فراخوانی میکند و ما مثلا میتوانیم با override کردن این متد عملیاتی را انجام دهیم که به ندرت کاربرد دارد
atomic : عملیات اتمیک به عملیاتی گفته میشود که از ابتدا تا انتهای آن یکباره و بدون دخالت ترد دیگری یا انجام میشود و یا انجام نمیشود