সি ++ এর মতো অন্যান্য ভাষার চেয়ে জাভা কেন বহনযোগ্য বিবেচিত?


16

জাভা বিকাশকারীদের জন্য "প্রতিটি প্ল্যাটফর্মের জন্য একটি নির্দিষ্ট জেআরই লেখার" এবং সি ++ এর জন্য "প্রতিটি প্ল্যাটফর্মের জন্য একটি সি ++ সংকলক লেখার" মধ্যে কী পার্থক্য রয়েছে?

উত্তর:


33

জাভা একবারে যে কোনও জায়গায় চালিত হয় comp সি ++ একবারে যে কোনও জায়গায় সংকলন করা হয়।


3
ভাল আপনি অবশ্যই GUI বিকাশের সাথে খুব বেশি অভিজ্ঞতা অর্জন করতে পারেন নি। (

27
সি ++ "যে কোনও জায়গায় একবার সংকলন করুন" বলে দাবি করে এমন যে কোনও ব্যক্তিকে কখনও সি ++ প্রোগ্রাম পোর্ট করতে হয়নি ...
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

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

8
@ পাবিবি 8 না, বহনযোগ্যতার সমস্যাগুলি প্রমিত মানের কোড থেকেও আসে যা ননপোর্টেবল অনুমানগুলি তৈরি করে , যেমন আদিমতা সম্পর্কে ধারণা (যেমন আপনার মনে হয় আপনি জাভাতেও ভুগতে পারেন), সারিবদ্ধকরণ এবং আকারের মৌলিক ধরণের।
আর মার্টিনহো ফার্নান্দেস 21

5
একবার লিখুন, সর্বত্র ডিবাগ করুন।
ভাগ্যিস

25

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

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

তবে, বাস্তবতা সবসময় এর মতো সুন্দর হয় না। আমি বহনযোগ্যতাটিকে "পৌরাণিক কাহিনী" বলার মতো এগিয়ে যাব না, তবে এটি সত্য যে এটি এতটা নিখুঁত নয়। উদাহরণস্বরূপ, জাভাতে একটি প্যাকেজ বলা হয়েছে JNIযা জেআরইকে বাইপাস করে নেটিভ কলগুলি প্রেরণের অনুমতি দেয়, এইভাবে নিখুঁত বিরামহীন বহনযোগ্যতা রোধ করে, জাভা ভক্তদের "লিখিতভাবে একবারে সর্বত্র চালান" কল করতে পছন্দ করে।

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

যাইহোক, সি ++ সংকলক, কার্নেল, রিয়েল-টাইম সিস্টেম, এম্বেডেড সিস্টেম, ইত্যাদি সমালোচনামূলক সিস্টেমে ব্যাপকভাবে ব্যবহৃত হয় ... বহনযোগ্যতার কথা বলার সময় সি ++ এর একটি "নিম্ন স্তরের" দিক রয়েছে যা উপেক্ষা করা যায় না।


4
বহনযোগ্যতা কোনও কল্পকাহিনী নয়। নিখুঁত বহনযোগ্যতা।
ম্যালকম

"জাভা সি ++ এর থেকে খুব আলাদা যেখানে প্রতিটি অ্যাপ্লিকেশন" মেশিন-নির্দিষ্ট "এবং কোড পরিবর্তন না করে পোর্ট করা যায় না his" এটি সত্য নয়, এটি নির্ভরতাগুলির উপর নির্ভর করে। যদি আপনি কেবলমাত্র আপনার টার্গেটগুলিতে পোর্টেবল উত্স সহ স্ট্যান্ডার্ড লাইব্রেরি এবং গ্রন্থাগারগুলি ব্যবহার করেন তবে আপনি একবার কোড করে প্রতিটি লক্ষ্যকে সংকলন করেন। আপনি যদি সি ++ তে কোড পরিবর্তন না করে পোর্ট করা যায় এমন কিছু কোড করেন তবে আপনার কেবলমাত্র বিল্ড স্ক্রিপ্টগুলি সংশোধন করতে হবে। এমনকি এটি সব ক্ষেত্রেই সত্য নয়।
ক্লাইম

আসুন ভুলে যাবেন না যে সি ++ একটি উচ্চ-স্তরের এবং নিম্ন স্তরের ভাষা উভয় হিসাবে ব্যবহার করা যেতে পারে। প্রোগ্রামগুলিতে প্রচুর সি ++ কোড ব্যবহৃত হয় যেখানে 32 বিট ইনট একটি 64-বিট ইনট থেকে খুব আলাদা। অবশ্যই উচ্চ-স্তর সর্বদা বহনযোগ্য হবে। তবে এটি একটি সি ++ সাধারণীকরণ থেকে অনেক দূরে
রাহমু

আমি মনে করি আপনি যা বলছেন তা ভুল বুঝতে পেরেছি: আপনি নিম্ন স্তরের স্টাফ নিয়ে বিরক্ত না করে ইন্ট বা কোনও মানক টাইপের সাথে সঠিক সি ++ লিখতে পারেন। কেবল বুস্ট লাইব্রেরিগুলিতে একবার দেখুন, বেশিরভাগটি কেবলমাত্র উচ্চ স্তরের কোড এবং এটি অনেকগুলি সি ++ ওপেন সোর্স প্রকল্পের জন্য সত্য। আপনি নিম্ন স্তরে "যেতে" পারেন, এবং আপনি যদি করেন তবে আপনি প্ল্যাটফর্ম নির্দিষ্ট API ব্যবহার না করা অবধি কোনও নির্দিষ্ট কোড এড়াতে পারবেন। তবে আপনার যদি প্রয়োজন না হয় তবে আপনি সি ++ লিখতে পারেন যা সর্বত্র কাজ করে। প্ল্যাটফর্মের উপর নির্ভরতা এড়ানো যায় এবং প্রায়শই গ্রন্থাগার কোডে থাকে।
ক্লাইম

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

14

এটি কেবল ভাষা নয় - এটি গ্রন্থাগারগুলি।

জাভা এবং সি ++ উভয়ই ক্রস-প্ল্যাটফর্ম লাইব্রেরি সরবরাহ করে। জাভা আরও সমৃদ্ধ সেট সরবরাহ করে।


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

জাভার মানক গ্রন্থাগারগুলি সি ++ এর জন্য গ্রন্থাগারের মহাবিশ্বের সাথে তুলনা করা আসলেই একটি বৈধ তুলনা নয়। জাভা আরও সমৃদ্ধ সেট সরবরাহ করে, আপনি প্রত্যেকের স্ট্যান্ডার্ড লাইব্রেরি তুলনা করছেন বা আপনি প্রতিটি গ্রন্থাগারের বিশ্বজগতের সাথে তুলনা করছেন কিনা।
অ্যান্ডি টমাস

3
অবশ্যই এটির সাথে একমত নন। জাভা লাইব্রেরিতে যে কোনও কিছু পাওয়া যায় ইতিমধ্যে কিছু লাইব্রেরিতে সি ++ ব্যবহারের জন্য উপলব্ধ। আমি এই বিষয়টি পছন্দ করি যে জাভাতে এটি সমস্ত জায়গায় রয়েছে তবে এটি আরও সমৃদ্ধ বলাই ঠিক সত্য নয়। সম্ভবত আপনি যে বিশেষণটির সন্ধান করছেন সেটি হ'ল আরও সংহত '
মার্টিন ইয়র্ক

1
+1 আবার upvote হবে। আমি মনে করি গ্রন্থাগারগুলি বহনযোগ্যতার সবচেয়ে বড় কারণ factor আপনি যদি সি / সি ++ এ কাজ করছেন এবং খাঁটি গণনা ব্যতীত অন্য কিছু করছেন, সেখানে গ্রন্থাগারগুলি থাকবে (বিশেষত সিস্টেম লাইব্রেরির অংশগুলি) যা উইন্ডোজ এবং ইউনিক্সের মধ্যে মূলত পৃথক এবং ইউনিক্সের বিভিন্ন স্বাদের মধ্যে পৃথকভাবে পৃথক। এটি পোর্টিংকে শক্ত করে তোলে। মূলত জাভাতে এই সমস্যা নেই।
টম অ্যান্ডারসন

1
@ অ্যান্ডি টমাস-ক্র্যামার: আমি কোনও কিছুর তুলনা করছি না (আপনি মনে হয়)) আমি বলছি আপনার বক্তব্যটি সঠিক নয়। জাভা এর অন্যতম সুবিধা (এবং আমরা সবাই এটির জন্য ভালবাসি) হ'ল এক জায়গায় সমস্ত স্ট্যান্ডার্ড লাইব্রেরি। তারা আরও ধনী বলে বলা ঠিক সঠিক নয়।
মার্টিন ইয়র্ক

