Quer ter acesso a todos os cursos desse Guia?
Guia Completo de Java
Neste Guia de Referência você encontrará todo o conteúdo que precisa para começar a programar com a linguagem Java, a sua caixa de ferramentas base para criar aplicações com Java.
A plataforma Java
Você já deve ter ouvido falar que Java é tanto uma linguagem quanto uma plataforma. Isso quer dizer que, além da linguagem, o programador Java também conta com um conjunto de APIs que facilitam o desenvolvimento ao oferecerem soluções para situações comuns de desenvolvimento.
Confira como a plataforma Java foi organizada para atender as necessidades de diferentes tipos de aplicações:
- Java SE: Representa a base do Java, sendo composta pelas APIs e bibliotecas básicas para possibilitar o desenvolvimento de aplicativos de linha de comando e desktop. Já ouviu falar em Swing? Sim, ele faz parte do Java SE (Java Standard Edition);
- Java ME: A Java Micro Edition é a plataforma voltada para dispositivos móveis e embarcados, com capacidade de processamento reduzida, como os utilizados na criação de produtos para a Internet das Coisas;
- Java EE: Voltada para o desenvolvimento de soluções web e corporativas, a Java Enterprise Edition é uma especificação que agrupa outras, sendo, por isso, conhecida como especificação “guarda-chuva”.
Aprenda mais sobre a plataforma Java:
Máquina Virtual Java
Na máquina virtual Java, ou JVM, é onde a sua aplicação será executada. É ela, também, a responsável pela característica multiplataforma do Java. Um programa escrito nessa linguagem será executado em qualquer plataforma, seja ela um notebook, smartphone ou torradeira, que possua uma máquina virtual Java implementada.
Um dos recursos mais conhecidos da JVM é o Garbage Collection. É ele que é acionado com certa frequência para limpar da memória objetos que não estão sendo utilizados, evitando desperdício de espaço e que sua aplicação deixe de funcionar por falta dela. Para se aprofundar neste assunto preparamos os seguintes artigos:
-
ArtigoIntrodução ao Java Garbage Collection
Ver introdução
free -
ArtigoGarbage Collection: Entendendo e otimizando - Parte 1
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoGarbage Collection: Entendendo e otimizando - Parte 2
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Algumas vezes, a depender da proposta de sua aplicação, pode ser necessário fazer customizações na JVM visando melhoria na performance. Para aprender sobre isso, acesse:
Primeiros passos no Java
Assim como em qualquer outra linguagem, no Java você encontrará tópicos de conhecimento fundamental. Dominá-los permite programar um código mais limpo e fácil de ser compreendido, como veremos nos vídeos a seguir:
-
MeetUpJava: Linguagem e PlataformaQuer ter acesso completo a todos os conteúdos?Saiba mais
-
MeetUpJava: Linguagem e Plataforma - perguntas e respostasQuer ter acesso completo a todos os conteúdos?Saiba mais
-
CursoO que é Java?
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
MeetUpConhecendo o jeito Java de programarQuer ter acesso completo a todos os conteúdos?Saiba mais
-
MeetUpConhecendo o jeito Java de programar: perguntas e respostasQuer ter acesso completo a todos os conteúdos?Saiba mais
Diferente de outras linguagens, no Java o seu primeiro código será escrito dentro de um método de uma classe. Pensando nisso, nada melhor que começar pela criação da sua primeira classe Java. Saiba mais nesses conteúdos:
-
CursoLinguagem Java: tipos de dados Novo!
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
DocumentaçãoJava: Declaração e utilização de classes
Ver introdução
free -
CursoLinguagem Java: Hello Word! Novo!
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais
Após aprender sobre classes você deve estar curioso para saber como declarar variáveis e realizar operações com elas. Acompanhe esses próximos passos nos posts:
-
CursoLinguagem Java: variáveis e constantes Novo!
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
DocumentaçãoJava: variáveis e constantes
Ver introdução
free -
CursoOperadores da linguagem Java Novo!
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoOperadores lógicos e matemáticos da linguagem Java
Ver introdução
free -
DocumentaçãoJava: operadores de atribuição, aritméticos, relacionais e lógicos
Ver introdução
free
No Java as enums são um poderoso recurso para a criação de objetos imutáveis. Saiba mais sobre elas nos posts:
Você já ouviu falar que tudo no Java são objetos? Se ainda não, não tem problema. Os artigos a seguir te deixarão por dentro desse assunto:
-
ArtigoJava Object Class: Entendendo a classe Object
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoClasses Wrapper: Explorando as classes que empacotam os tipos primitivos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Agora que você já conheceu os componentes básicos de um programa Java, que tal olhar um pouco mais de perto a criação de uma classe? Para vermos na prática como funciona a criação precisamos, primeiro, montar o nosso ambiente, como mostra os conteúdos a seguir:
Com o ambiente pronto, confira neste 5 minutos como criar sua primeira classe:

