Dipende dall'applicazione. Ci sono molte opzioni a seconda di come vuoi che i tuoi utenti utilizzino la tua app. Di solito è confezionato come un barattolo o un barattolo specializzato (guerra, orecchio).
In teoria, è possibile comprimere la struttura di directory non elaborata con i file .class
e fornire uno script/istruzioni di shell che eseguono il comando java
per l'utente. Non lo consiglio perché è poco professionale e richiede di mantenere uno script di shell per ogni sistema operativo su cui si desidera eseguire il programma.
Jar files vengono utilizzati per il pacchetto di librerie ma è anche possibile avere un file manifest in esso che dice "Quando qualcuno fa doppio clic su/esegue questo, eseguire questa classe". Quella classe può avviare una GUI o essere un'attività headless che risponde ai parametri, ecc.
È possibile avere applets, come hai detto tu. Questi programmi vengono eseguiti nel browser dell'utente.
È possibile avere un war file, che è un modo per pacchettizzare un'applicazione web. Tu dai questo a un server web e sa come distribuirlo in modo che tu possa visitare le pagine web. Un server web/container di esempio è tomcat o jetty.
È possibile avere un ear file che può contenere al suo interno altri file di guerra. Questo è usato per applicazioni che necessitano di altre parti della funzionalità javaee (ejbs, code jms, ecc.). Un esempio di server applicazioni è jboss o glassfish.
Ci sono anche le app java web start. Si tratta di app che è possibile eseguire visitando una pagina Web, ma vengono scaricate sul computer ed eseguite sul computer dell'utente (anziché sul back-end del server, come in un war/ear).
C'è anche javafx. Non ne so nulla però. By skimming the FAQ, sembra essere la risposta di Java per Adobe's Flex. Configurare i componenti dell'interfaccia utente con una configurazione xml. Non sono sicuro del formato utilizzato dalle app JavaFX, ma dice "Distribuisci sul desktop o nel browser".
Come Sotirios Delimanolis menzionato in un commento qui sotto, è possibile costruire questi file con sistemi di compilazione come Ant o Maven. Puoi anche costruirli "a mano" con gli strumenti forniti con java/javaee sdk. Ad esempio, dovresti avere un comando jar
nel tuo percorso se hai installato il sdk. Ecco alcuni dettagli di questi costruire sistemi:
- Maven
- alto livello (si dice cosa costruire, non il modo di costruirla)
- Molto più di un semplice sistema di compilazione. Ha anche la gestione delle dipendenze, ecc
- Opinionated (usa convenzione sulla configurazione, ogni file di configurazione genera 1 artefatto, ecc)
- Ant
- livello basso (si dice come costruire le cose)
- flessibili
- I file di configurazione possono fare quello che vuoi, costruire come molti manufatti come si desidera
- facile da imparare
- Strumenti SDK
- Sempre aggiornato. EG: Molto raramente, Maven/formica potrebbe non essere in grado di impostare un'opzione di configurazione
- difficile ricordare i comandi
- livello molto basso
- Di per sé, non ripetibile (EG: a meno che non si costruisce uno script, si dovrà digitare il comando jar da soli ogni volta)
Negli ultimi 14 anni, ho implementato solo Server Side Java (che non utilizza affatto applet). Oggi, sospetto che le applet siano una piccola percentuale di tutti i programmi Java. –
Vedere http://docs.oracle.com/javase/tutorial/deployment/, http://docs.oracle.com/javaee/6/tutorial/doc/bnaby.html –