Java – Executable Comments | Code Factory


Donate : Link

Medium Blog : Link

Applications : Link

A comment is a statement that is not executed by the compiler or the interpreter, but before the lexical transformation of the program in the compiler, the contents of the program are encoded into ASCII to make the processing easier. Consider this program

package com.example.java.programming;

/**
 * @author code.factory
 *
 */
public class Test {
	public static void main(String... strings) {
		// The comment below is magic..
        // \u000d System.out.println("Code Factory Comment Executed!");
	}
}

This code will be executed and compiled successfully to produce the output.

Output:

Code Factory Comment Executed!

This successfully produces this output because java compiler before lexical transformation parses the Unicode character \u000d as a new line and the program gets transformed into

package com.example.java.programming;

/**
 * @author code.factory
 *
 */
public class Test {
	public static void main(String... strings) {
		// The comment below is magic..
        // 
		System.out.println("Code Factory Comment Executed!");
	}
}

The Unicode character Shifts the print statement to the next line which is then executed like a normal java program. So, the question arises why the translation of Unicode escapes happens before any other source code processing?

  1. Java source code can be written in any encoding which allows a wide range of characters in string, literal and comments.
  2. It makes processing by ASCII-based tools easier.
  3. This guarantees java Platform dependence which is the independence from supported character sets.
  4. This helps in documenting code in non-Latin languages.

Being able to write any Unicode character anywhere in the file is a neat feature, The fact that it can interfere with the semantics in such subtle ways is just a side-effect.

Let’s consider this java program

Save below code in Ugly.java file

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020 
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079 
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020 
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063 
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028 
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020 
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b 
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074 
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020 
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b 
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d 

javac Ugly.java

java Ugly

Output:

Hello world

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s