Aqui estão alguns exemplos que eu fiz sem bibliotecas externas:
Uma biblioteca alternativa de software Steam que lê automaticamente os jogos que você possui dos arquivos Steam locais, suporta renomeação (neste cliente – nenhum arquivo Steam é alterado), 2 níveis de tags (= mesmo tags para tags) com um filtro poderoso, caixa de texto de filtro simples, várias opções de ordenação, multiselect (que por esta altura já chegou à biblioteca de vapor bastante rudimentar), mantém um registo de quando conheceu um jogo pela primeira vez, quando o iniciou pela última vez (através deste cliente), pode listar todos os DLC, pode, claro, iniciar jogos (ou activar a instalação), pode mostrar a página da loja de um jogo, etc.
Uma ferramenta de renomear arquivo/diretório na qual você vê todo o diretório escolhido e pode editar os elementos nele imediatamente como se isso fosse apenas um texto no Notepad. (A renomeação real não acontece até que você o diga explicitamente, para todas as entradas ou para as individuais). Destaca linhas alteradas (se realmente forem diferentes), tem “infinitos” undos/redos, seleção de blocos, digitação multilinha, copiar/cortar/colar blocos, pode aparar a área de transferência (opcionalmente cortando as extensões dos arquivos), assim você pode agora facilmente copiar todo o conteúdo de um diretório como um texto.
Um jogo bonito de Batalha com efeitos sonoros e música em menos de 200KB.
O que posso realmente construir com Java?
Existem algumas coisas para as quais o Java não é tão adequado, mas a maioria desses obstáculos pode ser superada com algum esforço (melhor do que mudar a linguagem apenas para tal situação), por exemplo, usando JNA/JNI (o que eu nunca fiz até agora). Além disso, eu acho que o céu é o limite.