kokatrix:
Sou ótimo em aprender as coisas sozinho, não só no campo da programação, mas como em tudo na minha vida.
Estou envolvido em diversos projetos, não só na área de tecnologia, mas tb na área de administração de empresas e na área social.
Já tenho algum conhecimento em Delphi e banco de dados. Conhecimento suficiente para fazer algumas pequenas aplicações de que eu necessitava. Não sou um expert na área de desenvolvimento, aprendi apenas aquilo que era necessário para as minhas necessidades. Aprendi sozinho, estudantado em casa por livros e consultando fóruns.
A algum tempo que já venho sentindo a necessidade de me aprofundar ainda mais na área de desenvolvimento, e depois de algumas pesquisas decidi aprender JAVA e descobri o GUJ como o melhor ponto de apoio para suprir as minhas necessidades.
Necessito então da ajuda de vcs para que eu possa montar meu mapa de aprendizado da linguagem JAVA, junto com todo o conhecimento periférico que eu possa vir a necessitar para ter o melhor aprendizado possível. Gostaria, se possível, de receber uma linha/sequencia de aprendizado do básico (qual o melhor banco, se possível free para se trabalhar e qual o melhor gerenciador para se trabalhar com o banco, ja sei que para o java é o eclipse) ao que tem de mais avançado, passando por todas as possibilidades do java, como a programação web (e o que o java pode me oferecer nesse sentido), celulares, servidores e avançando sempre.
Que outros tipos de linguagens e aplicações (xml, flex, air, php?, javascript, ruby) eu posso vir a aprender e no que isso pode melhorar meu desempenho com o java? quero ter informações para que eu possa no mínimo conquistar uma boa certificação e currículo na área e no máximo conquistar tudo o mais que existe.
Primeiro que tudo ha que aprender a linguagem e aprendê-la bem. Para isso nada melhor que um curso, mas se isso não for opção, então os livros de preparação para certificação da Katy Sierra são os melhores. Tlv não goste do estilo dela, mas baixo básico que isso não tem.
Depois vc precisa esquecer que existe um banco de dados. Em delphi é comum a arquitetura em client-ui->banco-de-dados. Não esta a arquitutura padrão em java.
A seguir vc precisa saber que tipo de aplicação vc quer fazer. Cada area e nicho tem as suas API especiais.
Para web, temos o conceito de web container a API de servlets e a de JSP. Depois temos JSF e vários frameworks construidos em cima destas tecnologias. Para entender mesmo tem que seguir o caminho das pedras. Se está interessado em desenvolvimento rápido então dê uma olhada no Spring Roo e no Grails ( para o grails terá que entender groovy, então melhor começar pelo Roo). Se ir a fundo então o melhor é dominar o conceito de IoC o Spring Injection Framework e partir dai.
Para celulares smartphone por agora é ir com android - embora tecnicamente não seja java - a linguagem é a mesma e se sabe java , entende android.
Tudo o que for baseado em flash esqueça. Ruby, so de for on Rails, mas ai tem que aprender Ruby. O Grails e o Roo são concorrentes em java para essa tecnologia. PHP nem merece o tempo.
Para web é bom entender de HTML, CSS, javacript e hoje em dia JQuery.
XML é mandatório em qualquer tecnologia e é muito simples. JSON também é muito simples e é bom saber.
Para trabalhar com banco de dados qualquer banco pode ser usado. Vc apenas precisa de um driver jdbc que normalmente o fabricante fornece.
Em termos de qual o melhor banco , não existe melhor banco. Eu uso o Postgres sempre que possivel, porque é free , é simples, é tão poderoso quanto qualquer banco de marca. Além disso roda em linux e windows.
Para mecher com banco é bom vc entender os conceitos de JDBC e brincar com isso um pouco, mas só para entender. Profissionalmente vc vai usar o JPA ou o Hibernate.
Para servidor precisa entender o conceito de EJB container e JNDI. Para usar tem várias opções, entre as free JBoss e Glassfish, ou o novo TomEE que dá para brincar com EJB se não quiser nada muito avançado.
Isto é o basico do básico. Se for para desktop temos outras tecnologias. É interessante compreender Swing mesmo se não usar porque vários frameworks web modernos são baseado em conceitos de GUI para desktop ( o Vaadin, ZK, Wicket e até o JSF).
Tem mais coisas para aprender: tratamento de transação, segurança, i18n (internacionalização), log, tag files e tag libs , etc… etc… mas o que falei acima já dá para começar e fazer algo funcionar.