গুগল পেয়ারা বনাম অ্যাপাচি কমন্স [বন্ধ]


212

আমি জাভাতে দ্বি-নির্দেশমূলক মানচিত্রের প্রয়োগের সন্ধান করছিলাম এবং এই দুটি গ্রন্থাগারটিতে হোঁচট খেয়েছি:

উভয়ই নিখরচায়, দ্বি-নির্দেশমূলক মানচিত্রের প্রয়োগের জন্য যা আমি সন্ধান করছিলাম (অ্যাপাচে বিড়িম্যাপ, গুগলে বিম্যাপ), আশ্চর্যরকম প্রায় একই আকারের (অ্যাপাচি 493 কেবি, গুগল 499 কেবি) [সম্পাদনা: আর সত্য নয়!] এবং মনে হচ্ছে সব দিক থেকে আমার সাথে বেশ মিল।

আমার কোনটি বেছে নেওয়া উচিত এবং কেন? অন্যান্য কিছু সমতুল্য বিকল্প রয়েছে (অবশ্যই নিখরচায় থাকতে হবে এবং কমপক্ষে দ্বিদলীয় মানচিত্র থাকতে হবে)? আমি সর্বশেষতম জাভা এসই এর সাথে কাজ করছি, তাই কৃত্রিমভাবে জাভা 5 বা এর মতো কোনও কিছুর সীমাবদ্ধ করার প্রয়োজন নেই।


5
লাইব্রেরিটি বেছে নেওয়ার মানদণ্ড অবশ্যই আপনার দেওয়া উচিত? লাইসেন্স, কার্য সম্পাদন, অতিরিক্ত নির্ভরতা,
জেনেরিক

1
গুগল সংগ্রহগুলি repo1.maven.org এ উপলব্ধ রয়েছে: repo1.maven.org/maven2/com/google/collections/…
জোচিম

আমি সংশোধন করে দাঁড়িয়েছি - আমি com / googlecode এ খুঁজছিলাম
kdgregory

উত্তর:


185

আমার মতে আরও ভাল পছন্দ পেয়ারা (আগে গুগল সংগ্রহ হিসাবে পরিচিত):

  • এটি আরও আধুনিক (জেনারিকস রয়েছে)
  • এটি একেবারে সংগ্রহের API প্রয়োজনীয়তা অনুসরণ করে
  • এটি সক্রিয়ভাবে বজায় রাখা হয়
  • CacheBuilderএবং এটি পূর্বসূরীরা MapMakerকেবল প্লেইন দুর্দান্ত

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

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


3
যা আমি সত্যিই অবাক করি: অন্য কোনও মতামত কেন নেই? আমার কি শয়তানদের উকিল বাজানো উচিত? অ্যাপাচি কমন্স সংগ্রহগুলি কোনও খারাপ লাইব্রেরি নয়।
জোছিম সউর

10
যেহেতু আপাচে জেনেরিকের অভাব রয়েছে তাই আমি মনে করি এটি সুস্পষ্ট বলে মনে হয় যে এই দুটিয়ের মধ্যে কোনটি ভবিষ্যত। গুগল এগিয়ে পরবর্তী যৌক্তিক পদক্ষেপ। এটি একটি আশ্চর্যজনক অনুভূতি, যদিও এটি দ্য জায়েন্ট দ্বারা নির্মিত ... তবে যতক্ষণ না এটি নিখরচায় লাইসেন্সের অধীনে থাকে তবে এটি মাইক্রোসফ্ট দ্বারা নির্মিত না হলেও এটি বিবেচ্য নয়। আমি অনুমান করি.
জুনাস পুলাক্কা

12
এই একটি হল পাঠকদের সচেতন হতে হবে খুব পুরাতন উত্তর এবং আরো অনেক পরিবর্তিত হয়েছে
রায় প্রকৃত প্রেমিক

