JAR (file format)
একটি জেএআর ("জাভা আর্কাইভ") ফাইল হল একটি প্যাকেজ ফাইল ফরম্যাট যা সাধারণত অনেক জাভা ক্লাস ফাইল এবং সম্পর্কিত মেটাডেটা এবং সংস্থানগুলি (পাঠ্য, চিত্র ইত্যাদি) একত্রিত করতে ব্যবহৃত হয়। বিতরণের জন্য একটি ফাইলে। জেএআর ফাইলগুলি আর্কাইভ ফাইল যা একটি জাভা-নির্দিষ্ট ম্যানিফেস্ট ফাইল অন্তর্ভুক্ত করে। এগুলি জিপ বিন্যাসে নির্মিত এবং সাধারণত একটি. جار ফাইল এক্সটেনশন থাকে। ডিজাইন একটি জেএআর ফাইল জাভা রানটাইমকে একক অনুরোধে তার ক্লাস এবং তাদের সম্পর্কিত সংস্থানগুলি সহ একটি সম্পূর্ণ অ্যাপ্লিকেশনকে দক্ষতার সাথে স্থাপন করার অনুমতি দেয়। জেএআর ফাইল উপাদানগুলি সংকুচিত হতে পারে, ডাউনলোডের সময় কমিয়ে দিতে পারে। একটি জেএআর ফাইলে একটি ম্যানিফেস্ট ফাইল থাকতে পারে, যা মেটা-আইএনএফ/ম্যানিফেস্ট. এমএফ-এ অবস্থিত। ম্যানিফেস্ট ফাইলের এন্ট্রিগুলি বর্ণনা করে যে কীভাবে জেএআর ফাইলটি ব্যবহার করতে হয়। উদাহরণস্বরূপ, জে. এ. আর-এর সাথে লোড করার জন্য অন্যান্য জে. এ. আর ফাইলগুলি নির্দিষ্ট করতে একটি ক্লাসপাথ এন্ট্রি ব্যবহার করা যেতে পারে। একটি ফাইলের বিষয়বস্তু যে কোনও আর্কাইভ এক্সট্রাকশন সফ্টওয়্যার ব্যবহার করে বের করা যেতে পারে যা জিপ ফর্ম্যাটকে সমর্থন করে, বা জাভা ডেভেলপমেন্ট কিট দ্বারা প্রদত্ত জার কমান্ড লাইন ইউটিলিটি। নিরাপত্তা বিকাশকারীরা জে. এ. আর ফাইলগুলিতে ডিজিটালভাবে স্বাক্ষর করতে পারেন। সেক্ষেত্রে, স্বাক্ষরের তথ্য এমবেডেড ম্যানিফেস্ট ফাইলের অংশ হয়ে যায়। জেএআর নিজেই স্বাক্ষরিত হয় না, তবে পরিবর্তে সংরক্ষণাগারের অভ্যন্তরে প্রতিটি ফাইল তার চেকসাম সহ তালিকাভুক্ত করা হয়; এই চেকসামগুলিই স্বাক্ষরিত হয়। একাধিক সত্তা জেএআর ফাইলটিতে স্বাক্ষর করতে পারে, প্রতিটি স্বাক্ষরের সাথে জেএআর ফাইলটি নিজেই পরিবর্তন করতে পারে, যদিও স্বাক্ষরিত ফাইলগুলি নিজেরাই বৈধ থাকে। যখন জাভা রানটাইম স্বাক্ষরিত জেএআর ফাইলগুলি লোড করে, তখন এটি স্বাক্ষরগুলি বৈধ করতে পারে এবং স্বাক্ষরের সাথে মেলে না এমন ক্লাসগুলি লোড করতে অস্বীকার করতে পারে। এটি 'সিল করা' প্যাকেজগুলিকেও সমর্থন করতে পারে, যেখানে ক্লাসলোডার শুধুমাত্র জাভা ক্লাসগুলিকে একই প্যাকেজে লোড করার অনুমতি দেবে যদি সেগুলি একই সত্তার দ্বারা স্বাক্ষরিত হয়। এটি একটি বিদ্যমান প্যাকেজে দূষিত কোড ঢোকানো থেকে বিরত রাখে এবং তাই প্যাকেজ-স্কোপড ক্লাস এবং ডেটাতে অ্যাক্সেস অর্জন করে। বিপরীত প্রকৌশলকে আরও কঠিন করে তুলতে জেএআর ফাইলের বিষয়বস্তু অস্পষ্ট হতে পারে। এক্সিকিউটেবল জেএআর ফাইল একটি এক্সিকিউটেবল জাভা প্রোগ্রাম একটি জেএআর ফাইলে প্যাকেজ করা যেতে পারে, প্রোগ্রামটি যে কোনও লাইব্রেরি ব্যবহার করে। এক্সিকিউটেবল জেএআর ফাইলগুলিতে মেইন-ক্লাসঃ myPrograms.MyClass এবং একটি স্পষ্ট ক্লাস-পাথ (এবং-সিপি আর্গুমেন্ট উপেক্ষা করা হয়) সহ এন্ট্রি পয়েন্ট ক্লাস নির্দিষ্ট করে ম্যানিফেস্ট থাকে। কিছু অপারেটিং সিস্টেম ক্লিক করলে এগুলি সরাসরি চালাতে পারে। একটি কমান্ড লাইন থেকে সাধারণ আহ্বান হল জাভা-জার foo.jar। বেশিরভাগ প্ল্যাটফর্মে নেটিভ লঞ্চার তৈরি করা যেতে পারে। উদাহরণস্বরূপ, মাইক্রোসফ্ট উইন্ডোজ ব্যবহারকারীরা যারা উইন্ডোজ এক্সই ফাইল রাখতে পছন্দ করেন তারা জেএসমুথ, লঞ্চ4জে, উইনরুন4জে বা নালসফ্ট স্ক্রিপ্টেবল ইনস্টল সিস্টেমের মতো সরঞ্জামগুলি ব্যবহার করে একক জেএআর ফাইলগুলিকে এক্সিকিউটেবলগুলিতে মোড়াতে পারেন। ম্যানিফেস্ট একটি ম্যানিফেস্ট ফাইল হল একটি জেএআর-এর মধ্যে থাকা একটি মেটাডেটা ফাইল। এটি এক্সটেনশন এবং প্যাকেজ-সম্পর্কিত ডেটা সংজ্ঞায়িত করে। এতে বিভাগে সাজানো নাম-মূল্য জোড়া রয়েছে। যদি একটি জেএআর ফাইল এক্সিকিউটেবল ফাইল হিসাবে ব্যবহার করার উদ্দেশ্যে করা হয়, ম্যানিফেস্ট ফাইলটি অ্যাপ্লিকেশনের প্রধান শ্রেণী নির্দিষ্ট করে। ম্যানিফেস্ট ফাইলটির নাম MANIFEST.MF। ম্যানিফেস্ট ডিরেক্টরিকে সংকুচিত সংরক্ষণাগারের প্রথম এন্ট্রি হতে হবে। নির্দিষ্টকরণ ম্যানিফেস্টটি মেটা-আইএনএফ/ম্যানিফেস্ট. এমএফ-এর ক্যানোনিকাল অবস্থানে প্রদর্শিত হয়। একটি আর্কাইভে শুধুমাত্র একটি ম্যানিফেস্ট ফাইল থাকতে পারে এবং এটি অবশ্যই সেই স্থানে থাকতে হবে। জাভা ডেভেলপমেন্ট কিটের সংস্করণ 1 দিয়ে তৈরি একটি জেএআর ফাইলের ম্যানিফেস্ট ফাইলের বিষয়বস্তু নিম্নরূপ। প্রকাশ-সংস্করণঃ 1 নামটি একটি কোলন দ্বারা তার মান থেকে পৃথক করা হয়। ডিফল্ট ম্যানিফেস্ট দেখায় যে এটি ম্যানিফেস্ট স্পেসিফিকেশনের সংস্করণ 1-এর সাথে সামঞ্জস্যপূর্ণ। ম্যানিফেস্টে আর্কাইভে প্যাকেজ করা অন্যান্য ফাইল সম্পর্কে তথ্য থাকতে পারে। ম্যানিফেস্টের বিষয়বস্তু জেএআর ফাইলের উদ্দেশ্যে ব্যবহারের উপর নির্ভর করে। ডিফল্ট ম্যানিফেস্ট ফাইলটি অন্যান্য ফাইল সম্পর্কে কোন তথ্য রেকর্ড করা উচিত সে সম্পর্কে কোনও অনুমান করে না, তাই এর একক লাইনে কেবল নিজের সম্পর্কে তথ্য থাকে। এটি ইউটিএফ-8-এ এনকোড করা উচিত। শুধুমাত্র আর্কাইভ করার উদ্দেশ্যে তৈরি করা স্পেশাল-পারপাস ম্যানিফেস্ট হেডার জেএআর ফাইলগুলি MANIFEST.MF ফাইল ব্যবহার করে না। জেএআর ফাইলগুলির বেশিরভাগ ব্যবহার সহজ সংরক্ষণাগার এবং সংকোচনের বাইরে চলে যায় এবং ম্যানিফেস্ট ফাইলে বিশেষ তথ্যের প্রয়োজন হয়। বৈশিষ্ট্য ম্যানিফেস্ট ডেভেলপারদের তাদের জারের জন্য বেশ কয়েকটি দরকারী বৈশিষ্ট্য সংজ্ঞায়িত করার অনুমতি দেয়। বৈশিষ্ট্যগুলি কী-মান জোড়ায় নির্দিষ্ট করা হয়। অ্যাপ্লিকেশন যদি কোনও অ্যাপ্লিকেশন একটি জেএআর ফাইলে থাকে, তাহলে জাভা ভার্চ্যুয়াল মেশিনকে অ্যাপ্লিকেশনটির প্রবেশ বিন্দু জানতে হবে। একটি প্রবেশ বিন্দু হল একটি পাবলিক স্ট্যাটিক অকার্যকর প্রধান (স্ট্রিং [] আর্গস) পদ্ধতি সহ যে কোনও শ্রেণী। এই তথ্যটি ম্যানিফেস্ট মেইন-ক্লাস হেডারে সরবরাহ করা হয়েছে, যার সাধারণ ফর্ম রয়েছেঃ মেইন-ক্লাসঃ com.example.MyClassName এই উদাহরণে com.example.MyClassName. মেইন () অ্যাপ্লিকেশন লঞ্চের সময় কার্যকর হয়। প্যাকেজ সীলমোহর ঐচ্ছিকভাবে, একটি জেএআর ফাইলের মধ্যে একটি প্যাকেজ সিল করা যেতে পারে, যার অর্থ সেই প্যাকেজে সংজ্ঞায়িত সমস্ত শ্রেণী একই জেএআর ফাইলে সংরক্ষণ করা হয়। সফ্টওয়্যারের শ্রেণীগুলির মধ্যে সংস্করণের সামঞ্জস্য নিশ্চিত করতে বা সুরক্ষা ব্যবস্থা হিসাবে একটি প্যাকেজ সিল করা যেতে পারে। একটি প্যাকেজ সিল করার জন্য, একটি নাম এন্ট্রি উপস্থিত হতে হবে, তারপরে একটি সিল করা হেডার, যেমনঃ নামঃ মাই কোম্পানি/মাই প্যাকেজ/সিল করাঃ সত্য নাম হেডারের মান হল প্যাকেজের আপেক্ষিক পাথনাম। লক্ষ্য করুন যে এটি একটি ফাইলের নাম থেকে আলাদা করার জন্য '/' দিয়ে শেষ হয়। কোনও নাম হেডার অনুসরণকারী যে কোনও শিরোনাম, কোনও ফাঁকা ফাঁকা লাইন ছাড়াই, নাম হেডারে নির্দিষ্ট ফাইল বা প্যাকেজের ক্ষেত্রে প্রযোজ্য। উপরের উদাহরণে, যেহেতু সিলড হেডারটি নেমঃ মাই কোম্পানি/মাই প্যাকেজ হেডারের পরে আসে যার মধ্যে কোনও ফাঁকা লাইন নেই, তাই সিলড হেডারটি প্যাকেজ মাই কোম্পানি/মাই প্যাকেজে (শুধুমাত্র) প্রযোজ্য। সিল করা প্যাকেজগুলির বৈশিষ্ট্যটি জাভা 9-এ প্রবর্তিত জাভা প্ল্যাটফর্ম মডিউল সিস্টেম দ্বারা পরিবর্তিত হয়েছে, যেখানে মডিউলগুলি প্যাকেজগুলিকে বিভক্ত করতে পারে না। প্যাকেজ সংস্করণ বেশ কয়েকটি ম্যানিফেস্ট শিরোনাম সংস্করণের তথ্য ধারণ করে। প্রতিটি প্যাকেজে এক সেট শিরোনাম বরাদ্দ করা যেতে পারে। সংস্করণের শিরোনামগুলি সরাসরি প্যাকেজের নাম শিরোনামের নীচে প্রদর্শিত হয়। এই উদাহরণটি সমস্ত সংস্করণ শিরোনাম দেখায়ঃ নাম জাভা/ব্যবহার/নির্দিষ্টকরণ-শিরোনামঃ "জাভা ইউটিলিটি ক্লাস" নির্দিষ্টকরণ-সংস্করণঃ "1.2" নির্দিষ্টকরণ-বিক্রেতাঃ "সান মাইক্রোসিস্টেমস, ইনক"। বাস্তবায়ন-শিরোনামঃ "java.util" বাস্তবায়ন-সংস্করণঃ "বিল্ড57" বাস্তবায়ন-বিক্রেতাঃ "সান মাইক্রোসিস্টেমস, ইনক"। মাল্টি-রিলিজ একটি জার বিকল্পভাবে একটি মাল্টি-রিলিজ জার হিসাবে চিহ্নিত করা যেতে পারে। মাল্টি-রিলিজ বৈশিষ্ট্য ব্যবহার করে লাইব্রেরি ডেভেলপাররা জাভা রানটাইমের সংস্করণের উপর নির্ভর করে বিভিন্ন কোড লোড করতে পারে। এর ফলে ডেভেলপাররা সামঞ্জস্যতা ত্যাগ না করে নতুন বৈশিষ্ট্যগুলি কাজে লাগাতে পারে। ম্যানিফেস্টে নিম্নলিখিত ঘোষণাটি ব্যবহার করে একটি মাল্টি-রিলিজ জার সক্রিয় করা হয়ঃ মাল্টি-রিলিজ-প্রকৃত নির্ভরতা MANIFEST.MF ফাইলটি সমস্ত শ্রেণী নির্দিষ্ট করতে ব্যবহার করা যেতে পারে যা একটি অ্যাপ্লিকেশন চালাতে সক্ষম হওয়ার জন্য লোড করা আবশ্যক। লক্ষ্য করুন যে ক্লাস-পাথ এন্ট্রিগুলি স্পেসের সাথে সীমাবদ্ধ করা হয়, সিস্টেম পাথ ডিলিমিটারের সাথে নয়ঃ ক্লাস-পাথঃ। pkg1.jar পাথ/থেকে/পি. কে. জি2. জার অ্যাপাচি অ্যান্ট জিপ/জে. এ. আর সাপোর্ট অ্যাপাচি অ্যান্ট বিল্ড টুলের নিজস্ব প্যাকেজ রয়েছে জিপ এবং জে. এ. আর আর্কাইভ পড়তে এবং লিখতে, ইউনিক্স ফাইল সিস্টেম এক্সটেনশনের জন্য সমর্থন সহ। org.apache.tools.zip প্যাকেজটি অ্যাপাচি সফ্টওয়্যার ফাউন্ডেশন লাইসেন্সের অধীনে প্রকাশিত হয়েছে এবং পিঁপড়ার বাইরে ব্যবহারযোগ্য করার জন্য ডিজাইন করা হয়েছে। সম্পর্কিত বিন্যাস বিভিন্ন সম্পর্কিত ফাইল বিন্যাস জেএআর বিন্যাসে তৈরি হয়ঃ ডাব্লুএআর (ওয়েব অ্যাপ্লিকেশন আর্কাইভ) ফাইল, এছাড়াও জাভা আর্কাইভ, এক্সএমএল ফাইল, জাভা ক্লাস, জাভা সার্ভার পেজ এবং ওয়েব অ্যাপ্লিকেশনগুলির জন্য অন্যান্য বস্তু সংরক্ষণ করে। আরএআর (রিসোর্স অ্যাডাপ্টার আর্কাইভ) ফাইল (আরএআর ফাইল ফরম্যাটের সাথে বিভ্রান্ত হবেন না), এছাড়াও জাভা আর্কাইভ, জে2ইই সংযোগকারী স্থাপত্য (জেসিএ) অ্যাপ্লিকেশনের জন্য এক্সএমএল ফাইল, জাভা ক্লাস এবং অন্যান্য বস্তু সংরক্ষণ করে। ইএআর (এন্টারপ্রাইজ আর্কাইভ) ফাইলগুলি যৌগিক জাভা আর্কাইভ সরবরাহ করে যা এক্সএমএল ফাইল, জাভা ক্লাস এবং এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য জেএআর, ডাব্লুএআর এবং আরএআর জাভা আর্কাইভ ফাইল সহ অন্যান্য বস্তুগুলিকে একত্রিত করে। এসএআর (পরিষেবা সংরক্ষণাগার) ইএআর-এর অনুরূপ। এটি একটি service.xml ফাইল এবং তার সাথে জেএআর ফাইল সরবরাহ করে। এপিকে (অ্যান্ড্রয়েড অ্যাপ্লিকেশন প্যাকেজ), জাভা আর্কাইভ ফরম্যাটের একটি রূপ, অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়। এ. এ. আর (অ্যান্ড্রয়েড আর্কাইভ) সাধারণত ম্যাভেনের মাধ্যমে অ্যান্ড্রয়েড লাইব্রেরি বিতরণের জন্য ব্যবহৃত হয়। পি. এ. আর (প্ল্যান আর্কাইভ)-ইক্লিপ্স ভার্জ ও. এস. জি. আই অ্যাপ্লিকেশন সার্ভার দ্বারা সমর্থিত, একক আর্কাইভ হিসাবে মাল্টি-বান্ডিল ও. এস. জি. আই অ্যাপ্লিকেশন স্থাপনের অনুমতি দেয় এবং একই সার্ভারে নিযুক্ত অন্যান্য পি. এ. আর-ভিত্তিক অ্যাপ্লিকেশন থেকে বিচ্ছিন্নতা প্রদান করে। কেএআর (কারাফ আর্কাইভ)-অ্যাপাচি কারাফ ওএসজিআই অ্যাপ্লিকেশন সার্ভার দ্বারা সমর্থিত, বহু-বান্ডিল, বহু-বৈশিষ্ট্যযুক্ত ওএসজিআই অ্যাপ্লিকেশন স্থাপনের অনুমতি দেয়। আরও দেখুন জেএআর হেল জাভা প্ল্যাটফর্ম মডিউল সিস্টেম ওপেন প্যাকেজিং কনভেনশন জেএডি (ফাইল ফরম্যাট) জিআইএফএআর আক্রমণ। একটি স্ট্যাটিক লাইব্রেরি রেফারেন্স বাহ্যিক লিঙ্ক জেএআর ফাইল নির্দিষ্টকরণ জেএআর ফাইল ওভারভিউ আর্কাইভ ফরম্যাট জাভা প্ল্যাটফর্ম