Q:

split(" ") na String " Java Essencial " gera 3 tokens.  Por quê? 

A idéia era separar as palavras dos espaços em branco.  Segue o seguinte código. 
String s = " Java Essencial ";

String[] ss = s.split(" ");

for (int i = 0; i < ss.length; i++) {
    System.out.println("[" + i + "] " + ss[i]);
}

Como se vê no resultado, temos três tokens.  O correto não seria ter 2 tokens? 

A:

Você tem espaços no início e final da String.  Para conseguir o resultado que você deseja (No caso 2 pedaços) você deve utilizar o método trim antes de realizar o split:
String[] ss = s.trim().split(" ");

Isso irá limpar os espaços no início e final da String, garantindo o resultado desejado. 
Note também que você terá problemas se houver mais de um espaço separando as palavras.  Neste caso, além do trim() você pode utilizar uma expressão regular em conjunto com o replaceAll() para substituir dois ou mais espaços por apenas um.  A expressão seria [ ]{2,} e substituindo no seu código teríamos:
String[] ss = s.replaceAll("[ ]{2,}", " ").trim().split(" ");

trim()
Returns a copy of the string, with leading and trailing whitespace omitted. 

Em tradução livre:

Retorna a cópia da string, omitindo os espaços em branco no início e final. 

replaceAll()
Replaces each substring of this string that matches the given regular expression with the given replacement. 

Em tradução livre:

Substitui cada substring da string que combine com a expressão regular dada pela substituição dada.