Ver introdução
Strings
A manipulação de texto é algo bastante comum no desenvolvimento de aplicações. Em Java, a estrutura principal para isso é a classe String, que nos fornece vários métodos para sua manipulação. Nos posts abaixo você encontrará conteúdos que abordam desde os métodos básicos, até outras opções para que possa manipular texto da maneira mais adequada para sua solução.
-
ArtigoString: Trabalhando com texto em Java
Ver introdução
free -
ArtigoEntendendo e trabalhando com Strings em Java
Ver introdução
free -
ArtigoJava String: Manipulando métodos da classe String
Ver introdução
free
Além da classe String, temos também as classes StringBuilder e StringBuffer. Para aprender sobre elas e as diferenças em relação à String, acesse:
-
ArtigoA Classe StringBuilder em Java
Ver introdução
free -
ArtigoDiferenças entre String, StringBuilder e StringBuffer em Java
Ver introdução
free
Algumas vezes precisamos de uma ferramenta mais específica para processar Strings. É nesse momento que as expressões regulares podem ajudar. Saiba mais neste artigo:
Estruturas de condição e repetição no Java
Duas ferramentas importantes e presentes na lógica de programação de qualquer código são as estruturas de condição e repetição. A estrutura de condição nos permite criar um bloco de código a ser executado apenas se determinada condição for atendida. Já a estrutura de repetição nos permite criar um bloco de código que pode ser executado várias vezes, enquanto a condição especificada for verdadeira.
Aprenda sobre essas estruturas nos posts abaixo:
Entrada e saída de dados
Saber apresentar dados na tela e ler dados do teclado é um passo fundamental no aprendizado da programação. Lembre-se que o principal objetivo de um programa é processar os dados do usuário e exibir os resultados. Para isso temos os recursos de Entrada/Saída, ou In/Out da linguagem. Aprenda sobre eles nos posts abaixo:
Módulos do código Java
Saber como organizar o código é fundamental para sua manutenção e reutilização. Em Java, o código é organizado em pacotes, classes e métodos. Dominados esses conceitos, e utilizando modificadores de acesso, podemos controlar como cada classe ou método poderá ser reaproveitado pelos demais. Para aprender sobre isso, acesse o conteúdo abaixo:
-
ArtigoEntendendo a estrutura de um código Java
Ver introdução
free -
ArtigoCompreendendo o uso de pacotes, ou packages - Revista Easy Java Magazine 28
Ver introdução
free -
DocumentaçãoJava: Declaração e utilização de classes
Ver introdução
free -
ArtigoConstrutores em Java
Ver introdução
free -
ArtigoMétodos: módulos de programa em Java
Ver introdução
free -
ArtigoModificadores de Acesso em Java
Ver introdução
free -
ArtigoClasses abstratas e interfaces em Java
Ver introdução
free -
ArtigoEstáticos != Instância - revista easy Java Magazine 9
Ver introdução
free -
ArtigoClasses Anônimas e Aninhadas em Java
Ver introdução
free -
ArtigoIntrodução aos Default Methods do Java 8
Ver introdução
free
Estrutura de Dados
Ao começar a desenvolver sistemas um pouco mais avançados, você se deparará com a necessidade de organizar os dados que são manipulados no código. Para isso, é comum o uso de estruturas de dados, que, como o nome indica, fornecem uma forma padrão para agrupar e simplificar a gerência de dados com características em comum. Os links abaixo trazem um conteúdo que possibilitará um detalhamento sobre esse tema:
-
ArtigoVetores - Revista easy Java Magazine 16 - Parte 1
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoMatrizes - Aprenda a trabalhar com vetores bidimensionais - Revista easy Java Magazine 22
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoEstrutura de dados: Primeiros passos com métodos de busca
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoProgramando com estruturas de dados e padrões de projeto
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoEstruturas de dados com classes genéricas
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Tratamento de exceções
É comum a ocorrência de exceções durante a execução de um programa. O que não é comum é não nos prepararmos para elas. Uma exceção é um evento diferente daquilo que normalmente o software espera que aconteça. Quando não tratamos exceções, o software fica sem saber o que fazer com ela e como continuar sua execução, o que normalmente leva à paralisação do sistema. Para aprender a tratar exceções, acesse:
-
ArtigoComo tratar exceções na linguagem Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoAprenda a trabalhar com exceções no Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoExceções em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoTratando exceções em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoRecursos do Java 7 para o tratamento de exceções
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoChecked Exceptions versus Unchecked Exceptions: Trabalhando com exceções
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Todo programa pode e vai falhar em algum momento. Aplicações consistentes se preparam adequadamente para esse momento. Aprenda no curso abaixo como isso é possível com tratamento de exceções:

