Robust
Strongly typed - allows compile-time checking to detect syntax-related errors
Run-time checking
Instead of pointer arithmetic, Java has true arrays and strings, which means that the interpreter can check array and string indexes.