‫کتابخانه Apache Commons lang3

امروز ‫با یک آموزش جدید در مورد کتابخانه قدرتمند Apache به نام Commons Lang در خدمتتان هستیم

‫ در داخل جاوا کلیه ی کلاس های موجود در داخل package عهjava.lang  به هنگام بوت شدن هر برنامه جاوایی بصورت اتوماتیک توسط classloader داخل مموری بارگذاری می شوند. لذا برای استفاده از کلاس های موجود در داخل این package شما نیاز به import کردن آنها ندارین و بلافاصله آنها قابل استفاده در برنامه هستند. لیست کامل کلاس ها و انوتیشن های موجود در این package در این تصویر موجود است

 ‫همانطور که ملاحظه می فرمایید، کلیه ی کلاس های اصلی و هسته ی جاوا در این package موجود می باشند.
لینک داکیومنت

کتابخانه ی Commons Lang 

‫‫اگر نگاهی به داخل package عه java.lang بیندازین متوجه می شوید که، این کدها برای کارهای عمومی نوشته شده اند و از flexibility عه زیادی برخوردار نیستند و برنامه نویس باید برای یک کار بخصوص روی این کلاس ها کلی کد utility بنویسد تا بتواند از آن کلاس ها استفاده ی مورد نظر خودش را ببرد.

‫کتابخانه ی commons langدقیقا روی مسئله گفته شده تمرکز کرده است و کلاس های utility فراوانی را برای استفاده ی راحت تر و موثرتر برای شما فراهم کرده. شایان ذکر است که این کتابخانه در کنار package عه java.lang روی کلاسه java.util.Date (که کلاسه تاریخ و زمان جاوا محسوب می شود و یکی از کلاس های مهم هست) هم به شما کلاس utility ارائه میدهد.

‫پکیج کلاس های utility موجود در ورژن ۳ این کتابخانه که (در حال حاضر ورژن مورد استفاده هستش) به این شکل می باشد.

org.apache.commons.lang3

‫در داخل این package لیست package ها به این شکل طبقه بندی شده است :

‫حال دونه به دونه به این package ها میپردازیم :

۱-

org.apache.commons.lang3.arch

 در داخل این ‫پکیج، متدهای utility به شما ارائه می شود که با آن ها میتوانید ساختار پردازشگر سیستم و اطلاعات ساختاری OS جاری را در بیارین. بر فرض مثال آیا پردازشگر 32 bit هستش یا 64 bit

‫۲-

org.apache.commons.lang3.builder

‫کلاس های موجود در این پکیج به شما به شما کمک میکنند که متدهای  equals و toString و hashCode و موجود در داخل کلاس Object و متد compareTo در اینترفیس Comparable را به خوبی با یکسری کلاس Builder مدریت کنید. توجه داشته باشید که این کلاس ها Thread-Safe نیستند.

‫۳-

org.apache.commons.lang3.concurrent

‫کلاس های موجود در این پکیج به شما به شما کمک میکنند که با کلاس های مرتبط با thread ها و ‫concurrency در جاوا کار کنید. به این پکیج میشه یطورایی یک افزونه بسط داده شده برای package عه  java.util.concurreny هم نگاه کرد. اینترفیسی در داخل این پکیج وجود دارد به نام  ConcurrentInitializer که ایده ی پشت آن اینست که دسترسی به یک آبجکت  در داخل پیاده سازی های این اینترفیس می بایستی به صورت Thread-Safe انجام شود. این کلاس میتواند به چندین Thread پاس داده شود که همگی بتوانند به Object عه درست شده توسط این کلاس دسترسی داشته باشند ولی  بحالت Thread-Safe

‫از دیگر مزیت های این پکیج کار با Exception های Thread های runtime می باشد که کلاسه ConcurrentUtils به شما امکانات زیادی برای این کارها میدهد

‫۴-

org.apache.commons.lang3.event

‫پکیج بعدی پکیج event هستش که به شما امکانات و متدهای متنوعی برای کنترل event ها ارائه میکند

۵-

org.apache.commons.lang3.exception

‫ این پکیج به شمایکسری کلاس utility برای کار با خطاها ارائه میکند. مثلا شما میتوانید cause و root cause  هارو از یک Exception با یکسری utility متد بیرون بکشید. یا مثلا میتوانید چک کنید که Exception مورد نظر داخلش cause ی به این شکل وجود دارد یا نه. یا مثلا میتوانید مستقیم root cause رو توی کنسول چاپ کنید و مواردی از این قبیل.

‫۶-

org.apache.commons.lang3.math

‫این پکیج به شما اجازه ی محاسبات ریاضیات بیزینسی رو میدهد (نه علمی) در داخل این پکیج ۳ کلاسه:
Fraction – IEEE754rUtils – NumberUtils

‫ وجود دارد که با آن های میتوان کارهایی از قبیل کار با کسرها، نسخه توسعه داده شده Float که به استاندارد IEEE 754r معروف هستش و یک کلاس بسیار قدرتمند برای کار با شماره ها، تبدیلشون به یکدیگر، بررسی min و یا max در لیستی از شماره ها، مقایسه شماره ها و کارهای بسیاری دیگر می باشد.

‫۷-

org.apache.commons.lang3.mutable