Ver grade completa
Serialização e fluxo de dados
Logo você poderá se perguntar: Como salvar os dados que utilizo em minha aplicação para que consiga utilizá-los posteriormente? A resposta é simples: Serialização. Quando serializamos um objeto, estamos o transformando em um array de bytes, formato utilizado para salvar arquivos.
Os conteúdos abaixo o ensinarão a fazer isso:
-
VídeoComo serializar/desserializar objetos em JavaQuer ter acesso completo a todos os conteúdos?Saiba mais
-
ArtigoSerialização de Objetos em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava: Arquivos e fluxos de dados
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
VídeoManipulando arquivos em Stream com Java 8Quer ter acesso completo a todos os conteúdos?Saiba mais
Agora, se você deseja aprender como salvar os dados em um banco de dados, consulte o Guia de Carreira Programador Java e veja outros conteúdos sobre a linguagem.
Sockets
Caso seu interesse seja aprender como enviar e receber dados e arquivos pela rede, saber programar com Sockets é fundamental. Compreender sockets é a primeira etapa para iniciar na programação distribuída. Para dominar esse assunto, acesse:
-
ArtigoProgramação de Sockets em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Socket: Entendendo a classe Socket e a ServerSocket em detalhes
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Socket: Transferência de Arquivos pela Rede
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoComo criar um Chat Multithread com Socket em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoProgramação distribuída com Sockets
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Threads
Com a multiplicação do número de núcleos presentes em um processador, saber como programar com threads é algo de grande relevância para fornecer sistemas com alto desempenho, que explorem ao máximo o poder computacional de servidores e desktops. Aprenda sobre esse assunto com os links abaixo:
-
ArtigoComo programar com Threads em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoSimplificando o uso de Threads
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoThreads: paralelizando tarefas com os diferentes recursos do Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoProgramação paralela em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava 8: Conheça os recursos para a programação concorrente
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoProcessamento paralelo em suas aplicações
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
DevCastInstrução FOR paralela em JavaQuer ter acesso completo a todos os conteúdos?Saiba mais
Collections
Neste momento é bem provável que você já tenha tido o primeiro contato com as coleções, afinal, uma coleção é uma estrutura de dados. Mas, por que só agora falar delas? É importante compreender os fundamentos por trás de um conceito antes de começar a utilizar algo mais avançado, com um nível mais alto de abstração.
De forma simples, uma coleção é uma lista de objetos. Como quando lidamos com dados é comum nos depararmos com diferentes necessidades de organização dos mesmos, o Java facilita esse trabalho nos fornecendo diferentes opções para mantê-los - de listas que se preocupam apenas em armazenar os dados em memória, a listas que evitam dados repetidos e os mantém ordenados.
Nos links abaixo você aprenderá como e quando adotar cada uma:
-
ArtigoConheça a API Java Collections
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Collections: Como utilizar Collections
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoProgramando com o Java Collections Framework
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoDominando o Java Collections Framework e Generics
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Collections: Set, List e Iterator
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoDiferenças entre TreeSet, HashSet e LinkedHashSet em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoConhecendo a interface Map do Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Generics
Generics é uma importante funcionalidade da linguagem Java que foi criada para facilitar o reuso do código e tornar a implementação mais segura e menos propensa a erros. Generics são bastante utilizados quando lidamos com coleções, por exemplo, e sua declaração é feita com os caracteres ‘<>’. Assim, quando declaramos uma lista, podemos especificar que essa lista somente poderá receber objetos de um tipo.
Com isso, caso o programador tente inserir um objeto de tipo diferente, o erro será identificado em tempo de compilação, e não mais em tempo de execução. Para aprender sobre Generics, acesse:
-
ArtigoJava Generics: Um guia completo sobre como utilizar
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoUsando Generics em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Generics: Trabalhando com Métodos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Generics: Reutilizando seu código
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Expressões Lambda
Um dos recursos mais jovens da linguagem Java agrega um toque de programação funcional a ela. Uma definição simples e um pouco abstrata é entender que uma expressão lambda é uma opção para programar uma função sem que para isso seja necessário declarar um nome e um tipo de retorno. Em geral, a expressão lambda é declarada no mesmo lugar em que será utilizada e possibilita um código menor e mais simples de manter.
A sintaxe de uma expressão lambda é bastante simples. Começamos declarando os parâmetros. Em seguida utilizamos o operador arrow. Por fim, declaramos o bloco de código a ser executado.
(Zero ou mais parâmetros) -> { /* bloco de código */ }
Para se aprofundar nesse assunto, acesse:
-
CursoO que são Lambda Expressions?
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
DevCastTrabalhando com Expressões Lambdas no Java 8Quer ter acesso completo a todos os conteúdos?Saiba mais
-
ArtigoProgramando com Java Lambda Expressions
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoComo aproveitar o máximo das Expressões Lambda em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Streams
Com o intuito de aprimorar a forma como manipulamos coleções de dados, o Java 8 trouxe a Streams API, conjunto de classes e interfaces que faz uso de conceitos da programação funcional e das expressões lambda para que escrevamos código mais claro e em menor quantidade.
Para isso, obtemos uma stream, a partir de uma coleção, por exemplo, e, sem nos preocuparmos com a forma como os dados serão percorridos, programamos algum tipo de processamento sobre os dados, como filtros, mapeamentos, entre outros, já fornecidos pela API.
Como exemplo, considere que temos uma lista de produtos e desejamos selecionar apenas aqueles cujo valor seja maior do que 5. O código para solucionar esse problema poderia ser:
List<produto> produtosFiltrados = produtos
.stream()
.filter((p) -> p.getValor() > 5)
.collect(Collectors.toList());
-
ArtigoJava Streams API: manipulando coleções de forma eficiente
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoStreams API: trabalhando com coleções de forma flexível em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
5 minutosJava Streams API - Trabalhando com coleções
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Reflection
O Java também dispõe de um recurso conhecido como Reflection. Com ele, em tempo de execução conseguimos acessar informações de uma classe, como os atributos e métodos, assim como instanciar essa classe e invocar um método. Isso nos permite estender funcionalidades de uma aplicação, por exemplo.
Mas antes de prosseguir, sem querer dar spoiler, você vai precisar de um pouco de familiaridade com as anotações em Java para entender esse poderoso conceito na prática. Saiba mais no artigo:
Reflection também é muito utilizado por IDEs, bibliotecas e frameworks, os quais precisam lidar com classes criadas por terceiros. Você já imaginou como aquela biblioteca que faz o parsing de objetos para JSON e vice-versa funciona? Como ela consegue converter qualquer objeto para JSON e o JSON para seu respectivo objeto? Via Reflection! :)
Para aprender sobre ele e saber como aplicar esse avançado recurso em alguns dos seus projetos acesse:
-
CursoJava Reflection API
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoReflection API: Reflexão em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoJava Reflection: Programando com Reflexão
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Orientação a objetos
A Orientação a Objetos é o paradigma de programação mais utilizado para o desenvolvimento de sistemas e tem como principal característica o planejamento e implementação do software a partir da representação de ‘coisas’ da vida real por meio de objetos.
Antes desse paradigma era comum criarmos sistemas utilizando o paradigma de programação estruturada. Porém, devido a limitações, aos poucos essa opção começou a ser substituída.
Conheça algumas das vantagens da Orientação a Objetos nesse DevCast:
Para compreender as diferenças entre a Programação Orientada a Objetos e a Estruturada, acesse:
-
ArtigoProgramação Orientada a Objetos x Programação Estruturada
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoParadigmas de Programação: Estruturado e Orientado a Objetos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Em Java, por uma "coincidência planejada" :), tudo são objetos, o que reforça ainda mais a relação entre a linguagem e esse paradigma. Portanto, se você pretende se tornar um bom programador Java, aprender Orientação a Objetos (OO) é fundamental. E agora, o que faço? Não se preocupe, os conteúdos abaixo ensinarão tudo o que você precisa para isso:
-
CursoBásico de Java e Orientação a Objetos
Ver grade completa
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoOrientação a Objetos em Java: uma abordagem completa
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoAprendendo POO e Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Pilares da Orientação a Objetos
Ao planejar a programação baseada em objetos, esse paradigma trouxe consigo uma série de conceitos, os quais levam a um código mais fácil de entender, manter e reutilizar. Esses conceitos são a abstração, encapsulamento, herança e polimorfismo, introduzidos no link abaixo:
Saiba mais sobre esses conceitos nos artigos:
-
ArtigoOs 4 pilares da Programação Orientada a Objetos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoAbstração, Encapsulamento e Herança: Pilares da POO em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
O encapsulamento é o pilar da Orientação a Objetos que nos permite ocultar informações e, ao mesmo tempo, atribuir segurança ao código. Quando encapsulamos o acesso a uma variável, por exemplo, não importa para o objeto que consome essa informação (o cliente), se o valor é obtido lendo o dado em memória ou se foi necessário acessar um banco de dados.
Imagine que você esteja em um restaurante e faça um pedido. É importante para você saber qual panela está sendo utilizada, a ordem de preparo dos nutrientes, entre outras coisas? Então, encapsular é a "arte" de deixar acessível ao cliente apenas aquilo que ele precisa saber. Para aprender mais sobre isso, acesse:
-
ArtigoEncapsulamento em Java: Primeiros passos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoEntendendo o Encapsulamento em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
E a herança? Como assim programar uma herança? Você herdou características de seus pais, avós e de outras gerações passadas, não é mesmo? Na Orientação a Objetos, quando precisamos fazer com que a classe B possua características de outra, definimos via código que a classe B herda dessa outra. Interessante, não? :) Ainda está achando um pouco confuso? Acesse o post:
O polimorfismo é um pilar da Orientação a Objetos que tem forte ligação com a herança. Algumas vezes, quando herdamos uma característica, precisamos adicionar a ela um comportamento diferente. Por exemplo: todo animal sabe correr, porém, cada um corre de uma maneira diferente. Para aprender como utilizar polimorfismo em Java, acesse:
-
VídeoPolimorfismo em JavaQuer ter acesso completo a todos os conteúdos?Saiba mais
-
ArtigoJava Orientado a Objetos: Polimorfismo em ação
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoSobrecarga e sobreposição de métodos em Orientação a Objetos
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Ao aplicar corretamente esses conceitos você terá como resultado um código eficiente, de fácil manutenção e reuso. Saiba que um código de qualidade não envelhece e você poderá reutilizá-lo em vários projetos. O post abaixo retrata esse assunto:
Coesão e acoplamento
Você já deve ter ouvido falar que um bom código precisa ter alta coesão e baixo acoplamento. No entanto, o que é a coesão e o acoplamento? A coesão é uma medida que indica quão bem delimitado está cada módulo do nosso código. Caso ele faça mais coisas do que deveria, dizemos que temos um módulo com baixa coesão. Já o acoplamento mede o grau de dependência de um módulo em relação aos demais. Caso ele dependa de muitos módulos, dizemos que ele está com acoplamento alto. Essas situações devem ser evitadas, pois tornam o código muito mais difícil de manter e evoluir.
Para aprender mais detalhadamente sobre esse assunto, acesse:
Princípios SOLID
Após compreender os pilares da Orientação a Objetos na teoria e na prática, um importante passo na busca pelo código de qualidade é aprender sobre os princípios SOLID.
Esses princípios nos ajudam a pensar no problema a ser modelado de forma orientada a objetos, propondo definições que nos levam a um design de código coeso e com baixo acoplamento, o que o torna fácil de ler, manter e reutilizar.
E por que esse nome, por que SOLID? Esse termo é um acrônimo para as cinco "regras" que o compõem:
- S - Single Responsibility Principle - O Princípio da Responsabilidade Única define que cada classe deve ter apenas uma responsabilidade;
- O - Open Closed Principle - O Princípio do Aberto Fechado define que uma classe deve ser extensível (aberta para extensões) por outras classes, sem que para isso precise ser modificada (fechada para modificações);
- L - Liskov Substitution Principle - O Princípio da Substituição de Liskov está relacionado ao uso da herança e dita que devemos ser capazes substituir a classe filha pela classe pai sem que o funcionamento do software seja prejudicado;
- I - Interface Segregation Principle - O Princípio da Segregação de Interfaces preza pela correta definição de interfaces, de forma que os clientes que a consumam tenham acesso apenas àquilo que de fato é necessário;
- D - Dependency Inversion Principle - O Princípio da Inversão de Dependências sinaliza que devemos depender apenas de classes abstratas, e não de classes concretas;
Para se aprofundar de fato nesse assunto, acesse os posts abaixo:
-
DevCastSOLID: Melhorando a Qualidade dos seus Projetos Orientados a ObjetosQuer ter acesso completo a todos os conteúdos?Saiba mais
-
ArtigoUtilização dos princípios SOLID na aplicação de Padrões de Projeto
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoDesenvolvendo software sólido com Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoQualidade no código Java com os princípios S.O.L.I.D.
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoArquitetura - O Princípio da responsabilidade única
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Orientação a Objetos na prática
Agora que você já conhece os pilares da Orientação a Objetos, que tal pôr as mãos na massa? Pode dizer! Já estava na hora, não é mesmo? :)
Para isso reunimos uma seleção de artigos que abordam esse tema na prática. Confira abaixo:
-
ArtigoProgramação orientada a objetos com Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoOrientação a Objetos: Da teoria à prática com a linguagem UML
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Como apoio a esse conteúdo, não deixe de verificar os posts abaixo e aprenda como solucionar e/ou evitar os erros mais cometidos quanto adotamos o paradigma OO.
Boas práticas
Até o momento você aprendeu as principais tecnologias que compõem o Java, bem como utilizá-las de forma consistente. Que tal agora colocar em prática esses conhecimentos enquanto aprende técnicas avançadas no desenvolvimento com Java? Saiba como no curso:
Lembre-se que o aprendizado da linguagem Java precisa ser constante. Somente programando você conseguirá implementar códigos melhores. Os links abaixo te ajudarão a enriquecer esse conhecimento e agregar valor e qualidade às suas soluções:
-
ArtigoProgramando com boas práticas
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoDicas de qualidade para o código Java
-
ArtigoBoas práticas de Programação
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoCodificando com selo de qualidade
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoComo desenvolver um código fonte de qualidade em Java
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
MicroexemploNúmeros mágicos: O que são e como corrigir
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoComo adotar a análise estática de código
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
Ao prosseguir com a busca pelo código de qualidade, em algum momento você se deparará com o termo Clean Code. Mas, o que é isso? O Clean Code, ou Código Limpo, reúne uma série de práticas a serem aplicadas para obter um código fácil de compreender e evoluir.
-
ArtigoCódigo limpo com Clean Code
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais -
ArtigoQualidade no código Java com boas práticas e Clean Code
Ver introdução
Quer ter acesso completo a todos os conteúdos?Saiba mais
A qualidade do código também influencia na performance. Para conhecer algumas opções que te ajudarão a aprimorar o desempenho de suas aplicações, acesse:
Mais sobre Java
Além dos cursos e exemplos sugeridos nesse guia, a DevMedia publica com frequência novos conteúdos sobre Java, os quais você pode conferir nos Guias de Consulta abaixo:
-
Guia de CarreiraProgramador Java Guia
-
Guia de consultaHibernate Guia
-
Guia de consultaJSF - JavaServer Faces Guia
-
Guia de consultaSpring Framework Guia
-
Guia de consultaJava Enterprise Edition - Java EE Guia
-
Guia de consultaREST e Java Guia
-
Guia de consultaPadrões de Projeto em Java Guia
-
Guia de consultaTestes e DevOps Guia
-
Guia de consultaBigData com Java Guia
Além disso, você pode conferir todo o conteúdo de Java clicando aqui.
<Perguntas frequentes>