Java Object Oriented

نگاهی به برنامه نویسی شی گرا در جاوا

ادامه نوشته

Java Profilers

Profiler و APM ابزاری هایی برای مانیتورینگ و دیباگینگ پرفورمنس برنامه ها جاوا در زمان توسعه استفاده می‌شه.

ادامه نوشته

Variable Type

Static vs Dynamic
Strong vs Weak

ادامه نوشته

Java Test 1

تو این پست یکسری بدیهیات رو می‌گم، راجع یکسری از یکی دوتا ابزار خیلی خلاصه صحبت می‌کنم و سعی می‌کنم یه کار مسخره انجام بدم

ادامه نوشته

Types of References in Java

چهار نوع رفرنس توی جاوا داریم:

  • Strong References
  • Weak References
  • Soft References
  • Phantom References
ادامه نوشته

Java Garbage Collection

GC با آزاد کردن خودکار حافظه باعث سریعتر شدن برنامه نویسی می‌شه و از نوشتن کد‌های اضافه جلوگیری می‌کنه.

ادامه نوشته

Finalize vs Cleaner

در قدیم اینجوری بود که ما متد finalize رو توی اشیا بازنویسی می‌کردیم و وقتی GC می‌خواست اون شی رو نابود کنه این متد رو صدا می‌زد و ما اگه لاجیک خواصی داشتیم اونجا می‌نوشتیم.

اما به دلیل مشکلاتی که این کار بوجود میاورد اون توی جاوا ۱۱ به بعد deprecated شده.
یکی از بزرگترین مشکلاتی که بوجود میاد این هستش که این متد توی thread مربوط به GC اجرا می‌شه و باعث بوجود اومدن مکث در thread اصلی می‌شه.

حالا باید چیکار کنیم؟

باید توی شی پدر اون شی که داره نابود می‌شه یه Cleaner بسازیم و شی مورد نظر و به همراه یک runnalbe توی اون register کنیم.

+

Java Memory Model

JVM دقیقا مثل باقی برنامه ها یک فضا رو توی رم اشغال می‌کنه و خودش کامل اون رو مدیریت می‌کنه. ستا فضای کاملا جدا از هم داریم که JVM داده‌های زمان اجرا و کدهای کامپایل شده رو اونجا نگه‌میداره.

ادامه نوشته

The end of the Java's Architecture's Story

ما در مورد اینکه برنامه‌ها چجوری اجرا می‌شن صحبت کردیم ولی درباره اجرا کننده برنامه‌ها هیچ صحبتی نکردیم.

ادامه نوشته

Execution Engine

bytecode ها اینجا اجرا می‌شن. Execution Engine دستورات رو خط به خط اجرا می‌کنه‌.

ادامه نوشته

Runtime Data Area

JVM داخل رم یک فضا برای بارگذاری داده‌ها در اختیار داره. class loader شی باینری متناظر هر کلاس رو تولید می‌کنه و اونها رو بصورت جداگانه و با اطلاعات زیر به Runtime Data Area می‌‌ده و اون هم توی method area ذخیره می‌کنه.

ادامه نوشته

Class Loader Subsystem

به ازای هر برنامه که اجرا می‌شه یک نمونه از ماشین مجازی جاوا JVM داخل رم سیستم بارگذاری می‌شه و با استفاده از Class Loader Subsystem کلاس های مورد نظر رو وارد رم می‌کنه و بهش می‌گن dynamic class loading که کلاس‌ها رو load و link و initialize می‌کنه. البته این کار رو فقط یک بار در زمان اجرا انجام می‌ده.

ادامه نوشته

Java Thread

با شی Thread می‌تونیم یک فضای جدای پردازشی ایجاد کنیم. برای این کار باید یک کلاس را از آم مشتق کنیم و تابع run را در آن باز نویسی کنیم و با فراخوانی تابع start آن را اجرا کنیم. همچنین مقادیری که برای کنترل فرایند های درون آن نیاز است را می‌توانید از طریق تابع سازنده آن ارسال کنیم.

ادامه نوشته

Java Non Access Modifiers

تو جاوا یکسری modifire خاص دیگه هم داریم !!!

ادامه نوشته

Java Access Modifiers

تو جاوا چهارتا سطح دسترسی داریم !!!

ادامه نوشته

Build Android Application

از گذشته دور تا الان !

ادامه نوشته

Android Permissions

ما چهار نوع Permissions تو اندروید داریم:

  • Normal: ریسک خیلی کمی برای سیستم یا کاربر دارن. سیستم اونها رو به صورت خودکار به برنامه ها می‌ده و لازم نیست از کاربر اجازه بگیریم.
  • Dangerous: اینها ریسک زیادی دارن و می‌تونن به داده های خصوصی کاربر دسترسی داشته باشن یا به قسمت هایی از دستگاه ک می‌تونه تاثیر منفی روی کار دستگاه بزاره. به همین دلایل سیستم به صورت خودکار اونها رو ب برنامه ها نمی‌ده و باید برنامه اونها رو درخواست کنه.
  • Signature: این دسته از مجوز ها را سیستم فقط ب برنامه هایی می‌دهد ک امضای آنها اجازه استفاده از این مجوز ها را داشته باشد. اگر اجازه لازم را امضای برنامه داشته باشد سیستم این مجوز ها را بدون سوال از کاربر به برنامه می‌دهد.
  • SignatureOrSystem: این مجوز ها را سیستم فقط به برنامه هایی می‌دهد ک در پوشه اندروید روی سیستم هستند یا امضای آنها اجازه ای را دارد ک ایجاد کننده این مجوز داشته است. از استفاده از این گروه باید خود داری کنیم.

Android Application Not Responding: ANR

گاهی برنامه ما هنگ میکنه و اندروید ی پیام نشون میده ک میگه صبر میکنی یا برنامه رو ببندم !!!

ادامه نوشته

Android Command Line Tools

ابزارهای اندروید رو بهتر بشناسیم

ادامه نوشته

Backup on Android

قابلیت پشتیبان گیری به وسیله سیستم عامل اندروید !

ادامه نوشته