Java first became popular as the earliest portable dynamic client-side content for the web in the form of platform-independent Java applets. In the late 1990s and into the 2000s it also became very popular on the server side, where an entire set of APIs defines the J2EE.

Java is both a set of public specifications (controlled by Oracle, who bought Sun Microsystems, through the JCP) and a series of implementations of those specifications.

Whereas programs in C++ and similar languages are compiled and linked to platform-specific binary executables, Java programs are typically compiled to portable architecture-neutralbytecode ".class" files, which are run using a Java Virtual Machine. The JVM is also called an interpreter, though it is more correct to say that it uses Just-In-Time Compilation to convert the bytecode into nativemachine code, yielding greater efficiency than most interpreted languages, rivalling C++ for many long-running, non-GUI applications. The run-time system is typically written in POSIX-compliant ANSI C or C++. Some implementations allow Java class files to be translated into nativemachine code during or after compilation.

Java has an extensive library of routines for all kinds of programming tasks, rivalling that of other languages. For example, the java.net package supports TCP/IPprotocols like HTTP and FTP. Java applications can access objects across the Internet via URLs almost as easily as on the local file system. There are also capabilities for several types of distributed applications.