دوستان خیلی ممنون
سلام.
شعار 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 کرد یا خیر!!!