1
@ রয় ট্রুয়েলভ এটি আমার অবাক করে দেয় না যে অনেক কিছু পরিবর্তিত হয়েছে এবং আমি এই বিষয়ে আপনার বর্তমান চিন্তাভাবনাগুলি শুনতে বা সম্ভবত একটি সাম্প্রতিক পর্যালোচনা / তুলনার একটি লিঙ্ক শুনতে পছন্দ করব। আমি "প্রয়োজনে কেবলমাত্র ডিফল্ট দ্বারা পরিবর্তনযোগ্য / পরিবর্তনযোগ্য" দর্শন এবং পেয়ারাতে জেনেরিকের অন্তর্ভুক্তি পছন্দ করি তবে আমি যে উপাদানগুলি পড়ছি সেগুলি সমস্তই তারিখ হতে পারে যেমন আপনি বলে যে এই থ্রেড হয়ে গেছে।
জোএ

2
@ testerjoe2 - দুঃখিত, আমি লিখেছিলাম যে মন্তব্যটি দীর্ঘকালীন হয়েছিল এবং খোলামেলাভাবে এর কারণ মনে নেই। অন্ধকারে এটি ছিল বেশ অপ্রয়োজনীয়! আমি বুঝতে পারি নি যে ২০১০ সাল থেকে এই লিবিগুলি পরিবর্তন হয়নি, তবে আমি জানি যে সেগুলি ভারী ব্যবহার করা অবিরত রয়েছে, এবং তাই আমি বলি নিরাপদ থাকা উচিত। যদি আমি আজ ডাব্লু / একটি নতুন প্রকল্প শুরু করতাম তবে আমি সম্ভবত গোল্ডম্যান শ্যাচের সংগ্রহের লাইব : github.com/goldmansachs/gs-colલેક્શનগুলিতে খুব ঘনিষ্ঠভাবে নজর রাখব । আপনি যখন বিশ্বের অন্যতম খারাপ সংস্থার হন তখন আপনার সত্যিই নিশ্চিত হওয়া উচিত যে আপনার কাছে একটি কিকাস জাভা সংগ্রহ লাইব্রেরি রয়েছে।
রায় ট্রুইলোভ

72

প্রশ্ন থেকে: গুগল সংগ্রহ FAQ

গুগল কেন এগুলি তৈরি করেছিল, যখন এটি পরিবর্তে অ্যাপাচি কমন্স সংগ্রহের উন্নতি করার চেষ্টা করতে পারে?

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

অ্যাপাচি লাইব্রেরি এবং আমাদের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য হ'ল আমাদের সংগ্রহগুলি খুব দৃ faith়তার সাথে তারা প্রয়োগ করা জেডিকে ইন্টারফেসগুলির দ্বারা নির্দিষ্ট চুক্তিগুলি মেনে চলে। আপনি যদি অ্যাপাচি ডকুমেন্টেশন পর্যালোচনা করেন তবে আপনি লঙ্ঘনের অসংখ্য উদাহরণ পাবেন। এগুলিকে এত স্পষ্টভাবে নির্দেশ করার জন্য তারা deণ প্রাপ্য, কিন্তু তবুও, মান সংগ্রহের আচরণ থেকে বিচ্যুত হওয়া ঝুঁকিপূর্ণ! এই জাতীয় সংগ্রহের মাধ্যমে আপনি কী করবেন সে বিষয়ে আপনাকে অবশ্যই যত্নবান হতে হবে; বাগগুলি সর্বদা কেবল ঘটে যাওয়ার জন্য অপেক্ষা করে।

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


71

