Apache Commons এর পরিচিতি

অবশ্যই, এর ইতিহাস দিয়ে শুরু করা যাক!

এটি সবই 1999 সালে অ্যাপাচি সফ্টওয়্যার ফাউন্ডেশন (ASF) এর পক্ষ থেকে "Apache Group" এর নিবন্ধনের মাধ্যমে শুরু হয়েছিল। ফাউন্ডেশন দ্বারা সমর্থিত প্রকল্পটি 1995 এবং 1999 এর মধ্যে তৈরি করা অ্যাপাচি HTTPD ওয়েব সার্ভার।

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

এভাবেই জাকার্তা কমন্স প্রকল্পের জন্ম হয়েছিল, যেখানে জাভা উপাদান যুক্ত করা হয়েছিল (বেশিরভাগই বিদ্যমান কোডের উপর ভিত্তি করে)। পরবর্তীতে প্রকল্পটির নাম পরিবর্তন করে Apache Commons রাখা হয়।

আরও বিস্তৃতভাবে, Apache Commons হল "ছোট জাভা ইউটিলিটিগুলির একটি বড় সংগ্রহ"। এটি অনেক ওপেন সোর্স প্রকল্পে ব্যবহৃত হয়।

অ্যাপাচি কমন্স ইউটিলিটিগুলি অ্যাপাচি টমক্যাট, স্ট্রুটস, হাইবারনেট এবং অন্যান্য প্রকল্পগুলির কেন্দ্রবিন্দুতে রয়েছে।

অবশ্যই, এই সমস্ত কিছু বিল্ড সিস্টেম (ম্যাভেন, গ্রেডল) ছাড়াই ম্যানুয়ালি সংযুক্ত করা যেতে পারে, তবে আমরা এটি করব না এবং সেগুলিকে আমাদের প্রকল্পে যুক্ত করব।

Maven এর সাথে কাজ করতে, প্রথমে উপযুক্ত নির্ভরতা যোগ করুন:

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>${apache.common.version}</version>
</dependency>

যেখানে ${apache.common.version} এই লাইব্রেরির সংস্করণ।

গ্রেডলের জন্য (গ্রুভি):

implementation 'org.apache.commons:commons-lang3:3.12.0'

জনপ্রিয় অ্যাপাচি কমন্স লাইব্রেরি

এখানে সর্বাধিক ব্যবহৃত ক্লাস এবং পদ্ধতিগুলির একটি তালিকা রয়েছে:

অ্যাপাচি কমন্স: ল্যাং

এই লাইব্রেরিতে নিম্নলিখিত প্যাকেজ রয়েছে:


Packages
org.apache.commons.lang
org.apache.commons.lang.builder
org.apache.commons.lang.enum
org.apache.commons.lang.enums
org.apache.commons.lang.exception
org.apache.commons.lang.math
org.apache.commons.lang.mutable
org.apache.commons.lang.reflect
org.apache.commons.lang.text
org.apache.commons.lang.time

এখানে আপনি স্ট্রিং, প্রতিফলন, ক্রমিককরণ, বস্তু এবং সিস্টেমের সাথে সুবিধামত এবং দ্রুত কাজ করতে পারেন। আসুন সর্বাধিক ব্যবহৃত পদ্ধতিগুলি নোট করি:

StringUtils

স্ট্রিং ম্যানিপুলেট করার জন্য বিপুল সংখ্যক পদ্ধতি।

  • is(Not)Blank/Empty(String) - এই ধরনের চেকটি ভুলে যাওয়ার সময় এসেছে: if (s!=null && s.trim().length()>0) , এবং এখানে একটি ভাল প্রতিস্থাপন রয়েছে

StringEscapeUtils

  • (un)escapeSql(স্ট্রিং) - PreparedStatment প্রতিস্থাপন করুন
  • (un)escapeHtml(স্ট্রিং) - HTML থেকে মান প্রক্রিয়া করতে

ToStringBuilder

  • reflectionToString(অবজেক্ট) হল প্রতিফলনের উপর ভিত্তি করে toString() এর একটি বাস্তবায়ন। আপনি যখন প্রতিফলন ব্যবহার করে একটি ক্ষেত্র সরান, পদ্ধতির ফলাফল পরিবর্তন হবে।

