অ্যান্ড্রয়েড জাভা ব্যবহার করে কেন? [বন্ধ]


114

ঠিক আছে, গুগল থেকে কারও কাছে এটি জিজ্ঞাসা করা উচিত, তবে আমি কেবল অন্য মতামত চাই।

এমনকি অ্যান্ড্রয়েড নেটিভ কোড অ্যাপ্লিকেশনগুলিকে সমর্থন করে, মূল বিকাশের সরঞ্জামটি জাভা। কিন্তু কেন? মানে, মোবাইল ডিভাইসে কোড ব্যাখ্যা করা খুব ধীর নয়? ফ্রয়েও পরিচয় করানোর সময় গুগল বলেছিল যে নতুন জেআইটি সংকলক 2-5 গুণ দ্রুত অ্যাপ্লিকেশন অর্জন করতে পারে। এর অর্থ, নেটিভ কোডের চেয়ে জাভা ব্যবহার করা 2-x গুণ কম।

হ্যাঁ, আমি জানি যে ব্যবস্থাপনার কোড অ্যাপ্লিকেশনগুলি ব্যবহার করা সিস্টেমের স্থায়িত্বের দিক থেকে নিরাপদ, কারণ ভার্চুয়াল মেশিনে প্রোগ্রামের আরও ভাল নিয়ন্ত্রণ থাকে তবে এখনও, এই পারফরম্যান্সের ড্রপটি বিশাল, এবং কেন এটি ব্যবহার করার কোনও বিন্দু আমি দেখতে পাচ্ছি না।


12
জাভা কোডটি ব্যাখ্যা করা যায় না, অন্তত অ্যান্ড্রয়েডে নয় - এটি সংকলিত এবং ভার্চুয়াল মেশিনে চলে ran
রডোমির ডপিরালস্কি

4
আমি ভেবেছিলাম যে সান প্রমাণ করেছেন জাভা দেশীয় কোডের চেয়ে দ্রুত (কয়েকটি ক্ষেত্রে, তবে প্রায়শই প্রায়) হতে পারে? এছাড়াও, গুগল ছেলেরা একটি স্মার্ট প্যাক - আমি আত্মবিশ্বাসী যে তারা সম্প্রতি জেআইটি প্রবর্তন করেছে খুব তাড়াতাড়ি বা পরে খুব ভাল কোড তৈরি করবে।

1
@ বি-জেন-জ্যাক-ও-নিল উত্তরটি আসলে না, কারণ ভিএম রান-টাইমে কোন কোডটি কার্যকর করা হচ্ছে এবং কীভাবে এটি কার্যকর করা হচ্ছে তা বলতে পারে। উদাহরণস্বরূপ, রানটাইম সময়ে পারফরম্যান্স-সমালোচনামূলক গ্রাফিক্স ফাংশনগুলি অনুকূল করে তোলার সুস্পষ্ট উদ্দেশ্যে আপেল ওএস এক্সে এলএলভিএম ব্যবহার করে। এটি বিশেষভাবে করা হয়েছে কারণ এটি স্থানীয়-কোড কৌশলগুলির চেয়ে দ্রুত।
পিটারএলেন ওয়েবেবি

1
@ বি-জেন-জ্যাক-ও-নিল, জাভা বাইটকোড রানটাইমের সময় নেটিভ কোডে সংকলন করা যায়।
মাইক ড্যানিয়েলস

1
@ বি-জেন-জ্যাক-ও-নিল - সাধারণ সংকলকটির চেয়ে ভিএমএমের অবসারণ পরিবেশ সম্পর্কে আরও তথ্যের অ্যাক্সেস রয়েছে, সুতরাং এটি আরও বুদ্ধিমান পছন্দ করতে পারে। কী পরিমাণে এটি অতিরিক্ত ওভারহেড অফসেট করে অ্যাপ্লিকেশন থেকে আলাদা হয়ে যায়।
কার্টেনডগ

উত্তর:


98

