Depois de muito tempo eu resolvi entrar aqui no GUJ e ver se consigo tirar algumas dúvidas que geralmente eu quebro cabeça sozinho para resolver.
Pois bem, eu sou programador de aplicações baixo nível, então tudo relacionado a programação de electronics e aplicações digamos… machine language é comigo.
Porém nem o mundo tecnológico é mar de rosas, e recentemente comecei a aprender programação voltado ao usuário, ou seja, sistemas web e toda aquela coisa de friendly user…
Bom, vou direto ao assunto, eu tenho falhado miseravelmente em aprender programação para web.
Tenho utilizado java ee e o material gratuito que a Caelum deixou disponível. Só que mesmo com a excelente explicação do material, eu estou com certas dificuldades de digamos… memorizar algumas estruturas, e métodos abordados…
Como disse, eu venho de programação de baixo nível, então não sei se isso impacta na forma de aprendizado que estou tendo agora…
Algúem tem alguma sugestão de como realmente programar de maneira mais eficiente para web, utilizando java?
Lendo o código eu consigo entender bem tudo que está escrito. Mas na hora de codificar do zero, eu simplemente me perco em alguns momentos, na hora de chamar métodos específicos e classes da linguagem…
Cara, se você tem essa vivência de programação me baixo nível talvez seja mais interessante continuar na abordagem bottom-up. Eu sugiro, antes de partir para JEE, estudar os seguintes tópicos em Java:
Java I/O : entenda como ler e escrever arquivos através de streams
Threads: entenda como criar e disparar threads, entenda o que é um pool de threads
Sockets: entenda como trocar dados através da rede, aprenda a escrever um client e um server
HTTP: aprenda o protocolo HTTP, que é o protocolo usado para troca de conteúdo na Web
A partir desses tópicos, eu sugiro que você tente escrever o seu próprio servidor Web. É uma ideia meio maluca, mas você também pode se arriscar a escrever uma aplicação Web toda feita em Java Standard Edition. Fazendo isso você vai entender que o JEE serve justamente para fazer todas essas coisas “automagicamente”, para que você se concentre em lógica de aplicação.
Sobre estes pontos que você citou, eu utilizo C++ para trabalhar com eles. Porém, hoje o mercado está muito mais “fermentado” para programadores de aplicações voltada ao usuário do que programadores de aplicações que digamos, serviriam para trabalhar com recursos quais o usuário jamais iria ter interação… pelo menos não diretamente entende?
Justamente por isso estou correndo atrás de aprender programação web.
Eu tenho ótimas noções de java, eu só estou com dificuldades de pegar as manhas para escrever para web.
Comece com uma aplicação web simples, com uma página JSP chamando uma Servlet que faça pouca coisa. Recomendo usar o eclipse como ferramenta, pois eh amplamente usada no mercado. E utilize o tomcat como webserver. Com um projeto assim, você vai entendendo melhor como funciona essa comunicação (HTTP).
DICA: Para ter uma ajuda melhor, crie uma conta no GitHub e coloque seu projeto lah para poder compartilhar e obter ajuda mais facilmente. Pelo menos até que você se sentir mais confortável no desenvolvimento web.
Cara, eu vejo que essa dificuldade que vc está tendo é normal, é questão de prática e ir se acostumando com o novo paradigma mesmo. Você deve vir de uma programação estruturada. De uma estudada em programação orientada a objetos e programação funcional, que são paradigmas totalmente diferentes, e que acaba complicando muito na hora de arquitetar um código. Dê uma olhada em alguns padrões de projeto tb e vai estudando a base da linguagem, igual o @rmendes08 falou aí em cima
Eu acabei conversando com algumas pessoas aqui da empresa ao longo do dia, e acabaram dizendo a mesma coisa…
Se o caso é mesmo o costume e prática eu fico menos preocupado.
Vou começar a brincar mais com implementação de pequenos projetos utilizando java para web e ver o que rola…
Vou pegar a dica do Lucas também em relação a criar uma conta do github, e ir compartilhando alguns projetos por lá, e tentar colaborar de alguma forma nos projetos dos outros developers também…