জাভাতে জেভিএম আছে, সি কী আছে?


15

আমি জানি যে সি এর একটি সংকলক রয়েছে তবে এক্সিকিউশন পারফরম্যান্স কী নির্ধারণ করে?

উদাহরণস্বরূপ, যদি অন্য কোনও ব্লকে, কোডটিতে যদি এলেসের পরিবর্তে কোডের সমস্ত আইফএস থাকে, তবে কী নির্ধারণ করে যে সমস্ত আইএফএস চালানো হবে? জাভাতে এটি জেভিএম হবে, তবে সিতে এক্সিকিউশন কম্পাইলার জিনিসটি কী?


16
শেখার জন্য দরকারী উপকারীতা হল ভাষাগুলি কেবলমাত্র ভাষা। আপনি এমন একটি সংকলক তৈরি করতে পারেন যা সি কোড নেয় এবং এটি জেভিএমে চালিত করে in
টেলাস্টিন

10
+1 টি। এটি একটি খুব ভাল প্রশ্ন। আমি এটিকে অজ্ঞতার কারণে এটিকে কম করব না - এটি আশ্চর্যজনক যে আরও জাভা শিক্ষার্থীরা এটি জিজ্ঞাসা করে না
djechlin


2
এছাড়াও: প্রোগ্রামিং ল্যাঙ্গুয়েজ! = ফ্রেমওয়ার্ক! = রানটাইম লাইব্রেরি! =
সংকলক

উত্তর:


17

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

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


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

6

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

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

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

সর্বোপরি, আপনি যখন সি তে প্রোগ্রামিং করছেন, সেখানে একটি সি ভার্চুয়াল মেশিন রয়েছে! এটি traditionতিহ্যগতভাবে "সি রানটাইম" বা সংক্ষেপে সিআরটি হিসাবে পরিচিত।

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

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

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


2
সি রানটাইম এবং জেভিএম সম্পূর্ণ ভিন্ন জন্তু। সিআরটি হ'ল একটি গ্রন্থাগার।
ডেড এমজি

কিছুটা আরও পরিষ্কার করার জন্য আমি উত্তরটি সম্পাদনা করেছি। ঘটনাচক্রে, জেভিএম এবং ভার্চুয়ালবক্সও সম্পূর্ণ ভিন্ন জন্তু।
ছদ্মনাম

@ ছদ্মনাম: সত্যই নয়। ওয়েল, ঠিক আছে, ভার্চুয়ালবক্স একটি ভার্চুয়ালাইজার, যেখানে টিপিকাল জেভিএম একটি এমুলেটর, তবে আপনি যদি আপনার বাক্যটিতে যেমন ভার্চুয়ালবক্সকে কিউমু দিয়ে প্রতিস্থাপন করেন, তবে দুটি বাস্তবে একই রকম।
Jörg ডব্লু মিটাগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.