Diferencia entre una cadena Java nula y vacía ("")

¿Cuál es la diferencia entre nully el"" (cadena vacía)? He escrito un código simple: String a = ""; String b = null; System.out.println(a == b); // false System.out.println(a.equals(b)); // false Ambas declaraciones regresan false. Parece que no puedo encontrar cuál es la diferencia real entre...