Panimula sa Apache Commons

Siyempre, magsimula tayo sa kasaysayan!

Nagsimula ang lahat noong 1999 sa pagpaparehistro ng "Apache Group" sa ngalan ng Apache Software Foundation (ASF). Ang proyektong sinusuportahan ng pundasyon ay ang Apache HTTPD Web Server na nilikha sa pagitan ng 1995 at 1999.

Ang parehong ay ang Jakarta Project (Jakarta project), na lumitaw bilang isang resulta ng pakikipagtulungan ng Sun Microsystems, IBM, Oracle at ang mga lalaki mula sa Apache. At noong 2001, sa panahon ng trabaho, napansin ng development team na madalas nilang isulat ang parehong pag-andar, kung minsan ay kinokopya lang nila ito mula sa isa't isa. Ang nasabing code ay tinatawag na boilerplate. Nagawa nilang mangolekta ng malaking halaga ng code na nakatulong sa mga developer, ngunit walang library na mag-imbak nito.

Ito ay kung paano ipinanganak ang proyekto ng Jakarta Commons, kung saan idinagdag ang mga bahagi ng Java (karamihan ay batay sa umiiral na code). Ang proyekto ay pinalitan ng pangalan sa Apache Commons.

Sa mas malawak na paraan, ang Apache Commons ay "isang malaking koleksyon ng mga maliliit na kagamitan sa Java". Ginagamit ito sa maraming open source na proyekto.

Ang mga utility ng Apache Commons ay nasa puso ng mga proyekto tulad ng Apache Tomcat, Struts, Hibernate, at iba pa.

Siyempre, ang lahat ng ito ay maaaring ikonekta nang manu-mano, nang walang isang build system (Maven, Gradle), ngunit hindi namin ito gagawin at idagdag lamang ang mga ito sa aming proyekto.

Upang magtrabaho kasama si Maven, idagdag muna ang naaangkop na dependency:

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

Kung saan ang ${apache.common.version} ay ang bersyon ng library na ito.

Para sa Gradle (Groovy):

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

Mga sikat na Aklatan ng Apache Commons

Narito ang isang listahan ng mga pinaka ginagamit na klase at pamamaraan:

Apache Commons:Lang

Ang library na ito ay naglalaman ng mga sumusunod na pakete:


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

Dito maaari kang maginhawa at mabilis na magtrabaho sa mga string, reflection, serialization, mga bagay at system. Tandaan natin ang pinaka ginagamit na mga pamamaraan:

StringUtils

Ang isang malaking bilang ng mga pamamaraan para sa pagmamanipula ng mga string.

  • is(Not)Blank/Empty(String) - oras na para kalimutan ang ganitong uri ng check: if (s!=null && s.trim().length()>0) , at may magandang kapalit dito

StringEscapeUtils

  • (un)escapeSql(String) - Palitan ang PreparedStatment
  • (un)escapeHtml(String) - upang iproseso ang mga halaga mula sa HTML

ToStringBuilder

  • Ang reflectionToString(Object) ay isang pagpapatupad ng toString() batay sa reflection. Kapag nag-alis ka ng field gamit ang reflection, magbabago ang resulta ng method.

EqualsBuilder at HashCodeBuilder

  • Ang reflectionEquals/HashCode(Object) ay isang magandang kapalit para sa awtomatikong pagbuo na may sariling kalamangan: ang dalawang pamamaraan na ito ay isinasaalang-alang ang mga pagbabago sa istruktura sa bagay sa panahon ng operasyon, halimbawa, pagdaragdag ng mga field

ExceptionUtils

  • getFullStackTrace(Throwable) - i-output ang buong StackTrace bilang isang string

Apache Commons: Mga Koleksyon

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

Isang library na perpektong umakma sa Java SE Collections Framework.

Ang CollectionUtils ay isang klase para sa maginhawang trabaho na may mga koleksyon:

    filter/find(Collection, Predicate) - pag-filter at paghahanap ayon sa predicate para saAllDo(Collection, Closure) - nagsasagawa ng Closure para sa bawat elemento, ngunit hindi na ginagamit ang paraang ito , gamitin ang Iterator.forEach() is(Not)Empty(Collection) - nagbibigay-daan sa iyo huwag suriin sa null bago tawagan ang isEqualCollection(Collection, Collection) - tumutulong na ihambing ang dalawang koleksyon

Mayroon ding maraming iba pang mga klase ng iba't ibang antas ng utility. Dito at sa ibaba ay inilista ko ang pinakakaraniwang ginagamit na puro sa aking kaso.

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

Bukod pa rito, nakakatulong na magtrabaho kasama ang mga file sa Java:

FileUtils

  • copyDirectory(File, File) - kopyahin ang mga direktoryo
  • copyFile(File, File) - kopyahin ang mga file
  • listFiles(File, String[], boolean) - listahan ng mga file ayon sa extension at recursively
  • readFileToString(File, String)
  • writeStringToFile(File, String)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - isinasara ang stream ng data
  • copy(InputStream, OutputStream) - kopyahin mula sa isang stream papunta sa isa pa