Creating, Compiling, and Executing a Java Program
Tags: learning, java, beginners, programming
Published: 2024-04-22 19:51:08

You save a Java program in a .java file and compile it into a .class file. The .class file is executed by the Java Virtual Machine. If your program has compile errors, you have to modify
the program to fix them, and then recompile it. If your program has runtime errors or does not produce the correct result, you have to modify the program, recompile it, and execute it again.
You can use any text editor or IDE to create and edit a Java source-code file. The source file must end with the extension **.java** and must have the same exact name as the public class name. For example, the file should be named **Welcome.java**, since the public class name is **Welcome**.

A Java compiler translates a Java source file into a Java bytecode file. The following command compiles Welcome.java

```
javac Welcome.java
```
If there aren’t any syntax errors, the compiler generates a bytecode file with a **.class** extension. Thus, the preceding command generates a file named **Welcome.class**.

The Java language is a high-level language, but Java bytecode is a low-level language. The _bytecode_ is similar to machine instructions but is architecture neutral and can run on any platform that has a _Java Virtual Machine_ (JVM). Rather than a physical machine, the virtual machine is a program that interprets Java bytecode. This is one of Java’s primary advantages: _Java bytecode can run on a variety of hardware platforms and operating systems_. Java source code is compiled into Java bytecode and Java bytecode is interpreted by the JVM. Your Java code may use the code in the Java library. The JVM executes your code along with the code in the library.

To execute a Java program is to run the program’s bytecode. You can execute the bytecode on any platform with a JVM, which is an interpreter. It translates the individual instructions in the bytecode into the target machine language code one at a time rather than the whole program as a single unit. Each step is executed immediately after it is translated. The following command runs the bytecode

```
java Welcome
```
Do not use the extension **.class** in the command line when executing the program. Use **java ClassName** to run the program. If you use **java ClassName.class** in the command line, the system will attempt to fetch **ClassName.class.class**.

If you execute a class file that does not exist, a **NoClassDefFoundError** will occur. If you execute a class file that does not have a **main** method or you mistype the **main** method (e.g., by typing **Main** instead of **main**), a **NoSuchMethodError** will occur.

When executing a Java program, the JVM first loads the bytecode of the class to memory using a program called the class loader. If your program uses other classes, the class loader dynamically loads them just before they are needed. After a class is loaded, the JVM uses a program called the bytecode verifier to check the validity of the bytecode and to ensure that the bytecode does not violate Java’s security restrictions. Java enforces strict security to make sure that Java class files are not tampered with and do not harm your computer.