Purpose of Runtime and System class | Java

The Runtime and System classes are two important classes in the Java programming language. They provide access to the Java runtime environment and system resources, respectively.

System class

The System class in Java, belonging to the java.lang package, plays a vital role by encompassing various valuable class fields and methods. Its main purpose is to grant access to system resources. It is important to note that the System class is declared as final, meaning it cannot be subclassed or instantiated due to its private default constructor.

Furthermore, all the members within this class are static, providing direct access without the need for an instance of the class. The System class contains three constants: "in" representing standard input, "out" representing standard output, and "err" representing error output. "in" is a reference variable of type InputStream, serving as a connection to the standard input device, which is commonly the keyboard. On the other hand, "out" and "err" are reference variables of type PrintStream, acting as connections to the standard output device, which is usually the monitor or console.

Some of the most commonly used methods in the System class include:

  1. in: A reference to the standard input stream.
  2. out: A reference to the standard output stream.
  3. err: A reference to the standard error stream.
  4. getenv(): Returns the value of the specified environment variable.
  5. currentTimeMillis(): Returns the current time in milliseconds.

Runtime class

In Java, each application has a unique instance of the Runtime class, which serves as an interface between the application and its runtime environment. The primary role of the Runtime class is to facilitate access to the Java runtime system. It is worth noting that the Runtime class is declared as final, preventing it from being subclassed, and its default constructor is private, which means it cannot be instantiated directly.

The Runtime class adheres to the Singleton Design pattern, ensuring that only one instance exists throughout the application. It provides non-static methods that allow access to crucial runtime information, such as memory availability and the ability to invoke the garbage collector. By utilizing the Runtime class, developers can effectively interact with the underlying runtime system of their Java applications.

Some of the most commonly used methods in the Runtime class include:

  1. getRuntime(): Returns the current Runtime object.
  2. exec(): Executes the specified command in a separate process.
  3. freeMemory(): Returns the amount of free memory available to the JVM.
  4. gc(): Initiates a garbage collection cycle.
  5. halt(): Terminates the JVM.


The Runtime and System classes are essential for Java developers who need to interact with the Java runtime environment or system resources. They provide a wide range of methods that can be used to perform a variety of tasks, such as starting and stopping processes, managing memory, and executing external commands.