O objetivo de escrever este artigo é resumir algumas de minhas experiências ao usar o Java ao longo dos anos, relacionadas principalmente a alguns pontos básicos de conhecimento Java, por isso também espero compartilhá -lo com programadores Java que acabaram de começar e iniciantes em potencial que pretendem entrar no setor de desenvolvimento Java. Espero lhe dar alguma experiência e deixar você aprender e usar melhor Java.
O principal conteúdo desta introdução é a parte relacionada ao J2SE. Além disso, apresentaremos algum conteúdo relacionado ao J2EE relacionado a cada estrutura em Java no futuro.
Depois de tantos anos de desenvolvimento de Java e combinado com alguma experiência em entrevistar desenvolvedores de Java, acho que a principal coisa do J2SE é dominar o conteúdo a seguir.
1. JVM relacionado (incluindo recursos de cada versão)
Para aqueles que estão se envolvendo em Java, o conhecimento relacionado à JVM não precisa necessariamente ser profundamente compreendido, para que você possa ter um simples entendimento dos conceitos nele. No entanto, para um desenvolvedor sênior com mais de 3 anos de experiência em Java, é quase inaceitável não conhecer a JVM.
Como base para a operação de Java, é difícil acreditar que as pessoas que não conhecem a JVM podem entender completamente o idioma Java. Quando entrevistei desenvolvedores com mais de 3 anos de experiência em Java, a JVM era quase uma pergunta obrigatória. Obviamente, a JVM não é a única questão de entrevista que determina a qualidade das capacidades técnicas, mas pode provar o nível das capacidades de desenvolvimento de Java.
Na categoria JVM, acho que o conhecimento que precisa ser dominado é:
Modelo de memória JVM e estrutura
Princípio GC, ajuste de desempenho
Ajuste: despejo de thread, analise a estrutura da memória
Estrutura binária de binários de classe, sistema de carregador de classe, processo de carregamento de classe, processo de criação de instância
Processo de execução do método
Novos recursos fornecidos por várias atualizações principais da versão do Java (requer um entendimento simples)
2. Operação Java (itens essenciais básicos)
Isso pode ser muito simples de ver. Quem não pode executar um programa Java? Mas muitas vezes, apenas executamos os programas Java através do IDE. Como o IDE subjacente executa os programas Java? Muitas pessoas não entendem.
Esse ponto de conhecimento é a coisa mais básica que os desenvolvedores de Java precisam dominar. Quando você inicia, a primeira coisa é ensiná -lo a executar programas Java na linha de comando, mas muitas pessoas esquecem isso depois que terminarem de aprender Java e usar o IDE. Por que você enfatiza saber disso? Depois de saber a maneira mais pura de iniciar o Java, você pode analisar o número de diretórios iniciados naquele momento, como executar a nomeação, quais parâmetros são, se há algum falta, etc. Quando há um problema na startup. Isso ajudará você a resolver problemas estranhos relacionados ao meio ambiente no desenvolvimento real.
O conhecimento que você precisa dominar aqui é:
Javac compila o arquivo java como arquivo de classe
Uso de comandos Java, como iniciar a classe Java com o pacote na linha de comando
Os vários caminhos envolvidos no programa Java (ClassPath, java.library.path, diretório doméstico onde Java funciona, etc.)
3. Tipo de dados
Não há nada a dizer sobre este artigo, nada mais do que dominar os tipos básicos e tipos de objetos em Java. Você pode aprender mais sobre como o JDK se converte automaticamente, incluindo embalagem e unboxing, etc. Você também deve prestar atenção para evitar o julgamento de tipos iguais após a embalagem.
Principais pontos de conhecimento:
Tipos básicos: int, longo, flutuante, duplo, booleano ,. . .
Tipos de objetos correspondentes: número inteiro e outros tipos para conversão de tipos básicos, embalagem e unboxing
Tipo de objeto: é igual, hashcode
Recursos do tipo de string
4. Objetos e instâncias, criação de objetos
Nesse sentido, os desenvolvedores precisam entender os conceitos de classe e instância e as diferenças entre eles, o que é uma base para os recursos orientados a objetos do Java. Os principais pontos de conhecimento são:
Conceitos de classe e instância
Processo de criação de instância:
1. Sem herança: alocar espaço de memória, inicializar variáveis e construtores de chamadas
2. Herança: lida com ações estáticas, aloca espaço de memória, define variáveis como valores iniciais, lida com a inicialização da definição e executa o construtor
Pontos a serem observados:
Propriedades estáticas, etc. são inicializadas a partir da classe base-> subclasses
Recursos relacionados ao método de construção sem parâmetros padrão
5. Controle de acesso
Esta também é uma base para os recursos de encapsulamento Java, e o que precisa ser dominado são:
O efeito de modificação do padrão de proteção pública privada para classe, método e campo
6. Controle de processo
O básico do controle do processo Java, embora algumas sintaxes não sejam necessariamente usadas, elas precisam ser entendidas e usadas nos lugares certos.
O que precisa ser dominado são:
Sintaxe para controle de processos como se, switch, loop, para, enquanto
7. O conceito de programação orientada a objetos
Este é um conceito central de Java que precisa ser dominado por qualquer desenvolvedor Java. Muitos recursos ou pontos de conhecimento em Java estão relacionados ao conceito de programação orientada a objetos em Java. Na minha compreensão, um bom desenvolvedor não apenas precisa entender esses recursos (pontos de conhecimento), mas também precisa saber como esses objetos são refletidos no conceito de programação orientada a objetos em Java, o que é mais propício aos desenvolvedores para dominar a linguagem de desenvolvimento da Java e outras linguagens programadoras orientadas a objetos. Acabei de listar brevemente aqui, e os principais pontos de conhecimento incluem:
Três principais características orientadas a objetos: encapsulamento, herança e polimorfismo; Seus respectivos conceitos de definição, quais são suas características refletidas e seus respectivos cenários de uso
O conceito de multi-distribuição estática e distribuição única dinâmica
Conceito e uso de sobrecarga
Herança: implementações de múltiplas interface, herança de classe base única
Resumo, classe abstrata, interface
Polimorfismo: conceito e uso da cobertura do método
Interface Retorno de chamada
8. Estático
Os atributos estáticos também são frequentemente usados no desenvolvimento diário de Java. Você precisa entender o uso relacionado a palavras -chave estáticas e também usá -las em conjunto com outras palavras -chave, como se elas podem ser usadas em conjunto com palavras -chave como abstrato e final.
As principais coisas a dominar são:
Definição de propriedades estáticas, uso e como inicializar a classe ao carregar
Definição e uso de métodos estáticos
Definição e uso de classes estáticas
Definição e timing de inicialização dos blocos de código estático
9. pontos de conhecimento básicos
Aqui, listamos principalmente alguns pontos de conhecimento Java dispersos que não são sistematicamente classificados. Também é usado muito no desenvolvimento diário. Na verdade, há muito conteúdo nessa área. No momento, eu apenas resumi estes por enquanto aqui:
Incluindo:
iguais, hashcode, string/stringbuffer, final, finalmente, finalize
10. Framework de coleção
Esta é uma parte que precisa de mais domínio. Pode -se dizer que não há necessidade de estruturas de coleta sem usá -las. Isso é muito importante. No entanto, os pontos de conhecimento aqui não são difíceis, mas é melhor entender o método de implementação interna para coleções, porque isso ajudará você a escolher a estrutura apropriada em diferentes cenários para resolver o problema. Por exemplo, se você tiver um conjunto de 10.000 elementos, geralmente precisa executar operações de julgamento. Se você conhece as características da coleção ou implementação interna, é fácil fazer a escolha correta.
O conteúdo a seguir está incluído aqui (a correlação de simultaneidade não está incluída):
O sistema de estrutura de coleta: coleção básica, mapa
Conteúdo de implementações específicas de conjunto, listar, definir, mapa implementações específicas, estruturas internas, métodos especiais, cenários aplicáveis etc.
Uso de coleções, etc.
11. Estrutura de exceção
Exceções não podem ser levadas tão a sério no desenvolvimento de Java. Geralmente, ao encontrar exceções, eles serão jogados diretamente, ou simplesmente os pegam e os processam, e não terão nenhum impacto grave na operação geral do programa. No entanto, no design e desenvolvimento em nível empresarial, o design e o manuseio de anormalidades geralmente estão relacionados à robustez geral do sistema. Para os desenvolvedores, o manuseio de exceções em um bom sistema deve ser unificado e evitar muita lógica de manuseio de exceção espalhada por toda parte; Para sistemas, as exceções devem ser controláveis e fáceis de operar e manter. Depois que algumas exceções aparecem, deve haver uma maneira de lidar com eles e saber como operar e manter. Portanto, embora a estrutura de exceção seja muito simples, para todo o desenvolvimento de aplicativos em nível corporativo, o tratamento de exceções é muito importante. Para lidar bem com exceções, você precisa entender o sistema de exceção em Java.
Não há muitos pontos de conhecimento a serem domésticos nesta parte, principalmente:
Sistema anormal:
Jogável
Exceção
RUNTimeException
Erro
A diferença entre a RuntimeException e a exceção geral, métodos de processamento específicos, etc.
12.Java io
O IO não é apenas simples em Java para ler e gravar arquivos, mas também inclui todas as operações de entrada e saída, como leitura e redação de redes de soquete. Por exemplo, a leitura do conteúdo da postagem em solicitações HTTP padrão também é um processo de saída, etc ...
Para IO, o Java não apenas fornece APIs básicas relacionadas a entrada e saída, mas também fornece algumas APIs simplificadas de leitor de operação e escritor, que também são muito importantes em alguns desenvolvimentos (projetos que envolvem um grande número de operações de IO). Também envolverá (logs, leitura e gravação de arquivos temporários, etc.) no desenvolvimento diário.
Os principais pontos de conhecimento aqui são:
Sistema Básico de IO: incluindo InputStream, O outputStream, Leitor/Writer, Leitura de Arquivos, Readia de Stranques, etc.
O conceito de NIO, métodos de uso específicos e cenários de uso
13. Concorrência multitreada
O multithreading é uma parte relativamente difícil em Java. Se a multi-threading for usada corretamente, ela poderá melhorar efetivamente a taxa de uso da CPU e melhorar a eficiência geral do sistema, especialmente quando há um grande número de operações de IO bloqueando; Mas também é uma faca de dois gumes. Se não for usado bem, o sistema não apenas não será muito aprimorado ou não melhorado, mas também trará problemas como a depuração entre vários threads.
Existem muitos conteúdos no multithreading. Apenas explico brevemente os pontos de conhecimento que precisam ser dominados em Java no uso inicial do multithreading. No futuro, se você tiver a oportunidade de introduzir alguns recursos avançados em detalhes, terá uma introdução detalhada aos cenários de uso de alguns recursos avançados.
Implementação e startup multithread
Diferença entre chamadas e executáveis
sincronizado, respectivos recursos e comparações da Reentrantlock
Pool de threads
Obtenha resultados de execução de forma assíncrona
pacote simultâneo
trancar
..
14. Rede
O Java também fornece APIs que podem operar diretamente o protocolo TCP e o protocolo UDP. Quando é necessário enfatizar o desempenho da rede, a comunicação pode ser usada diretamente com o TCP/UDP. Você pode ver o uso dessas APIs relacionadas ao visualizar o código -fonte do Tomcat e de outros. No entanto, geralmente, o TCP raramente é usado diretamente, e estruturas como Mina e Netty são usadas para processamento. Como não há muito desenvolvimento nessa área, não os listarei em detalhes.
15. Processamento de tempo e data
Para quase todas as aplicações, o processamento da hora e da data não podem ser evitadas, mas o uso de APIs relacionadas ao tempo antes do JDK8 não é amigável. Naquela época, prazos como Joda poderiam ser escolhidos. Após o lançamento do JDK8, a nova API do tempo integra basicamente as vantagens de outras estruturas e pode ser usada diretamente.
Para os desenvolvedores de Java, eles precisam ser proficientes no uso de APIs para lidar com o tempo e as datas.
Os pontos de conhecimento específicos não serão mais listados. Escreverei um artigo especial no futuro para resumir o uso da API de tempo e data no JDK8.
16.xml Parsing/JSON Parsing
De fato, nenhum desses dois conteúdos é o conteúdo do J2SE, mas no desenvolvimento diário, a interação com outros programas e arquivos de configuração é cada vez mais inseparável com a análise desses dois formatos.
No entanto, para um desenvolvedor, ser capaz de entender alguns princípios e métodos de análise específica de XML/JSON ajudará você a escolher melhor a maneira certa para você em cada cenário específico para tornar seu programa mais eficiente e robusto.
XML: você precisa entender os princípios básicos de Dom Parsing e Sax Parsing e seus respectivos cenários aplicáveis
JSON: Você precisa entender o uso de algumas estruturas JSON comumente usadas, como Jackson, Fastjson, GSON, etc.
17. Usando Maven
O MAVEN não é um conteúdo em Java, mas Maven é revolucionário e traz grande conveniência ao desenvolvimento de Java. A partir da introdução e gerenciamento de dependências, as atualizações e versões dos processos de desenvolvimento e até as atualizações de versão, o uso do MAVEN podem simplificar bastante a complexidade no processo de desenvolvimento, economizando muito tempo. Pode -se dizer que o Maven se tornou a configuração padrão para os desenvolvedores de Java. Por isso, também considero o Maven como um ponto de conhecimento básico para um desenvolvedor de Java. Acrescentarei algumas das minhas experiências e habilidades ao usar o Maven no futuro, para não entrar em detalhes aqui.
18. genéricos
Este é um novo conceito introduzido pelo JDK5. Na verdade, é um açúcar sintático. Será um pouco conveniente ao escrever código Java. Geralmente, para o desenvolvimento de aplicativos ou negócios, ele só precisa ser usado de maneira simples e pode não ser necessariamente usada para definir genéricos. No entanto, alguns componentes públicos básicos serão usados. Você pode dar uma olhada mais de perto nesta parte quando necessário. Geralmente, pode ser usado simplesmente.
19. marcação
Também foi introduzido após o JDK5. A Spring é uma excelente estrutura e começou com o XML como o arquivo de configuração padrão. No entanto, após o Spring3, especialmente após o aumento do Spring-Boot, é cada vez mais recomendável usar anotações para simplificar o arquivo de configuração XML. Para desenvolvedores, ele pode economizar muito tempo na configuração XML. No entanto, a desvantagem é que a anotação está espalhada em várias classes. Ao contrário do XML, ele pode ter um entendimento e gerenciamento globais de todas as configurações, portanto, não há como substituir completamente todo o XML. Para desenvolvedores comuns, você pode apenas usar anotações. Alguns desenvolvedores com componentes públicos podem precisar entender a definição e a implementação das anotações, e você pode dar uma olhada mais de perto quando precisar deles.
20.rmi
O remotemethodinvocation é uma interface de chamada remota exclusiva do idioma Java e é relativamente simples e conveniente de usar. No entanto, quando são necessárias situações entre idiomas, outros métodos como o WebService são necessários para apoiá-lo. De um modo geral, os programas não precisam usar o RMI, mas podem ser usados em situações específicas. Estou em um projeto, usando o RMI para controlar o início e a parada remota do programa.
21.jni
A interface nativa do Java permite que os métodos de interface local sejam chamados no Java, que geralmente é usado para chamar o código C/C ++. Deve -se notar que o problema do caminho de carregar o arquivo SO/DLL no Java não é complicado para chamar a própria interface, mas geralmente leva muito tempo para carregar a biblioteca de interface local necessária.
O exposto acima é apenas uma breve introdução aos meus pontos de vista e apresentações sobre esses pontos de conhecimento básicos de Java e pontos técnicos. Todos esses conteúdos são todos derivados de algum resumo do meu uso de Java ao longo dos anos. Espero dar alguma experiência àqueles que acabaram de ser expostos a Java ou pretendem se desenvolver a partir de Java. Espero aprender e usar o Java com mais eficiência e evitar perder tempo valioso. Ainda existem algum conteúdo incompleto nisso e eles serão adicionados através de artigos futuros. Devido a habilidades pessoais limitadas, é claro que haverá alguns erros e omissões. Bem -vindo para me corrigir, discutir juntos e melhorar este artigo juntos, esperando que ele possa realmente ajudar as pessoas necessitadas.
O resumo acima dos pontos de conhecimento Java - algumas sugestões para iniciantes em Java (deve ler para iniciantes) são todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.