Byte code is the output of the Java compiler and is designed to be executed by the Java Virtual Machine (JVM). A simple Java program prints "Welcome to Java" by using classes, methods, and calling System.out.println from the main method. The main advantages of Java are that it is simple, object-oriented, robust, multithreaded, architecture neutral, interpreted, distributed, and dynamic. Some limitations are that it is slower than C/C++, applets cannot access local data, and it lacks pointers and flexibility compared to C++. Java differs from C++ in its support for interfaces over multiple inheritance, lack of pointers and global variables, automatic memory management, and portability.