প্রথমত, জাভামনকি explained৯ ব্যাখ্যা করার পরে, গুগল গুয়ারা এবং অ্যাপাচি কমন্স একই বৈশিষ্ট্যগুলি ভাগ করে নেওয়ার সাথে সাথে তাদের উভয়ের কার্যকারিতাও রয়েছে যা তাদের অংশ থেকে অনুপস্থিত। সুতরাং, কেবলমাত্র একটি লাইব্রেরিতে নিজেকে সীমাবদ্ধ করা বুদ্ধিমানের কাজ হতে পারে।
বলা হচ্ছে, যদি আমাকে বেছে নিতে হয় তবে আমি পেয়ারা ব্যবহার করতে পছন্দ করতাম, অ্যাপাচি কমন্সকে (বিরল) ক্ষেত্রে যে ক্ষেত্রে গুয়ারা প্রয়োজনীয় কার্যকারিতা না রাখে সেদিকে রাখে। আমাকে কেন ব্যাখ্যা করার চেষ্টা করা যাক।
পেয়ারা আরও "আধুনিক"
অ্যাপাচি কমন্স একটি সত্যই পরিপক্ক লাইব্রেরি, তবে এটি প্রায় 10 বছরের পুরানো এবং জাভা ১.৪ লক্ষ্য করে। ২০০ Gu সালে পেয়ারাটি উন্মুক্ত ছিল , জাভা ৫ টি লক্ষ্য করে এবং এইভাবে পেয়ারা জাভা ৫ বৈশিষ্ট্যগুলি থেকে প্রচুর উপকার লাভ করে: জেনেরিকস , ভারার্গস , এনাম এবং অটোবক্সিং ।
পেয়ারা বিকাশকারীদের মতে, জেনেরিক্স একটি কারণ যা তারা অ্যাপাচি কমন্সকে উন্নত না করে নতুন লাইব্রেরি তৈরি করা বেছে নিয়েছিল ( গুগল-সংগ্রহগুলি এফএকিউ দেখুন , "গুগল কেন এগুলি তৈরি করেছিল, যখন এটি অ্যাপাচি উন্নত করার চেষ্টা করতে পারে) পরিবর্তে কমন্স সংগ্রহ? " )।
আমি তাদের সাথে সম্মত হন: যখন প্রায়ই সমালোচনা (কোন reification, অনুন্নত সহাবস্থানযোগ্যতা কারণে সীমিত), জাভা জেনেরিক্স এখনও খুব দরকারী যখন উপযুক্তভাবে ব্যবহার করা হয়, পেয়ারা মত। আমি বরং জেনারেটেড কালেকশনের সাথে কাজ করার চেয়ে ছাড়তাম!
(দ্রষ্টব্য যে অ্যাপাচি কমন্স 3.0, জাভা 1.5+ টার্গেট করে )
পেয়ারা খুব ভাল ডিজাইন / ডকুমেন্টেড
কোডটি এপিআইকে আরও বেশি পঠনযোগ্য, আবিষ্কারযোগ্য, পারফরম্যান্ট, সুরক্ষিত, থ্রেড-নিরাপদ করার জন্য সেরা অনুশীলন এবং দরকারী নিদর্শনে পূর্ণ ...
রয়ে পঠিত কার্যকরী জাভা (সন্ত্রস্ত বই BTW), আমি কোডে এইসব নিদর্শন সর্বত্র দেখুন:
- কারখানার পদ্ধতি (যেমন
ImmutableList.copyOf()
)
- রচয়িতা ধরণ (
ImmutableList.builder()
, Joiner
, CharMatcher
, Splitter
, Ordering
, ...)
- অপরিবর্তনীয়তা (অপরিবর্তনীয় সংগ্রহ,
CharMatcher
, Joiner
, Splitter
, ...)
- বাস্তবায়ন লুকানো (
Predicates.xXx
, ...)
- উত্তরাধিকারের উপর সংমিশ্রণ (
ForwardXXX
সংগ্রহ)
- নাল-চেক
- এনাম-সিঙ্গলটন প্যাটার্ন
- সিরিয়ালাইজেশন প্রক্সি
- নামকরণের সম্মেলনগুলি সুচিন্তিত
এই নকশাগুলির পছন্দগুলি নিয়ে আসা সুবিধাগুলি ব্যাখ্যা করার জন্য আমি কয়েক ঘন্টা যেতে পারতাম (আপনি যদি আমাকে চান তবে আমাকে বলুন)। বিষয়টি হ'ল, এই নিদর্শনগুলি কেবল "শোয়ের জন্য" নয়, এর একটি আসল মূল্য রয়েছে: API ব্যবহার করতে খুব আনন্দিত, শিখতে সহজ (এটি কীভাবে নথিভুক্ত করা ভাল তা আমি বলতে ভুলে গেছি?), আরও দক্ষ এবং অপরিবর্তনীয়তার কারণে অনেকগুলি ক্লাস সহজ / থ্রেড-নিরাপদ।
বোনাস পয়েন্ট হিসাবে, কোডটি দেখে অনেকে অনেক কিছু শিখেন :)
পেয়ারা ধারাবাহিক
কেভিন বাউরিলিয়ন (পেয়ারা সীসা বিকাশকারী) লাইব্রেরি জুড়ে উচ্চ স্তরের মানের / ধারাবাহিকতা বজায় রাখার জন্য দুর্দান্ত কাজ করে। তিনি অবশ্যই একা নন, এবং প্রচুর দুর্দান্ত বিকাশকারী পেয়ারাতে অবদান রেখেছেন (এমনকি জোশুয়া ব্লোচ , যিনি এখন গুগলে কাজ করেন!)।
পেয়ারার পেছনের মূল দর্শন এবং নকশার পছন্দগুলি লাইব্রেরির সর্বত্র সামঞ্জস্যপূর্ণ এবং জেডিকে এপিআইয়ের অতীতের ভুলগুলি ( যদিও তাদের ভুল নয়) থেকে শিক্ষা নিয়ে বিকাশকারীরা খুব ভাল (আইএমও) এপিআই নকশা নীতি অনুসরণ করে ।
পেয়ারা একটি উচ্চ শক্তি থেকে ওজন অনুপাত আছে
পেয়ারা ডিজাইনাররা অনেকগুলি বৈশিষ্ট্য যুক্ত করার প্রলোভনকে প্রতিহত করে, এপিআইকে সর্বাধিক দরকারী বিষয়গুলিতে সীমাবদ্ধ করে। তারা জানে যে একবার যুক্ত হয়ে যাওয়া কোনও বৈশিষ্ট্য সরিয়ে ফেলা খুব কঠিন and এবং এপিআই নকশায় জোশুয়া ব্লচের বক্তব্যটি অনুসরণ করুন: "সন্দেহ হলে, এটিকে ছেড়ে দিন" । এছাড়াও, @ বিটা টীকাটি ব্যবহার করে তাদের নির্দিষ্ট এপিআইয়ের প্রতিশ্রুতি না দিয়ে কিছু ডিজাইনের পছন্দগুলি পরীক্ষা করার অনুমতি দেয় ।
উপরে উল্লিখিত নকশা পছন্দগুলি একটি খুব কমপ্যাক্ট API এর জন্য অনুমতি দেয়। কোনও "সরল" নির্মাতার অভ্যন্তরে থাকা শক্তিগুলি দেখার জন্য কেবল ম্যাপমেকারের দিকে নজর দিন । অন্যান্য ভাল (সহজ হলেও?) উদাহরণগুলি হ'ল চারম্যাচার , স্প্লিটার এবং অর্ডারিং ।
পেয়ারার বিভিন্ন অংশ রচনা করাও খুব সহজ। উদাহরণস্বরূপ, বলুন আপনি একটি জটিল ফাংশনটির ফলাফল ক্যাশে করতে চান ? আপনার ম্যাপমেকার এবং বিঙ্গোকে এই ফাংশনটি খাওয়ান, আপনি একটি থ্রেড-নিরাপদ কম্পিউটিং মানচিত্র / ক্যাশে পেয়েছেন। নির্দিষ্ট স্ট্রিংগুলিতে মানচিত্র / ফাংশন ইনপুটগুলিকে সীমাবদ্ধ করতে হবে? সমস্যা নেই, এটিকে কনস্ট্রেইনড্যাম্যাপের মধ্যে আবদ্ধ করুন , চারম্যাচার ব্যবহার করে অনুচিত স্ট্রিংগুলি প্রত্যাখ্যান করুন ...
পেয়ারা সক্রিয় বিকাশে রয়েছে
কমাস ল্যাং ৩.০-এ কাজ করার সাথে অ্যাপাচি কমন্সের বিকাশ ত্বরান্বিত হয়েছে বলে মনে হচ্ছে, গুয়ারা এই মুহুর্তে আরও বাষ্প নেবে বলে মনে হচ্ছে, গুগল তাদের আরও অভ্যন্তরীণ শ্রেণীর উত্স প্রকাশ করেছে।
গুগল যেহেতু অভ্যন্তরীণভাবে এটির উপর ভারী নির্ভর করে, তাই আমি মনে করি না এটি খুব শীঘ্রই কোনও সময় অদৃশ্য হয়ে যাবে। প্লাস, তার সাধারণ লাইব্রেরি গুন ওপেন Google আরও সহজে ওপেন সোর্স করতে পারবেন অন্যান্য লাইব্রেরি এটি উপর নির্ভর করে (পরিবর্তে পুনঃমোড়কাবদ্ধকরণ তাদের Guice মত বর্তমানে আছে )।
উপসংহার
উপরের সমস্ত কারণে, একটি নতুন প্রকল্প শুরু করার সময় পেয়ারা আমার গমন টু লাইব্রেরি। এবং আমি গুগল এবং দুর্দান্ত পেয়ারা বিকাশকারীদের কাছে কৃতজ্ঞ, যারা এই দুর্দান্ত লাইব্রেরিটি তৈরি করেছিলেন।
PS: আপনি এই অন্যান্য এসও প্রশ্নটি পড়তে চাইতে পারেন
পিপিএস: আমার কোনও গুগল স্টক নেই (এখনও)