7

পার্থক্যটি হ'ল জাভা কোনও প্ল্যাটফর্মে পুনরায় সংযোগ না করে চলবে । প্রতিটি প্ল্যাটফর্মের জন্য সি ++ সংকলক থাকা মোটেও এক রকম নয়।


6

"পার্থক্যটি হ ...", বা খুব অনুরূপ কিছু দিয়ে শুরু হওয়া সমস্ত উত্তর মূলত ভুল (দুঃখিত, তবে এটাই জীবন)। দুজনের মধ্যে সত্যই দুটি আলাদা পার্থক্য রয়েছে।

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

অন্যটি হ'ল জাভা (অন্তত চেষ্টা করে) নিশ্চিত করে যে সমস্ত লিখিত জাভা বহনযোগ্য হবে। কমপক্ষে তত্ত্ব অনুসারে, আপনার এমন কোনও কোড লিখতে সক্ষম হওয়া উচিত নয় যা পোর্টেবল নয়।

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


সি ++ পিসিআই বাস বা হার্ডওয়্যার সম্পর্কে কিছুই জানে না।
নিককো

অবশ্যই এটি হয় না, সেগুলি প্ল্যাটফর্ম নির্দিষ্ট জিনিস যা প্ল্যাটফর্ম নির্দিষ্ট লাইব্রেরিতে অন্তর্ভুক্ত করতে হবে। প্রয়োজনে জাভা যেমন প্ল্যাটফর্ম নির্দিষ্ট গ্রন্থাগার থাকতে পারে।
11:30