EqualsBuilder এবং HashCodeBuilder

  • প্রতিফলন ইকুয়ালস/হ্যাশকোড(অবজেক্ট) তার নিজস্ব সুবিধা সহ স্বয়ংক্রিয় প্রজন্মের জন্য একটি ভাল প্রতিস্থাপন: এই দুটি পদ্ধতি অপারেশন চলাকালীন অবজেক্টের কাঠামোগত পরিবর্তনগুলিকে বিবেচনা করে, উদাহরণস্বরূপ, ক্ষেত্র যোগ করা

ব্যতিক্রম ইউটিলস

  • getFullStackTrace(থ্রোয়েবল) - পুরো স্ট্যাকট্রেসটিকে একটি স্ট্রিং হিসাবে আউটপুট করুন

Apache Commons: সংগ্রহ

Packages
org.apache.commons.collections4
org.apache.commons.collections4.bag
org.apache.commons.collections4.bidimap
org.apache.commons.collections4.collection
org.apache.commons.collections4.comparators
org.apache.commons.collections4.functors
org.apache.commons.collections4.iterators
org.apache.commons.collections4.keyvalue
org.apache.commons.collections4.list
org.apache.commons.collections4.map
org.apache.commons.collections4.multimap
org.apache.commons.collections4.multiset
org.apache.commons.collections4.properties
org.apache.commons.collections4.queue
org.apache.commons.collections4.sequence
org.apache.commons.collections4.set
org.apache.commons.collections4.splitmap
org.apache.commons.collections4.trie
org.apache.commons.collections4.trie.analyzer

একটি লাইব্রেরি যা জাভা এসই সংগ্রহের ফ্রেমওয়ার্ককে পুরোপুরি পরিপূরক করে।

CollectionUtils হল সংগ্রহ সহ সুবিধাজনক কাজের জন্য একটি ক্লাস:

    filter/find(সংগ্রহ, Predicate) - ফিল্টারিং এবং predicate forAllDo(সংগ্রহ, ক্লোজার) দ্বারা অনুসন্ধান করা - প্রতিটি উপাদানের জন্য ক্লোজার সঞ্চালন করে, কিন্তু এই পদ্ধতিটি অবহেলিত , Iterator.forEach() is(Not)Empty(সংগ্রহ) ব্যবহার করুন - আপনাকে অনুমতি দেয় isEqualCollection(সংগ্রহ, সংগ্রহ) কল করার আগে নাল চেক না করা - দুটি সংগ্রহের তুলনা করতে সাহায্য করে

এছাড়াও ইউটিলিটির বিভিন্ন স্তরের আরও অনেক শ্রেণী রয়েছে। এখানে এবং নীচে আমি আমার ক্ষেত্রে সবচেয়ে বেশি ব্যবহৃত বিশুদ্ধভাবে তালিকাভুক্ত করি।

Apache Commons:IO

Packages
org.apache.commons.io
org.apache.commons.io.comparator
org.apache.commons.io.file
org.apache.commons.io.file.spi
org.apache.commons.io.filefilter
org.apache.commons.io.function
org.apache.commons.io.input
org.apache.commons.io.input.buffer
org.apache.commons.io.monitor
org.apache.commons.io.output
org.apache.commons.io.serialization

অতিরিক্তভাবে, এটি জাভাতে ফাইলগুলির সাথে কাজ করতে সহায়তা করে:

ফাইল ইউটিলস

  • copyDirectory(ফাইল, ফাইল) - কপি ডিরেক্টরি
  • copyFile(ফাইল, ফাইল) - কপি ফাইল
  • listFiles(ফাইল, স্ট্রিং[], বুলিয়ান) - এক্সটেনশন এবং পুনরাবৃত্তভাবে ফাইল তালিকা
  • readFileToString(ফাইল, স্ট্রিং)
  • writeStringToFile(ফাইল, স্ট্রিং)

IOUtils

  • ক্লোজ চুপচাপ (পাঠক/লেখক/ইনপুটস্ট্রিম/আউটপুটস্ট্রিম) - ডেটা স্ট্রিম বন্ধ করে
  • অনুলিপি (ইনপুটস্ট্রিম, আউটপুট স্ট্রিম) - এক স্ট্রিম থেকে অন্য স্ট্রিমে অনুলিপি করুন