Apache Commons este un proiect al Apache Software Foundation (denumită în continuare ASF), care își propune să dezvolte și să mențină software open source reutilizabil în limbajul Java , adică biblioteci Java . Într-un sens mai restrâns, Apache Commons este „o colecție mare de utilitare Java mici” [1] . Apache Commons a fost anterior parte a Proiectului Jakarta și a fost numit „Jakarta Commons” [2] . Apache Commons conține un set de biblioteci de utilitate Java pentru o varietate de scopuri, disponibile sub Licența Apache .și folosit de multe alte proiecte open source. Utilitarele de proiect Apache Commons se află în centrul unor proiecte precum Geir Magnusson Jr.Potrivit lui[4]3][și altele.Hibernate,Struts,TomcatApache 10gen , Joost , Adeptra , Bloomberg și Intel , Apache Commons are devin „primul loc în care programatorii Java caută ajutor cu probleme comune de programare a serverului și clientului” [5] .
Conform chartei proiectului, proiectul trebuie să „creeze și să mențină pachete scrise în limbajul Java destinate utilizării în dezvoltarea de aplicații server și concepute pentru a fi utilizate independent în orice produs sau cadru mai mare. Fiecare pachet va fi susținut în același mod ca și produsul Jakarta în sine . „sau cadru. Fiecare pachet va fi gestionat în același mod ca un produs Jakarta mai mare.” ) [6] .
Istoria Apache Commons datează din 1999, când, în iunie, a fost înregistrată Apache Software Foundation (în continuare ASF) [7] , cunoscută anterior sub numele de „Apache Group” . Principalul proiect susținut de fundație a fost Apache HTTPD Web Server , creat între 1995 și 1999. Unul dintre proiectele Apache Software Foundation a fost Proiectul Jakarta (proiectul Jakarta), care a fost rezultatul unei colaborări dintre Sun Microsystems , IBM , Oracle și comunitatea de dezvoltare a serverelor web (Apache HTTP Server). La începutul anului 2001, în timp ce lucra la diferite sub-proiecte ale proiectului Jakarta, s-a observat că adesea implementează aceeași funcționalitate și, uneori, o copiază una de la alta. S-a acumulat o mulțime de cod util, care, totuși, a fost problematic pentru utilizatori să îl găsească sub forma unui pachet simplu separat (bibliotecă). După discutarea acestor probleme, s-a decis crearea proiectului Jakarta Commons [5] , în care au început să creeze activ componente în Java, bazate în principal pe codul existent. La 19 martie 2001, Comitetul de Management al Proiectului de la Jakarta a aprobat carta de proiect [6] , care prevedea regulile de bază și condițiile de lucru în proiect [8] . Conform chartei, primele pachete s-au bazat pe baza de cod ASF existentă, inclusiv cod care lucrează cu surse de date și pool-uri de baze de date, cu configurații XML , resurse de mesaje, internaționalizare , JNDI și denumire, suite de testare. Primul pachet inclus în Commons a fost pachetul Database Connection Pool. În perioada 2001-2005, a fost dezvoltat un set de bază de biblioteci care a devenit baza pentru Apache Commons. Până în 2003, secțiunea adecvată conținea deja 21 de componente [9] , până în 2004 - 28 de componente [5] , iar până în 2005 - 29 de componente [10] . La 19 mai 2004, a fost aprobată o nouă versiune a cartei, cu modificări la versiunea veche [6] . Prima componență a proiectului Commons avea 10 membri cu drept de a face modificări, până în 2004 erau deja peste 80 [5] . Pe 20 iunie 2007, Consiliul Apache a separat proiectul Commons de proiectul Jakarta pe baza unui vot anonim, după care Commons a devenit proiectul de nivel superior în ierarhia Apache (adică un proiect independent separat) și a devenit cunoscut sub numele de Apache. Comune [11] . Până la sfârșitul anului 2012, propriu-zis avea deja 43 de componente active.
În ierarhia proiectelor Apache Software Foundation , Apache Commons este proiectul de „nivel superior”. La rândul său, Commons este împărțit în multe proiecte de „al doilea nivel”. Fiecare proiect de nivel al doilea are propriul site web, un director în depozitul de cod sursă comun , un director în sistemul comun de urmărire a erorilor și are ca scop dezvoltarea unei componente Java (biblioteca) cu același nume. Proiectele active au câțiva membri permanenți, proiectele inactive pot să nu aibă deloc membri permanenți. Componentele sunt fișiere JAR , de obicei nu depășesc 1 MB în dimensiune [12] . Subproiectele comune sunt împărțite în 3 secțiuni: propriu (corect), sandbox (sandbox) și inactiv (dormitori). Secțiunea adecvată este secțiunea principală a proiectelor, care includea 43 de proiecte în octombrie 2012. Componentele secțiunii corespunzătoare sunt menținute și actualizate, păstrându-și interfețele cât mai neschimbate pentru a nu cauza probleme utilizatorilor existenți. Secțiunea sandbox este pentru crearea de noi proiecte și pregătirea lor pentru includerea în secțiunea corespunzătoare sau în alte proiecte apache. În octombrie 2012, secțiunea sandbox includea 16 proiecte. Accesul pentru a face modificări în proiectele din această secțiune este deschis tuturor colaboratorilor Apache înregistrați. Proiectele vechi sunt mutate în secțiunea Dormant, care au înregistrat o activitate de schimbare prea mică sau deloc și pe care ASF nu intenționează să le actualizeze (lansează versiuni noi) în viitor. Până la sfârșitul anului 2012, au fost incluse 15 proiecte.
Explicații pentru tabel:
Nume | Site-ul web | stare | Prima aparitie | Descriere |
---|---|---|---|---|
Atribute | [unu] | potrivit | 2004-08-15, v2.1 [13] | Suport pentru atributele stilului C#/.Net |
BCEL | [2] | potrivit | 2001-12-12, v5.0 [14] | Biblioteca de inginerie a codului octet. Manipularea clasei Java |
BeanUtils | [3] | potrivit | 2001-07-14, v1.0 [15] | Ambalaje convenabile pentru pachetele java.lang.reflect și java.beans (API pentru reflecție și auto-diagnosticare) |
Între | [patru] | potrivit | 2004-07-03, v0.5 [16] [17] | Legarea JavaBeans la documente XML |
BSF | [5] | potrivit | 2006-10-06, v2.4.0 [18] | Cadrul de scriptare Bean. Interfață pentru limbaje de scripting |
Lanţ | [6] | potrivit | 2004-12-09, v1.0 [19] | Implementarea modelului de lanț de responsabilitate |
CLI | [7] | potrivit | 2002-11-06, v1.0 [20] | Linia de comandă. Analizator de argument în linia de comandă |
codec | [opt] | potrivit | 2003-05-11, v1.1 [21] | Algoritmi de codificare și decodare precum Base64 , Hex , Phonetic ; și URL . |
Colecții | [9] | potrivit | 2002-04-05, v2.0 [22] | O extensie și o completare la Java Collections Framework . |
Comprima | [zece] | potrivit | 2010-08-24, v1.1 [23] | API pentru lucrul cu fișierele ar , cpio , Unix dump , tar , zip , gzip , XZ , Pack200 și bzip2 . |
Configurare | [unsprezece] | potrivit | 2004-10-11, v1.0 [24] | Citirea fișierelor de configurare și setărilor în diferite formate |
csv | [12] | potrivit | v1.0 planificat [25] | Citirea și scrierea fișierelor de date tabelare în format CSV (din engleză Comma-Separated Values - valori separate prin virgulă). |
Daemon | [13] | potrivit | 2004-01-13, v1.0 [26] | API pentru crearea de servicii pe platforma WIN32 și demoni pe platforma UNIX |
DBCP | [paisprezece] | potrivit | 2002-08-12, v1.0 [27] [28] | Servicii de pooling de conexiuni la baze de date. Creați un pool de conexiuni la baza de date în care fiecare conexiune poate deservi mai mulți clienți secvențial. |
DbUtils | [cincisprezece] | potrivit | 2003-11-11, v1.0 [29] | Un înveliș în jurul pachetului Java JDBC pentru a simplifica codul. |
digestor | [16] | potrivit | 2002-01-12, v1.2 [30] | Procesarea fișierelor de configurare în format xml , construirea unui arbore de obiecte bazat pe structura xml. Supliment pentru xml SAX parser. |
descoperire | [17] | potrivit | 2006-12-03, v0.4 [31] [32] | Descoperirea implementărilor pentru interfețe conectabile (adică găsirea de clase pentru o anumită interfață Java). |
EL | [optsprezece] | potrivit | 20.06.2003, v1.0 [33] | Interpret JSP 2.0 Expression Language . |
[19] | potrivit | 2005-09-27, v1.0 [34] | API pentru trimiterea de e-mailuri. | |
Exec | [douăzeci] | potrivit | 2009-03-26, v1.0 [35] | Executarea proceselor externe dintr-o aplicație Java și lucrul cu variabile de mediu. |
Fișier încărcat | [21] | potrivit | 2003-06-24, v1.0 [36] [37] | Redirecționarea fișierelor către server printr-o aplicație web, analizând anteturile HTTP compatibile cu RFC 1867 . |
Functor | [22] | potrivit | nu [38] | Obiect funcţie, pentru utilizare în tiparele Vizitator , Strategie , Lanţ de responsabilitate etc. În septembrie 2005 a fost transferat în Dormant [39] [40] , iar în septembrie 2011 a fost transferat în Proper [41] . |
Imagistica (Sanselan) | [23] | potrivit | Nu | Biblioteca de imagini |
IO | [24] | potrivit | 2004-05-13, v1.0 [42] [43] | Utilitare I/O |
JCI | [25] | potrivit | 2007-06-18, v1.0 [44] [45] | Interfața compilatorului Java. Interfața compilatorului Java. Folosit pentru a compila Java din aplicații Java. |
JCS | [26] | potrivit | 2007-06-05, v1.3 [46] [47] [48] | Sistem de cache Java. Memorarea în cache a datelor de diferite naturi pentru a accelera aplicațiile. |
Jeleu | [27] | potrivit | 2005-06-16, v1.0 [49] | Motor de scriptare bazat pe XML. Transformarea XML în cod executabil. |
Jexl | [28] | potrivit | 2004-09-07, v1.0 [50] | Limbajul de expresie Java. Un limbaj de expresie care extinde limbajul JSTL. Sintaxa este similară cu ECMAScript și shell-script. |
JXPath | [29] | potrivit | 25-06-2002, v1.0 [51] | Interpret de limbaj de expresie XPath. Manipularea claselor JavaBeans . |
Lang | [treizeci] | potrivit | 2002-10-04, v1.0 [52] [53] [54] | Funcționalitate suplimentară care extinde java.lang |
lansator | [31] | potrivit | 2004-08-22 v1.1 [55] [56] | Începător pentru aplicații multiplatforme |
Logare | [32] | potrivit | 2002-08-13, v1.0.1 [57] [58] | Wrapper peste multe implementări de logare. O punte subțire între aplicație și biblioteca de logare. |
Matematică | [33] | potrivit | 2004-12-09, v1.0 [59] [60] | Funcții matematice și statistice |
Modelator | [34] | potrivit | 2002-04-30, v1.0 [61] | Crearea modelului MBeans compatibil JMX |
Net | [35] | potrivit | 2003-02-23, v1.0 [62] [63] | Implementări ale diferitelor protocoale Internet (pe partea clientului) |
OGNL | [36] | potrivit | 22.09.2011, v4.0 [64] | Limbajul de navigare pentru graficul obiectelor. Limba de navigare prin graficul obiectelor. Setarea și obținerea proprietăților obiectelor Java. Alternativă mai puternică pentru BeanUtils și EL/JSTL. |
Bazin | [37] | potrivit | 2002-05-04, v1.0 [65] | API pentru gruparea obiectelor |
Primitive | [38] | potrivit | 2003-11-05, v1.0 [66] [67] | Lucrul cu tipuri și colecții de date simple. |
proxy | [39] | potrivit | 2008-03-06, v1.0 [68] | Crearea de proxy dinamici |
RNG | [40] | potrivit | Generatoare de numere aleatorii | |
SCXML | [41] | potrivit | 2006-07-28, v0.5 [69] [70] | XML StateChart. Mașina de stare (mașina de stat ) definită de documentul SCXML. |
tranzacţie | [42] | potrivit | 2004-12-15, v1.0 [71] [72] | Blocări pe mai multe niveluri, colecții tranzacționale, acces la fișiere tranzacționale |
Validator | [43] | potrivit | 2002-11-01, v1.0 [73] [74] | Cadru de validare a datelor cu capacitatea de a specifica reguli într-un fișier XML |
VFS | [44] | potrivit | 2006-12-30, v1.0 [75] [76] | Sistemul de fișiere virtual. Sistem de fișiere virtual care tratează fișierele obișnuite, FTP, SMB, ZIP etc. ca un singur sistem de fișiere logic |
reper | Nu | inactiv | Nu | Testarea performanței codului Java (cu posibilitatea de a activa/dezactiva în timpul rulării). Nu a primit dezvoltare datorită existenței unor analogi demni. Transferat în stare de repaus în decembrie 2005 [77] [78] după mai puțin de un an în sandbox. |
Cache | [45] | inactiv | Nu | Memorarea în cache a obiectelor. API pentru stocarea/recuperarea obiectelor pe baza unei chei. Nu a primit dezvoltare, deoarece a fost înlocuită de componentele Stratum, JCS, EHCache etc. și, în plus, poate fi adesea înlocuită cu clasa LRUMap din Commons Collections [79] . Transferat în stare de repaus în septembrie 2005 [40] [80] . |
Clazz | [46] | inactiv | Nu | O versiune extinsă a java.lang.Class care permite modificarea definiției clasei în timpul execuției. Proiectat pentru a gestiona bean-urile Java în JDK atunci când lucrați cu clasele List și Map și oferă o alternativă la java.beans.Introspector. Transferat în stare de repaus în septembrie 2005 [40] [81] . |
Codec-multipart | Nu | inactiv | Nu | Util pentru un browser web scris în Java. Vă permite să codificați un set de fișiere și perechi nume/valoare în formatul multipart/form-date (folosind protocolul descris în RFC2388 [47] ). Transferat în stare latentă în septembrie 2005 [40] [82] după ce a petrecut un an și jumătate în Sandbox. |
Combo | Nu | inactiv | Nu | Commons Combo, alias Commons Core. Un proiect care nu a depășit niciodată discuția începută în august 2003 [83] . Trebuia să fie un ansamblu de mai multe componente Commons utilizate în mod obișnuit într-un pachet JAR comun sau un instrument pentru crearea unui astfel de ansamblu de către utilizator. În ianuarie 2006 a fost transferat în stare latentă [84] [85] . |
contracta | [48] | inactiv | Nu | API pentru programarea contractelor în Java. Transferat în stare latentă în decembrie 2005 [86] după 6 luni de inactivitate în proiect [77] |
Convertit | [49] | inactiv | Nu | Conversia obiectelor de un tip în altul. Transferat în stare de repaus în septembrie 2005 [40] [87] . |
Evenimente | [cincizeci] | inactiv | Nu | Declanșarea și gestionarea evenimentelor. Decoratori peste clasele Java Collections Framework care declanșează și evenimente. Transferat în stare de repaus în septembrie 2005 [40] [88] . |
feedparser | [51] | inactiv | Nu | Analizator pentru fluxuri precum RSS , Atom etc. A fost mutat în stare inactivă din corespunzătoare în ianuarie 2006 [89] [90] |
Filtre | Nu | inactiv | Nu | Filtre de servlet pentru diverse scopuri pentru aplicații web. Ei folosesc Servlet 2.3 API. Poate fi conectat la aplicații web precum pluginuri. Transferat în stare de repaus în septembrie 2005 [40] [91] . |
Acorda | Nu | inactiv | Nu | Un mic set de hack-uri pentru Ant pentru a gestiona căile și opțiunile mai bine/diferit. Transferat în stare latentă în septembrie 2005 [92] |
http | Nu | inactiv | Nu | Conține utilități simple pentru lucrul cu protocolul HTTP (detector de browser, parser antet). Transferat în stare de repaus în septembrie 2005 [40] [93] . |
Jex | Nu | inactiv | Nu | Mecanism de plugin pentru interpreții de limbaj de expresie. Include inițial două limbi: JXPath și Bexl. Transferat în stare de repaus în septembrie 2005 [40] [94] . |
JJar | [52] | inactiv | Nu | Arhiva JAR din Jakarta. O încercare de a crea un serviciu ca CPAN [53] pentru comunitatea Java. Este format din 2 părți: un depozit distribuit și un set de instrumente pentru lucrul cu depozitele și gestionarea pachetelor. Transferat în stare de repaus în septembrie 2005 [40] [95] . |
JPath | Nu | inactiv | Nu | Un mecanism de utilizare a limbajului XPath cu grafice de obiecte obișnuite (JavaBeans, colecții (containere), matrice, obiecte hărți și valori primitive. Se bazează pe JAXP și pe o implementare a interpretorului XPath. Mutat în stare latentă în septembrie 2005 [40] [96 ] ] . |
jrcs | Nu | inactiv | Nu | Instrumente Java RCS. Analizarea și manipularea fișierelor de arhivă RCS, cum ar fi Revision Control System și Concurrent Versions System . Depinde de pachetul ORO. În pachet a fost implicat un singur dezvoltator, care nu a fost niciodată capabil să creeze un site web pentru acesta, să atragă noi participanți, să finalizeze dezvoltarea și să-l lanseze. În august 2005, Jrcs s-a mutat oficial la Codehaus [54] , de unde a dispărut apoi fără urmă, iar baza de cod de pe site-ul ASF a fost transferată la Dormant [97] . |
Jux | Nu | inactiv | Nu | Extensiile JUnit comune. Conceput pentru crearea de teste. Depinde de Junit. Transferat în stare de repaus în septembrie 2005 [40] [98] . |
Latka | [55] | inactiv | Nu | Un instrument de testare funcțională HTTP care utilizează XML pentru a defini teste. Pentru QA automatizat. Transferat în stare latentă în martie 2006 [99] [100] |
cartograf | [56] | inactiv | Nu | O interfață comună ( punte ) peste tehnologia de mapare a obiectelor Java aleasă de proiect. Suporta tehnici: JDBC, JDO, EJB, Hibernate, iBatis, XML. Transferat în stare latentă în septembrie 2005 [40] [101] |
Mesager | [57] | inactiv | Nu | Un cadru pentru a facilita lucrul cu Java Message Service . Transferat în stare latentă în septembrie 2005 [40] [102] |
Periodicitate | Nu | inactiv | Nu | Sistem de calendarizare bazat pe web. Transferat în stare latentă în septembrie 2005 [40] [103] |
Reflectați | Nu | inactiv | Nu | Cadrul de reflecție Java. Un API pentru accesarea dinamică a claselor, metodelor și membrilor în timpul execuției. Transferat în stare latentă în septembrie 2005 [40] [104] |
resurse | [58] | inactiv | Nu | Un cadru ușor pentru detectarea și căutarea șirurilor de caractere localizate legate de java.util.Locale. Transferat în stare latentă în martie 2006 [100] [105] |
Rupert | Nu | inactiv | Nu | Un set de utilitare pentru utilizarea în dezvoltarea de aplicații web bazate pe servlet. Transferat în stare latentă în septembrie 2005 [40] [106] |
Schela | [59] | inactiv | Nu | Set de instrumente pentru construirea de aplicații web. Transferat în stare latentă în septembrie 2005 [40] [107] |
Servicii | Nu | inactiv | Nu | manager de servicii. Un pod generic care conectează o aplicație centrală (cum ar fi Jakarta Struts) la module externe. Transferat în stare latentă în septembrie 2005 [40] [108] |
Servlet | Nu | inactiv | Nu | Utilități pentru Dezvoltare Servlet . Transferat în stare latentă în decembrie 2005 [77] [109] |
magazin simplu | Nu | inactiv | Nu | Interfață pentru stocarea și recuperarea obiectelor. Transferat în stare de repaus în septembrie 2005 [40] [110] |
Tbm | Nu | inactiv | Nu | punct de referință al firului. Cadru pentru testarea aplicațiilor multi-threaded. Căutați blocaje în multithreading (blocurile de fir) și sincronizare (blocurile de sincronizare). Transferat în stare latentă în septembrie 2005 [40] [111] |
Test | Nu | inactiv | Nu | Utilități pentru testare. Transferat în stare latentă în septembrie 2005 [40] [112] |
filetat | Nu | inactiv | Nu | Clase de utilitate și interfețe pentru coordonarea și comunicarea firelor de execuție între ele în aplicațiile server cu mai multe fire. Transferat în stare latentă în septembrie 2005 [40] [113] |
bazin de fire | [60] | inactiv | Nu | Un cadru pentru lucrul cu pool-uri de fire și execuția sarcinilor asincrone. Înlocuit de biblioteca util.concurrent a lui Doug Lea, precursorul pachetului java.util.concurrent inclus cu JDK. Transferat în stare latentă în septembrie 2005 [40] [114] |
tranzacţie | Nu | inactiv | 2004-12-15, v1.0 [71] [115] | Clase de utilitate pentru programarea tranzacțională în Java (blocante pe mai multe niveluri, colecții, acces tranzacțional la fișiere). În martie 2010, dezvoltatorul principal a refuzat să lucreze în continuare la proiect, justificând acest lucru prin faptul că, în opinia sa, este imposibil să se construiască un sistem de fișiere tranzacțional peste unul normal [116] . Mutat în stare inactivă în aprilie 2010 [117] Tranzacția este prima componentă Commons care a fost mutată în stare inactivă din secțiunea corespunzătoare, adică o componentă care are versiuni. Înainte de el, doar componentele din cutia de nisip [118] au fost traduse în stare de latenție . |
Fluxul de lucru | [61] | inactiv | Nu | O componentă pentru legarea componentelor și modulelor unei aplicații Java folosind scripturi (conceptul de compoziție al aplicației). Transferat în stare latentă în septembrie 2005 [40] [119] |
Xmlio | [62] | inactiv | Nu | Import/export XML către/din aplicații Java. Transferat în stare latentă în septembrie 2005 [40] [120] |
Xmlunit | Nu | inactiv | Nu | Transferat în stare latentă în septembrie 2005 [40] [121] |
xo | Nu | inactiv | Nu | Apache Turbine component . Transferat în stare latentă în septembrie 2005 [40] [122] |
Potrivit lui Guillaume Rousseau (Directorul Antelink, care întreține Antepedia, cel mai mare director online și motor de căutare pentru componente open source ), 3% din software-ul open source utilizează bibliotecile Apache Commons [123] . Cele mai populare cinci componente includ Logging, Collections, Lang, BeanUtils, Httpclient.
Potrivit AppBrain.com (o bibliotecă de aplicații Android online), componentele Apache Commons Codec și IO sunt folosite în mai mult de 1% din aplicațiile Android , în timp ce Logging și Lang sunt folosite de mai mult de 0,5% dintre aplicațiile Android [124] .
Biblioteca Apache Commons Math a fost aleasă în 2011 de agenția spațială franceză CNES (Centre National d'Études Spatiales) ca bază pentru dezvoltarea sistemelor dinamice de zbor spațial, cunoscut sub numele de proiectul Sirius [125] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Proiecte de nivel superior |
| ||||||
Subproiecte |
| ||||||
Apache Web |
| ||||||
Alte proiecte | |||||||
Dezvoltare proiecte ( Incubator ) |
| ||||||
Proiecte scoase din funcțiune ( Mansarda ) | |||||||
|