2013-05-14 15 views
9

Come novizio del mondo della programmazione Java, questa domanda mi ha sempre fatto impazzire. Inizialmente ho creduto che tutti i file Java fossero compattati in applets e poi funzionati, ma presto mi sono reso conto che non è sempre così. Qualcuno potrebbe spiegarmi come si intrecciano le nostre applicazioni Java in un vero prodotto della vita quotidiana?Come vengono implementate le applicazioni Java nel "mondo reale"?

TL; DR: Come implementiamo il nostro codice per l'utilizzo pratico?

+6

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. –

+0

Vedere http://docs.oracle.com/javase/tutorial/deployment/, http://docs.oracle.com/javaee/6/tutorial/doc/bnaby.html –

risposta

19

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
    1. alto livello (si dice cosa costruire, non il modo di costruirla)
    2. Molto più di un semplice sistema di compilazione. Ha anche la gestione delle dipendenze, ecc
    3. Opinionated (usa convenzione sulla configurazione, ogni file di configurazione genera 1 artefatto, ecc)
  • Ant
    1. livello basso (si dice come costruire le cose)
    2. flessibili
    3. I file di configurazione possono fare quello che vuoi, costruire come molti manufatti come si desidera
    4. facile da imparare
  • Strumenti SDK
    1. Sempre aggiornato. EG: Molto raramente, Maven/formica potrebbe non essere in grado di impostare un'opzione di configurazione
    2. difficile ricordare i comandi
    3. livello molto basso
    4. Di per sé, non ripetibile (EG: a meno che non si costruisce uno script, si dovrà digitare il comando jar da soli ogni volta)
+0

@Tdorno NP, fammi sapere se hai altre domande –

+0

Usiamo un'applicazione esterna per pacchetto i nostri file Java o è qualcosa che può essere fatto direttamente attraverso un IDE? – Tdorno

+0

Puoi farlo direttamente anche in IDE. –

1

Creare un jar eseguibile, una guerra che viene rilasciata in un server Web o una libreria utilizzata da un altro progetto che è uno dei due precedenti.

+1

una guerra che viene rilasciata in un server Web ... Che cos'è una guerra? – Tdorno

+0

http://stackoverflow.com/questions/5871053/java-war-vs-jar-what-is-thedifference – orangegoat

1

Se l'applicazione è valida per l'esecuzione su un client, è impacchettata come un JAR eseguibile, quindi ulteriormente pacchettizzata come pacchetto di applicazioni (Mac), forse racchiusa in un exe (Windows) o abbinata a uno script eseguibile che avvierà il JAR e imposterà gli eventuali argomenti VM necessari.

Se fa parte di un'applicazione Web, sarà impacchettato come WAR o EAR e inserito nella posizione appropriata sul server web.

Se si tratta semplicemente di una libreria, di solito è confezionato come JAR (non eseguibile) e distribuito come tale per l'integrazione in progetti più grandi.

applet e poi corse, ma presto mi sono reso conto che questo non è sempre il caso

In realtà, le applet sono rari al giorno d'oggi e il loro uso è sconsigliato.

4
  • applet mai veramente preso piede e sono molto raramente utilizzati al giorno d'oggi.
  • applicazioni semplici possono essere distribuiti come "eseguibili" JAR file, che sono fondamentalmente archivi ZIP con metadati aggiuntivi che racconta la JVM quale classe contiene il metodo principale per l'esecuzione. Essi possono essere eseguiti sulla riga di comando utilizzando l'opzione -jar, o nella maggior parte degli ambienti desktop facendo doppio clic (richiede una JVM per essere installato pure).
  • Le applicazioni desktop possono essere distribuite tramite Java Web Start o installatori come IzPack o Install4J, ma le applicazioni desktop Java non sono molto comuni.
  • maggior parte dei software Java al giorno d'oggi viene eseguito solo sui server (server web o server app). Essi sono in genere distribuiti come WAR o EAR file, che sono anche archivi ZIP contenente le classi e le altre risorse. Queste applicazioni vengono quindi eseguite all'interno di un componente server seguendo gli standard Servlet o EJB.
+0

Vedere anche le [informazioni JWS. pagina] (http://stackoverflow.com/tags/java-web-start/info) qui su SO. –

Problemi correlati