Pergunta

Estou curioso para saber o que outros programadores Java sentem é a sua parte favorita do idioma, por que eles se sentem assim, e por outros programadores deve querer um conhecimento íntimo dele também. Estou à procura de razões, como a simplicidade, desempenho, etc. Graças.

Foi útil?

Solução

Meu API favorito Java é o Collections Framework . Encontro-me a usá-lo o tempo todo em vez de rolar minhas próprias implementações, e é muito agradável e simples de usar. É constituída por vários útil e implementações intercambiáveis ??de estruturas de dados de alto desempenho e algoritmos, assim como vários métodos convenientes para embalar uma funcionalidade adicional ao seu redor.

Um tutorial por Josh Bloch pode ser encontrada aqui: http: // java.sun.com/docs/books/tutorial/collections/index.html

Outras dicas

A minha parte favorita do API é definitivamente java.lang . Ele tem esta classe chamada String, que permite que você facilmente manipular matrizes de caracteres. Qualquer programador que é sério sobre escrever bom código Java deve verificá-la.

java.util.concurrent é fundamental para a minha vida. Nós fazemos um monte de programação multicore ea ideia de tentar implementar todas as nossas tarefas usando velho estilo de linhas cruas só me faz sentir mal.

Um bom exemplo de onde o pacote de concorrência realmente facilitar nossas vidas é a piscina de estruturas de dados especializados que ela proporciona. O meu favorito é o CopyOnWriteArrayList . Usamos o bastante em situações onde a tarefa de exibição é a leitura de um cache de dados para atualizar a tela enquanto outra tarefa está tomando informações da rede para atualizar o cache. Normalmente, isso seria um convite para colisões, ConcurrentModificationExceptions e horrores semelhantes. Usando o CopyOnWriteArrayList, a tarefa de escrita irá criar uma nova cópia dos dados se ele precisa adicionar dados, garantindo assim que o leitor terá sempre um válido (embora potencialmente desatualizado) conjunto de dados para mostrar.

Como o javadoc diz:

Este é normalmente muito caro, mas pode ser mais eficiente do que as alternativas quando as operações de passagem vastamente superam mutações, e é útil quando você não pode ou não quer traversals Sincronizar, ainda precisa interferência opõe-se entre os concorrentes threads.

Java elimina classes inteiras de bugs que eu normalmente introduzem para resolver este problema, permitindo-me concentrar nos problemas reais que eu preciso para resolver.

Definitivamente o Collections Framework. Ele é usado o tempo todo se você está fazendo Java do lado do servidor ou do lado do cliente, gráfica ou não. É fácil de usar. A maioria das classes de estrutura de dados tem tanto um não-genérico e uma versão genérica (melhor usar o segundo, mas não há código legado que usa pesadamente o primeiro), mas eles são praticamente idênticos em termos de API para além dos parâmetros de classe. Em .NET as duas versões podem ter diferentes nomes / API e pode ficar muito confuso. Eu também gosto de como o Java Collections Framework tem algoritmos como métodos estáticos (por exemplo Collections.sort (collectionVar)) e não como métodos de instância. Em .NET eles usam métodos de instância e, por algum motivo, não cada estrutura de dados tem uma espécie ... o Collections Framework também é muito rica e você pode encontrar tanto estruturas de dados especializados simples e (por exemplo LinkedHashMap que preserva a ordem de inserção).

Uma desvantagem que eu ouvi é que o quadro não funciona bem e algumas pessoas escrevem seus próprios. Eu não posso confirmá-lo como eu não lidar com o material de desempenho crítico.

javax.naming

http: //java.sun .com / JavaSE / 6 / docs / api / javax / nomeação / package-summary.html

Java é um grande techonolgy integração de sistemas por causa de sua portabilidade e JNDI faz um bom trabalho de abstrair as complexidades de obter primeiro contato com um sistema remoto.

Reflection. Alguns dos que está em java.lang .reflect e alguns em java .lang (principalmente da classe e ClassLoader).

Streams. Os fluxos em Java são muito mais fáceis de entender e implementar do que os seus homólogos em C ++ (opinião) e geralmente é fácil de ver, com base nos nomes dos córregos que vêm com a API, o que é um fluxo que vai fazer para você.

Eu sou um grande fã de JPA em Java EE . Ele reduziu a quantidade de trabalho que eu preciso fazer para grandes aplicações (o que seria usando EJBs) e pequenas aplicações.

Um close segundo é JAAS, a API de segurança, aqui está o link para Java SE JAAS : http://java.sun.com/javase/technologies/security/

Até agora, o pacote java.util.regex API é o meu favorito porque ele me impediu de ter que reinventar a roda em tantas ocasiões quando se trata de procurar e utilizar pedaços de cordas para diversos fins.

java.util é muito util. Por quê?

  • Coleções. Muitos deles!
  • Data e aulas Tempo
  • scanner de texto
  • utilitário de injeção de dependência (desde Java 6)
  • Um fio temporizador
  • Números aleatórios
  • O observador padrão está lá
  • propriedades Java

java.util.jar - Ajuda com carga arquivos .jar em um carregador de classe para os meus plugins de aplicação! Eu adoro isso.

java.util.regex

Existem outros pacotes que eu não posso viver sem, mas o pacote regex tem que ser na camada superior dos "maiores adições ao java" - definitivamente lá em cima com coleções

.

eu concordo com o comentário de Reflexão. de longe, a parte mais útil / poderosa da API Java

Olhando para trás a meus dias de Java, o único e mais divertido API para uso era java.util.concurrent , simplesmente porque ele fornece-bem pensado e fácil de usar blocos de construção para o processamento paralelo.

InheritableThreadLocal todo o caminho !!! Apenas tanta oportunidade de escrever código ofuscado eo rolo de corda para se enforcar apenas nunca parece se esgotar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top