কিছু বিষয়:

  1. জাভা একটি জ্ঞাত ভাষা, বিকাশকারীরা এটি জানেন এবং এটি শিখতে হবে না

  2. সি / সি ++ কোডের চেয়ে জাভা দিয়ে নিজেকে গুলি করা শক্ত কারণ এটির কোনও পয়েন্টার গাণিতিক নেই

  3. এটি একটি ভিএম-এ চলে, সুতরাং সেখানকার প্রতিটি ফোনের জন্য এটি পুনরায় সংকলনের প্রয়োজন নেই এবং সুরক্ষিত করা সহজ

  4. জাভা জন্য বিপুল সংখ্যক বিকাশ সরঞ্জাম (দেখুন পয়েন্ট 1)

  5. বেশ কয়েকটি মোবাইল ফোন ইতিমধ্যে জাভা এমই ব্যবহার করেছে, তাই জাভা শিল্পে পরিচিত ছিল

  6. বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য গতির পার্থক্য কোনও সমস্যা নয়; এটি যদি আপনার নিম্ন স্তরের ভাষায় কোড করা উচিত


5
ভিএম-তে চালানো (এভাবে পুনরায় সংশোধন করা নয়) একটি বিশাল প্লাস। এছাড়াও, এটি সহজেই একে অপরের থেকে প্রক্রিয়াগুলি পৃথক করে, একটি দুর্বৃত্ত অ্যাপ্লিকেশনটিকে আপনার ফোনটি ধ্বংস করতে বা অন্যান্য অ্যাপ্লিকেশনগুলিতে হস্তক্ষেপ থেকে বিরত
রাখে

1
দুর্বৃত্ত অ্যাপ্লিকেশন জিনিস সম্পর্কে - এটি আকর্ষণীয় বলে মনে হচ্ছে। আমি ভুল হলে আমাকে সংশোধন করুন, তবে x86 সিপিইউগুলির পেজিং এবং রিং মোডের মাধ্যমে সুরক্ষায় বিউল্ট রয়েছে, সুতরাং অ্যাপ্লিকেশনটি এর পৃষ্ঠাটিকে মেমরিতে পরিবর্তন করতে পারে না সুতরাং ওএস এপিআই ব্যবহার করা ছাড়া অন্য কোনও অ্যাপ্লিকেশনে হস্তক্ষেপ করতে পারে না। তবে এই বৈশিষ্ট্যটিতে কি এআরএম সিপিইউ রয়েছে? আমার আসলে কোন ধারণা নেই যদি তা না হয় তবে এই প্ল্যাটফর্মে জাভাটির জন্য এটি দুর্দান্ত।
বি। জেন.জ্যাক.ও.নিল


4
মেমরি সুরক্ষা কিছু সিপিইউ আর্কিটেকচারের অংশ। এটি কোনও দূষিত অ্যাপ্লিকেশনটিকে অন্য কোনও অ্যাপ্লিকেশনকে দেওয়া মেমোরি অ্যাক্সেস করা থেকে বিরত করে। en.wikipedia.org/wiki/Memory_protection
josefx

1
@ ফালমারি: হ্যাঁ, তা হয়। মূলত এটি খুব সহজ। আপনার অ্যাপ্লিকেশনটিতে তার নিজস্ব ঠিকানা ঠিকানা দেওয়া হয়েছে। আপনি যে সমস্ত ঠিকানাতে অ্যাক্সেস করতে চান সেগুলি এমএমইউ দ্বারা অনুবাদ করা হয়েছে। আপনি ঠিকানা 0x0000 অ্যাক্সেস করতে চান এবং এমএমইউ 0x0E21 উদাহরণ হিসাবে এটি অনুবাদ করে। এবং আপনাকে বেস অ্যাড্রেসটি পরিবর্তন করতে প্রতিরোধ করতে, এর প্রাইভেলজড নির্দেশিকা এবং আপনার প্রোগ্রাম যখন ওএস দ্বারা শুরু হয় তখন সর্বনিম্ন প্রাইভেলিজ স্তর নির্ধারণ করে। যদি তা না হয় তবে একক সিএলআই (বিঘ্ন নিষ্ক্রিয় করা) নির্দেশনা সিস্টেম ক্র্যাশ করবে ....
বি জেন.জ্যাক.ও.নিল

