Estou prestes a começar minha primeira posição profissional como desenvolvedor de software e provavelmente escreverei muito código Java. Não sei muito sobre o que especificamente escreverei e, além disso, tenho interesses bastante amplos no que diz respeito ao código.
Por razões que não valem a pena discutir, meu último estágio me fez codificar apenas para os SDKs Java 1.3 e 1.4. Além disso, minha formação universitária se concentrou principalmente em algoritmos, estruturas de dados e outras teorias, não em recursos ou bibliotecas de idiomas.
Portanto, com o exposto acima, quais recursos, classes, etc., na versão atual do Java (em que número estamos agora, afinal?) Valeria meu tempo lendo e por quê? O que eu perdi desde a versão 1.4.2 que facilita sua vida como programador?
Exemplos e histórias de como você descobriu um pacote específico ou algo parecido e o colocou em uso também seriam ótimos.
Respostas:
As mudanças que considero mais importantes são:
Leia também O que Java você está buscando? , para entender melhor cada uma das três versões.
fonte
for
loops aprimorados ?"A mudança mais importante na sua vida cotidiana na programação é a introdução de genéricos que provavelmente serão usados em todos os novos módulos que você precisará escrever, e é uma nova sintaxe confusa.
Genéricos é o mecanismo que permite, por exemplo, um
List
a conter seqüências de caracteres em vez de objetos nus, onde o compilador impõe que um item a ser colocado na lista seja uma String e sabe que quando você extrai um item de uma lista, ele é uma String .Isso cria melhores programas à medida que você evita a conversão explícita do tempo de execução para o tipo de destino (que é uma fonte frequente de erros, se você errar) e o IDE pode ajudá-lo a fazer todo o trabalho sujo, pois sabe muito mais sobre seu código do que aconteceu quando era apenas uma lista de objetos.
Joshua Bloch escreveu uma boa introdução a Genéricos, disponível como exemplo de capítulo em http://java.sun.com/docs/books/effective/
fonte
def whatever
...id
que édef
ouvar
.... mas, novamente, a segurança da digitação estática 100% é incrível, realmente.A autoboxing é um recurso interessante introduzido no Java 5. Assim como no C #, o compilador agora faz uma conversão automática entre os tipos primitivos (básicos) e suas classes correspondentes de wrapper de objetos (int para Integer etc.) e vice-versa. Isso torna o trabalho com Java Collections muito menos trabalhoso.
Para cada loop também era novo no Java 5, eu acho. Facilita a iteração de matrizes (e coleções), porque elimina grande parte da confusão usual que envolve a configuração e o gerenciamento de uma variável ou iteradores de índice. Por exemplo:
fonte
Enums , para substituir estática e constantes finais e ajudá-lo a remover referências a seqüências de caracteres e números mágicos. Um exemplo tirado das pessoas boas da sun / oracle :
e
fonte
O java.util.concurrent foi introduzido na 1.5. O melhor recurso para aprender é (provavelmente) o livro Concorrência Java na Prática . A simultaneidade IMHO é a vantagem competitiva mais importante do Java em comparação com qualquer outra coisa, portanto vale a pena conhecer bem.
fonte
java.util.concurrent
para primitivas de simultaneidade é como gerenciamento automático de memória para gerenciamento manual de memória. Usar este último é apenas uma receita para gastar mais do seu tempo na depuração e não oferece vantagens.Bem,
StringBuilder
me ajudou a acelerar meu programa. É equivalente àStringBuffer
segurança sem rosca.fonte
+
strings usa automaticamente o StringBuilder em vez do StringBuffer para o nível de origem 1.5 e superior.Ajudarei a categorizar a resposta útil de @ykombinator. Sua lista é uma lista dos elementos que você usará diariamente enquanto estiver desenvolvendo java "geral".
Baixo impacto e baixa dificuldade:
Alto impacto e dificuldade média:
Alto impacto e alta dificuldade:
Baixo impacto e alta dificuldade (será usado apenas a menos que você faça rosqueamento avançado)
Sugiro, portanto, que você leia os documentos / ajuda sobre peças difíceis e de baixo impacto - elas são fáceis de entender. Gaste muito tempo em anotações e genéricos - as anotações são muito úteis e os genéricos podem ficar bastante complicados.
Observe apenas o novo conteúdo de simultaneidade se precisar fazer a segmentação.
fonte
Como não posso comentar porque tenho menos de 50 anos, vou deixar uma resposta. Já foi mencionado, mas vou repetir novamente: anotações! Esse tipo de metadado se tornou a coisa mais importante nos meus anos de experiência em Java. É bem usado, como algumas estruturas, torna o código muito mais conciso e limpo. Por exemplo, as anotações podem:
E, é claro, você pode criar suas próprias anotações e saber se um método, classe ou campo é anotado usando reflexão.
fonte
Aprender pelo exemplo funciona para mim
Aqui está um exemplo rápido do Java 6 idiomático
Não se preocupe com o Java5, ele foi descontinuado em relação ao Java6.
Próxima etapa, anotações. Eles apenas definem aspectos do seu código que permitem que os leitores de anotações preencham a configuração padrão para você. Considere um serviço da web simples que use a especificação JAX-RS (ele entende URIs RESTful). Você não quer se incomodar em fazer todo o WSDL desagradável e mexer com o Axis2 etc, deseja um resultado rápido. Certo, faça o seguinte:
Bang. Com um pouco de magia de configuração no seu web.xml, você está fora. Se você estiver construindo com o Maven e tiver o plug-in Jetty configurado, seu projeto terá seu próprio servidor da Web pronto para uso (sem mexer no JBoss ou Tomcat para você), e o código acima responderá aos URIs do Formato:
Tarefa concluída.
fonte
Uau, isso foi uma explosão do passado! Não uso Java há 4 anos - e nada mudou nesse período!
Há uma lista de recursos por versão , mas aqui está a parte importante (plagiada, é claro) ...
J2SE 5.0 (30 de setembro de 2004)
Java SE 6 (11 de dezembro de 2006)
É sobre isso. O Java SE 7.0 parece mais interessante, mas ainda não foi lançado.
Considerando quantos novos recursos de linguagem e APIs foram adicionados ao C # nos últimos 4 anos, estou bastante surpreso. O que está acontecendo na Sun / Oracle?
fonte