Apache Commons är ett projekt av Apache Software Foundation (nedan kallat ASF), som syftar till att utveckla och underhålla återanvändbar programvara med öppen källkod på Java-språket , det vill säga Java -bibliotek . I en snävare mening är Apache Commons "en stor samling av små Java-verktyg" [1] . Apache Commons var tidigare en del av Jakarta Project och kallades "Jakarta Commons" [2] . Apache Commons innehåller en uppsättning Java-verktygsbibliotek för en mängd olika ändamål, tillgängliga under Apache-licensen ., och används av många andra projekt med öppen källkod. Apache Commons-projektverktygen är kärnan i sådana Geir Magnusson Jr.Enligt[4]3][och andra.Hibernate,Struts,TomcatApacheprojekt som 10gen , Joost , Adeptra , Bloomberg och Intel har Apache Commons bli "det första stället som Java-programmerare letar efter hjälp med vanliga server- och klientprogrammeringsproblem" [5] .
Enligt projektets stadga ska projektet "skapa och underhålla paket skrivna på Java-språket avsedda att användas i utvecklingen av serverapplikationer och utformade för att användas självständigt i alla större produkter eller ramverk. Varje paket kommer att stödjas på samma sätt som själva Jakarta-produkten . " eller ramverk. Varje paket kommer att hanteras på samma sätt som en större Jakarta-produkt." ) [6] .
Historien om Apache Commons går tillbaka till 1999, då i juni registrerades den ideella Apache Software Foundation (hädanefter ASF) [7] tidigare känd som "Apache Group" . Huvudprojektet som stöddes av stiftelsen var Apache HTTPD Web Server , skapad mellan 1995 och 1999. Ett av projekten inom Apache Software Foundation var Jakarta Project (Jakarta-projektet), som var resultatet av ett samarbete mellan Sun Microsystems , IBM , Oracle och webbserverutvecklingsgemenskapen (Apache HTTP Server). I början av 2001, när de arbetade med olika delprojekt av Jakarta-projektet, märktes det att de ofta implementerar samma funktionalitet och ibland kopierar den från varandra. Mycket användbar kod har samlats, vilket ändå var problematiskt för användare att hitta i form av ett enkelt separat paket (bibliotek). Efter att ha diskuterat dessa problem beslöts det att skapa Jakarta Commons [5] -projektet , där man aktivt började skapa komponenter i Java, huvudsakligen baserat på befintlig kod. Den 19 mars 2001 godkände Jakartas projektledningskommitté projektstadgan [6] , som fastställde de grundläggande reglerna och villkoren för att arbeta i projektet [8] . Enligt stadgan baserades de första paketen på den befintliga ASF-kodbasen, inklusive kod som arbetar med datakällor och databaspooler, med XML- konfigurationer , meddelanderesurser, internationalisering , JNDI och namngivning, testsviter. Det första paketet som inkluderades i Commons var paketet Database Connection Pool. Under perioden 2001-2005 utvecklades en kärnuppsättning av bibliotek som blev grunden för Apache Commons. År 2003 innehöll den egentliga sektionen redan 21 komponenter [9] , 2004 - 28 komponenter [5] och 2005 - 29 komponenter [10] . Den 19 maj 2004 godkändes en ny version av stadgan, med ändringar av den gamla versionen [6] . Den första sammansättningen av Commons-projektet hade 10 medlemmar med rätt att göra ändringar, 2004 fanns det redan mer än 80 [5] . Den 20 juni 2007 separerade Apache-styrelsen Commons-projektet från Jakarta-projektet baserat på en anonym omröstning, varefter Commons blev toppnivåprojektet i Apache-hierarkin (det vill säga ett separat oberoende projekt) och blev känt som Apache Commons [11] . I slutet av 2012 hade proper redan 43 aktiva komponenter.
I Apache Software Foundation - projekthierarkin är Apache Commons projektet på "toppnivå". I sin tur är Commons uppdelad i många "second tier"-projekt. Varje projekt på andra nivån har sin egen webbplats, en katalog i det gemensamma källkodsförrådet , en katalog i det gemensamma buggspårningssystemet och har som mål att utveckla en Java-komponent (bibliotek) med samma namn. Aktiva projekt har ett fåtal fasta medlemmar, inaktiva projekt kanske inte har permanenta medlemmar alls. Komponenter är JAR-filer , vanligtvis inte större än 1 MB [12] . Commons delprojekt är indelade i 3 sektioner: korrekt (korrekt), sandlåda (sandlåda) och vilande (sovrum). Den korrekta delen är huvuddelen av projekt, som inkluderade 43 projekt i oktober 2012. Komponenterna i rätt sektion underhålls och uppdateras, och deras gränssnitt hålls så oförändrade som möjligt för att inte orsaka problem för befintliga användare. Sandlådans sektion är till för att skapa nya projekt och förbereda dem för inkludering i rätt sektion eller andra apache-projekt. I oktober 2012 omfattade sandlådedelen 16 projekt. Tillgång att göra ändringar i projekten i detta avsnitt är öppen för alla registrerade Apache-bidragsgivare. Gamla projekt flyttas till den vilande sektionen som har sett för lite eller ingen förändringsaktivitet och som ASF inte planerar att uppdatera (släppa nya versioner) i framtiden. I slutet av 2012 ingick 15 projekt.
Förklaringar till tabellen:
namn | Hemsida | Status | Första släppet | Beskrivning |
---|---|---|---|---|
Attribut | [ett] | rätt | 2004-08-15, v2.1 [13] | Stöd för C#/.Net-stilattribut |
BCEL | [2] | rätt | 2001-12-12, v5.0 [14] | Byte Code Engineering Library. Java-klassmanipulation |
BeanUtils | [3] | rätt | 2001-07-14, v1.0 [15] | Behändiga omslag för paketen java.lang.reflect och java.beans (API för reflektion och självdiagnos) |
Mellan | [fyra] | rätt | 2004-07-03, v0.5 [16] [17] | Bindning av JavaBeans till XML-dokument |
BSF | [5] | rätt | 2006-10-06, v2.4.0 [18] | Bean Scripting Framework. Gränssnitt för skriptspråk |
Kedja | [6] | rätt | 2004-12-09, v1.0 [19] | Implementera mönstret för ansvarskedjan |
CLI | [7] | rätt | 2002-11-06, v1.0 [20] | kommandoradsgränssnitt. Kommandoradsargumenttolkare _ |
codec | [åtta] | rätt | 2003-05-11, v1.1 [21] | Kodnings- och avkodningsalgoritmer som Base64 , Hex , Fonetisk ; och URL . |
Samlingar | [9] | rätt | 2002-04-05, v2.0 [22] | En förlängning och tillägg till Java Collections Framework . |
Komprimera | [tio] | rätt | 2010-08-24, v1.1 [23] | API för att arbeta med ar- , cpio- , Unix -dump- , tar- , zip- , gzip- , XZ- , Pack200- och bzip2 -filer . |
Konfiguration | [elva] | rätt | 2004-10-11, v1.0 [24] | Läsa konfigurationsfiler och inställningar i olika format |
csv | [12] | rätt | planerad v1.0 [25] | Läsa och skriva tabelldatafiler i CSV -format (från engelska Comma-Separated Values - kommaseparerade värden). |
Demon | [13] | rätt | 2004-01-13, v1.0 [26] | API för att skapa tjänster på WIN32-plattformen och demoner på UNIX-plattformen |
DBCP | [fjorton] | rätt | 2002-08-12, v1.0 [27] [28] | Poolningstjänster för databasanslutningar. Skapa en databasanslutningspool där varje anslutning kan betjäna flera klienter sekventiellt. |
DbUtils | [femton] | rätt | 2003-11-11, v1.0 [29] | Ett omslag runt Java JDBC -paketet för att förenkla koden. |
kokare | [16] | rätt | 2002-01-12, v1.2 [30] | Bearbetar konfigurationsfiler i xml -format , bygger ett träd av objekt baserat på xml-strukturen. Tillägg för xml SAX-parser. |
upptäckt | [17] | rätt | 2006-12-03, v0.4 [31] [32] | Upptäckt av implementeringar för pluggbara gränssnitt (det vill säga att hitta klasser för ett givet Java-gränssnitt). |
EL | [arton] | rätt | 2003-06-20, v1.0 [33] | JSP 2.0 Expression Language- tolk . |
E-post | [19] | rätt | 2005-09-27, v1.0 [34] | API för att skicka e-post. |
Exec | [tjugo] | rätt | 2009-03-26, v1.0 [35] | Exekvera externa processer från en Java-applikation och arbeta med miljövariabler. |
Filuppladdning | [21] | rätt | 2003-06-24, v1.0 [36] [37] | Vidarebefordra filer till servern via en webbapplikation, tolka RFC 1867 -kompatibla HTTP-rubriker . |
Funktionär | [22] | rätt | nej [38] | Funktionsobjekt, för användning i mönstren Visitor , Strategy , Chain of Responsibility , etc. I september 2005 överfördes det till Vilande [39] [40] , och i september 2011 överfördes det till Proper [41] . |
Imaging (Sanselan) | [23] | rätt | Nej | Bildbibliotek |
IO | [24] | rätt | 2004-05-13, v1.0 [42] [43] | I/O-verktyg |
JCI | [25] | rätt | 2007-06-18, v1.0 [44] [45] | Java-kompilatorgränssnitt. Java-kompilatorgränssnitt. Används för att kompilera Java från Java-applikationer. |
JCS | [26] | rätt | 2007-06-05, v1.3 [46] [47] [48] | Java Caching System. Cacha data av olika karaktär för att påskynda applikationer. |
Gelé | [27] | rätt | 2005-06-16, v1.0 [49] | Skriptmotor baserad på XML. Förvandla XML till körbar kod. |
Jexl | [28] | rätt | 2004-09-07, v1.0 [50] | Java Expression Language. Ett uttrycksspråk som utökar JSTL-språket. Syntaxen liknar ECMAScript och shell-script. |
JXPath | [29] | rätt | 2002-06-25, v1.0 [51] | XPath uttryck språktolk. Manipulera JavaBeans- klasser . |
Lang | [trettio] | rätt | 2002-10-04, v1.0 [52] [53] [54] | Ytterligare funktionalitet som utökar java.lang |
launcher | [31] | rätt | 2004-08-22 v1.1 [55] [56] | Appstartare för flera plattformar |
Skogsavverkning | [32] | rätt | 2002-08-13, v1.0.1 [57] [58] | Wrapper över många loggningsimplementeringar. En tunn bro mellan applikationen och loggningsbiblioteket. |
Matematik | [33] | rätt | 2004-12-09, v1.0 [59] [60] | Matematiska och statistiska funktioner |
Modellerare | [34] | rätt | 2002-04-30, v1.0 [61] | Skapa JMX -kompatibel modell MBeans |
Netto | [35] | rätt | 2003-02-23, v1.0 [62] [63] | Implementering av olika Internetprotokoll (på klientsidan) |
OGNL | [36] | rätt | 2011-09-22, v4.0 [64] | Object Graph Navigation Language. Språk för objektgrafnavigering. Ställa in och hämta egenskaper för Java-objekt. Kraftfullare alternativ för BeanUtils och EL/JSTL. |
Slå samman | [37] | rätt | 2002-05-04, v1.0 [65] | API för objektpoolning |
Primitiver | [38] | rätt | 2003-11-05, v1.0 [66] [67] | Arbeta med enkla datatyper och samlingar. |
ombud | [39] | rätt | 2008-03-06, v1.0 [68] | Skapa dynamiska proxyservrar |
RNG | [40] | rätt | Slumptalsgeneratorer | |
SCXML | [41] | rätt | 2006-07-28, v0.5 [69] [70] | StateChart XML. Tillståndsmaskinen ( tillståndsmaskin ) definierad av SCXML-dokumentet. |
transaktion | [42] | rätt | 2004-12-15, v1.0 [71] [72] | Flernivålås, transaktionssamlingar, transaktionsfilåtkomst |
Validator | [43] | rätt | 2002-11-01, v1.0 [73] [74] | Datavalideringsramverk med möjlighet att specificera regler i en XML-fil |
VFS | [44] | rätt | 2006-12-30, v1.0 [75] [76] | Virtuellt filsystem. Virtuella filsystem som behandlar vanliga filer, FTP, SMB, ZIP, etc. som ett enda logiskt filsystem |
riktmärke | Nej | vilande | Nej | Prestandatestning av Java-kod (med möjlighet att aktivera/avaktivera vid körning). Har inte fått utveckling på grund av att det finns värdiga analoger. Överfördes till vilande i december 2005 [77] [78] efter mindre än ett år i sandlådan. |
Cache | [45] | vilande | Nej | Objektcachelagring. API för att lagra/hämta objekt baserat på en nyckel. Den har inte fått utveckling, eftersom den har ersatts av komponenterna i Stratum, JCS, EHCache, etc., och dessutom kan den ofta ersättas av LRUMap-klassen från Commons Collections [79] . Överfördes till vilande i september 2005 [40] [80] . |
Clazz | [46] | vilande | Nej | En utökad version av java.lang.Class som gör att klassdefinitionen kan ändras under körning. Designad för att hantera Java-bönor i JDK när du arbetar med klasserna List och Map och ger ett alternativ till java.beans.Introspector. Överfördes till vilande i september 2005 [40] [81] . |
Codec-flerpart | Nej | vilande | Nej | Användbar för en webbläsare skriven i Java. Låter dig koda en uppsättning filer och namn/värdepar i multipart/form- dataformatet (med protokollet som beskrivs i RFC2388 [47] ). Överfördes till vilande i september 2005 [40] [82] efter att ha tillbringat ett och ett halvt år i Sandbox. |
Combo | Nej | vilande | Nej | Commons Combo, aka Commons Core. Ett projekt som aldrig gick utöver diskussionen startade i augusti 2003 [83] . Det var tänkt att vara en sammansättning av flera vanliga Commons-komponenter till ett gemensamt JAR-paket, eller ett verktyg för att skapa en sådan sammansättning av användaren. I januari 2006 överfördes han till vilande [84] [85] . |
avtal | [48] | vilande | Nej | API för avtalsprogrammering i Java. Överfördes till vilande i december 2005 [86] efter 6 månaders inaktivitet i projektet [77] |
Konvertera | [49] | vilande | Nej | Konvertera objekt av en typ till en annan. Överfördes till vilande i september 2005 [40] [87] . |
evenemang | [femtio] | vilande | Nej | Utlösa och hantera händelser. Dekoratörer över Java Collections Framework- klasser som också avfyrar evenemang. Överfördes till vilande i september 2005 [40] [88] . |
feedparser | [51] | vilande | Nej | Parser för flöden som RSS , Atom etc. Flyttade till vilande från korrekt i januari 2006 [89] [90] |
Filter | Nej | vilande | Nej | Servlet-filter för olika ändamål för webbapplikationer. De använder Servlet 2.3 API. Kan kopplas in i webbapplikationer som plugins. Överfördes till vilande i september 2005 [40] [91] . |
Bevilja | Nej | vilande | Nej | En liten uppsättning hacks för Ant för att hantera vägar och alternativ bättre/annorlunda. Överfördes till vilande i september 2005 [92] |
http | Nej | vilande | Nej | Innehåller enkla verktyg för att arbeta med HTTP-protokollet (webbläsardetektor, header-parser). Överfördes till vilande i september 2005 [40] [93] . |
Jex | Nej | vilande | Nej | Plugin-mekanism för uttrycksspråktolkar. Inkluderar initialt två språk: JXPath och Bexl. Överfördes till vilande i september 2005 [40] [94] . |
JJar | [52] | vilande | Nej | Jakarta JAR Archive Repository. Ett försök att skapa en tjänst som CPAN [53] för Java-gemenskapen. Den består av 2 delar: ett distribuerat arkiv och en uppsättning verktyg för att arbeta med arkiv och pakethantering. Överfördes till vilande i september 2005 [40] [95] . |
JPath | Nej | vilande | Nej | En mekanism för att använda XPath-språket med vanliga objektgrafer (JavaBeans, samlingar (behållare), arrayer, kartobjekt och primitiva värden. Förlitar sig på JAXP och en implementering av XPath-tolken. Flyttade till vilande i september 2005 [40] [96 ] . |
jrcs | Nej | vilande | Nej | Java RCS-verktyg. Analysera och manipulera RCS-arkivfiler som Revision Control System och Concurrent Versions System . Beror på ORO-paketet. Endast en utvecklare var involverad i paketet, som aldrig kunde skapa en webbplats för det, locka nya deltagare, slutföra utvecklingen och släppa det. I augusti 2005 flyttade Jrcs officiellt till Codehaus [54] , varifrån det sedan försvann spårlöst, och kodbasen på ASF:s webbplats överfördes till Dormant [97] . |
Jux | Nej | vilande | Nej | Commons JUnit Extensions. Designad för att skapa tester. Beror på junit. Överfördes till vilande i september 2005 [40] [98] . |
Latka | [55] | vilande | Nej | Ett funktionellt HTTP-testverktyg som använder XML för att definiera tester. För automatiserad QA. Överfördes till vilande i mars 2006 [99] [100] |
kartläggare | [56] | vilande | Nej | Ett gemensamt gränssnitt ( brygga ) över Java-objektmappningstekniken som valts av projektet. Stöder tekniker: JDBC, JDO, EJB, Hibernate, iBatis, XML. Överfördes till vilande i september 2005 [40] [101] |
budbärare | [57] | vilande | Nej | Ett ramverk för att göra det lättare att arbeta med Java Message Service . Överfördes till vilande i september 2005 [40] [102] |
Periodicitet | Nej | vilande | Nej | Webbaserat kalendersystem. Överfördes till vilande i september 2005 [40] [103] |
Reflektera | Nej | vilande | Nej | Java Reflection Framework. Ett API för att komma åt klasser, metoder och medlemmar dynamiskt under körning. Överfördes till vilande i september 2005 [40] [104] |
Resurser | [58] | vilande | Nej | Ett lätt ramverk för att upptäcka och söka efter lokaliserade strängar kopplade till java.util.Locale. Överfördes till vilande i mars 2006 [100] [105] |
Rupert | Nej | vilande | Nej | En uppsättning verktyg för användning vid utveckling av servletbaserade webbapplikationer. Överfördes till vilande i september 2005 [40] [106] |
Ställning | [59] | vilande | Nej | Toolkit för att bygga webbapplikationer. Överfördes till vilande i september 2005 [40] [107] |
Tjänster | Nej | vilande | Nej | servicechef. En generisk brygga som kopplar en central applikation (som Jakarta Struts) till externa moduler. Överfördes till vilande i september 2005 [40] [108] |
Servlet | Nej | vilande | Nej | Verktyg för Servlet- utveckling . Överfördes till vilande i december 2005 [77] [109] |
enkel butik | Nej | vilande | Nej | Gränssnitt för att lagra och hämta objekt. Överfördes till vilande i september 2005 [40] [110] |
Tbm | Nej | vilande | Nej | riktmärke för tråd. Ram för att testa flertrådade applikationer. Sök efter flaskhalsar i multithreading (threading bottlenecks) och synkronisering (synchronization bottlenecks). Överfördes till vilande i september 2005 [40] [111] |
testa | Nej | vilande | Nej | Verktyg för testning. Överfördes till vilande i september 2005 [40] [112] |
gängning | Nej | vilande | Nej | Verktygsklasser och gränssnitt för att koordinera och kommunicera trådar sinsemellan i flertrådade serverapplikationer. Överfördes till vilande i september 2005 [40] [113] |
trådpool | [60] | vilande | Nej | Ett ramverk för att arbeta med trådpooler och asynkron uppgiftsexekvering. Ersatt av Doug Leas util.concurrent-bibliotek, föregångaren till java.util.concurrent-paketet som ingår i JDK. Överfördes till vilande i september 2005 [40] [114] |
transaktion | Nej | vilande | 2004-12-15, v1.0 [71] [115] | Verktygsklasser för transaktionsprogrammering i Java (flernivåblockerare, samlingar, transaktionsåtkomst till filer). I mars 2010 vägrade huvudutvecklaren att fortsätta arbeta med projektet och motiverade detta med att det enligt hans åsikt är omöjligt att bygga ett transaktionsfilsystem utöver ett normalt [116] . Flyttade till vilande i april 2010 [117] Transaktion är den första Commons-komponenten som flyttas till vilande från rätt sektion, det vill säga en komponent som har releaser. Före honom översattes endast komponenter från sandlådan [118] till vilande . |
Arbetsflöde | [61] | vilande | Nej | En komponent för att länka komponenter och moduler i en Java-applikation med hjälp av skript (applikationssammansättningskoncept). Överfördes till vilande i september 2005 [40] [119] |
Xmlio | [62] | vilande | Nej | Importera/exportera XML till/från Java-applikationer. Överfördes till vilande i september 2005 [40] [120] |
Xmlunit | Nej | vilande | Nej | Överfördes till vilande i september 2005 [40] [121] |
puss kram | Nej | vilande | Nej | Apache Turbine komponent . Överfördes till vilande i september 2005 [40] [122] |
Enligt Guillaume Rousseau (direktör för Antelink, som driver Antepedia, den största onlinekatalogen och sökmotorn för komponenter med öppen källkod ), använder 3 % av programvaran med öppen källkod Apache Commons-biblioteken [123] . De fem mest populära komponenterna inkluderar Logging, Collections, Lang, BeanUtils, Httpclient.
Enligt AppBrain.com (ett Android-applikationsbibliotek online) används Apache Commons Codec och IO-komponenter i mer än 1 % av Android-applikationerna , medan Logging och Lang används av mer än 0,5 % av Android-applikationerna [124] .
Apache Commons Math-biblioteket valdes 2011 av den franska rymdorganisationen CNES (Centre National d'Études Spatiales) som grund för utvecklingen av dynamiska rymdflygsystem, känt som Sirius-projektet [125] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekt på högsta nivå |
| ||||||
Delprojekt |
| ||||||
Apache |
| ||||||
Andra projekt | |||||||
Utveckla projekt ( inkubator ) |
| ||||||
Avvecklade projekt ( Attic ) | |||||||
|