سلام
فرق بین تین سه بخش توی جاوا چیه؟
من چند تا مطلب خواندم منتها درست متوجه نشدم.
کدوم زیر مجموعه اون یکی هست. و اصلا کامپایلر کدومشون هست ؟ و کدومشون مفصر هستش؟
ممنون میشم یک توضیح واضح بنویسید.
سلام
فرق بین تین سه بخش توی جاوا چیه؟
من چند تا مطلب خواندم منتها درست متوجه نشدم.
کدوم زیر مجموعه اون یکی هست. و اصلا کامپایلر کدومشون هست ؟ و کدومشون مفصر هستش؟
ممنون میشم یک توضیح واضح بنویسید.
JVM ماشین مجازی جاوا هست. یک مفسر داخلش هست که می تونه بایت کد جاوا رو اجرا کنه براتون.
JRE محیط اجرایی جاوا هست که شامل JVM و یک سری برنامه های دیگه میشه.
JDK همون برنامه هایی هست که برای نوشتن برنامه های جاوا نیاز دارید. مثل کامپایلر
پس یک یعنی وقتی یک برنامه رو نوشتیم و شروع کردیم به کامپایل و اجرا
اول : اول jdk اون رو تبدیل به بایت کد می کنه
دوم : jre فایل های مورد نیاز (کتابخانه های جاوا) رو فراهم می کنه
و در آخر jvm بوسیله مفسرش برنامه رو اجرا می کنه
فکر کنم تو فهم دومی اشتباه کردم.(این یکسری برنامه های دیگه چی هست)
آره، درسته. در هر صورت JRE محیط اجرایی جاواست که بخش اصلیش همون ماشین مجازی JVM هست. کتابخانه های جاوا، مفسر، کد های مربوط به سیستم عامل و ... هستند که JRE رو می سازن.
سلام
وقتی jdk نصب می شود، پوشه jre نیز به همراهش نصب می شود. در پوشه bin نیز به همراه، java و ,javac فایل های اجرایی با نام های appletviewer,extcheck,,jar,,jarsigner,,javadoc,,ja vah,,javap,,javaw,,jdb,keytool نیز نصب می شوند. آیا وجود اینها برای کامپایل ضروری هستند یا برای مقاصد دیگری در این پوشه قرار می گیرند.
این دو تا دیاگرام ضمیمه را ببینید:
http://www.eol.ucar.edu/software/jav...ocs/index.html
http://midatl.radford.edu/docs/java-...ocs/index.html
جفتش برای jdk 5 هست. ولی چرا این همه اختلاف دارند؟ مثلا تو دومی اصلا مفسر دیده نمی شه و توی اولی مفسر داخل jdk هست (یعنی اگر فقط jre رو سیستم مقصد نصب باشه برنامه اجرا نمیشه؟)
jdk برای کامپایل کردن به jre هم نیاز داره یا jre فقط برای اجرا و jdk فقط برای کامپایل استفاده میشه؟
ببینید شما به عنوان برنامه نویس به JDK احتیاج دارید.که به صورت واضح کیت توسعه جاوا هست.
این کیت ابزار فوق العاده زیادی به همراه خودش داره.
از ابزار debug گرفته, تا مفسر جاوا و صدها ابزار دیگه.
خب شما وقتی برنامه رو نوشتی و تموم شد کاربر شما که تنها نیاز به JRE داره که نزدیک به 12 مگابایت
اندازه داره و به شکل واضحی کوچکتر از JDK هست و تمام کلاس های مورد نیاز شما برای اجرای برنامه
رو به همراهش داره.پس وقتی کاربر JRE رو داشته باشه تمام برنامه های شما رو اجرا می کنه.
الان در ویندوز 7 به صورت پیش فرض JRE نصب شده و جای خوشحالی هست که دیگه کاربران نیاز
به نصبش هم ندارن.
اما JVM بحثی جدای از این حرفاست و همونطور که همه می دونیم ماشین مجازی جاوا محسوب
می شه و اصولآ ما باهاش کاری نداریم البته APIی هم برای تنظیم کردن JVM وجود داره. در اصل
شما وقتی برنامه رو میدید به کاربر,کاربری که JRE نصب کرده . برنامه شما بوسیله یک JVM
اجرا می شه و اگه چند برنامه جاوا روی همون سیستم باز بشن برای هر کدوم یک JVM جدید
ایجاد می شه یعنی محیط های اجرای اونها از هم جدا هستن و تداخلی به وجود نمیاد.
خوب مشکل من الان این هست که ما مگه نمی گیم برای اجرای برنامه در کامپیوتر مقصد فقط به jre نیاز داریم (که البته jvm رو هم در داخل خودش داره) ولی برنامه اصلی که باید برنامه ما یا همون بایت کد ها رو اجرا کنه java هست دیگه
اما تو این دیاگرام که خود سایت sun گذاشته این فایل (برنامه java) در خارج از jre و داخل jdk هست
ببینید اینجوریه که شما شروع می کنید برنامه جاوا نوشتن که خب فایل های شما پسوند .java داره
شما این فایل ها رو با JDK کامپایل می کنید و فایلهای بایت کد تحویل می گیرید یعنی در اصل برنامه آماده
شما که قابل اجرا شدن در هر محیطی که جاوا [JRE] نصب باشه رو داره.خب پس JRE شما تنها نیاز به
کلاس های پایه ای جاوا داره و همچنین JVM .در دیاگرامی هم که شما نشون دادید بخش زرد رنگ
که جز JDK هست تنها ابزار توسعه محسوب میشن و برای برنامه نویس مورد استفاده قرار می گیره
نه کاربر نهایی.
خوب منم همون بخش زدر رنگ منظورم هست.
وقتی می خوایم برنامه نوشته شده رو کامپایل کنیم از برنامه javac در بخش زرد رنگ استفاده می کنیم. و وقتی می خوایم اجرا کنیم از برنامه java استفاده می کنیم دیگه.
حالا من می گم از اونجایی که برای اجرا تنها jre لازم هستش نباید این java در بخش jre قرار می گرفت؟ یا این java در بخش زرد رنگ با اون برنامه جاوا که برای اجرای بایت کدهاست فرق داره؟
چون برای خودم سوال بود این رو می گذارم اگر کسی خواست بخونه. اینطور که اینجا نوشته هر دو این فایل ها یکسان هستند.
ممنون از همه دوستانی که جواب دادند.
گیر شما به این عکس شاید درست باشه اما اینقدر حساس نشید. این عکس هم که از آسمون نزول نکرده. هدف این عکس جدا کردن اجزای مهم در معماری JDK و JRE بوده و کلیات رو نشون داده.
بله هم JDK دستور java داره هم JRE دستور java داره و اینکه این دستور دریچه ای هست برای ارتباط با JVM و JRE
به طور سنتی مرسوم بوده که در محیط اجرا یک پکیچ برای اجرا نصب میشده که اسمش JRE شده و در محیط توسعه یک پکیچ برای برنامه نویسان و ... که اسمش JDK بوده. اگه دقت کنید میبینید که JDK داخل خودش JRE داره! یک زمانی در نسخه 1.2 به بعد یه چیزی که آدمو ناراحت می کرد این بود که شما وقتی JDK نصب میکردی ازت میپرسید که می خوای JRE هم نصب شه (اگه نصب میشد امکان اجرای فایلهای جار و ... رو از طریق سیستم عامل و امکان دسترسی به Appletها رو در مرورگر فراهم میکرد!) ولی لزومی نداشت نصبش کنی. چون توی JDK شما JRE هم داری!
خلاصه این چیزا خیلی مهم نیست. ذهنتون رو درگیرش نکنید. معماری جاوا پیچیده تر از این حرف هاست که بتونیم به این سادگی راجع بهش نظر بدیم.
ممنون دوستان منم استفاده کردم.