‫همانطور که میدانید در داخل جاوا کلاس های مرتبط با primitive type ها همگی بحالت immutable هستن لذا Thread-Safe هم هستند. لذا به هنگام  initialization باید آبجکت جدیدی ساخته شود و مقدار آبجکت قبلی توی آبجکت جدید کپی شود. این پکیج همانند یک Wrapper عمل میکند که به مشکل گفته شده فایق بیایین و بتوانید آبجکت هایی بدون نیاز به ساختن آبجکت دیگری (که در حالت immutable ممکن نیست) داده شود.

‫۸-

org.apache.commons.lang3.reflect

‫این پکیج شامل یکسری کلاس utility و متدهای متنوع می باشد که به شما امکان استفاده از reflection را در جاوا به صورت خیلی ساده میدهد. مثلا شما میتوانید با فراهم کردن کلاس مربوط به سازنده و پارامترهاش خیلی  ساده اون کلاس رو در حالت runtime بسازین و ازش استفاده کنید. یا مثلا میتونین runtime بررسی کنید که در  زمان runtime سازنده ی مورد نظر شما قابل دسترسی هستش یا خیر. در مورد متدها مثلا میتونین یک متد رو فراخوانی کنید، براحتی انوتیشن هایی که رویش خورده را در بیارین، ساختار سلسله مراتبی متد override شده رو در بیارین، بررسی کنید که آیا یک متد قابل دسترس هست یا خیر و کارهای متنوع دیگر. در داخل این پکیج کلاسهای utility دیگری برای کار با تایپ ها، فیلدها و ارث بری کلاس ها هم موجود می باشد.

‫۹-

org.apache.commons.lang3.text

‫در داخل این پکیج کلاس هایی وجود دارد که امکان دستکاری تکست ها به شما داده میشود. میشه از این کلاس ‫بعنوان افزونه ای کاربردی برای java.text نام برد. کلاس های موجود در این پکیج اکثرشون باید new بشن و این  کلاس همانند پکیج های دیگر متدهای استاتیک زیادی ندارد. از کارهایی که این کلاس برای شما میتواند انجام دهد، کار StringBuilder هستش در کلاسه StrBuilder و یا جایگزینی یک استرینگ توسط کلاس StrSubstitutor و یا  کلاسی برای تعویض کلاس StringTokenizer که اسمش StrTokenzier هست، می باشد. از دیگر کارایی های  فرمت کردن استریننگ ها به حالات متفاوت میباشد.

‫‫توجه داشته باشید که اکثر کلاس های موجود در این پکیج deprecated یا از کار افتاده شده اند و دلیل آن هم این است که آن ها بعنوان یک پروژه ی جدا در داخل پروژه ی ‫Apache Commons Text قرار گرفته اند لذا میخواهند از پروژه ی Commons Lang حذف شوند و deprecated شده اند.

‫۱۰-

org.apache.commons.lang3.text.translate

‫کلاس های موجود در داخل این پکیج به شما این امکان را میدهد که یک استرینگ رو بصورت بلوک های متفاوت در  یک زبان یا استاندارد خاص در بیارین. مثلا خروجی کد زیر:

String testStr = "< > \" &";
System.out.println("Escaped : " + StringEscapeUtils.escapeHtml3(testStr));

‫این می شود :

Escaped : &lt; &gt; &quot; &amp;

‫یعنی اینکه کاراکترهای داده شده بحالت کارکترهای قابل استفاده در صفحات html در میاد.

‫‫‫توجه داشته باشید که این پکبج هم همانند پکیجه org.apache.commons.lang3.text گفته شده در بخش قبلی deprecated یا از کار افتاده شده اند و آن ها هم در داخل پروژه ی ‫Apache Commons Text قرار گرفته اند لذا میخواهند از پروژه ی Commons Lang حذف شوند و deprecated شده اند.

‫۱۱-

org.apache.commons.lang3.time

‫این پکیج همانطور که از اسمشم پیداس به شما کلاس های utility ی برای استفاده راحت تر از کلاس های تاریخ و زمان را میدهد. از کارایی های کلاس های موجود در این پکیج می شود به دستکاری ساده زمان، فرمت کردن تاریخ و یا زمان به حالت های مختلف و با متدهای گوناگون (مثل استفاده از تایم به میلی ثانیه، کلاس Calendar و Date ) ،  اضافه کردن ثانیه، دقیقه، ساعت، هفته، ماه سال به یک تاریخ، رند کردن زمان،  خوندن تاریخ از روی استرینگ با locale های متفاوت، اضافه کردن interval، یک کلاس تایمر خوب به نام StopWatch و کارایی های دیگر می باشد.

‫۱۲-

org.apache.commons.lang3.tuple

‫ در داخل این پکیج کلاس هایی وجود دارد که کار چند تایی ها را برای شما انجام میدهد. مثلا شما توسط کلاس ‫ImmutablePair میتونین یک Map درست کنید که المان چپ و راست اون map رو بگیرین. یا کلاسی وجود داره به نام ImmutableTriple که دسته ی ۳ تایی برای شما درست میکند که میتونین عنصر چپ، میانی و راستی رو بگیرین.

امیدوارم از این آموزش لذت کافی را برده باشید. یادتون نره مارا در توییتر و تلگرام دنبال کنید. لینک ها در سمت چپ موجود در صفحات موجود است.

شاد و سربلند باشید

Published by

mehdi

I'm a Passionate Software Developer and Team Leader