• Indipendenza dalla piattaforma: write once, run anywhere, non viene compilato su una macchina, ma nel bytecode di una macchina virtuale.
  • Sicurezza: non permette manomissioni, le tecniche di autenticazione sono basate su codifiche con chiavi pubbliche.
  • Robustezza: le situazioni tipiche d’errore vengono eliminate il più possibile a tempo di compilazione – Laddove non possibile, gestite a tempo di esecuzione con appositi controlli.
  • Multithreading: supporta nativamente programmi che gestiscono attività eseguite in contemporanea (thread) – Facilita la costruzione di applicazioni interattive.
  • Interpretato e compilato: il byte code è tradotto “al volo” in istruzioni macchina native – Rende più veloce e snello il processo di sviluppo
  • Alte prestazioni: con l’uso dei compilatori Just-In-Time (JIT), le prestazioni sono le stesse se non addirittura SUPERIORI del codice nativo
  • Distribuito: progettato per ambienti distribuiti come Internet
  • Dinamico: si adatta a un ambiente in evoluzione – Porta con sé parecchie informazioni a tempo di esecuzione per verificare e risolvere gli accessi agli oggetti