Introdução a Linguagem Java · Introdução a Linguagem Java Professor: José Alexandre Macedo...
Transcript of Introdução a Linguagem Java · Introdução a Linguagem Java Professor: José Alexandre Macedo...
Aula 01
Introdução a Linguagem Java
Professor: José Alexandre Macedo
versão: 1.0
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
• 1994 - Sun criou efetivamente o Java para rodar aplicações no browser
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
• 1994 - Sun criou efetivamente o Java para rodar aplicações no browser
Java nasceu com um objetivo em mente, foi lançado com outro, mas, no •final, decolou mesmo no desenvolvimento de aplicações
do lado do servidor
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
• 1994 - Sun criou efetivamente o Java para rodar aplicações no browser
Java nasceu com um objetivo em mente, foi lançado com outro, mas, no •final, decolou mesmo no desenvolvimento de aplicações
do lado do servidor
• 2009 - A Oracle compra a Sun
Breve história do Java
• 1992 - Sun criou um time para desenvolver inovações tecnológicas
• Java era apenas um interpretador para pequenos dispositivos
• 1994 - Sun criou efetivamente o Java para rodar aplicações no browser
Java nasceu com um objetivo em mente, foi lançado com outro, mas, no •final, decolou mesmo no desenvolvimento de aplicações
do lado do servidor
• 2009 - A Oracle compra a Sun
• 2014 - Surge a versão Java 8
Compilando um programa em C...
Compilando um programa em C...
Máquina Virtual Java
Java além da linguagem
Pilares
•Máquina Virtual Java (JVM)
•Grande conjunto de APIs
•Linguagem Java
Java além da linguagem
Java é uma plataforma de desenvolvimento e execução
completa
Java além da linguagem
Pilares
•Máquina Virtual Java (JVM)
•Grande conjunto de APIs
•Linguagem Java
Máquina Virtual Java
•Abstrai a camada de hardware e a
comunicação com o Sistema Operacional
•Possui suas próprias instruções de
máquina (assembly)
Máquina Virtual Java
•A JVM executa instruções de máquina
genéricas no Sistema Operacional
Máquina Virtual Java
•Para executar aplicativos escritos em
Java os usuários precisam ter a JVM
instalada
Máquina Virtual Java
•Não é possível baixar apenas a JVM no
site da Oracle
Máquina Virtual Java
•Não é possível baixar apenas a JVM no
site da Oracle
•A opção disponível é o Java Runtime
Environment (JRE)
Máquina Virtual Java
•Não é possível baixar apenas a JVM no
site da Oracle
•A opção disponível é o Java Runtime
Environment (JRE)
JRE = JVM + APIs
O que eu preciso para desenvolver em Java?
O que eu preciso para desenvolver em Java?
O JRE é suficiente?
O que eu preciso para desenvolver em Java?
JDKJVM +APIs +
Compilador + Outras
Ferramentas
Java Development Kit
JVM é uma especificação
•O que é uma especificação?
•Qual a vantagem de ser uma
especificação?
JVM é uma especificação
•O que é uma especificação?
•Qual a vantagem de ser uma
especificação?
• Independência do fabricante
•Competitividade
Java é compilado ou interpretado?
Java é
compilado E interpretado!
O que existe por trás de um programa Java?
.java .class JVM
Compilação Interpretação
O que existe por trás de um programa Java?
.java .class JVM
Compilação Interpretação
bytecodes
Bytecodes Java
•Bytecodes são instruções de máquina
virtual
•Equivalentes aos mnemônicos (comandos)
do assembly
Bytecodes Java
javap
Ano.class
Compilação
Ambiente de execução multi-linguagem
.java
.class JVM
Compilações
específicas
Interpretação
.scala
.ruby
Primeiro Programa Java
• Hello World!!!
public class Principal{
public static void main(String[] args)
{
System.out.println("Olá Mundo!!");
}
}
Compilando...
• Comando: javac• Sintaxe: javac [NomeDaClasse].java
• Exemplo: javac HelloWorld.java
Executando...
• Comando: java• Sintaxe: java [NomeDaClasse]
• Exemplo: java HelloWorld
Declarando e usando variáveis
• Em um programa podemos declarar variáveis e usá-las
• Por exemplo, é possível ter uma variável idade que guarda um número inteiro:
int idade;
Variáveis
Declaração vs. Inicialização
Variáveis
Declaração
int a;
boolean b;
float x, y, z;
Inicialização
a = 10; //supõe que a já estava declarada.
boolean b = false; //declara e inicializa b
Tipos Primitivos
Tipo Tamanho
boolean {true, false}
byte 8-bit
short 16-bit
int 32-bit
long 64-bit
char 16-bit (unsigned)
float 32-bit
double 64-bitPonto
flutuante
Inteiros
Booleano
Operadores+ op1 + op2 Soma op1 e op2; Concatenação.
- op1 - op2 Subtrai op2 de op1
* op1 * op2 Multiplica op1 por op2
/ op1 / op2 Divide op1 por op2
% op1 % op2 Resto da divisão de op1 por op2.
> op1 > op2 Retorna true se op1 é maior que op2
>= op1 >= op2 Retorna true se op1 é maior que ou igual
a op2
< op1 < op2 Retorna true se op1 é menor que op2
<= op1 <= op2 Retorna true se op1 é menor que ou
igual a op2
== op1 == op2 Retorna true se op1 e op2 são iguais.
!= op1 != op2 Retorna true se op1 e op2 são diferentes
Exercícios Variáveis e Tipos Primitivos
Discussão
convenções de código
e
código legível
Casting e Promoção
Atribuindo valores para variáveis com tipos diferentes
Casting e Promoção
Atribuindo valores para variáveis com tipos diferentes
Casting e Promoção
Isso não compila!
Atribuindo valores para variáveis com tipos
diferentes
Casting e Promoção
E esse trecho compila?
Casting e Promoção
Não compila!
E esse trecho compila?
Casting e Promoção
E esse?
Casting e Promoção
Esse compila
E esse?
Casting e Promoção
Como fazer para (por exemplo) armazenar um valor do tipo double em uma variável int?
Casting e Promoção
Como fazer para (por exemplo) armazenar um valor do tipo double em uma variável int?
Realizando um casting!
O if e o else
• Uma condição booleana é qualquer expressão que retorne true ou false
int idade = 15;
if (idade < 18) {
System.out.println("Não pode entrar");
}
O if e o else
• Podemos determinar qual código deve ser executado caso o resultado dê false
int idade = 15;
if (idade < 18) {
System.out.println("Não pode entrar");
} else {
System.out.println("Pode entrar");
}
O if e o else
• Expressões booleanas
• Operadores lógicos
• “E" é representado pelo &&
• "OU" é representado pelo ||int idade = 15;
boolean amigoDoDono = true;
if (idade < 18 && amigoDoDono == false) {
System.out.println("Não pode entrar");
} else {
System.out.println("Pode entrar");
}
Laços de Repetição
•While
int idade = 15;
while (idade < 18) {
System.out.println(idade);
idade = idade + 1;
}
Laços de Repetição
•While (outro exemplo)
int i = 0;
while (i < 10) {
System.out.println(i);
i = i + 1;
}
Laços de Repetição
•For
for (inicializacao; condicao; incremento) {
codigo;
}
Laços de Repetição
•For
for (int i = 0; i < 10; i = i + 1) {
System.out.println("olá!");
}
Exercícios
1. Imprima todos os números de 120 a 530
2. Imprima a soma de 1 até 1000
Controlando Loops
Controlando Loops
Escopo de variável• Trecho de código em que aquela variável existe e onde é
possível acessá-la
Problemas do Paradigma Procedural
Problemas do Paradigma Procedural
O problema da validação do CPF
Problemas do Paradigma Procedural
Alguém te obriga
a validar o CPF?
O problema da validação do CPF
Problemas do Paradigma Procedural
Quantos formulários
você tem?
O problema da validação do CPF
Problemas do Paradigma Procedural
O que acontece quando
chega um novo
programador no time?
O problema da validação do CPF
Problemas do Paradigma Procedural
Os desenvolvedores precisam saber de
muitas informações que geralmente
não estão relacionadas à sua parte no
sistema
Problemas do Paradigma Procedural
Outro problema é ler e
entender o código escrito por
outros desenvolvedores...
No que a orientação a objetos vai ajudar?
•Organização
•Escrever menos
•Concentrar as responsabilidades
•Evoluir os sistemas
•E muito mais...