আমি সর্বাধিক গুরুত্বপূর্ণ জিনিসগুলি পেয়েছি যা গুগল সংগ্রহগুলি শুরু করার জায়গা করে দেয়:

  • জেনারিক্স (জেনারিকস ছাড়াই সংগ্রহ - এফটিএল)
  • সংগ্রহের কাঠামোর সাথে সামঞ্জস্যতা (জোশ ব্লচ এই কাঠামোর মূল খেলোয়াড় ছিলেন)
  • শুদ্ধি। এই ছেলেরা এই সমস্যাটি সঠিকভাবে পাওয়ার জন্য মরিয়া হয়ে আবদ্ধ; তাদের 25K ইউনিট পরীক্ষার মতো কিছু রয়েছে এবং এপিআই ঠিক ঠিক পাওয়ার জন্য আবদ্ধ।

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


7
ভিডিও লিঙ্কটির জন্য +1
জেস্পার

1
গুগল সংগ্রহ সম্পর্কে আরও দুর্দান্ত পড়া: javalobi.org/articles/google-colલેક્શન (এর মূল নির্মাতাদের সাথে একটি সাক্ষাত্কার)। "আপনার পদ্ধতির অনন্য কী? প্রশ্নটি দেখুন কীভাবে এটি আলাদা হয়, উদাহরণস্বরূপ, অ্যাপাচি কমন্স সংগ্রহ?"
জোনিক

4
অ্যাপাচি কমন্স সংগ্রহ সংস্করণ 4 জেনেরিক ব্যবহার করে। commons.apache.org/proper/commons-collections/release_4_0.html
Abdull

-7

আরও দুটি জিনিস (আমি আশা করি আমি ভুল নই)

  • পেয়ারা লাইসেন্স (গুগল সংগ্রহের জন্য নতুন নাম) অ্যাপাচি লাইসেন্স 2.0, যার অর্থ: অ্যাপাচি কমন্স প্রকল্পের জন্য একই
  • ডাউনলোড করার জন্য কোনও ফাইলে আমি পেয়ারাটির উত্স কোডটি খুঁজে পাই না (এটি মনে হয় কেবল গিট-অ্যাক্সেস সম্ভব)

19
সোর্স? আপনার মানে জারটি যা গ্রহণের সাথে যুক্ত হতে পারে? এটা এখানে । BTW: কী ভুল git clone https://code.google.com/p/guava-libraries/এবং git checkout v11.0.2?
Xaerxess

-7

পেয়ারা সম্পর্কে একটি বাজে জিনিস হ'ল মাল্টিম্যাপ java.util.Map প্রসারিত করে না। যদি আপনার নিজস্ব পদ্ধতি রয়েছে যা মানচিত্রে কাজ করে তবে তারা পেয়ারা মাল্টিম্যাপে কাজ করবে না (অ্যাপাচি মাল্টিম্যাপ ইন্টারফেস java.util.Map প্রসারিত করে)। আমি নিশ্চিত যে এটির উপায় হওয়ার কারণেই এখানে কোনও কারণ রয়েছে তবে এটি অসুবিধেও রয়েছে।


16
আপনি যদি এর Multimapমতো ব্যবহার করতে চান Mapতবে সর্বদা asMap()দেখতে পাবেন।
Xaerxess

22
আপনি কীভাবে java.util.Map বাস্তবায়নের জন্য একটি মাল্টিম্যাপ আশা করতে পারেন? একটি বহু মানচিত্র মানচিত্রের থেকে মূলত পৃথক।
16:01

1
মাল্টিম্যাপ <কে, ভি> মানচিত্র <কে, সংগ্রহ <ভি>> প্রসারিত করে .. আমার সন্দেহ হয় যে জি মানচিত্রটি সুপারিনটারফেস হিসাবে ব্যবহার না করার উপযুক্ত কারণ ছিল had
ম্যাট

10
@lucek: তোমার জন্য Javadoc মাধ্যমে সন্ধান তাহলে Mapবোঝার যে প্রতি রেফারেন্স দিয়ে Vআসলে একটি হতে হবে Collection<V>, আমি মনে করি আপনি প্রশংসনীয় দ্রুত দেখতে পাবেন কেন এটা একটি ভাল superinterface নয় Multimap<K, V>
রুখ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.