Apache Commons er et projekt under Apache Software Foundation (herefter benævnt ASF), som har til formål at udvikle og vedligeholde open source genbrugelig software på Java-sproget , det vil sige Java- biblioteker . I en snævrere forstand er Apache Commons "en stor samling af små Java-værktøjer" [1] . Apache Commons var tidligere en del af Jakarta-projektet og blev kaldt "Jakarta Commons" [2] . Apache Commons indeholder et sæt Java-værktøjsbiblioteker til en række forskellige formål, tilgængelige under Apache-licensen og bruges af mange andre open source-projekter. Apache Commons-projektværktøjerne er kernen i sådanne Geir Magnusson Jr.Ifølge[4]3][og andre.Hibernate,Struts,TomcatApacheprojekter som 10gen , Joost , Adeptra , Bloomberg og Intel , har Apache Commons blive "det første sted, Java-programmører søger hjælp til almindelige server- og klientprogrammeringsproblemer" [5] .
Ifølge projektets charter skal projektet "skabe og vedligeholde pakker skrevet på Java-sproget beregnet til brug i udviklingen af serverapplikationer og designet til at blive brugt selvstændigt i ethvert større produkt eller framework. Hver pakke vil blive understøttet på samme måde som selve Jakarta-produktet . " eller framework. Hver pakke vil blive administreret på samme måde som et større Jakarta-produkt." ) [6] .
Historien om Apache Commons går tilbage til 1999, hvor den non-profit Apache Software Foundation (herefter ASF) [7] tidligere kendt som "Apache Group" i juni blev registreret . Hovedprojektet støttet af fonden var Apache HTTPD Web Server , der blev oprettet mellem 1995 og 1999. Et af projekterne i Apache Software Foundation var Jakarta-projektet (Jakarta-projektet), som var resultatet af et samarbejde mellem Sun Microsystems , IBM , Oracle og webserverudviklingsfællesskabet (Apache HTTP Server). I begyndelsen af 2001, mens de arbejdede på forskellige delprojekter af Jakarta-projektet, blev det bemærket, at de ofte implementerer den samme funktionalitet og nogle gange kopierer den fra hinanden. Der er blevet akkumuleret en masse nyttig kode, som ikke desto mindre var problematisk for brugerne at finde i form af en simpel separat pakke (bibliotek). Efter at have diskuteret disse problemer, blev det besluttet at oprette Jakarta Commons [5] -projektet , hvor de begyndte aktivt at skabe komponenter i Java, hovedsageligt baseret på eksisterende kode. Den 19. marts 2001 godkendte Jakarta Project Management Committee projektcharteret [6] , som fastlagde de grundlæggende regler og betingelser for at arbejde i projektet [8] . Ifølge charteret var de første pakker baseret på den eksisterende ASF-kodebase, inklusive kode, der arbejder med datakilder og databasepuljer, med XML -konfigurationer , beskedressourcer, internationalisering , JNDI og navngivning, testsuiter. Den første pakke inkluderet i Commons var Database Connection Pool-pakken. I perioden 2001-2005 blev der udviklet et kernesæt af biblioteker, der blev grundlaget for Apache Commons. I 2003 indeholdt den rigtige sektion allerede 21 komponenter [9] , i 2004 - 28 komponenter [5] og i 2005 - 29 komponenter [10] . Den 19. maj 2004 blev en ny version af charteret godkendt med ændringer til den gamle version [6] . Den første sammensætning af Commons-projektet havde 10 medlemmer med ret til at foretage ændringer, i 2004 var der allerede mere end 80 [5] . Den 20. juni 2007 adskilte Apache-bestyrelsen Commons-projektet fra Jakarta-projektet baseret på en anonym afstemning, hvorefter Commons blev topniveauprojektet i Apache-hierarkiet (det vil sige et separat uafhængigt projekt) og blev kendt som Apache Commons [11] . Ved udgangen af 2012 havde proper allerede 43 aktive komponenter.
I Apache Software Foundation - projekthierarkiet er Apache Commons projektet på "topniveau". Til gengæld er Commons opdelt i mange "second tier"-projekter. Hvert projekt på andet niveau har sin egen hjemmeside, en mappe i det fælles kildekodelager , en mappe i det fælles fejlsporingssystem og har som mål at udvikle en Java-komponent (bibliotek) af samme navn. Aktive projekter har nogle få faste medlemmer, inaktive projekter har måske slet ikke faste medlemmer. Komponenter er JAR-filer , som normalt ikke overstiger 1 MB i størrelse [12] . Commons delprojekter er opdelt i 3 sektioner: ordentlig (korrekt), sandkasse (sandkasse) og sovende (sovende). Den rigtige sektion er hovedsektionen af projekter, som omfattede 43 projekter i oktober 2012. Komponenterne i den korrekte sektion vedligeholdes og opdateres, og deres grænseflader holdes så uændrede som muligt for ikke at forårsage problemer for eksisterende brugere. Sandkassesektionen er til at skabe nye projekter og forberede dem til inklusion i den rigtige sektion eller andre apache-projekter. I oktober 2012 omfattede sandkasseafsnittet 16 projekter. Adgang til at foretage ændringer i projekterne i denne sektion er åben for alle registrerede Apache-bidragydere. Gamle projekter flyttes til Sovende sektion, som har oplevet for lidt eller ingen forandringsaktivitet, og som ASF ikke planlægger at opdatere (udgive nye versioner) i fremtiden. Ved udgangen af 2012 var 15 projekter inkluderet.
Forklaringer til tabellen:
Navn | Internet side | Status | Første udgivelse | Beskrivelse |
---|---|---|---|---|
Egenskaber | [en] | passende | 2004-08-15, v2.1 [13] | Understøttelse af C#/.Net-stilattributter |
BCEL | [2] | passende | 2001-12-12, v5.0 [14] | Byte Code Engineering Library. Java klasse manipulation |
BeanUtils | [3] | passende | 2001-07-14, v1.0 [15] | Praktiske indpakninger til java.lang.reflect og java.beans- pakkerne (API til refleksion og selvdiagnose) |
Mellem | [fire] | passende | 2004-07-03, v0.5 [16] [17] | Binding af JavaBeans til XML-dokumenter |
BSF | [5] | passende | 2006-10-06, v2.4.0 [18] | Bean Scripting Framework. Interface til scriptsprog |
Lænke | [6] | passende | 2004-12-09, v1.0 [19] | Implementering af Chain of Responsibility -mønsteret |
CLI | [7] | passende | 2002-11-06, v1.0 [20] | kommandolinjegrænseflade. Kommandolinjeargumentparser _ |
codec | [otte] | passende | 2003-05-11, v1.1 [21] | Kodnings- og afkodningsalgoritmer som Base64 , Hex , Fonetisk ; og URL . |
Samlinger | [9] | passende | 2002-04-05, v2.0 [22] | En udvidelse og tilføjelse til Java Collections Framework . |
Komprimere | [ti] | passende | 2010-08-24, v1.1 [23] | API til at arbejde med ar , cpio , Unix dump , tar , zip , gzip , XZ , Pack200 og bzip2 filer . |
Konfiguration | [elleve] | passende | 2004-10-11, v1.0 [24] | Læsning af konfigurationsfiler og indstillinger i forskellige formater |
csv | [12] | passende | planlagt v1.0 [25] | Læsning og skrivning af tabeldatafiler i CSV -format (fra det engelske Comma-Separated Values - kommaseparerede værdier). |
Dæmon | [13] | passende | 2004-01-13, v1.0 [26] | API til oprettelse af tjenester på WIN32-platformen og dæmoner på UNIX-platformen |
DBCP | [fjorten] | passende | 2002-08-12, v1.0 [27] [28] | Databaseforbindelse pooling tjenester. Opret en databaseforbindelsespulje, hvor hver forbindelse kan betjene flere klienter sekventielt. |
DbUtils | [femten] | passende | 2003-11-11, v1.0 [29] | En indpakning omkring Java JDBC -pakken for at forenkle koden. |
rådnetank | [16] | passende | 2002-01-12, v1.2 [30] | Behandling af konfigurationsfiler i xml -format , opbygning af et træ af objekter baseret på xml-strukturen. Tilføjelse til xml SAX-parser. |
opdagelse | [17] | passende | 2006-12-03, v0.4 [31] [32] | Opdagelse af implementeringer til pluggbare grænseflader (det vil sige at finde klasser til en given Java-grænseflade). |
EL | [atten] | passende | 2003-06-20, v1.0 [33] | JSP 2.0 Expression Language fortolker . |
[19] | passende | 2005-09-27, v1.0 [34] | API til afsendelse af e-mail. | |
Exec | [tyve] | passende | 2009-03-26, v1.0 [35] | Eksekvering af eksterne processer fra en Java-applikation og arbejde med miljøvariabler. |
Fil upload | [21] | passende | 2003-06-24, v1.0 [36] [37] | Videresendelse af filer til serveren gennem en webapplikation, parsing af RFC 1867 -kompatible HTTP-headers . |
Funktionær | [22] | passende | nej [38] | Funktionsobjekt, til brug i mønstrene Visitor , Strategy , Chain of Responsibility , etc. I september 2005 blev det overført til Sovende [39] [40] , og i september 2011 blev det overført til Proper [41] . |
Billedbehandling (Sanselan) | [23] | passende | Ingen | Billedbibliotek |
IO | [24] | passende | 2004-05-13, v1.0 [42] [43] | I/O hjælpeprogrammer |
JCI | [25] | passende | 2007-06-18, v1.0 [44] [45] | Java Compiler Interface. Java compiler interface. Bruges til at kompilere Java fra Java-applikationer. |
JCS | [26] | passende | 2007-06-05, v1.3 [46] [47] [48] | Java Caching System. Caching af data af forskellig art for at fremskynde applikationer. |
Gele | [27] | passende | 2005-06-16, v1.0 [49] | Scripting-motor baseret på XML. Gør XML til eksekverbar kode. |
Jexl | [28] | passende | 2004-09-07, v1.0 [50] | Java-udtrykssprog. Et udtrykssprog, der udvider JSTL-sproget. Syntaksen ligner ECMAScript og shell-script. |
JXPath | [29] | passende | 2002-06-25, v1.0 [51] | XPath udtryk sprogfortolker. Manipulering af JavaBeans- klasser . |
Lang | [tredive] | passende | 2002-10-04, v1.0 [52] [53] [54] | Yderligere funktionalitet, der udvider java.lang |
løfteraket | [31] | passende | 2004-08-22 v1.1 [55] [56] | App starter på tværs af platforme |
Logning | [32] | passende | 2002-08-13, v1.0.1 [57] [58] | Indpakning over mange log-implementeringer. En tynd bro mellem applikationen og logbiblioteket. |
Matematik | [33] | passende | 2004-12-09, v1.0 [59] [60] | Matematik og statistiske funktioner |
Modelbygger | [34] | passende | 30-04-2002, v1.0 [61] | Oprettelse af JMX -kompatibel model MBeans |
Net | [35] | passende | 2003-02-23, v1.0 [62] [63] | Implementering af forskellige internetprotokoller (på klientsiden) |
OGNL | [36] | passende | 2011-09-22, v4.0 [64] | Object Graph Navigation Language. Sprog for objektgrafnavigation. Indstilling og hentning af egenskaber for Java-objekter. Mere kraftfuldt alternativ til BeanUtils og EL/JSTL. |
Pool | [37] | passende | 2002-05-04, v1.0 [65] | API til objektpooling |
Primitiver | [38] | passende | 2003-11-05, v1.0 [66] [67] | Arbejde med simple datatyper og samlinger. |
proxy | [39] | passende | 2008-03-06, v1.0 [68] | Oprettelse af dynamiske proxyer |
RNG | [40] | passende | Tilfældige tal generatorer | |
SCXML | [41] | passende | 2006-07-28, v0.5 [69] [70] | StateChart XML. Tilstandsmaskinen ( tilstandsmaskine ) defineret af SCXML-dokumentet. |
transaktion | [42] | passende | 2004-12-15, v1.0 [71] [72] | Flerniveaulåse, transaktionssamlinger, transaktionsfiladgang |
Validator | [43] | passende | 2002-11-01, v1.0 [73] [74] | Datavalideringsramme med mulighed for at specificere regler i en XML-fil |
VFS | [44] | passende | 2006-12-30, v1.0 [75] [76] | Virtuelt filsystem. Virtuelt filsystem, der behandler almindelige filer, FTP, SMB, ZIP osv. som et enkelt logisk filsystem |
benchmark | Ingen | slumrende | Ingen | Ydelsestest af Java-kode (med mulighed for at aktivere/deaktivere under kørsel). Har ikke modtaget udvikling på grund af eksistensen af værdige analoger. Overført til hvile i december 2005 [77] [78] efter mindre end et år i sandkassen. |
Cache | [45] | slumrende | Ingen | Objektcachelagring. API til lagring/hentning af objekter baseret på en nøgle. Den har ikke modtaget udvikling, da den er blevet afløst af komponenterne i Stratum, JCS, EHCache osv., og derudover kan den ofte erstattes af LRUMap-klassen fra Commons Collections [79] . Overført til hvilende i september 2005 [40] [80] . |
Clazz | [46] | slumrende | Ingen | En udvidet version af java.lang.Class, der gør det muligt at ændre klassedefinitionen under kørsel. Designet til at håndtere Java bønner i JDK, når du arbejder med Liste- og Map-klasserne og giver et alternativ til java.beans.Introspector. Overført til hvilende i september 2005 [40] [81] . |
Codec-multipart | Ingen | slumrende | Ingen | Nyttigt for en webbrowser skrevet i Java. Giver dig mulighed for at kode et sæt filer og navn/værdi-par i multipart/form-data- formatet (ved hjælp af protokollen beskrevet i RFC2388 [47] ). Overført til hvile i september 2005 [40] [82] efter at have tilbragt halvandet år i Sandbox. |
Combo | Ingen | slumrende | Ingen | Commons Combo, aka Commons Core. Et projekt, der aldrig gik ud over diskussionen, startede i august 2003 [83] . Det skulle være en samling af flere almindeligt anvendte Commons-komponenter i en fælles JAR-pakke, eller et værktøj til at oprette en sådan samling af brugeren. I januar 2006 blev han overført til hvile [84] [85] . |
kontrakt | [48] | slumrende | Ingen | API til kontraktprogrammering i Java. Overført til hvilende i december 2005 [86] efter 6 måneders inaktivitet i projektet [77] |
Konvertere | [49] | slumrende | Ingen | Konvertering af objekter af en type til en anden. Overført til hvilende i september 2005 [40] [87] . |
Begivenheder | [halvtreds] | slumrende | Ingen | Udløsning og håndtering af hændelser. Dekoratører over Java Collections Framework- klasser , der også affyrer begivenheder. Overført til hvilende i september 2005 [40] [88] . |
feedparser | [51] | slumrende | Ingen | Parser til feeds som RSS , Atom osv. Flyttet til hvilende i januar 2006 [89] [90] |
Filtre | Ingen | slumrende | Ingen | Servlet-filtre til forskellige formål til webapplikationer. De bruger Servlet 2.3 API. Kan tilsluttes webapplikationer som plugins. Overført til hvilende i september 2005 [40] [91] . |
Give | Ingen | slumrende | Ingen | Et lille sæt hacks til Ant til at administrere stier og muligheder bedre/anderledes. Overført til hvilende i september 2005 [92] |
http | Ingen | slumrende | Ingen | Indeholder enkle værktøjer til at arbejde med HTTP-protokollen (browserdetektor, header-parser). Overført til hvilende i september 2005 [40] [93] . |
Jex | Ingen | slumrende | Ingen | Plugin-mekanisme til udtrykssprogsfortolkere. Indeholder oprindeligt to sprog: JXPath og Bexl. Overført til hvilende i september 2005 [40] [94] . |
JJar | [52] | slumrende | Ingen | Jakarta JAR Archive Repository. Et forsøg på at skabe en tjeneste som CPAN [53] til Java-fællesskabet. Det består af 2 dele: et distribueret lager og et sæt værktøjer til at arbejde med lagre og pakkehåndtering. Overført til hvilende i september 2005 [40] [95] . |
JPath | Ingen | slumrende | Ingen | En mekanisme til brug af XPath-sproget med almindelige objektgrafer (JavaBeans, samlinger (containere), arrays, kortobjekter og primitive værdier. Baserer sig på JAXP og en implementering af XPath-fortolkeren. Flyttet til hvilende i september 2005 [40] [96 ] . |
jrcs | Ingen | slumrende | Ingen | Java RCS-værktøjer. Parsing og manipulation af RCS-arkivfiler som Revision Control System og Concurrent Versions System . Afhænger af ORO-pakken. Kun én udvikler var involveret i pakken, som aldrig var i stand til at oprette en hjemmeside til den, tiltrække nye deltagere, fuldføre udviklingen og frigive den. I august 2005 flyttede Jrcs officielt til Codehaus [54] , hvorfra det derefter forsvandt sporløst, og kodebasen på ASF's hjemmeside blev overført til Dormant [97] . |
Jux | Ingen | slumrende | Ingen | Commons JUnit-udvidelser. Designet til at lave tests. Afhænger af junit. Overført til hvilende i september 2005 [40] [98] . |
Latka | [55] | slumrende | Ingen | Et funktionelt HTTP-testværktøj, der bruger XML til at definere tests. Til automatiseret QA. Overført til hvilende i marts 2006 [99] [100] |
kortlægger | [56] | slumrende | Ingen | En fælles grænseflade ( bro ) over Java-objektkortlægningsteknologien valgt af projektet. Understøtter teknikker: JDBC, JDO, EJB, Hibernate, iBatis, XML. Overført til hvilende i september 2005 [40] [101] |
budbringer | [57] | slumrende | Ingen | En ramme, der gør det nemmere at arbejde med Java Message Service . Overført til hvilende i september 2005 [40] [102] |
Periodicitet | Ingen | slumrende | Ingen | Web-baseret kalendersystem. Overført til hvilende i september 2005 [40] [103] |
Afspejle | Ingen | slumrende | Ingen | Java Reflection Framework. En API til dynamisk adgang til klasser, metoder og medlemmer under kørsel. Overført til hvilende i september 2005 [40] [104] |
ressourcer | [58] | slumrende | Ingen | En letvægtsramme til at detektere og søge efter lokaliserede strenge knyttet til java.util.Locale. Overført til hvilende i marts 2006 [100] [105] |
Rupert | Ingen | slumrende | Ingen | Et sæt hjælpeprogrammer til brug ved udvikling af servlet-baserede webapplikationer. Overført til hvilende i september 2005 [40] [106] |
Stillads | [59] | slumrende | Ingen | Værktøjssæt til opbygning af webapplikationer. Overført til hvilende i september 2005 [40] [107] |
Tjenester | Ingen | slumrende | Ingen | serviceleder. En generisk bro, der forbinder en central applikation (som Jakarta Struts) til eksterne moduler. Overført til hvilende i september 2005 [40] [108] |
Servlet | Ingen | slumrende | Ingen | Hjælpeprogrammer til Servlet -udvikling . Overført til hvilende i december 2005 [77] [109] |
simpel butik | Ingen | slumrende | Ingen | Interface til lagring og genfinding af objekter. Overført til hvilende i september 2005 [40] [110] |
Tbm | Ingen | slumrende | Ingen | tråd benchmark. Ramme for test af flertrådede applikationer. Søg efter flaskehalse i multithreading (threading flaskehalse) og synkronisering (synkroniseringsflaskehalse). Overført til hvilende i september 2005 [40] [111] |
prøve | Ingen | slumrende | Ingen | Hjælpeprogrammer til test. Overført til hvilende i september 2005 [40] [112] |
trådning | Ingen | slumrende | Ingen | Hjælpeklasser og grænseflader til koordinering og kommunikation af tråde indbyrdes i multitrådede serverapplikationer. Overført til hvilende i september 2005 [40] [113] |
tråd pool | [60] | slumrende | Ingen | En ramme til at arbejde med trådpuljer og asynkron opgaveudførelse. Afløst af Doug Leas util.concurrent-bibliotek, forløberen til java.util.concurrent-pakken, der følger med JDK. Overført til hvilende i september 2005 [40] [114] |
transaktion | Ingen | slumrende | 2004-12-15, v1.0 [71] [115] | Værktøjsklasser til transaktionsprogrammering i Java (flerniveaublokering, samlinger, transaktionsadgang til filer). I marts 2010 nægtede hovedudvikleren at fortsætte arbejdet med projektet og begrundede dette med, at det efter hans mening er umuligt at bygge et transaktionsfilsystem oven på et normalt [116] . Flyttet til hvilende i april 2010 [117] Transaktion er den første Commons-komponent, der flyttes til hvilende fra den rigtige sektion, det vil sige en komponent, der har udgivelser. Før ham var kun komponenter fra sandkassen [118] oversat til hvilende . |
Workflow | [61] | slumrende | Ingen | En komponent til at forbinde komponenter og moduler i en Java-applikation ved hjælp af scripts (applikationssammensætningskoncept). Overført til hvilende i september 2005 [40] [119] |
Xmlio | [62] | slumrende | Ingen | Importer/eksporter XML til/fra Java-applikationer. Overført til hvilende i september 2005 [40] [120] |
Xmlunit | Ingen | slumrende | Ingen | Overført til hvilende i september 2005 [40] [121] |
xo | Ingen | slumrende | Ingen | Apache Turbine komponent . Overført til hvilende i september 2005 [40] [122] |
Ifølge Guillaume Rousseau (direktør for Antelink, som vedligeholder Antepedia, den største online-mappe og søgemaskine for open source-komponenter ), bruger 3% af open source-softwaren Apache Commons-bibliotekerne [123] . De fem mest populære komponenter inkluderer Logging, Collections, Lang, BeanUtils, Httpclient.
Ifølge AppBrain.com (et online Android-applikationsbibliotek) bruges Apache Commons Codec og IO-komponenter i mere end 1% af Android-applikationer , mens Logging og Lang bruges af mere end 0,5% af Android-applikationer [124] .
Apache Commons Math-biblioteket blev i 2011 valgt af det franske rumagentur CNES (Centre National d'Études Spatiales) som grundlag for udviklingen af dynamiske rumflyvningssystemer, kendt som Sirius-projektet [125] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekter på topniveau |
| ||||||
Delprojekter |
| ||||||
Apache Web |
| ||||||
Andre projekter | |||||||
Udvikling af projekter ( inkubator ) |
| ||||||
Nedlagte projekter ( loftsrum ) | |||||||
|