Artigo Java Magazine 23 - Começando com Java
Este artigo mostra um caminho das pedras, um roteiro para o aprendizado da tecnologia Java.
Esse artigo faz parte da revista Java Magazine edição 23. Clique aqui para ler todos os artigos desta edição
Um roteiro para aprender a tecnologia – e ir além
Fernando Lozano e Leonardo Galvão
Será difícil aprender Java? A tecnologia Java e tão abrangente, funcionando desde nos menores dispositivos (como celulares, iPods e cartões) ate em redes de milhares de máquinas e supercomputadores , e é usada numa variedade tão grande de áreas de aplicações, que é natural que o iniciante fique um pouco perdido, sem saber por onde começar.
Este artigo mostra um "caminho das pedras" um roteiro para o aprendizado da tecnologia Java. Os passos são sumarizados na Figura 1, em que também é indicado por onde você pode partir dos conhecimentos essenciais para estudos mais avançados ou especializados. O quadro "Além do básico" descreve resumidamente algumas dessas possibilidades.
Como todo aprendizado de uma tecnologia, o de Java será melhor e mais rápido se apoiado em ferramentas e referencias de qualidade. Os quadros "Ferramentas para o aprendizado" e "Buscando na internet" mostram algumas sugestões. Também é importante conhecer os padrões formais de Java, criados originalmente pela Sun, mas hoje mantidos por uma organização com centenas de empresas associadas, o Java Community Process (JCP). Veja mais na seção de links.
Esperamos que o mostrado aqui ajude você a começar (ou continuar) seu aprendizado de Java com mais segurança.
Figura 1. Um roteiro para aprender a tecnologia Java
Vamos começar recapitulando alguns conceitos conhecidos. Dado o tamanho e a diversidade do universo Java, ele foi dividido em três edições:
1. JSE – O Java 2 Standard Edition fornece as facilidades essenciais da linguagem e APIs fundamentais, e a capacidade de desenvolver aplicações para um computador desktop. Inclui recursos para interfaces gráficas, conectividade a banco de dados, envio e processamento de e-mail, conectividade á internet e muitos outros
2. J2EE – O Java 2 Enterprise Edition fornece recursos para aplicações corporativas baseadas em varias camadas de servidores especializados, incluindo aplicações web e distribuídas. É nessa área que Java teve seu primeiro grande sucesso comercial. O J2EE inclui as conhecidas e bem-sucedidas tecnologias de servlets, JSP e EJB, alem do suporte a web services, integração com sistemas de mainframe e outras tecnologias de alto valor.
3. J2ME – O Java 2 Micro Edition fornece facilidades para criar aplicações embarcadas (chamadas também de "embutidas") que rodam em disposotivos menores ou especializadas, como PDAs e celulares. A variação é grande: a tecnologia é usada, por exemplo, em sistemas de navegação de veículos, brinquedos, robôs espaciais e em muitos outros dispositivos especializados.
Há ainda outros agrupamentos de tecnologias Java, como Java Card e Java Web Services, e novos certamente serão criados. Mas eles podem quase sempre ser vistos como componentes de extensão para as três de edições, e muitas vezes ao amadurecerem se tornam parte oficial delas. Aqui nos concentramos no J2E e na parte web do J2EE.
Um desenvolvedor Java precisa, antes de tudo, ter conhecimento básico de algoritmos, lógica de programação estruturada e estruturas de dados. Desde a sua concepção, Java é uma linguagem baseada nos princípios da orientação a objetos, enquanto que outras linguagens populares como C++ e PHP incorporarem esses recursos apenas depois de bem evoluídas e populares.
Mas o fato de a linguagem Java ser orientada a objetos (OO) não exclui o de ser também uma linguagem estruturada. Por mais abstratos e sofisticados que sejam os conceitos usados para criá-la, uma aplicação Java é ao final transformada numa seqüência de instruções de máquina, que nas linguagens de programação são conhecidas como algoritmos. Java e estruturada pela forma que expressa esses algorítmicos, usando estruturas de controle e de decisão como if, for e while, além de chamadas a "sub-rotinas" (métodos), inclusive com suporte a recursividade. E como Java os algoritmos são expressos diretamente em seqüências de comandos, contidos nos métodos das classes, ela é uma linguagem procedural. Veja na Figura 2 uma representação dos relacionamentos entre a linguagem Java e os paradigmas de desenvolvimento mais conhecidos (onde fazemos algumas simplificações para facilitar o entendimento).
Por tudo isso, você vai precisar conhecer lógica de programação estruturada para programar bem em Java.
O conhecimento de estruturas de dados será também importante, especialmente se você quer ser capaz de otimizar aplicações visando maior desempenho ou economia de memória. Via de regra, você não vai precisar implementar essas estruturas, como o programador Pascal ou C é obrigado a fazer. A API de coleção incluída com o J2E representa que há de mais moderno em estruturas de dados e vem com uma variedade de implementações eficientes. Mas apesar de não ser necessário criar estruturas básicas, o conhecimento de como elas funciona trará uma compreensão real de como utilizar bem as coleções disponíveis.
Programação e modelagem OO
As classes são elementos fundamentais da linguagem Java, que abrigam tanto dados como operações que atuam sobre esses dados – os métodos. Em Java você vai usar classes para praticamente tudo.
A linguagem define também interfaces, que são compostas apenas de definição de métodos. Elas são muito usadas nas APIs de Java, mas você só vai precisar- criá-las ao fazer uma modelagem mais avançada. Saber usar interfaces já será suficiente para a boa parte do seu aprendizado.
Classes e interfaces ás vezes são chamadas conjuntamente de tipos. Você pode definir novos tipos de Java, e eles vão se comportar exatamente como tipos pré-definidos. É uma ferramenta muito poderosa: Java trata suas classes, digamos Cliente e Pedido, da mesma maneira que trata suas classes fundamentais, como String ou Date. Fica fácil estender a personalizar ferramentas e APIs: as possibilidades são praticamente ilimitadas. Essa é uma das razões porque puramente estruturas se apaixonam pela tecnologia ao começar a programar em Java.
Como você provavelmente sabe, os conceitos de classes, métodos etc. são a base da programação orientada objetos (POO), cujo o conhecimento é indispensável para quem pretende ser um bom programador Java. Você também vai precisar conhecer o básico da modelagem orientada a objetos, pois as classes e interfaces não vão existir isoladamente, relacionando-se de varias formas, e será preciso definir esses relacionamentos ao criar os seus sistemas OO.
Figura 2. Paradigmas de desenvolvimento versus evolução das linguagens de programação
Sintaxe e APIs básicas
É comum se ensinar Java começando com os princípios da programação orientada com os princípios da programação orientada a objetos e só depois apresentar a sintaxe da linguagem. Para quem já tem experiência prévia em desenvolvimento com outras linguagens, é uma boa técnica. Mas para quem esta iniciando, essa abordagem obriga aprender ao mesmo tempo muitos conceitos e técnicas independentes, embora complementares. Aprender POO ao mesmo tempo em que se aprende a programação em que se aprende a Programação Estruturada é como tentar ter simultaneamente a "visão da floresta" e a "visão das árvores", e não é fácil quando se esta começando mudar de um foco para outro."