Segurança da informação é um tópico bem extenso, então é bem complicado colocar em um post (e eu não sou especialista, então nem tentarei). Vou colocar algumas observações gerais.
O primeiro ponto a considerar é que não existe segurança total (pode ser que exista, mas acho saudável ter em mente que não há medidas de segurança que garantam 100% de sucesso, sempre). O que existem são práticas que diminuem os riscos e os danos de ataques e outros problemas de segurança.
Você precisa também diferenciar ações defensivas (proteger seus sites e produtos) e ações ofensivas (atacar adversários, concorrentes e outros hackers). São sub-domínios diferentes embaixo do mesmo domínio, embora se combinem em determinados momentos.
Sobre ações ofensivas, eu conheço pouco, então não vou comentar muito. O que posso dizer é que pode ser bem mais tedioso do que pode parecer. Analisar logs, testar portas e capturar quais serviços estão rodando em máquinas locais e remotas, entender vulnerabilidades em serviços e programas, e como se aproveitar dessas falhas etc.
Do lado defensivo, você geralmente tem as ações para evitar ataques (proteger portas, firewall, lidar com ataques DDoS, etc) e minimizar os danos de um ataque (evitar escalada de privilégios, ter backups e rotinas de recuperação, etc). Na aplicação, há uma série de ações que um desenvolvedor pode tomar (como o uso de PreparedStatement citado acima, ou mecanismos de captcha). O security.stackechange e o stackoverflow em geral tem boms tópicos sobre isso, além das recomendações da OWASP. Ex:
Sobre linguagens, não vejo o Java sendo muito usado para a parte de segurança em si (além do que uma linguagem normalmente seria usada, como proteger a memória ou não responder requisições inválidas, por exemplo).
Abraço.