Per quanto Apache sia probabilmente il più popolare, la Apache Software Foundation è la casa madre di molti altri progetti. Questa sezione fornisce una rassegna dei più rilevanti, organizzati con criterio logico. La maggioranza di essi appartiene al progetto Jakarta od al progetto XML. Il progetto Jakarta ospita i progetti basati su Java mentre il progetto XML ospita, manco a farlo apposta, i progetti collegati all'XML.
I seguenti sono applicazioni e ambienti di sviluppo che fanno parte di ASF.
I seguenti sono alcuni progetti ASF per il lato server.
Tomcat è la nave ammiraglia del progetto Jakarta. Costituisce l'implementazione ufficiale di riferimento per le tecnologie Servlet Java e JavaServer Pages.
Per saperne di più si consulti la homepage di Tomcat.
Complementare rispetto alle altre tecnologie Apache lato server, JAMES fornisce un server 100% Java, concepito come completa e portabile soluzione per un motore di posta per l'impresa, basato sui protocolli "aperti" attualmente disponibili (SMTP, POP3, IMAP, HTTP)
Maggiori informazioni si possono trovare qui.
Jakarta Lucene è un motore per la ricerca testuale, ad alte prestazioni, perfettamente attrezzato, scritto in Java e parte del progetto Jakarta. Per maggiori informazioni si veda http://jakarta.apache.org/lucene/
Jetspeed è un portale web scritto in Java. Possiede una API modulare che consente l'aggregazione di differenti fonti di dati (XML, SMTP, iCalendar)
I seguenti sono progetti relativi alla gestione dei contenuti
Slide è un ambiente ad alto livello per la gestione dei contenuti. Concettualmente, fornisce un'organizzazione gerarchica del contenuto binario che può essere immagazzinato in archivi dati arbitrari, eterogenei e distribuiti. In aggiunta, Slide integra servizi di sicurezza, di bloccaggio e di versioning. Provvede anche all'implementazione server e client di WebDAV. Maggiori informazioni sulla home page di Slide
Alexandria è un sistema integrato di gestione della documentazione. Mette insieme tecnologie comuni a molti altri progetti open source come CVS e JavaDoc. L'intento è quello di integrare codice sorgente e documentazione per incoraggiare la documentazione e la condivisione del codice. Maggiori informazioni presso http://jakarta.apache.org/alexandria/index.html
I seguenti sono infrastrutture per lo sviluppo per applicazioni
Turbine è un ambiente basato su servlet che permette a esperti sviluppatori Java di sviluppare rapidamente applicazioni web sicure. Turbine mette insieme una piattaforma per eseguire codice Java e componenti riutilizzabili. Alcune delle sue caratteristiche includono: integrazione con sistemi di template, sviluppo secondo il modello MVC, Access Control List, supporto per la localizzazione e così via. Maggiori informazioni si possono trovare sul sito web di Turbine.
Per chi abbia familiarità con sistemi Perl o BSD, Avalon è grosso modo l'equivalente di CPAN o della collezione di Port per le tecnologie Java di Apache. Non si limita a fornire linee guida per un deposito comune di codice, ma va oltre: costituisce uno sforzo per creare, progettare, costruire e mantenere una infrastruttura comune per applicazioni server scritte usando il linguaggio Java. Fornisce i mezzi affinché progetti lato server in Java possano essere facilmente integrati e compilati l'uno sull'altro. Ulteriori informazioni si trovano sul sito web di Avalon.
I seguenti sono sistemi di template, motori di trasformazione e altri progetti relativi a presentazioni.
Cocoon trae vantaggio da altre tecnologie XML di Apache come Xerces, Xalan e FOP per fornire un completo ambiente XML per il publishing. L'ambiente può dialogare con molte fonti di dati diverse e può rendere il contenuto in svariati formati finali come PDF, HTML, XML e RTF. Può essere eseguito come servlet o come programma da linea di comando. È possibile saperne di più, riguardo a Cocoon, sulla homepage del progetto
Velocity è un motore di template basato su Java. Può essere usato come utilità indipendente per generare codice sorgente, HTML, relazioni o può essere combinato con altri sistemi per fornire servizi di template. Velocity è basato sul paradigma "Model View Controller", che rafforza la separazione tra il codice Java e il template HTML. È possibile saperne di più su Velocity qui.
AxKit è un popolare Application Server basato su XML per mod_perl e Apache. Consente la separazione tra contenuto e presentazione e permette la conversione al volo da XML a ogni altro formato.
Xalan è un processore XSLT disponibile per Java e C++. XSL è un linguaggio stylesheet per XML. La T sta per Transformation. XML è valido per l'archiviazione di dati strutturati (informazioni). Talvolta può rendersi necessario visualizzare tali dati o applicare qualche altra trasformazione. Xalan prende il documento XML originale, legge la configurazione per le conversioni (stylesheet) e lo restituisce come HTML, testo semplice o come altro documento XML. Per saperne di più su Xalan si consultino le homepage dei progetti Xalan Java e Xalan C++.
Dal sito web: FOP è un'applicazione Java che legge l'albero degli oggetti di formattazione e lo trasforma in un documento PDF . FOP prende dunque un documento XML e lo restituisce come PDF, in modo simile a quanto fa Xalan con l'HTML o i file di testo. Per saperne di più su FOP si veda qui.
Le seguenti sono differenti librerie che possono essere usate per analizzare e manipolare una varietà di formati di documenti.
Il progetto Xerces fornisce un parser XML per una varietà di linguaggi, inclusi Java, C++ e Perl. I binding Perl sono basati sui sorgenti C++. Un parser XML è uno strumento usato per l'accesso programmatico a documenti XML. Ecco una descrizione degli standard supportati da Xerces:
Batik è un toolkit basato su Java per applicazioni che vogliano usare immagini nel formato Scalable Vector Graphics (SVG) per vari scopi come la visualizzazione, la generazione o la manipolazione.
È incentrato su XML e aderente alle specifiche W3C. È un po' atipico rispetto agli altri progetti Apache, in quanto fornisce un componente grafico. Batik fornisce degli hook per estendere la struttura tramite tag personalizzati e permette la conversione da SVG ad altri formati come JPEG o PNG. Si può saperne di più sulla homepage di Batik
Il progetto POI consiste di API per manipolare vari formati di file basati sul formato OLE 2 Compound Document di Microsoft usando soltanto Java. Questo include i documenti Word e Excel. Si possono trovare maggiori informazioni presso http://jakarta.apache.org/poi/
Le seguenti sono librerie per la comunicazione remota e l'interoperabilità tra i server.
Apache SOAP ("Simple Object Access Protocol") e Axis sono implementazioni del protocollo SOAP
SOAP è un protocollo leggero per lo scambio di informazioni in ambiente decentralizzato e distribuito. È un protocollo basato su XML che consiste di tre parti:
Il progetto XML-RPC è un'implementazione Java del protocollo XML-RPC, un protocollo leggero simile a SOAP e suo predecessore.
Il progetto sicurezza di XML fornisce la verifica della firma digitale dei documenti XML per lo scambio sicuro di documenti.
Il progetto APR fornisce uno strato di portabilità che astrae un certo numero di API per la manipolazione di file, l'accesso alla rete e così via. È scritto in C e funziona sulla maggior parte delle versioni di Unix, su Windows e una varietà di altri sistemi. Costituisce la base di Apache 2.0.
Ant è uno strumento di compilazione scritto in Java. Dispone di una API modulare e può essere esteso con la creazione di nuovi task. È governato da file di configurazione in XML.
La Byte Code Engineering Library (BCEL) è una libreria per analizzare, creare e manipolare i file binari delle classi Java.
Questo pacchetto fornisce una infrastruttura per la gestione dei log compatibile con le applicazioni Java. Può essere abilitato all'avvio senza modificare il file binario ed è stato progettato con un occhio alle prestazioni. Può essere trovato presso http://jakarta.apache.org/log4j/
ORO è un pacchetto completo che fornisce supporto alle espressioni regolari per Java. Include il supporto alle espressioni regolari Perl5, alle espressioni glob e così via. Il tutto sotto licenza Apache. Per saperne di più su ORO si veda http://jakarta.apache.org/oro/index.html. Un altro pacchetto leggero, della ASF, per espressioni regolari, è Regexp.
Struts è un progetto Apache che tenta di trasportare il paradigma progettuale Model-View-Controller (MVC) nello sviluppo web. È basato sulle tecnologie Servlet e JavaServer Pages. La parte "modello" è composta di oggetti Java lato server, che rappresentano lo stato interno dell'applicazione. La parte "vista" è costruita attraverso le JavaServer Pages (JSP), che sono una combinazione di HTML/XML statico e di Java. Le JSP permettono inoltre allo sviluppatore di definire nuovi tag. La parte "controller" consiste di servlet, che accolgono le richieste (GET/POST) del client, agiscono sul modello e aggiornano la vista fornendo la JSP appropriata. È possibile saperne di più sulla pagina del progetto Struts.
La tecnologia JavaServer Pages permette agli sviluppatori di aggiungere funzionalità tramite tag personalizzati. Il progetto Taglibs intende essere un archivio comune per tali estensioni. Include tag per utilità comuni (per es. date), per l'accesso a database SQL e così via.
Per saperne di più su TagLibs si veda http://jakarta.apache.org/taglibs/. Una più ampia documentazione è inclusa nel pacchetto.
OJB è uno strumento per la mappatura di database che permette la persistenza e l'archiviazione di oggetti Java nei database relazionali. Xindice è un database nativo XML per l'archiviazione e l'interrogazione di documenti XML.
Il progetto Commons fornisce una grande varietà di componenti Java riutilizzabili con minime dipendenze.
I seguenti progetti ASF riguardano il testing e l'analisi delle prestazioni.
Il progetto httpd-test fornisce un ambiente di test per il server web Apache e strumenti come flood per il test del carico HTTP.
Cactus è un ambiente di test per la verifica di codice Java lato server, come Servlet e EJB.
È uno strumento per i test scritto in Java, con un'interfaccia grafica. Si può ottenere presso http://jakarta.apache.org/jmeter/.
Lakta è uno strumento end-to-end di testing HTTP.
Il progetto Watchdog è un corredo di set per la convalida delle specifiche Servlet e JavaServer Pages.