পেয়ারা এবং অ্যাপাচি সমমানের লাইব্রেরিগুলির মধ্যে বড় উন্নতিগুলি কী কী?


123

আমরা বর্তমানে অ্যাপাচি সংগ্রহগুলি, স্ট্রিং ব্যবহারগুলি ব্যবহার করি I

গুরুত্বপূর্ণ মানদণ্ডটি বিকাশকারীদের ব্যবহার সহজ ease পারফরম্যান্স / মেমরির ব্যবহার আমাদের জন্য এখনও একটি গুরুত্বপূর্ণ সমস্যা নয়। উন্নয়নের গতি এই মুহুর্তে মূল মানদণ্ড।

পেয়ারা দিয়ে কীভাবে বিকাশকারীর জীবন উল্লেখযোগ্যভাবে সহজ হয়ে গেল সে সম্পর্কে আমি মতামতের প্রশংসা করব।

উত্তর:


223

প্রথমত, জাভামনকি 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: আপনি এই অন্যান্য এসও প্রশ্নটি পড়তে চাইতে পারেন

পিপিএস: আমার কোনও গুগল স্টক নেই (এখনও)


ধন্যবাদ! * ব্লাশ * আমি পেয়ার অতি সক্রিয় বিকাশ সম্পর্কে আরও কথা বলতে এবং জাভা 1.5 বৈশিষ্ট্যগুলি আরও ভালভাবে জানাতে আমার উত্তর সম্পাদনা করেছি।
এতিয়েন নেভু

1
কেবল লক্ষ্য করেছেন যে কেভিন বুউরিলিয়ন এই আলাপে পেয়ারা বনাম অ্যাপাচি কমন্স সম্পর্কে আলোচনা করেছেন: youtube.com/watch?v=9ni_KEkHfto#t=42m38s
এতিয়েন নেভু

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

24

R06 প্রকাশের সাথে শুরু করে আমি আগস্ট ২০১০ সাল থেকে পেয়ারা ব্যবহার করছি। মূলত, আমার বিকাশের জন্য গ্রিনফিল্ড জাভা লাইব্রেরি ছিল, তাই আমি জেএসইএসআই এর সেরা অ্যাডজান্ট লাইব্রেরিটি ঘুরে দেখলাম। Ditionতিহ্যগতভাবে, আমরা অ্যাপাচি কমন্স লাইব্রেরি ব্যবহার করতাম, তবে আমি সেখানে কী ছিল তা দেখতে চাই এবং পেয়ারা ব্যবহার শুরু করি।

পেশাদাররা

  1. জাভা 5.0 ভাষা নির্মাণ। গ্রন্থাগারটি ব্লচের "কার্যকর জাভা: ২ য় সংস্করণ" থেকে তার নকশার বেশিরভাগ সংকেত গ্রহণ করে: অপরিবর্তনীয়তা, নির্মাতার প্যাটার্ন, নির্মাণকারীর পরিবর্তে ফ্যাক্টরিগুলি, জেনেরিকস ইত্যাদি your এটি আপনার কোডটিকে আরও কঠোর এবং অভিব্যক্ত করে তোলে।
  2. কার্যকরী প্রোগ্রামিং সমর্থন, বিশেষত শীর্ষ স্তরের ফাংশন এবং প্রেডিকেট ইন্টারফেস সহ।

কনস

  1. এটি অ্যাপাচি কমন্সের জন্য নির্দিষ্ট কমন্স-কোডেকের উপযুক্ত প্রতিস্থাপন নয়।
  2. এখানে 'পেয়ারা কুকবুক' নেই। গ্রন্থাগারটি সংক্ষিপ্ত এবং অরথোগোনাল উভয়ই। সুতরাং, এর পুরো সুবিধা নেওয়ার জন্য একটি নির্দিষ্ট শিক্ষার বক্ররেখা রয়েছে। যেমনটি উল্লেখ করা হয়েছে, জাভাদোকটি দুর্দান্ত, তবে কিছু দীর্ঘতর সোর্স কোড কেস স্টাডি সহায়ক হবে।
  3. যদি আপনি এমন পরিবেশে থাকেন যা জাভা 1.3 বা 1.4 এর প্রয়োজন হয় তবে আপনার ভাগ্যের বাইরে।

আমার কাছে, পেয়ারা জাভাটিকে সংক্ষিপ্ত, ভাবপূর্ণ স্ক্রিপ্টিং ভাষার নিকটবর্তী করে তোলে এবং এটি দুর্দান্ত।


16

আমার অভিজ্ঞতায় আমি বুঝতে পারছি না যে তারা একে অপরের সাথে লড়াই করে, বা সেই পেয়ারা অ্যাপাচি লিবিসের উন্নতি করে। বরং পেয়ারা অ্যাপাচি লাইবসকে পরিপূর্ণ করে। পেয়ারাতে এমন ক্লাস এবং ইউটিলিটি রয়েছে যা অ্যাপাচি এবং বিপরীত নয়।

অতএব, আমি জানি না যে আপনাকে প্রতি সেচ পরিবর্তন করতে হবে - আমি বলব "সঠিক কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করুন"।


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