JavaProject2016 ha scritto:
Ciao, grazie per la rapida risposta, vorrei gentilmente sapere: cosa contraddistingue una applicazione da web da una per computer o cellulare? Chiedo questo perché, leggendo su vari manuali, si parla sempre della java virtual machine e del nostro programma che non ha bisogno di essere ricompilato per passare da una piattaforma all'altra proprio grazie alla JVM.
Magari, se conoscete dei libri che chiariscono proprio questi concetti, fatevi avanti
Se ci siano libri che coprono tutte queste cose ... non so ... c'è troppa "carne al fuoco" in questo contesto.
La Java Virtual Machine è un software che esegue il
bytecode ovvero il codice binario generato dalla compilazione dei sorgenti .java. Questo bytecode non è né un codice sorgente (testuale) né un codice macchina di un processore fisico esistente ma è un codice intermedio che è stato inventato originalmente dalla Sun Microsystems.
Il termine "bytecode" comunque è ormai abbastanza generale, nel senso che anche altri linguaggi hanno la
loro macchina virtuale e il
loro bytecode. Qui però parlo solo riferito a Java, ovviamente.
Il punto NON è tanto la JVM ... dove c'è una JVM, puoi certamente eseguire del bytecode Java. Quello che cambia da una piattaforma ad un'altra es. da un PC ad un cellulare o un set-top box sono
altre cose, tra cui:
- il framework base di classi messo a disposizione dalla piattaforma
- il "ciclo di vita" della applicazione
- il modo di "impacchettare" e rilasciare le applicazioni
Su PC una applicazione "standalone" (che sia console oppure grafica) ha una classe con il classico metodo
public static void main(String[]) che è il punto di ingresso e avvio della applicazione.
Sempre su PC una "applet" (che NON è una applicazione "standalone") deve avere una classe che estende java.applet.Applet e che ha i metodi init/start/stop/destroy e sono questi che rappresentano il "ciclo di vita" della applicazione. NON c'è il main, quindi ovviamente non parte come fa una applicazione standalone.
Ma in entrambi i casi, sia applicazioni standalone che applet, possono usare il framework di classi della piattaforma Java SE (Standard Edition), tra cui AWT (java.awt ecc...) e molto altro.
Sui cellulari (quelli vecchia maniera, non gli Android) si può utilizzare Java ME (Micro Edition) che è tutto un altro framework, anche se ci trovi molte classi di base che sono quasi (se non esattamente) identiche a quelle di Java SE. Ma anche qui il ciclo di vita delle applicazioni e il modo di impacchettarle è differente. E Android (che si sviluppa scrivendo codice con le regole e la sintassi di Java) è ancora un altro discorso, un'altra piattaforma.
Tutto questo solo per dire: non puoi fare una applicazione standalone su PC e pensare di farla girare su un cellulare o altre cose del genere.
Se quello che ti ho detto, ti è sufficiente, bene. Se Java ti piace e ti interessa continuare, il consiglio che dò sempre è di studiare il linguaggio Java bene, almeno fino a conoscere tutte le feature di Java 1.4, 5 (soprattutto), 7 e magari anche quelle della 8. Se sei agli inizio ti sconsiglio di partire "in quarta" su web application (Java EE), Java ME, Android o cose del genere ... faresti un gran miscuglio.