জেআর ফাইল হিসাবে রফতানি করা এবং রান রানযোগ্য জেআর ফাইল হিসাবে রফতানির মধ্যে গ্রহণের পার্থক্য কী? তারা দুজনেই কি রান চালা যায় না? প্রত্যেকের উপকার / বিভক্তি কী কী?
উত্তর:
চলমানযোগ্য জারে একটি MANIFEST.MF ফাইল থাকে, যা জার চালিত হওয়ার সময় সম্পাদন করা হতে প্রধান শ্রেণিকে সংজ্ঞায়িত করে।
চালানো যায় না এমন জারগুলি কেবল ক্লাসের লাইব্রেরি হয়, এটি ক্লাসপথে যুক্ত করা যায় যাতে কোডটি পুনরায় ব্যবহার করা হয় (এটিতে ম্যানিফেস্ট ফাইলও রয়েছে তবে সেখানে কোনও প্রধান শ্রেণি নেই)
একটি রান্নেবল জার এমন একটি জার ফাইল যা এম্বেড করা ম্যানিফেস্ট ফাইলের মধ্যে রয়েছে "মুখ্য-শ্রেণি:" ঘোষণা। "মেইন-ক্লাস" অবশ্যই সংজ্ঞায়িত করা উচিত যাতে জাভা রানটাইম জার যখন "রান" হয় তখন কোন ক্লাসটি কল করতে হবে তা জানে। যদি কোনও জারটি "মেইন-ক্লাস:" সহ একটি ম্যানিফেস্ট অন্তর্ভুক্ত না করে তবে এটি "চালিতযোগ্য জার" হিসাবে বিবেচিত হবে না - এটি জাভা কোডের একটি লাইব্রেরি।
আমি অনুমান করব যে এটি কীভাবে গ্রহনটি জারটি রফতানি করে তার মধ্যে পার্থক্য, তবে 100% নিশ্চিত নয়।
আরও তথ্যের জন্য এই লিঙ্কটি দেখুন: http://www.skylit.com/javamethods/faqs/createjar.html
স্ট্যান্ডার্ড জেআর ফাইলের সাহায্যে, জারটি চালানোর সময় আপনাকে কমান্ড লাইনে মূল পদ্ধতি সহ ক্লাসটি নির্দিষ্ট করতে হবে। একটি চলমান জেআর দিয়ে, একটি ম্যানিফেস্ট ফাইল রয়েছে যা সেই তথ্যটি ধরে রাখবে যাতে আপনি কেবল টাইপ করতে পারেন java -jar myRunnable.jar
, বা কেবল এটি ডাবল ক্লিক করতে পারেন।
আমার ক্ষেত্রে, আমি জার হিসাবে রফতানি করতাম যখন আমি সমস্ত প্রধান শ্রেণি এবং সমস্ত লাইব্রেরি পাথ ডিরেক্টরিটি ম্যানিফেস্ট.এমএফ-তে উল্লিখিত ছিল। যদি অনেক অ্যাপ্লিকেশন একই লাইব্রেরি ব্যবহার করে থাকে তবে প্রতিটি জারের জন্য ভাগ করা লাইব্রেরি রফতানি করা অপ্রয়োজনীয়। এটি চলমান জারকে দ্রুততর করে তোলে। তবে, বহুবার বিভিন্ন সার্ভারের ক্লাস-পাথের কনফিগারেশনের কারণে গ্রন্থাগার অ্যাক্সেস করতে পারে না এবং সেই ক্ষেত্রে এটি রান্নেবল জারটি রফতানি করে তোলে যা ফাইলটি কার্যকর করতে ধীর এবং বড় করে তোলে and