Everything in Java is class-oriented. There is no global scope, there are no global variables, and there are no explicit function pointers. Arrays of arbitrary dimension are supported and act like objects. It supports threads and provides synchronization primitives . Threads, sometimes called lightweight processes, allow several separate execution paths to run concurrently through a program.
Synchronization primitives ensure that separate tasks are performed in the correct order.
It supports modules , so it doesn't need a preprocessor. It supports garbage-collection , and there is no support for explicit deallocation. This simplifies programming dramatically and eliminates all memory allocation errors. All objects implicitly use reference semantics , which roughly means every object acts like a pointer, but used as if it were a value . Graphics and GUI programming Another important component of the Java system is the compiler.