জাভা সহ একটি প্লাগিন সিস্টেম তৈরির সর্বোত্তম উপায়


145

আপনি কীভাবে আপনার জাভা অ্যাপ্লিকেশনটির জন্য প্লাগিন-সিস্টেম কার্যকর করবেন?

নিম্নলিখিতগুলি অর্জন করে এমন কোনও (সহজে বিকাশকারী) সিস্টেম ব্যবহার করা সম্ভব:

  • ব্যবহারকারীরা তাদের প্লাগইনগুলিকে অ্যাপের একটি উপ-ডিরেক্টরিতে রেখে দেয়
  • প্লাগইন একটি কনফিগারেশন স্ক্রিন সরবরাহ করতে পারে
  • আপনি যদি কোনও কাঠামো ব্যবহার করেন তবে লাইসেন্সটি কি বাণিজ্যিক বিকাশের সাথে সামঞ্জস্য হয়?

উত্তর:


107

প্রথমে আপনার একটি ইন্টারফেস দরকার যা সমস্ত প্লাগইনগুলি প্রয়োগ করতে হবে, যেমন

public interface Plugin {
    public void load(PluginConfiguration pluginConfiguration);
    public void run();
    public void unload();
    public JComponent getConfigurationPage();
}

প্লাগইন লেখকদের তারপরে JAR ফাইলগুলিতে তাদের প্লাগইনগুলি বান্ডিল করা উচিত। আপনার অ্যাপ্লিকেশনগুলি JAR ফাইলটি খুলবে এবং তারপরে আপনার প্লাগিন ইন্টারফেসটি প্রয়োগ করে এমন শ্রেণিটি সন্ধান করতে জেআর ম্যানিফেস্ট থেকে একটি বৈশিষ্ট্য বা JAR ফাইলের সমস্ত ফাইলের তালিকা ব্যবহার করতে পারে। ক্লাসটি ইনস্ট্যান্ট করুন, প্লাগইন যেতে প্রস্তুত।

অবশ্যই আপনি কোনও ধরণের স্যান্ডবক্সিং বাস্তবায়ন করতে চাইতে পারেন যাতে প্লাগিনটি যা করতে পারে এবং কী করতে পারে তা সীমাবদ্ধ থাকে। আমি একটি ছোট পরীক্ষার অ্যাপ্লিকেশন তৈরি করেছি (এবং এটি সম্পর্কে ব্লগ করা ) যা দুটি প্লাগইন নিয়ে গঠিত, যার মধ্যে একটি স্থানীয় সংস্থার অ্যাক্সেসকে অস্বীকার করে।


2
আপনি যে স্যান্ডবক্সটি উল্লেখ করেছেন তা আসলে সবচেয়ে কঠিন অংশ! তবে হতাশার কারণ নয় - ওসগি এটি উপরে বর্ণিত হিসাবে ইতিমধ্যে আপনার জন্য করে।
চিই

1
স্যান্ডবক্সিং এতটা কঠিন নয়। এটি কীভাবে সঠিকভাবে করা যায় তা জানতে আমাকে প্রায় দুই সপ্তাহ সময় নিয়েছিল তবে একবার আপনি জানেন যে এটি বেশ সহজ। :)
বোম্বে

@ বোম্বে এই উদাহরণ প্রয়োগ এখনও কোথাও বাস?
ataulm


@ টিম্বারওয়েভস আপনি কী বলতে চাইছেন তা আমি বুঝতে পারি না। ফাইল পরীক্ষার আবেদনটি পোস্টে প্রদত্ত অবস্থান এবং আপনার উল্লিখিত পৃষ্ঠা থেকে এখনও ডাউনলোড করা যেতে পারে।
বোম্বে

41

ওএসজিআই ব্যবহার করুন ।

এটি এক্সিলিপ প্লাগ-ইন সিস্টেমের ভিত্তি। ইকুইনক্স হ'ল এক্লিপসের বাস্তবায়ন (লাইসেন্স প্রাপ্ত ইপিএল) এবং ফেলিক্স হ'ল অ্যাপাচি প্রকল্পের বাস্তবায়ন (লাইসেন্সযুক্ত অ্যাপাচি পাবলিক লাইসেন্স)।

Eclipse একটি দৃ concrete় উদাহরণ সরবরাহ করে যে OSGi আপনার উল্লিখিত পয়েন্টগুলি কভার করতে পারে (বা আপনি যদি একটি পূর্ণগ্রহন / SWT / JFace স্ট্যাক চান তবে আপনি কেবল Eclipse RCP এর উপরে আপনার অ্যাপ্লিকেশনটি তৈরি করতে পারেন)।


