Robust
strongly typed language (eg more so than C++)
extensive compile time checking - find bugs early
requires explicit method declarations
compiler can catch method invocation errors
elimination of pointers enhances reliability
automatic garbage collection prevents memory leaks etc due to dynamic memory allocation
interpreter also performs run time checks such as array and string bounds errors
exception handling via try, catch, finally