انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: آیا JAVA شعار Write once, run anywhere را رعایت کرده؟  (دفعات بازدید: 1608 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین { AliReaza }

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی، دیگر در مورد آزادی شعار نده...
سلام دوستان

داشتم در مورد زبانهای برنامه نویسی با قابلیت اجرا شدن در همه جا جستجو می کردم، و باز هم به JAVA رسیدم.

یک مقدار که مطالعه کردم، متوجه شدم که JAVA به صورت مستقیم در Android اجرا نمیشه ( http://www.wikihow.com/Get-Java-on-Android )
اما میشه تبدیلش کرد و.....

اما پس چرا میگه Write once, run anywhere در حالی که باید تبدیل کرد تا بشه در جاهای دیگر استفاده کرد؟


چون حوصله یادگیری زبان جدید ندارم، گشتم و به زبان هایی که JVM ازشون پشتیبانی میکنه رسیدم. ( https://en.wikipedia.org/wiki/List_of_JVM_languages )
زبان مورد علاقه من یعنی Python درش هست.

به نظر شما JAVA یاد بگیرم بهتره، یا اینکه میشه با Python هم نتیجه مورد نظرم برسم؟


راستی تا اونجا که میدونم و تحقیق کردم و کار کردم، با Python هم میشه برای همه جا برنامه نوشت ( Desktop, Web, Mobile )

اما چه تفاوت دیگری بین JAVA و Python هست که فقط JAVA میگه " Write once, run anywhere " ؟؟؟  ???

آفلاین 藤沼

  • Sr. Member
  • *
  • ارسال: 414
  • جنسیت : پسر
پاسخ : آیا JAVA شعار Write once, run anywhere را رعایت کرده؟
« پاسخ #1 : 04 خرداد 1394، 01:32 ب‌ظ »
عیناً توی مطالب زیر درباره‌اش گفتگو شده:
http://ur1.ca/mmxfx
http://ur1.ca/mmxf
http://ur1.ca/mmxfk
http://ur1.ca/mmxgu
« آخرین ویرایش: 04 خرداد 1394، 01:45 ب‌ظ توسط نوید راد »

آفلاین محمد فدوی

  • Sr. Member
  • *
  • ارسال: 485
  • جنسیت : پسر
  • آغاز آزادی از رایانهٔ شخصی
    • آغاز آزادی از رایانهٔ شخصی
پاسخ : آیا JAVA شعار Write once, run anywhere را رعایت کرده؟
« پاسخ #2 : 06 خرداد 1394، 04:59 ب‌ظ »
سلام دوستان

داشتم در مورد زبانهای برنامه نویسی با قابلیت اجرا شدن در همه جا جستجو می کردم، و باز هم به JAVA رسیدم.

یک مقدار که مطالعه کردم، متوجه شدم که JAVA به صورت مستقیم در Android اجرا نمیشه ( http://www.wikihow.com/Get-Java-on-Android )
اما میشه تبدیلش کرد و.....

اما پس چرا میگه Write once, run anywhere در حالی که باید تبدیل کرد تا بشه در جاهای دیگر استفاده کرد؟


چون حوصله یادگیری زبان جدید ندارم، گشتم و به زبان هایی که JVM ازشون پشتیبانی میکنه رسیدم. ( https://en.wikipedia.org/wiki/List_of_JVM_languages )
زبان مورد علاقه من یعنی Python درش هست.

به نظر شما JAVA یاد بگیرم بهتره، یا اینکه میشه با Python هم نتیجه مورد نظرم برسم؟


راستی تا اونجا که میدونم و تحقیق کردم و کار کردم، با Python هم میشه برای همه جا برنامه نوشت ( Desktop, Web, Mobile )

اما چه تفاوت دیگری بین JAVA و Python هست که فقط JAVA میگه " Write once, run anywhere " ؟؟؟  ???

سلام.
شعار WORA در جاوا بخوبی پیاده‌سازی شده. توجه داشته باشیم که درسته با پایتون و خیلی از زبان‌های تفسیری دیگه هم می‌شه برنامه‌های مستقل از سکو نوشت ولی تفاوت جاوا اینه که تفسیری نیست و به بایت‌کد کامپایل شده.
علاوه‌براین، بسیاری از فریمورک‌های دیگه (مثل دات‌نت و...) هم استعداد این رو دارن که مستقل از پلتفرم باشن (و واقعا هم هستن) ولی API موجود در فریمورکشون این تضمین رو نمی‌کنه و برنامه‌نویس خودش باید حواسش باشه تا برنامه‌ش وابسته به سکو نباشه، این در حالیه که همه‌ی کتابخانه‌ی استاندارد جاوا با این دید طراحی شده که قراره بصورت مستقل از سکو اجرا بشه، حتی بخش‌های مربوط به پروسس‌های موازی، تا I/O و ارتباط با پایگاه‌داده و تغییر در ورودی کاربر (کلاس‌های Robot) و...! واسه همینه که جاوا به خودی خود چندان به لایه‌های سطح پایین سیستم دسترسی نداره.

در مقایسه با فریمورک‌های مستقل از سکوی دیگه‌ای مثل Qt چی؟ برنامه‌نویسی جاوا واقعا طبق جمله‌ی «Write Once, Run Anywhere» هست یعنی شما با یکبار کدنویسی و یکبار کامپایل برنامه‌ای دارید که روی هرماشین دارای JRE اجرا خواهد شد. اما Qt بیشتر طبق این جمله‌ست که «یه‌بار بنویس، برای هر سیستم‌عامل دی‌باگ کن، کامپایل کن و اجرا کن!» یعنی توی Qt -و فریمورک‌های مشابهش- شما یکبار کد می‌نویسی ولی برای هر سیستم‌عامل باید کامپایل جداگونه بکنی و معمولا یه مقداری رفع باگ وابسته به سکو هم نیازه.

اما چرا جاوا روی اندروید اجرا نمی‌شه؟
دلیل اینه که طراح اندروید به حسب نیازی که داشته ماشین مجازی جاوا (JVM) رو تغییر داده و ماشین مجازی جاوای خودش رو تولید کرده (که قبلا Dalvik بود و الان ART). پس طبیعیه که برنامه‌های Java SE و Java ME به‌طور پیش‌فرض نباید روش اجرا بشه.
برای اجرای برنامه‌های Java ME چندین شبیه‌ساز و مبدل آنلاین و آفلاین هست که می‌تونید درباره‌ش جستجو کنید و در مورد اجرای برنامه‌های Java SE چندین پروژه انجام شده که من اطلاعاتم کافی نیست ولی بعید می‌دونم هیچکدوم کامل و بی‌عیب باشن.

موفق باشید.
اگر به بهداشت و فرهنگ رفتار با حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: http://fadavi.net

آفلاین { AliReaza }

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی، دیگر در مورد آزادی شعار نده...
پاسخ : آیا JAVA شعار Write once, run anywhere را رعایت کرده؟
« پاسخ #3 : 07 خرداد 1394، 08:51 ق‌ظ »
دوستان خیلی ممنون

سلام.
شعار WORA در جاوا بخوبی پیاده‌سازی شده. توجه داشته باشیم که درسته با پایتون و خیلی از زبان‌های تفسیری دیگه هم می‌شه برنامه‌های مستقل از سکو نوشت ولی تفاوت جاوا اینه که تفسیری نیست و به بایت‌کد کامپایل شده.
علاوه‌براین، بسیاری از فریمورک‌های دیگه (مثل دات‌نت و...) هم استعداد این رو دارن که مستقل از پلتفرم باشن (و واقعا هم هستن) ولی API موجود در فریمورکشون این تضمین رو نمی‌کنه و برنامه‌نویس خودش باید حواسش باشه تا برنامه‌ش وابسته به سکو نباشه، این در حالیه که همه‌ی کتابخانه‌ی استاندارد جاوا با این دید طراحی شده که قراره بصورت مستقل از سکو اجرا بشه، حتی بخش‌های مربوط به پروسس‌های موازی، تا I/O و ارتباط با پایگاه‌داده و تغییر در ورودی کاربر (کلاس‌های Robot) و...! واسه همینه که جاوا به خودی خود چندان به لایه‌های سطح پایین سیستم دسترسی نداره.

در مقایسه با فریمورک‌های مستقل از سکوی دیگه‌ای مثل Qt چی؟ برنامه‌نویسی جاوا واقعا طبق جمله‌ی «Write Once, Run Anywhere» هست یعنی شما با یکبار کدنویسی و یکبار کامپایل برنامه‌ای دارید که روی هرماشین دارای JRE اجرا خواهد شد. اما Qt بیشتر طبق این جمله‌ست که «یه‌بار بنویس، برای هر سیستم‌عامل دی‌باگ کن، کامپایل کن و اجرا کن!» یعنی توی Qt -و فریمورک‌های مشابهش- شما یکبار کد می‌نویسی ولی برای هر سیستم‌عامل باید کامپایل جداگونه بکنی و معمولا یه مقداری رفع باگ وابسته به سکو هم نیازه.

اما چرا جاوا روی اندروید اجرا نمی‌شه؟
دلیل اینه که طراح اندروید به حسب نیازی که داشته ماشین مجازی جاوا (JVM) رو تغییر داده و ماشین مجازی جاوای خودش رو تولید کرده (که قبلا Dalvik بود و الان ART). پس طبیعیه که برنامه‌های Java SE و Java ME به‌طور پیش‌فرض نباید روش اجرا بشه.
برای اجرای برنامه‌های Java ME چندین شبیه‌ساز و مبدل آنلاین و آفلاین هست که می‌تونید درباره‌ش جستجو کنید و در مورد اجرای برنامه‌های Java SE چندین پروژه انجام شده که من اطلاعاتم کافی نیست ولی بعید می‌دونم هیچکدوم کامل و بی‌عیب باشن.

موفق باشید.

اگر فرق JAVA و Qt برای ساخت برنامه های Cross-Platform فقط در Debug و Complie مجدد باشه، فکر نکنم در برنامه های کوچک مشکل خاصی باشه.

مورد بعدی استفاده از منابع سخت افزار زیاد JAVA نسبت به بقیه هست. ( البته نمی دونم در بروز رسانی های جدید JAVA بهتر شده یا نه؟! )
چون طبق مطالعاتی که داشتم ( حدود ۳ تا ۶ ماه قبل )، JAVA از منابع بیشتر نسبت به بقیه استفاده می کنه.
مثلا به خوبی یادمه که چند برنامه کوچک با Cpp و JAVA نوشته شده بود و مصرف برنامه های JAVA از Cpp بیشتر بود، اما در سرعت کار تفاوتی خاصی نبود.

اگر از بحث Debug و Complie و استفاده از منابع بگذریم،
آیا زبان دیگری وجود دارد که Cross-Platform باشد و راحتتر از JAVA بشه در Android استفاده کرد؟
چون JAVA به JRE نیاز داره. در نتیجه کدام زبان به JRE نیاز نداره و میشه بدونه هیچ پیش نیازی در Android هم اجراش کرد؟ ( الویت با Android می باشد، اما اگر زبان مورد نظر برای بقیه سیستم عامل های Mobile هم کارایی داشته باشد، عالیه )

به عنوان نمونه: Qt که با Cpp هست. یا PyQt و kivy که با Python هستند.


به طور کلی به جوابم رسیدم. سوال بالا فقط برای اینه که ببینم آیا زبان یا زبان های دیگری هست که بتوان جایگزین JAVA کرد یا خیر!!!