আমি লক্ষ করেছি যে জেআর, ওয়ার এবং ইআর ফাইলগুলির ফোল্ডারের MANIFEST.MF
নীচে একটি ফাইল রয়েছে META-INF
।
MANIFEST.MF
ফাইলটির ব্যবহার কী ? এই ফাইলটিতে সমস্ত জিনিস নির্দিষ্ট করা যেতে পারে?
আমি লক্ষ করেছি যে জেআর, ওয়ার এবং ইআর ফাইলগুলির ফোল্ডারের MANIFEST.MF
নীচে একটি ফাইল রয়েছে META-INF
।
MANIFEST.MF
ফাইলটির ব্যবহার কী ? এই ফাইলটিতে সমস্ত জিনিস নির্দিষ্ট করা যেতে পারে?
উত্তর:
জাভা ডেভলপমেন্ট কিটের ১.০ সংস্করণ সহ তৈরি করা একটি জেআর ফাইলের ম্যানিফেস্ট ফাইলের সামগ্রী নীচে রয়েছে।
Manifest-Version: 1.0
সমস্ত এন্ট্রি নাম-মান জোড়া হিসাবে হয়। একটি শিরোনামের নামটি একটি কোলন দ্বারা তার মান থেকে পৃথক হয়। ডিফল্ট ম্যানিফেস্টটি দেখায় যে এটি ম্যানিফেস্টের স্পেসিফিকেশনের 1.0 সংস্করণে মেনে চলে। ম্যানিফেস্টে সংরক্ষণাগারে থাকা প্যাকেজযুক্ত অন্যান্য ফাইলগুলি সম্পর্কেও তথ্য থাকতে পারে। ম্যানিফেস্টে ঠিক কী ফাইল তথ্য রেকর্ড করা হয়েছে তা জেআর ফাইলের উদ্দেশ্যে ব্যবহারের উপর নির্ভর করবে। ডিফল্ট মেনিফেস্ট ফাইলটি অন্যান্য ফাইলগুলির সম্পর্কে কী তথ্য রেকর্ড করা উচিত সে সম্পর্কে কোনও অনুমান করে না, সুতরাং এর একক লাইনে কেবল নিজের সম্পর্কে ডেটা থাকে। বিশেষ-উদ্দেশ্য ম্যানিফেস্ট শিরোনাম
জেআর ফাইলের উদ্দেশ্যভিত্তিক ভূমিকার উপর নির্ভর করে ডিফল্ট ম্যানিফেস্টে সংশোধন করতে হতে পারে। যদি জেআর ফাইলটি কেবল সংরক্ষণাগার তৈরির উদ্দেশ্যে তৈরি করা হয়, তবে MANIFEST.MF ফাইলটি কোনও উদ্দেশ্য নয়। জেআর ফাইলের বেশিরভাগ ব্যবহার সাধারণ সংরক্ষণাগার এবং সংক্ষেপণের বাইরে চলে যায় এবং ম্যানিফেস্ট ফাইলে থাকার জন্য বিশেষ তথ্যের প্রয়োজন হয়। নীচে সংক্ষিপ্ত আকারে কয়েকটি বিশেষ উদ্দেশ্যে জেআর-ফাইল ফাংশনের জন্য প্রয়োজনীয় শিরোনামগুলির সংক্ষিপ্ত বিবরণ দেওয়া হল
অ্যাপ্লিকেশনগুলি JAR ফাইল হিসাবে বান্ডিল করা : যদি কোনও অ্যাপ্লিকেশন কোনও JAR ফাইলে বান্ডিল করা হয় তবে জাভা ভার্চুয়াল মেশিনটি অ্যাপ্লিকেশনের প্রবেশের বিন্দুটি কী তা জানাতে হবে। একটি এন্ট্রি পয়েন্ট হ'ল কোনও পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) পদ্ধতি সহ class এই তথ্যটি মেইন-ক্লাসের শিরোনামে সরবরাহ করা হয়েছে, যা সাধারণ ফর্ম রয়েছে:
Main-Class: classname
মানটির ক্লাসের নামটি অ্যাপ্লিকেশনটির প্রবেশের পয়েন্টের সাথে প্রতিস্থাপন করতে হবে।
ডাউনলোড এক্সটেনশানগুলি: ডাউনলোড এক্সটেনশানগুলি হল জেআর ফাইলগুলি যা অন্য জেআর ফাইলগুলির ম্যানিফেস্ট ফাইল দ্বারা রেফারেন্স করা হয়। একটি সাধারণ পরিস্থিতিতে, একটি অ্যাপলেট একটি জেআর ফাইলে বান্ডিল করা হবে যার ম্যানিফেস্টে একটি জেআর ফাইল (বা বেশ কয়েকটি জেআর ফাইল) উল্লেখ করা হয় যা সেই অ্যাপলেটটির উদ্দেশ্যে এক্সটেনশন হিসাবে কাজ করবে। এক্সটেনশনগুলি একে অপরকে একইভাবে রেফারেন্স করতে পারে। ডাউনলোড এক্সটেনশানগুলি কোনও অ্যাপলেট, অ্যাপ্লিকেশন বা অন্য কোনও এক্সটেনশনের ম্যানিফেস্ট ফাইলটিতে ক্লাস-পাথ শিরোলেখ ক্ষেত্রের মধ্যে নির্দিষ্ট করা আছে। ক্লাস-পাথ শিরোনামটি দেখতে এর মতো দেখতে পারে:
Class-Path: servlet.jar infobus.jar acme/beans.jar
এই শিরোনামের সাহায্যে, অ্যাপলেট বা অ্যাপ্লিকেশনটির উদ্দেশ্যে সার্লেটলেট.জার, ইনফোবস.জার এবং অ্যাকমে / বেনস.জার ফাইলের ক্লাসগুলি এক্সটেনশন হিসাবে পরিবেশন করবে। ক্লাস-পাথ শিরোনামের ইউআরএলগুলি অ্যাপলেট বা অ্যাপ্লিকেশনটির জার ফাইলের URL এর সাথে সম্পর্কিত।
প্যাকেজ সিলিং: একটি জেআর ফাইলের মধ্যে থাকা একটি প্যাকেজটি allyচ্ছিকভাবে সিল করা যায়, যার অর্থ that প্যাকেজটিতে সংজ্ঞায়িত সমস্ত শ্রেণি অবশ্যই একই জেআর ফাইলটিতে সংরক্ষণাগারভুক্ত করা উচিত। আপনার সফ্টওয়্যারটির ক্লাসগুলির মধ্যে সুরক্ষা ব্যবস্থা হিসাবে বা সুরক্ষা ব্যবস্থা হিসাবে কোনও প্যাকেজ সিল করা হতে পারে। প্যাকেজটি সিল করতে প্যাকেজটির জন্য একটি নেম শিরোনাম যুক্ত করা দরকার, এরপরে একটি সিলযুক্ত শিরোনাম থাকবে:
Name: myCompany/myPackage/
Sealed: true
নাম শিরোনামের মান হ'ল প্যাকেজের আপেক্ষিক পথের নাম। দ্রষ্টব্য যে এটি কোনও ফাইলের নাম থেকে আলাদা করার জন্য একটি '/' দিয়ে শেষ হয়। কোনও নাম শিরোনাম অনুসরণকারী কোনও শিরোনাম, কোনও হস্তক্ষেপহীন ফাঁকা লাইন ছাড়াই, নাম শিরোনামে উল্লিখিত ফাইল বা প্যাকেজের জন্য আবেদন করুন। উপরের উদাহরণে, সিলযুক্ত শিরোনামটি নামটির পরে ঘটে: মাইকম্পানি / মাইপ্যাকেজ শিরোলেখের মধ্যে কোনও ফাঁকা লাইন না থাকায় সিলযুক্ত শিরোনামটি প্যাকেজ মাইকম্পানি / মাইপ্যাকেজটিতে (কেবল) প্রয়োগ হিসাবে ব্যাখ্যা করা হবে।
প্যাকেজ সংস্করণ : প্যাকেজ সংস্করণ বিবরণী সংস্করণ তথ্য রাখার জন্য বেশ কয়েকটি ম্যানিফেস্ট শিরোনামকে সংজ্ঞায়িত করে। এই জাতীয় শিরোনামগুলির একটি সেট প্রতিটি প্যাকেজটিতে বরাদ্দ করা যেতে পারে। সংস্করণ শিরোনাম প্যাকেজটির জন্য সরাসরি নাম শিরোনামের নীচে উপস্থিত হওয়া উচিত। এই উদাহরণটি সমস্ত সংস্করণ শিরোনাম দেখায়:
Name: java/util/
Specification-Title: "Java Utility Classes"
Specification-Version: "1.2"
Specification-Vendor: "Sun Microsystems, Inc.".
Implementation-Title: "java.util"
Implementation-Version: "build57"
Implementation-Vendor: "Sun Microsystems, Inc."
ম্যানিফেস্ট.এমএফ জেআর ফাইলের মধ্যে থাকা ফাইলগুলি সম্পর্কে তথ্য ধারণ করে।
যখনই কোনও জেআর ফাইল তৈরি করা হয় তখন একটি ডিফল্ট ম্যানিফেস্ট। এমএফ ফাইলটি মেটা-আইএনএফ ফোল্ডারের ভিতরে তৈরি হয় এবং এতে ডিফল্ট এন্ট্রি থাকে:
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
এগুলি "শিরোনাম: মান" জোড়া হিসাবে এন্ট্রি। প্রথমটি ম্যানিফেস্ট সংস্করণ নির্দিষ্ট করে এবং দ্বিতীয়টি JDK সংস্করণ নির্দিষ্ট করে যার সাথে JAR ফাইলটি তৈরি করা হয়েছে।
প্রধান-শ্রেণীর শিরোনাম: যখন কোনও প্যাকেজে কোনও অ্যাপ্লিকেশন বান্ডিল করতে একটি JAR ফাইল ব্যবহার করা হয়, তখন আমাদের অ্যাপ্লিকেশনটির একটি এন্ট্রি পয়েন্ট পরিবেশনকারী শ্রেণি নির্দিষ্ট করতে হবে। আমরা ম্যানিফেস্ট ফাইলের 'মেইন-ক্লাস' শিরোনাম ব্যবহার করে এই তথ্য সরবরাহ করি,
প্রধান-শ্রেণি: {সম্পূর্ণরূপে যোগ্যতাসম্পন্ন শ্রেণীর নাম}
এখানে 'মেইন-ক্লাস' মান হ'ল প্রধান পদ্ধতিযুক্ত শ্রেণি। এই এন্ট্রিটি নির্দিষ্ট করার পরে আমরা অ্যাপ্লিকেশনটি চালানোর জন্য JAR ফাইলটি কার্যকর করতে পারি।
ক্লাস-পাথ শিরোনাম: বেশিরভাগ সময় অ্যাপ্লিকেশনটির জেআর ফাইলের মধ্যে প্যাকেজ করা ক্লাসগুলি থেকে আমাদের অন্যান্য জেআর ফাইলগুলি অ্যাক্সেস করা প্রয়োজন। 'ক্লাস-পাথ' শিরোলেখ ব্যবহার করে ম্যানিফেস্ট ফাইলটিতে তাদের সম্পূর্ণরূপে যোগ্য পাথ সরবরাহ করে এটি করা যেতে পারে,
শ্রেণি-পথ: ar জার 1-নাম জার 2-নাম ডিরেক্টরি-নাম / জার 3-নাম}
এই শিরোনামটি একই স্থানীয় নেটওয়ার্কে বহিরাগত জেআর ফাইলগুলি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে এবং বর্তমান জারের মধ্যে নেই।
প্যাকেজ সংস্করণ সম্পর্কিত শিরোলেখ: যখন JAR ফাইলটি প্যাকেজ সংস্করণের জন্য ব্যবহৃত হয় নীচের শিরোনামগুলি জাভা ভাষার স্পেসিফিকেশন দ্বারা নির্দিষ্ট হিসাবে ব্যবহৃত হয়:
Headers in a manifest
Header | Definition
-------------------------------------------------------------------
Name | The name of the specification.
Specification-Title | The title of the specification.
Specification-Version | The version of the specification.
Specification-Vendor | The vendor of the specification.
Implementation-Title | The title of the implementation.
Implementation-Version | The build number of the implementation.
Implementation-Vendor | The vendor of the implementation.
প্যাকেজ সিলিং সম্পর্কিত শিরোনাম:
আমরা জেআর ফাইলের অভ্যন্তরে কোনও নির্দিষ্ট প্যাকেজ সিল করা উচিত কিনা তাও উল্লেখ করতে পারি যার অর্থ that প্যাকেজটিতে সংজ্ঞায়িত সমস্ত শ্রেণি একই জেআর ফাইলটিতে সংরক্ষণাগারভুক্ত করা উচিত। এটি 'সিলযুক্ত' শিরোনামের সাহায্যে নির্দিষ্ট করা যেতে পারে,
নাম: {প্যাকেজ / কিছু-প্যাকেজ /} সিল: সত্য
এখানে, প্যাকেজের নাম অবশ্যই '/' দিয়ে শেষ হবে।
মেনিফেস্ট ফাইলগুলির সাথে সুরক্ষা বাড়ানো:
ওয়েব অ্যাপ্লিকেশনটির সুরক্ষা নিশ্চিত করতে আমরা ম্যানিফেস্ট ফাইল এন্ট্রিগুলি ব্যবহার করতে পারি বা এটির অনুমতিগুলি, 'কোডবি', 'অ্যাপ্লিকেশন-নাম', 'বিশ্বাসযোগ্য-কেবল' এবং আরও অনেকগুলি হিসাবে বিভিন্ন বৈশিষ্ট্যযুক্ত এটি প্যাকেজগুলির অ্যাপলেট তৈরি করতে পারি।
মিতা-আইএনএফ ফোল্ডার:
এই ফোল্ডারটি যেখানে মেনিফেস্ট ফাইল থাকে। এছাড়াও, এতে অ্যাপ্লিকেশন সম্পর্কে মেটা ডেটাযুক্ত আরও ফাইল থাকতে পারে। উদাহরণস্বরূপ, একটি EJB মডিউল JAR ফাইলটিতে, এই ফোল্ডারে EJB মডিউলটির জন্য JJ এর জন্য ম্যানিফেস্ট ফাইলের সাথে EJB স্থাপনার বিবরণ রয়েছে। এছাড়াও, এটিতে অ্যাপ্লিকেশন সার্ভারের কংক্রিট ধারক সংস্থার যে কোনও অ্যাবস্ট্রাক্ট ইজেবি রেফারেন্স ম্যাপিং রয়েছে সেটিতে এটি এক্সএমএল ফাইল ধারণ করে যা এটি চালিত হবে।
তথ্যসূত্র: https://docs.oracle.com/javase/tutorial/dep مامور/jar/
manifestindex.html