- Oliokeskeinen
Java-ohjelma määritellään joukkona luokkia (class). Ohjelman suorituksen aikana näistä luokista luodaan olioita (object). Kullakin oliolla on oma yksityinen muistitilansa. Olion luokka määrittää joukon metodeja (method), jotka kuvaavat olion mahdolliset toiminnot.
- Järjestelmäriippumaton
Java-ohjelma suoritetaan Java-virtuaalikoneella (Java Virtual Machine), joka on samanlaisena saatavissa monenlaisiin käyttöjärjestelmiin ja -ympäristöihin, minkä vuoksi sama Java-ohjelma voidaan ilman muutoksia ajaa kaikissa näissä ympäristöissä.
- Turvallinen
Java-ohjelmissa ohjelmavirheiden seurauksia on pyritty vähentämään kattavalla poikkeustenkäsittelymekanismilla (exception handling). Lisäksi C-ohjelman kaltaisia muistinviittausvirheitä ei voi tapahtua, koska Java-ohjelma ei voi vapaasti käsitellä muistia ja varatun muistin vapauttamisesta huolehtii erityinen roskankerääjä (garbage collector).
Verkon yli siirrettävien Java-sovelmien (applet) turvallisuus tarkastetaan aina ennen niiden suoritusta (ns. security manager) ja niiden mahdollisuuksia suorittaa tuhoisia toimintoja on rajoitettu.
- Moniajoa tukeva
Java sisältää mekanismit monisäikeisten (multi threaded) ohjelmien tekemiseen.
- Sisältää laajat luokkakirjastot
Javassa on laaja standardoitu luokkakirjasto Java API mm. graafisten käyttöliittymien ja verkkopohjaisten ohjelmistojen tekemiseen.