# Java Community Process

JCP è l'acronimo per Java Community Process, ovvero quell'istituzione che si occupa di regolare lo sviluppo della tecnologia Java. Si tratta di un'organizzazione aperta, che raccoglie le richieste e le proposte sia dei suoi membri che degli esterni, e si occupa specificatamente di approvare e regolare le specifiche tecniche di Java.
Tali specifiche, sia quelle in fase di approvazione, sia quelle già approvate, vengono raccolte sotto il nome di Java Specification Requests (o JSR), numerate, e rese pubbliche sul sito istituzionale.
La partecipazione a questo processo è pubblica, e non è necessario essere membri paganti per potervi prender parte.

## Iter istituzionale

Innanzi tutto, per prendere parte al processo di approvazione e all'iter decisionale è richiesta l'associazione al JCP, e quindi essere un Membro del JCP stesso. In particolare, sono previste tre entità distinte: le entità commerciali (con fini di lucro), le entità no-profit o legate al mondo dell'istruzione, e singole persone, esperti o interessati. Il costo associativo è nullo solo per l'ultima categoria di entità. Tuttavia è possibile contribuire come partecipante pubblico senza necessariamente essere un membro del JCP, attraverso suggerimenti, consigli, revisioni al lavoro in corso.
Gli attori del processo sono sostanzialmente quattro:
* Il Pubblico. Sono tutti coloro che non sono associati al JCP, enti o singole persone.
* I Membri. Sono persone o istituzioni, associati al JCP, come sopra descritto.
* Gli Esperti. Sono Membri aventi particolari competenze e familiarità su uno specifico argomento oggetto di specifica.
* Il Comitato Esecutivo. È un insieme di Esperti con poteri speciali che ha il compito di guidare l'evoluzione della tecnologia Java; il loro ruolo è solo quello di verificare che la specifica proposta non tratti di argomenti già inclusi in altre specifiche, e che effettivamente abbia un'utilità per l'area specifica in cui viene proposta.
Ciò premesso, la definizione di una nuova specifica segue un iter sostanzialmente semplice, che si compone di quattro momenti legati tra loro.

### Initiation

L'idea iniziale deve essere sottoposta al JCP da un Membro, come richiesta di modifica, aggiornamento o creazione di una nuova specifica (la JSR). Nelle due settimane successive dalla richiesta, pubblico, Membri ed Esperti hanno la possibilità di rivederla e commentarla, fino a darle l'eventuale forma definitiva che sarà sottoposta, al termine di tale periodo, alla votazione del Comitato Esecutivo (EC). Se la proposta passa positivamente la votazione, la richiesta va avanti nel suo iter e passa alla fase successiva.

### Early Draft

Il primo passo da compiere è quello di fornire una prima bozza della futura JSR. Per fare ciò, nei 2-3 mesi successivi, il capo progetto, normalmente chi ha effettuato la richiesta, lavora per formare un gruppo di Esperti, che si preoccuperanno di scrivere una prima bozza della specifica. Al termine, la bozza viene presentata, e sottoposta alla revisione da parte di altri Esperti, Membri o del pubblico, per ricevere commenti ed eventualmente aggiornarne i contenuti.

### Complete the Specification, Public Draft/Final Release

Quando viene stabilito che la prima bozza può andar bene, si procede con lo sviluppo dettagliato della JSR, sempre attraverso la partecipazione del gruppo di Esperti collegati alla JSR stessa, di altri Esperti o Membri esterni, e del pubblico. Questo processo, che normalmente dura da uno a tre mesi, termina con la preparazione di una bozza pubblica, che viene sottoposta nuovamente al voto del Comitato Esecutivo, incaricato di vagliarne la correttezza complessiva. Se la bozza passa positivamente la votazione, il gruppo di Esperti si deve occupare di proporre una bozza finale, mentre il capo progetto deve preparare un prototipo che esplicitamente faccia riferimento all'implementazione. In altre parole, deve realizzare una implementazione "concettuale" della specifica. Sempre in questa fase, il capo progetto deve preoccuparsi di preparare il Kit di Compatibilità Tecnologica (TCK), ovvero quell'insieme di test, strumenti e documenti che mettano in condizione, chi volesse implementare la specifica, di comprendere se la propria implementazione è aderente alla JSR proposta. Al termine, tutta questa documentazione passa ancora al vaglio del Comitato Esecutivo, che può approvarne o meno la sua pubblicazione sotto forma di "Versione Finale". In caso di votazione positiva, il gruppo di Esperti associato alla JSR si scioglie, e la proposta diventa standard a tutti gli effetti.

### Maintenance

Qualora il capo progetto reputi che siano necessarie alcune modifiche, possono essere distribuiti degli aggiornamenti di manutenzione. Nel mese seguente, Esperti, Membri e pubblico possono partecipare e contribuire alla stesura dell'aggiornamento, che infine viene passata alla votazione del Comitato Esecutivo: lo scopo è quello di approvare l'inclusione nella JSR come aggiornamento minore.