39

বাইট-কোড স্তরে, অ্যান্ড্রয়েড জাভা ব্যবহার করে না। উত্সটি জাভা, তবে এটি কোনও জেভিএম ব্যবহার করে না।


7
হ্যাঁ. জাভা হ'ল উত্স, তবে এটি জাভা ভার্চুয়াল মেশিনের সাথে বাইট কোডের সাথে সামঞ্জস্য নয়। এই কারণেই তারা সম্ভবত সবচেয়ে বেশি / সমস্ত সূর্যের / ওরাকল নিয়ে পেটেন্টের বিবাদ করবে। তারা কেবল ভাষার বাক্য গঠন ব্যবহার করছে।
জন গার্ডনার 21

1
এটি এখনও জাভা ভিএম এর বেশিরভাগ ফাংশন সমর্থন করে। সুতরাং তারা তাদের অপ্টিমাইজ করতে পারে না।
জোসেফেক্স

1
তাহলে অ্যান্ড্রয়েডে বিকাশকালে কেন জেডিকে ইনস্টল করার প্রয়োজন হবে? এটা কি কেবল এমুলেটারের জন্য?
jiggunjer

@ জিগঞ্জঞ্জার অ্যান্ড্রয়েড স্টুডিওটি জাভাতে তৈরি করা হয়েছে, বাস্তবে এটি। এবং এমুলেটর হয়।
রুদ্র বি সরস্বত

20

সেল ফোনের মতো ডিভাইসে সিস্টেমের স্থায়িত্বের উন্নতি খুব গুরুত্বপূর্ণ

সুরক্ষা আরও গুরুত্বপূর্ণ। অ্যান্ড্রয়েড পরিবেশ ব্যবহারকারীদের অর্ধ-বিশ্বস্ত অ্যাপ্লিকেশনগুলি চালিত করতে দেয় যা দুর্দান্ত সুরক্ষা ছাড়াই ফোনটি সত্যই অপ্রীতিকর উপায়ে কাজে লাগাতে পারে। ভার্চুয়াল মেশিনে সমস্ত অ্যাপ্লিকেশন চালিয়ে আপনি গ্যারান্টি দিচ্ছেন যে ভিএম বাস্তবায়নে কোনও ত্রুটি না থাকলে কোনও অ্যাপ্লিকেশন ওএস কার্নেলটি ব্যবহার করতে পারে না। পরিবর্তে, ভিএম বাস্তবায়ন সম্ভবত ছোট এবং এটি একটি ছোট, সু-সংজ্ঞায়িত সুরক্ষা পৃষ্ঠ রয়েছে।

সম্ভবত সর্বাধিক গুরুত্বপূর্ণ, যখন প্রোগ্রামগুলি ভার্চুয়াল মেশিনের কোডগুলিতে সংকলিত হয়, তখন তাদের নতুন হার্ডওয়্যারের জন্য পুনরায় সংযোগ করতে হবে না। ফোন চিপগুলির বাজারটি বৈচিত্র্যময় এবং দ্রুত পরিবর্তিত, সুতরাং এটি একটি বড় বিষয়।

এছাড়াও, জাভা ব্যবহারের ফলে লোকেরা যে অ্যাপ্লিকেশনগুলি লিখে থাকে সেগুলি সেগুলি নিজেই কাজে লাগবে less কোনও বাফার-ওভারআনস নেই, পয়েন্টারগুলির সাথে ভুল ইত্যাদি ...


ডেভিডের অন্য একটি উত্তর বলেছেন অ্যান্ড্রয়েড
jvm

13

নেটিভ কোড জাভা কোডের চেয়ে কোনও দ্রুত প্রয়োজন হয় না। আপনার প্রোফাইল ডেটা কোথায় দেখায় যে দেশীয় কোডটি দ্রুত চলতে পারে?

