You will find java easier and simple if you are aware of object-oriented language, especially C++.
Java has no global functions. All functions are invoked through an object.
Java facilitates the building of distributed applications by a collection of classes for use in networking application. Java can easily access a remote server using java libraries such as URL and support other protocols such as HTTP, FTP, and classes for creating socket-level connections.
Once java interpreter is ported to a specific machine it can run java programs instantly. Also it avoids inter modular dependencies. Time-consuming and edit-compile-link-test cycle is no longer applicable to java. No need to wait for longer compile time. Also java promotes prototyping and easier debugging.
To have a distributed, multithreaded program was not an easy task, thus to support all java was developed in such a way it manages all dynamic memory and checks array bounds and others.
- Architecture Neutral
As said before to support platform independent environment, java compiler complies the java source code into architecture-independent object code. The object code is interpreted by JVM on the target architecture.
Unlike other languages like C and C++ where sizes of primitive types are up to the compiler and developer. Java compiler is itself written in java and the runtime environment is written in POSIX-compliant C. Thus java becomes portable and supporting all different architectures.
Java has built in multithreading and synchronized thread which helps in creating distributed. Also in networking applications which can access remote server in one thread and interact with user in another thread.
Java is dynamic language. One such example is, Java is capable of performing name resolution while linking in the necessary classes. Java also support placements of objects in memory efficiently. It solves changing the definition if a class used by other classes. Because name lookup and resolution are performed only the first time a name is encountered, only a minimal performance overhead is added.