4
আমি ওএসজিআই দিয়ে ডাবলড করেছি তবে এর জন্য সত্যিই খুব ভাল প্রাইমার কখনও পাইনি। কেউ এখানে কিছু লিঙ্কের সুপারিশ করতে পারলে দুর্দান্ত হবে।
ব্রায়ান ম্যাথিউজ

1
আমি আমার অ্যাপ্লিকেশনটিতে বিষুবক্ষু এম্বেড করেছি এবং ওপি যা চাইবে ঠিক তা করতে স্ট্যান্ডার্ড ওএসজিআই অনুশীলনগুলি ব্যবহার করেছি। সুইংয়েও, এসডাব্লুটি নয়। ওয়েবস্টার্টও হয়েছে। শুভ সূচনা সংস্থান: neilbartlett.name/blog
বাসেরো

3
ওএসজিআই আদর্শভাবে ডি ফ্যাক্টো প্লাগইন সিস্টেম। তবে স্ট্যান্ডার্ড জাভা থেকে ওএসজিআই প্রোগ্রামিং মডেলের লিপ বেশ প্রশস্ত ...
হেন্ডি ইরওয়ান

30

1.6 সাল থেকে, java.util.S सर्विसLoader হয়েছে যা আপনি যদি নিজের নিজস্ব সিস্টেমকে কোড করতে চান তবে ব্যবহার করা যেতে পারে।

তবে আপনি যদি বেসিক বৈশিষ্ট্যগুলির চেয়ে আরও কিছু চান তবে বিদ্যমান ফ্রেমওয়ার্কগুলির মধ্যে একটি ব্যবহার করুন।


16

এখানে কেউ কি জেপিএফ ব্যবহার করেছে? আকর্ষণীয় শোনাচ্ছে
সোভেন লিলিয়েনথাল

1
জাবআরফ তার প্লাগইনগুলির জন্য জেপিএফ ব্যবহার করে। বেশ ভাল কাজ করে।
কোপ্পর

আমি জেপিএফ ব্যবহার করছি, তবে এটি পিঁপড়ের সাথে শক্তভাবে মিশ্রিত। আমি এ থেকে মুক্তি পেতে চাই তবে আমার আবেদনে এটির কতটা প্রভাব পড়বে তা আমি জানি না।
মার্টিনএল

আমি একটি ওপেন সোর্স পণ্য (ওপেনএমএম) জন্য একটি জেপিএফ প্লাগইন তৈরি করেছি; আমি ম্যাভেন (মভেন-অ্যাসেমব্লিং প্লাগইন) দিয়ে এটি তৈরি করতে সক্ষম হয়েছি; নিশ্চিতভাবে আমি উন্নয়নের সরলতার প্রশংসা করি এমনকি এখন এটি সম্ভবত ওএসজিআই যা আরও জনপ্রিয়।
рüффп

জেপিএফ ব্যবহারের জন্য জাভা সংস্করণগুলিতে কি কোনও বিধিনিষেধ রয়েছে?
মাধব

16

পিএফ 4 জে ব্যবহার করুন । এটি ওয়েব, স্প্রিং এবং উইকেটের সমর্থন করে। অ্যাপ্লিকেশনগুলি ব্যবহার এবং নির্মাণে সহজ


আমি এটি আমার প্রয়োজন হিসাবে এটি
পেয়েছি

গিথুবকে নিয়ে ডেসাবলকে প্রশ্ন উত্থাপন করার চেষ্টা করুন। তিনি আপনাকে সহায়তা করবেন
ড্যানিয়েল জিপা

মেটা.স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 63766866/২ দেখুন ডেসবেলস অ্যাকাউন্টের স্থিতি সম্পর্কে এখানে
ফাহল ১

1
আপনি pf4j এ খুঁজছেন, তাহলে আপনি কটাক্ষপাত করা হতে পারে github.com/hank-cp/sbp । এটি সম্পূর্ণ ওয়েব অ্যাপ্লিকেশন তৈরির জন্য স্প্রিং বুটকে সমর্থন করার জন্য পিএফ 4 জে শীর্ষে নির্মিত।
হ্যাঁক

13

আমি এক সপ্তাহ ধরে ওএসজিআই-তে কাজ করেছি - একটি তীব্র, ওএসজি সপ্তাহ ছাড়া আর কিছুই নয়। শেষে এটি খারাপ স্বপ্নের মতো ছিল তবে আমি অনেক কিছু শিখেছি।

