محلی برای یادگیری جاوا

۳ مطلب با موضوع «جاوا» ثبت شده است

Reflection

در پست های قبل به Reflection Oriented بودن جاوا اشاره شده بود.


Reflection: توانایی اصلاح ساختار و رفتار برنامه در زمان اجرا.(زمانی که برنامه در JVM در حال اجراست)

یکی از موارد استفاده از reflection، زمانیست که می خواهیم از یک object متد خاصی را  در صورت وجود صدا بزنیم اما تایپ این object را نمیدانیم. جاوای استاتیک چنین اجازه ای به ما نمی دهد اما با reflection این کار ممکن است.


از این قابلیت بیشتر برای نوشتن Framework استفاده می شود. هر چند که reflection قابلیت بسیار خوبی ست اما بهتر است تنها توسط برنامه نویسان حرفه ای و آن هم در مواردی که راهی جز استفاده از reflection وجود ندارد، مورد استفاده قرار گیرد. 

۱۱ شهریور ۹۴ ، ۱۰:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
پریسا

JDK , JVM , JRE

مفاهیم JDK, JRE, JVM برای افرادی که جاوا را به تازگی شروع کرده اند کمی گیج کننده است. به صورت سلسله مراتبی تعاریف به این شکل هستند:


JDK: سرآمد Java Development Kit است به معنی "بسته ی توسعه جاوا". در واقع یک بسته است شامل آن چه که برای برنامه نویسی و توسعه به زبان جاوا لازم است. مانند:

  • javac: کامپایلر جاوا که کدهای جاوا را به بایت کد ترجمه می کند.
  • JRE: در ادامه توضیح داده خواهد شد.
  • java: لودر برای برنامه های جاواست. در واقع یک مفسر است که با استفاده از javac می تواند فایلهای class. را تولید و اجرا کند.
  • JDB: خطایاب جاوا.
  • ...

JRE: سرآمد Java Runtime Enviroment است به معنی "محیط زمان اجرای جاواست". مجموعه ای ست که برای اجرای برنامه های جاوا به آن نیازمندیم. JDK ابزارهایی در خود داشت که برای کامپایل و به طور کلی برنامه نویسی جاوا بود. پس اگر روی سیستمی تنها قصد اجرای برنامه های جاوایی و نه توسعه ی آنها را داشتیم نصب JRE کافیست.

JVM: سرآمد Java Virtual Machine است به معنی "ماشین مجازی جاوا". یک مجموعه است که اجرای یک برنامه جاوایی را برای کامپیوتر ممکن می کند. در واقع JVM بایت کدها را تفسیر و اجرا می کند.
JVM مهمترین جز JRE است. ساختار JVM استکی است

برای اینکه بدانید نسبت این سه ابزار به چه شکل است به تصویر زیر دقت کنید:
JDK



۰۹ شهریور ۹۴ ، ۱۷:۱۷ ۰ نظر موافقین ۱ مخالفین ۰
پریسا

جاوا مستقل از سیستم عامل است

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

  • شی گراست (object-oriented) 
  • مستقل از سیستم عامل است (platform independent)
  • توانایی reflection دارد (reflection-oriented)
  • ...
برنامه نویسان با تعریف شی گرایی آشنا هستند. در این پست به مفهوم platform independency می پردازیم.

جاوا مستقل از سیستم عامل است: زبان های برنامه نویسی به طور عمده به دو دسته تقسیم می شوند:
  • زبان های کامپایلری (compiled language) مانند ada, خانواده C , ...
  • زبان های مفسری (interpreted language) مانند php, ruby, ...
در زبان های کامپایلری نحوه کامپایل شدن برنامه به شکل زیر است:

Source code ---> Compiler --->Machine code ---> OS

کد برنامه به کامپایلر داده می شود، کامپایلر کد را به کد زبان ماشین تبدیل می کند و سیستم عامل کد ماشین را اجرا می کند. این کد ماشین وابسته به سیستم است و کدهای کامپایل شده در یک محیط، در محیط متفاوت دیگر کار نمی کند.

اما در زبان های مفسری روند اجرای برنامه به این شکل است:

Source code ---> Interpreter ---> OS

کد به مفسر داده می شود اما مفسر کدی تولید نمیکند (بر عکس کامپایلر) و کدها را خط به خط اجرا می کند.

اما برای جاوا موضوع متفاوت است:
Source code ---> javac compiler---> Byte code ---> JRE(JVM+ lib) ---> OS 

کدها توسط  javac compiler کامپایل شده و خروجی Byte code داده می شود. بایت کدها توسط مفسر جاوا، تفسیر و خط به خط اجرا می شوند. 
در سیستمی که JVM روی آن نصب شده است دیگر نگرانی برای اجرای برنامه وجود ندارد چون JVM وظیفه دارد که برنامه را با محیطی که قرار است روی آن اجرا شود تطبیق دهد.

jvm

برای سیستم عامل های معروف ویندوز، لینوکس، مکینتاش و ... شرکت اوراکل مفسر های مخصوص را تولید کرده است. پس مستقل از پلتفرم بودن به این معناست که برنامه های جاوا بر روی سیستم عامل های معروف که شرکت اوراکل مفسر آنها را ارایه کرده است قابل اجرا هستند. در نتیجه اگر شخص یا گروهی سیستم عاملی تولید کنند برنامه های جاوا روی آنها اجرا نمی شوند (مگر اینکه مفسر انها نوشته شود).



۰۷ شهریور ۹۴ ، ۲۲:۳۷ ۰ نظر موافقین ۱ مخالفین ۰
پریسا