Java — Executable Comments | Code Factory

Code Factory
2 min readNov 3, 2020

--

Donate : Link

WordPress 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

--

--