Pelos anos em que fiquei aqui no GUJ percebo que várias das dúvidas e dificuldades dos iniciantes nem são tanto de Java, mas de infra-estrutura e conceitos.
Por exemplo:
- Como chamar o compilador?
Nesse caso, as dificuldades é que normalmente o novato não conhece a linha de comando (Command Prompt do Windows, terminal no Linux ou Unix). Portanto não conhece o conceito de PATH. - Como faço para criar um executável?
Isso é uma particularidade do Java que é um pouco difícil de justificar, já que as outras linguagens criam executáveis. - Uma vez criado um .jar, como passar parâmetros para ele?
Outro problema de conceito - dessa vez é o de argumentos da linha de comando. - Quero saber algo que está ocorrendo no cliente (browser) mas tento executar essa função no servidor (web server) e ela não funciona.
Nesse caso é a confusão do que se pode fazer no cliente e no servidor. - Quero copiar um arquivo do cliente para o servidor (ou vice-versa) mas java.io.* não funciona.
A mesma coisa. - Quero acessar recurso X (normalmente bancos de dados) via applets mas…
É mais ou menos a mesma coisa também. - Eu fazia determinada coisa antigamente mas agora ela não funciona mais (por motivos de segurança ou outra limitação que a Microsoft pôs em uma determinada versão do Windows).
Isso é chato (até hoje encontro esse tipo de problemas).
E por aí vai.