1
@Nikko: এটা সম্পর্কে কিছুই কিছু জানে, কিন্তু এটা কি আপনি ব্যবহার করার অনুমতি দেয় আপনি এটি সম্পর্কে জানি।
জেরি কফিন

@ জওয়েন্টিং: পার্থক্য হ'ল আপনি প্ল্যাটফর্ম-নির্দিষ্ট লাইব্রেরি সি ++ তে লিখতে পারেন , তবে আপনি সাধারণত সেগুলি জাভাতে লিখতে পারবেন না
জেরি কফিন

6

আপনি প্রাঙ্গণটি ভুল বুঝেছেন। জাভা প্রোগ্রামগুলি খুব বহনযোগ্য, কারণ জেভিএম একই মানের গ্যারান্টিযুক্ত একটি স্ট্যান্ডার্ড আচরণ সরবরাহ করে। সি ++ প্রোগ্রামগুলির প্রকৃত হার্ডওয়্যারটির নিকটে একটি স্বল্প মানের পরিবেশ থাকে, সুতরাং প্রোগ্রামটি বিভিন্ন প্ল্যাটফর্মের নির্দিষ্ট বিবরণগুলি হ্যান্ডেল করতে সক্ষম হওয়া প্রয়োজন - যেমন কোনও int এর আকার, শব্দ প্রান্তিককরণ ইত্যাদি ইত্যাদি etc.

জেভিএম নিজেই খুব পোর্টেবল নয়। উচ্চ-পারফরম্যান্ট জেভিএমকে অন্য প্ল্যাটফর্ম বা সিপিইউ আর্কিটেকচারে পোর্ট করা হারকিউলিয়ান কাজ।


এই শেষ বাক্যটির জন্য +1!
রাহমু

2

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


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

সেখানে, আমি কম সংজ্ঞাযুক্ত ভাষা
কলিন

2

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

উদাহরণস্বরূপ, দেওয়া

long thing1(int x) {
  return (x+1)-1L;
}
double thing2(int x, float y) {
  return x/y;
}

thing1(2147483647)এবং thing2(1123456700,11234567.0f)এর মানগুলি যথাক্রমে -2147483649L এবং 99.9999923706054688 হওয়া আবশ্যক, যদিও গাণিতিকভাবে সঠিক মানগুলি 2147483647L এবং 100.0 হবে এবং কিছু প্ল্যাটফর্ম কোডে সংখ্যাসূচক-ভুল ফলাফল উত্পন্ন করতে কোড তৈরির চেয়ে ধীর হবে ফলাফল (কিছু -৪-বিট প্ল্যাটফর্মে, (x + 1) এর পরে মোড়কের আচরণের জন্য জোর করে অতিরিক্ত নির্দেশের প্রয়োজন হবে এবং 8x87 প্ল্যাটফর্মে 1123456700 এর মান গোল করতে বাধ্য করা হলে floatকেবল লোডিংয়ের তুলনায় অতিরিক্ত নির্দেশের প্রয়োজন হবে) এটি সরাসরি একটি বর্ধিত-নির্ভুলতার রেজিস্ট্রারে)।


