বিল্ডিং বনাম সংকলন (জাভা)


138

এই ভেবে যে এর উত্তরটি বেশ সুস্পষ্ট তবে এখানে এটি যায়:

যখন আমি স্কুলের জন্য একটি ছোট প্রকল্পে কাজ করছি (জাভাতে) আমি এটি সংকলন করি।

আমার কোপে আমরা আমাদের প্রকল্পটি তৈরি করতে পিপড়া ব্যবহার করছি ।

আমি মনে করি যে সংকলনটি বিল্ডিংয়ের একটি উপসেট। এটা কি সঠিক? বিল্ডিং এবং সংকলনের মধ্যে পার্থক্য কী?

সম্পর্কিত:
সংকলন এবং বিল্ডিং মধ্যে পার্থক্য কি?

উত্তর:


229

"বিল্ড" এমন একটি প্রক্রিয়া যা আপনার সফ্টওয়্যারটির "বিতরণযোগ্য" তৈরি করার জন্য প্রয়োজনীয় সমস্ত পদক্ষেপকে কভার করে। জাভা বিশ্বে, এটি সাধারণত অন্তর্ভুক্ত:

  1. উত্স উত্স (কখনও কখনও)।
  2. সংকলন উত্স।
  3. সংকলন পরীক্ষার উত্স।
  4. কার্যকর পরীক্ষা (ইউনিট পরীক্ষা, সংহতকরণ পরীক্ষা ইত্যাদি)।
  5. প্যাকেজিং (জারে, যুদ্ধ, ইজবি-জার, কানে)।
  6. স্বাস্থ্য পরীক্ষা চলছে (স্ট্যাটিক বিশ্লেষক যেমন চেকস্টাইল, ফাইন্ডব্যাগস, পিএমডি, পরীক্ষার কভারেজ ইত্যাদি)।
  7. প্রতিবেদন তৈরি হচ্ছে।

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


2
এটিকে কেন "ধারাবাহিক বিল্ডিং" না দিয়ে "ধারাবাহিক একীকরণ" বলা হয়?
কাজী ইরফান

@ পাসকল, পুনরায় "বিল্ডটি ধারাবাহিকভাবে চালান" .. " বিল্ড " বলতে বোঝায়?
পেসারিয়ার

4
@ পেসারিয়ার "বিল্ড" সমস্ত পদক্ষেপকে বোঝায় 1.-7 ;; "অবিচ্ছিন্ন" এর অর্থ এই নয় যে আপনি প্রথম বিল্ডটি শুরু করার সাথে সাথেই পরবর্তী বিল্ড শুরু করবেন তবে কেবলমাত্র প্রকল্পের পরিবর্তনের জন্য।
মিশেলেক

