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.
Quer ter acesso a todos os cursos desse Guia?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
-
ArtigoGarbage Collection: Entendendo e otimizando - Parte 1
-
ArtigoGarbage Collection: Entendendo e otimizando - Parte 2
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:
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:
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!
-
Documenta��oJava: vari�veis e constantes
-
CursoOperadores da linguagem Java Novo!
-
ArtigoOperadores l�gicos e matem�ticos da linguagem Java
-
Documenta��oJava: operadores de atribui��o, aritm�ticos, relacionais e l�gicos
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
-
ArtigoClasses Wrapper: Explorando as classes que empacotam os tipos primitivos
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:
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
-
ArtigoEntendendo e trabalhando com Strings em Java
-
ArtigoJava String: Manipulando m�todos da classe String
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
-
ArtigoDiferen�as entre String, StringBuilder e StringBuffer em Java
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
-
ArtigoCompreendendo o uso de pacotes, ou packages - Revista Easy Java Magazine 28
-
Documenta��oJava: Declara��o e utiliza��o de classes
-
ArtigoConstrutores em Java
-
ArtigoM�todos: m�dulos de programa em Java
-
ArtigoModificadores de Acesso em Java
-
ArtigoClasses abstratas e interfaces em Java
-
ArtigoEst�ticos != Inst�ncia - revista easy Java Magazine 9
-
ArtigoClasses An�nimas e Aninhadas em Java
-
ArtigoIntrodu��o aos Default Methods do Java 8
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
-
ArtigoMatrizes - Aprenda a trabalhar com vetores bidimensionais - Revista easy Java Magazine 22
-
ArtigoEstrutura de dados: Primeiros passos com m�todos de busca
-
ArtigoProgramando com estruturas de dados e padr�es de projeto
-
ArtigoEstruturas de dados com classes gen�ricas
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
-
ArtigoAprenda a trabalhar com exce��es no Java
-
ArtigoExce��es em Java
-
ArtigoTratando exce��es em Java
-
ArtigoRecursos do Java 7 para o tratamento de exce��es
-
ArtigoChecked Exceptions versus Unchecked Exceptions: Trabalhando com exce��es
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:
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 Java
-
ArtigoSerializa��o de Objetos em Java
-
ArtigoJava: Arquivos e fluxos de dados
-
V�deoManipulando arquivos em Stream com Java 8
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:
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
-
ArtigoSimplificando o uso de Threads
-
ArtigoThreads: paralelizando tarefas com os diferentes recursos do Java
-
ArtigoPrograma��o paralela em Java
-
ArtigoJava 8: Conhe�a os recursos para a programa��o concorrente
-
ArtigoProcessamento paralelo em suas aplica��es
-
DevCastInstru��o FOR paralela em Java
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
-
ArtigoJava Collections: Como utilizar Collections
-
ArtigoProgramando com o Java Collections Framework
-
ArtigoDominando o Java Collections Framework e Generics
-
ArtigoJava Collections: Set, List e Iterator
-
ArtigoDiferen�as entre TreeSet, HashSet e LinkedHashSet em Java
-
ArtigoConhecendo a interface Map do Java
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:
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:
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());
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:
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
-
ArtigoParadigmas de Programa��o: Estruturado e Orientado a Objetos
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:
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
-
ArtigoAbstra��o, Encapsulamento e Heran�a: Pilares da POO em Java
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:
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 Java
-
ArtigoJava Orientado a Objetos: Polimorfismo em a��o
-
ArtigoSobrecarga e sobreposi��o de m�todos em Orienta��o a Objetos
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 Objetos
-
ArtigoUtiliza��o dos princ�pios SOLID na aplica��o de Padr�es de Projeto
-
ArtigoDesenvolvendo software s�lido com Java
-
ArtigoQualidade no c�digo Java com os princ�pios S.O.L.I.D.
-
ArtigoArquitetura - O Princ�pio da responsabilidade �nica
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
-
ArtigoOrienta��o a Objetos: Da teoria � pr�tica com a linguagem UML
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
-
ArtigoDicas de qualidade para o c�digo Java
-
ArtigoBoas pr�ticas de Programa��o
-
ArtigoCodificando com selo de qualidade
-
ArtigoComo desenvolver um c�digo fonte de qualidade em Java
-
MicroexemploN�meros m�gicos: O que s�o e como corrigir
-
ArtigoComo adotar a an�lise est�tica de c�digo
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.
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.