আমি ওএসজিআইকে কাজ করতে সক্ষম হয়েছি (সহজ নয়, সমস্ত উদাহরণ পুরানো, জার উদ্ভাসিত হয়।

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

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

প্রতিটি পদক্ষেপ একটি বড় বাধা। আমি এখানে আরও কিছু বিশদ পরে পোস্ট করার চেষ্টা করব।


17
এ কেমন উত্তর? এটি ওএসজিআই সম্পর্কে আরও বেশি কৌতুকপূর্ণ এবং আপনি ওএসজি কী তা ব্যাখ্যা করছেন না।
স্টিলথ রাব্বি

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

9

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


3

কয়েক বছর আগে আমি এর মতো একটি প্রকল্প শুরু করেছি এবং আমি আশা করি শীঘ্রই প্রস্তুত হয়ে উঠব Net ওএসজি এখন দেখতে একদম ভাল পছন্দ বলে মনে হচ্ছে তবে আমার প্রকল্পের সাথে এটির তুলনা করার সুযোগ পেলাম না above এটি উল্লিখিত জেপিএফের সাথে একই, তবে একই সময়ে বিভিন্ন উপায়ে ভিন্ন।

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

আমি মনে মনে কয়েকটি লক্ষ্য নিয়ে প্রকল্পটি তৈরি করেছি:

  • আপনি যদি কোনও ওয়েব অ্যাপ্লিকেশন বা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করেন তবে তা কার্যকর নয়, আপনার একই পদ্ধতিতে অ্যাপ্লিকেশনটি শুরু করা উচিত, একটি সরল প্রধান পদ্ধতি, কোনও অভিনব ওয়েব.এক্সএমএল ঘোষণা নয় (এটি নয় যে আমি একটি আদর্শ ওয়েব বর্ণনাকারী থাকার বিপক্ষে, তবে এটি কোনও প্লাগ-ইন সিস্টেমে ভাল যায় না, যেখানে আপনি "সার্ভলেট" যুক্ত করেন - আমি তাদের অনুরোধ করি হ্যান্ডলার (গুলি) - আপনার ইচ্ছা অনুযায়ী গতিশীল)।
  • "এক্সটেনশানগুলি" কোনও "এক্সটেনশান পয়েন্ট" এর আশেপাশে প্লাগ করা সহজ - একটিগ্রহের থেকে কিছু তবে ভিন্ন পদ্ধতির।
  • স্ব-ডিপ্লোয়েবল, যেহেতু সমস্ত প্লাগইন নিবন্ধিত (এক্সএমএল ফাইল) অ্যাপ্লিকেশনটি অবশ্যই বিল্ড সিস্টেমের থেকে স্ব-মোতায়েনযোগ্য হতে হবে - অবশ্যই সেখানে একটি পিঁপড়া টাস্ক এবং একটি মাভেন মোজো রয়েছে যা আমাদের সাথে যুক্ত বিশ্বের সাথে লিঙ্ক রয়েছে তবে এটি অ্যাপ্লিকেশনটিকে কল করে এবং এটিকে নির্দিষ্ট স্থানে স্ব-স্থাপনার নির্দেশ দেয়।
  • মাভেনের কাছ থেকে ধার নেওয়া, এটি সংগ্রহশালা থেকে কোড ডাউনলোড করতে পারে (ম্যাভেন 1 এবং 2 সংগ্রহস্থল সহ) যাতে আপনার অ্যাপ্লিকেশনটি একক ছোট ছোট জার হিসাবে স্থাপন করা যায় যতক্ষণ আপনার কাছে সংগ্রহস্থলগুলিতে অ্যাক্সেস থাকে (কোনও সময় দরকারী, এবং মূলত এটি অটো- এর জন্য সমর্থন সরবরাহ করে) আপডেট - আপনি কি আপনার ওয়েব অ্যাপ্লিকেশন দ্বারা জানানোর মত ধারণা পছন্দ করেন না যে এখানে একটি নতুন সংস্করণ রয়েছে, এটি ডাউনলোড করা হয়েছিল এবং এটি ইনস্টল করার জন্য আপনার কেবল অনুমতি প্রয়োজন? আমি জানি আমি এটি পছন্দ করি)।
  • সিস্টেমের স্বাস্থ্য সম্পর্কে বেসিক অ্যাপ্লিকেশন পর্যবেক্ষণ, ব্যর্থতার ক্ষেত্রে ইমেল বিজ্ঞপ্তি

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