Les programmes Java sont écrits dans le jeu de caractères Unicode.
Néanmoins, les traductions lexicales sont fournies pour que les échappements Unicode soient utiisés pour inclure n'importe quel caractère utilisant seulement les caractères ASCII. Les fins de ligne sont définies afin de supporter une compatibilité avec les différentes normes des systèmes hôtes existants.
Les caractères Unicode résultant d'une traduction lexicale sont réduits à une séquence d'éléments d'entrées, lesquels sont des espaces blancs, des commentaires et des symboles tels que des identificateurs, des mots clés, des littéraux, des séparateurs et des opérateurs de la syntaxe Java.
Le caractère d'échappement antislash '' permet de traduire le code hexadécimal d'un caractère Unicode.
u{Code hexadécimal} uXXXX u0061 // correspond à 'a' u0035 // correspond à '5'
Les espaces blancs sont les caractères ASCII SP (SPace), HT (Horizontal Tabulation), FF (Form Feed) et les caractères de fin de ligne, permettent lors d'une traduction lexicale de décomposer la séquence en plusieurs symboles.
public int x=0, y=0; public{SP}int{SP}x=0,{SP}y=0;{CRLF} /* mot clé : 'public' identificateurs : 'int', 'x' et 'y' opérateurs : '=' littéraux : '0' séparateurs : ',' et ';' */
Les lignes sont terminées par une séquence de deux caractères ASCII, CR (Carriage Return) et LF (Line Feed).