1
পুরানো প্রশ্নের জন্য একবারে নতুন উত্তর যা আসলে মূল্যবোধের কিছু যোগ করে: জাভাতে খুব সুনির্দিষ্ট গাণিতিক প্রয়োজনীয়তা থাকে এবং অবশ্যই আদিম তথ্য প্রকারের সি ++ এর তুলনায় নির্দিষ্ট আকার এবং শব্দার্থবিজ্ঞান থাকে। এই তারিখ হিসাবে অন্য কোন উত্তর এটি উল্লেখ করে।

@ স্নোমান: নির্দিষ্ট উদাহরণগুলি আপনি কী পছন্দ করেন? ব্যক্তিগতভাবে আমি যদি কোনও ভাষা ডিজাইনি করতাম তবে আমি (int)উদাহরণের প্রথম উদাহরণের (x+1)সুব্রপ্রেসনের ক্ষেত্রে প্রথম উদাহরণের সংক্ষিপ্ত বর্ণনাকে সঙ্কুচিত কাস্ট ব্যবহার না করে জাভাটির মান floatদুটি উদাহরণই xদিতাম না, তবে স্পষ্টতই আমি ভাষাটি ডিজাইন করিনি ।
সুপারক্যাট

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

1

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


1

"বহনযোগ্যতা কি কোনও পৌরাণিক কাহিনী?" শিরোনামের জবাব দেওয়ার পরিবর্তে "কোনটি বহনযোগ্যতা, জাভা বা সি +++ এর চেয়ে ভাল" এর পরিবর্তে আমি বলব যে আংশিক বহনযোগ্যতা সম্ভব, তবে সম্পূর্ণ বহনযোগ্যতা এটি একটি মিথকথা।

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

এবং এই ফ্রেমওয়ার্কগুলিতে গ্রন্থাগার, ডাটাবেস, গ্রাফিকাল ইন্টারফেস অন্তর্ভুক্ত।

কোন প্রোগ্রামিং ভাষা, বা কোন প্রোগ্রামিং ফ্রেমওয়ার্কটি আরও বহনযোগ্য?

ঠিক আছে, এটি নির্ভর করে আপনার অ্যাপ্লিকেশনটি। অর্জন করার চেষ্টা করা হয়।


1

জিনিসটি "আপনি" JRE লিখবেন না আপনি জাভা কোডটি লেখেন যা কোনও জেআরইতে চলে। "আপনি" সি ++ কোড লিখেন যা অন্য প্ল্যাটফর্মটিতে সংকলনের আগে আপনার দ্বারা পরিবর্তনগুলির প্রয়োজন হতে পারে ।


0

"যখন এটি 100% বহনযোগ্য" বা এর মতো বাক্যাংশগুলি বলে তখন অনেকে জাভার বাস্তবতা ভুলে যায় বা গ্রহণ করে না।

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

এটি কীভাবে "পোর্টেবল" জন্য? আপনি যেদিকেই ঘুরেন একটি জেআরই।

এবং এটি সান / ওরাকল কী করছে তা বিবেচনা না করেই।

জাভা কোডটি কেন পোর্টেবিলিটির দিক থেকে সি এবং সি ++ থেকে সত্যই দূরে নয় তার একটি উদাহরণ জিইউআই এবং গ্রাফিকাল সার্ভারগুলি, অ্যাপলের নিজস্ব জেআরইয়ের জন্য জিইউআই কাঠামোর একটি মানহীন বাস্তবায়ন ছিল, ফলস্বরূপ অনেকগুলি ছিল মাথাব্যথা এবং অ্যাপল মেশিনগুলির জন্য জাভা ব্যবহার করে একটি জিইউআই তৈরি / বন্দর করতে চাইলে যার জন্য ডাবল কাজ এবং তারা মূলত কোয়ার্টজকে মোকাবেলা করতে বাধ্য হয়েছিল (এটি "লিভারেজ" এবং উচ্চ স্তরের ভাষার ক্ষেত্রে কীভাবে হয়?)

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

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.