এবং যখন এটি উত্স উত্পন্ন করে আপনি প্রথম পয়েন্টে উল্লেখ করেছেন (উত্স উত্স (কখনও কখনও)
দীপক গুপ্ত

42

আমি যে উত্তরগুলি এখানে দেখছি সেগুলির মধ্যে কয়েকটি প্রাসঙ্গিকের বাইরে more

সংক্ষিপ্ত সংস্করণ:

  • "সংকলন" জাভা ফাইলগুলিকে। ক্লাস ফাইলগুলিতে পরিণত করছে
  • 'বিল্ডিং "একটি জেনেরিক শব্দ যা সংকলন এবং অন্যান্য কাজগুলিকে অন্তর্ভুক্ত করে।

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

প্রায়শই অতিরিক্ত পর্বগুলি যেমন "প্যাকেজ" থাকবে যা আপনার সমস্ত .class ফাইল নেয় এবং এগুলিকে একটি .jar, বা "ক্লিন" করে দেয় যা। ক্লাস ফাইল এবং অস্থায়ী ডিরেক্টরিগুলি পরিষ্কার করে।


32

সংকলন হ'ল উত্স কোডে উত্স কোডকে পরিণত করার কাজ।

লিঙ্কিং হ'ল লাইব্রেরিগুলির সাথে কাঁচা এক্সিকিউটেবলের সাথে অবজেক্ট কোডের সংমিশ্রনের কাজ।

বিল্ডিং হ'ল সংকলন এবং লিঙ্কিংয়ের সমন্বিত ক্রম , সম্ভবত ইনস্টলার তৈরির মতো অন্যান্য কার্যগুলির সাথে।

উত্স কোডটি সংকলনের পরে অনেক সংকলক স্বয়ংক্রিয়ভাবে লিঙ্কিং পদক্ষেপটি পরিচালনা করে ।

সংকলন কোড এবং সম্পাদনযোগ্য কোডের মধ্যে পার্থক্য কী?


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

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

1
"কাঁচা এক্সিকিউটেবল" কী?
ইলেওন

বিটগুলির ব্যাগ যা এটির প্রয়োজন অন্য লাইব্রেরির সাথে মিশ্রিত না করে এটি নিজেই অকেজো। এটি অনেকটা চকোলেট কেকের মতো। ময়দা এবং ডিম ইত্যাদি ব্যতীত কোকো কেবল কাঁচা কোকো।
কাইলি

9

সহজ কথায়

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

বিল্ডিং সমস্ত সংকলিত অংশ একসাথে রাখে এবং একটি নির্বাহযোগ্য (বিল্ড) তৈরি করে।


আপনি যে বিষয়ে কথা বলছেন তা হ'ল "ব্যাখ্যা" ... সংকলন হ'ল মানব পাঠযোগ্য
কোডটিকে

@ টম, আপনার অর্থ একটি "এক্সিকিউটেবল" বা " জার এক্সিকিউটেবল"?
পেসেরিয়র

4

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

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

লুকআপ অ্যান্ট এবং ম্যাভেন আরো বিস্তারিত জানার জন্য।


আপনি বিল্টফাইলে (সম্ভবত বিল্ড.এক্সএমএল নামে পরিচিত) এটি দেখে পিঁপড়া আসলে কী করছে তাও দেখতে পারেন। এমনকি যদি আপনি সিনট্যাক্সের সাথে পরিচিত না হন তবে কী চলছে তা আপনি দেখতে পারেন। <জাভা্যাক> এর অর্থ এটি কিছু জাভা কোড সংকলন করছে। <জাভা> এর অর্থ এটি আসলে সংকলিত কোডটি চালাচ্ছে। সম্ভবত এটি .class ফাইলগুলি স্থাপনের জন্য একটি ডিরেক্টরি তৈরি করছে, কোড সংকলন করছে, সম্ভবত কিছু
জাভাদোক

4
  • বিল্ড একটি প্রোগ্রামের সংকলিত সংস্করণ।
  • সংকলনের অর্থ, (একটি প্রোগ্রামকে) একটি মেশিন-কোড বা নিম্ন-স্তরের ফর্মে রূপান্তর করুন যা প্রোগ্রামটি কার্যকর করা যেতে পারে।

জাভাতে : বিল্ড একটি জীবনচক্রের নামযুক্ত পর্যায়ের ক্রম রয়েছে।

উদাহরণস্বরূপ: ম্যভেনের এতে তিনটি বিল্ড লাইফ চক্র রয়েছে, নিম্নলিখিতটি হ'ল defaultজীবনচক্র build

validate - validate the project is correct and all necessary information is available
compile - compile the source code of the project
test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
package - take the compiled code and package it in its distributable format, such as a JAR.
integration-test - process and deploy the package if necessary into an environment where integration tests can be run
verify - run any checks to verify the package is valid and meets quality criteria
install - install the package into the local repository, for use as a dependency in other projects locally
deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

1

ইক্লিপস এবং ইন্টেলিজজে, বিল্ড প্রক্রিয়াটি নিম্নলিখিত পদক্ষেপ নিয়ে গঠিত: পূর্ববর্তী প্যাকেজগুলি সাফ করুন, যাচাই করুন, সংকলন করুন, পরীক্ষা করুন, প্যাকেজ করুন,
একীকরণ করুন, যাচাই করুন, ইনস্টল করুন, স্থাপন করুন।


0

সংকলনটি কেবল উত্স কোডটিকে বাইনারি রূপান্তরিত করছে, বিল্ডিংটি বিল্ড ডিরেক্টরিতে অন্য যে কোনও ফাইলের প্রয়োজনীয় সংকলন করছে এবং সংযুক্ত করছে

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