জাভা কেন?

  • অ্যান্ড্রয়েড বিভিন্ন বিভিন্ন হার্ডওয়্যার প্ল্যাটফর্মে চালিত হয়। কোনও বাস্তব সুবিধা দেখতে আপনার এই আলাদা প্ল্যাটফর্মগুলির প্রত্যেকটির জন্য আপনার স্থানীয় কোডটি সংকলন এবং অনুকূলিত করতে হবে।

  • জাভাতে ইতিমধ্যে দক্ষ একটি বিশাল সংখ্যক বিকাশকারী রয়েছে।

  • জাভায় বিপুল ওপেন সোর্স সমর্থন রয়েছে, বিকাশকারীদের জীবন আরও সহজ করার জন্য অনেক লাইব্রেরি এবং সরঞ্জাম উপলব্ধ।

  • জাভা আপনাকে মূল কোডের অন্তর্নিহিত অনেকগুলি সমস্যা থেকে রক্ষা করে, যেমন মেমরি ফাঁস, খারাপ পয়েন্টার ব্যবহার ইত্যাদি from

  • জাভা তাদের স্যান্ডবক্স অ্যাপ্লিকেশন তৈরি করতে এবং আরও ভাল সুরক্ষা মডেল তৈরি করার অনুমতি দেয় যাতে কোনও খারাপ অ্যাপ আপনার সম্পূর্ণ ওএসটি নামাতে না পারে।


7

সবার আগে গুগলের মতে, অ্যান্ড্রয়েড জাভা ব্যবহার করে না। সে কারণেই ওরাকল গুগলে মামলা করছে। ওরাকল দাবি করেছেন যে অ্যান্ড্রয়েড কিছু জাভা প্রযুক্তির লঙ্ঘন করেছে, তবে গুগল বলেছে এটি ডালভিক।

দ্বিতীয়ত, 1995 সাল থেকে আমি জাভা বাইট কোড দোভাষী দেখিনি।

আপনি কিছু বাস্তব বেনমার্ক দিয়ে আপনার পারফরম্যান্স অনুমান ব্যাক আপ করতে পারেন? আপনার অনুমানের ক্ষেত্রটি আপনার সরবরাহ করা ভুল পটভূমির তথ্যকে ন্যায়সঙ্গত বলে মনে হচ্ছে না।


4

গুগল এটি অ্যান্ড্রয়েডে ব্যবহার করে জাভাটির কাছে বেশ জোরালো যুক্তি রয়েছে: এর বিকাশকারীদের একটি বিশাল বেস রয়েছে। এই সমস্ত বিকাশকারী (তাদের ধরণের) তাদের মোবাইল প্ল্যাটফর্মের জন্য বিকাশ করতে প্রস্তুত।

প্রযুক্তিগতভাবে বলতে গেলে, অ্যান্ড্রয়েড খাঁটি জাভা ব্যবহার করে না তা মনে রাখবেন ।


2
আমি মনে করি যে মোবাইল বিকাশে আগ্রহী সমস্ত লোক জাভা থেকেও "কুলার" ভাষায় আগ্রহী।
আর্লজ

4

অন্য কোথাও স্পর্শ হিসাবে, মূল সমস্যাটি হ'ল অ্যান্ড্রয়েডকে বিভিন্ন ধরণের হার্ডওয়্যার চালানোর জন্য পোর্টেবল ওএস হিসাবে নকশা করা হয়েছে। এটি অনেকগুলি বিদ্যমান মোবাইল বিকাশকারীদের কাছে পরিচিত একটি ফ্রেমওয়ার্ক এবং ভাষার ভিত্তিতেও তৈরি করছে।

পরিশেষে, আমি এটি ভবিষ্যতের বিরুদ্ধে বাজি বলছি - হার্ডওয়্যার উন্নতির সাথে সাথে যে কোনও পারফরম্যান্সের সমস্যা উপস্থিত রয়েছে তা অপ্রাসঙ্গিক হয়ে উঠবে - সমানভাবে বিকাশকারীদের একটি বিমূর্ততার বিরুদ্ধে কোড এনে গুগল চলাফেরা করতে পারে এবং অন্তর্নিহিত ওএসকে আরও সহজেই পরিবর্তন করতে পারে, যদি না বিকাশকারীরা পসিক্স / ইউনিক্স এপিআইগুলিতে কোডিং করছিলেন।

বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য নেটিভ ভাষার উপরে ভিএম-ভিত্তিক ভাষা ব্যবহারের ওভারহেডটি তাত্পর্যপূর্ণ নয় (টুইটারের মতো ওয়েব পরিষেবাদি ব্যবহারকারী অ্যাপ্লিকেশনগুলির জন্য বাধাটি বেশিরভাগই নেটওয়ার্কিং)। পাম WebOS এটিও প্রদর্শন করে - এবং এতে জাভা স্ক্রিপ্টটি জাভা বাদ দিয়ে মূল ভাষা হিসাবে ব্যবহার করে।

প্রদত্ত যে প্রায় সমস্ত ভিএমএস জেআইটি স্থানীয় কোডের সাথে সংকলন করে, কাঁচা কোডের গতি প্রায়শই দেশীয় গতির সাথে তুলনীয়। উচ্চ-স্তরের ভাষাগুলির সাথে সংযুক্ত প্রচুর বিলম্ব ভিএম ওভারহেডের সাথে অন্য কারণগুলির তুলনায় কম হয় (জটিল অবজেক্ট রানটাইম, 'সুরক্ষা' পরীক্ষা করে মেমরি অ্যাক্সেস পরীক্ষা করে ইত্যাদি) than

এও মনে রাখবেন যে কোনও অ্যাপ্লিকেশন লিখতে ব্যবহৃত ভাষা নির্বিশেষে অনেকগুলি আসল কাজ নিম্ন স্তরের এপিআইতে করা হয়। শীর্ষ স্তরের ভাষা প্রায়শই কেবল একসাথে API কলগুলি শৃঙ্খলিত করে।

অবশ্যই এই নিয়মের অনেকগুলি ব্যতিক্রম রয়েছে - গেমস, অডিও এবং গ্রাফিক্স অ্যাপ্লিকেশনগুলি যা ফোন হার্ডওয়্যারের সীমাবদ্ধ করে দেয়। এমনকি আইওএস-এ, বিকাশকারীরা প্রায়শই এই অঞ্চলগুলিতে গতি পেতে সি / সি ++ এ নেমে যান।


1

নতুন জেআইটি অ্যাপলিকেশনগুলি পুরানো ডালভিকভিএমের (উভয় জেএভিএ) চেয়ে 2 - 5 গুণ দ্রুত চালাচ্ছে। সুতরাং তুলনাটি জাভা এর চেয়ে সি নয়, ডালভিকভিএমের চেয়ে জেআইটি।


1

সবার আগে এটি উইন্ডোজের মোবাইল বা আইফোন সম্পর্কে জানায়, নেট ফ্রেমওয়ার্কের নিজস্ব ভিএম পাশাপাশি কোকোও প্রয়োজন।

এমনকি পারফরম্যান্স সেরা না হলেও, কারণ এটি বাইট কোডের ব্যাখ্যা, অ্যান্ড্রয়েড সম্ভাব্য বিকাশকারী হিসাবে পুরো জাভা সম্প্রদায়কে নিয়ে আসে। আরও অ্যাপ্লিকেশন, আরও ক্লায়েন্ট, ইত্যাদি

শেষ করতে, কোনও পারফরম্যান্স ততটা খারাপ নয়, এজন্যই ছোট ছোট ডিভাইসে জাভা ব্যবহার করা হয় (জাভামে দেখুন)।


কোকো ভিএম ভিত্তিক নয় - এটি সমস্ত সংকলিত নেটিভ কোড - তবে খাঁটি সি / সি ++ এর বিপরীতে এটির একটি গতিশীল রানটাইম রয়েছে (স্মলটালক / রুবি / পাইথনের অনুরূপ) - যার নিজস্ব কর্মক্ষমতা সম্পর্কিত সমস্যা এবং অপটিমাইজেশন রয়েছে। এটি উল্লেখযোগ্য যে আইফোনের বেশিরভাগ গেমগুলি ওবজে-সি-এর পরিবর্তে মূলত সি ++ থাকে।
জুলাইসলেট 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.