Introdução a Linguagem Java · Introdução a Linguagem Java Professor: José Alexandre Macedo...

70
Aula 01 Introdução a Linguagem Java Professor: José Alexandre Macedo versão: 1.0

Transcript of Introdução a Linguagem Java · Introdução a Linguagem Java Professor: José Alexandre Macedo...

Page 1: Introdução a Linguagem Java · 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

Aula 01

Introdução a Linguagem Java

Professor: José Alexandre Macedo

versão: 1.0

Page 2: Introdução a Linguagem Java · 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

Breve história do Java

• 1992 - Sun criou um time para desenvolver inovações tecnológicas

Page 3: Introdução a Linguagem Java · 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

Breve história do Java

• 1992 - Sun criou um time para desenvolver inovações tecnológicas

• Java era apenas um interpretador para pequenos dispositivos

Page 4: Introdução a Linguagem Java · 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

Breve história do Java

• 1992 - Sun criou um time para desenvolver inovações tecnológicas

• Java era apenas um interpretador para pequenos dispositivos

Page 5: Introdução a Linguagem Java · 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

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

Page 6: Introdução a Linguagem Java · 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

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

Page 7: Introdução a Linguagem Java · 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

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

Page 8: Introdução a Linguagem Java · 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

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

Page 9: Introdução a Linguagem Java · 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

Compilando um programa em C...

Page 10: Introdução a Linguagem Java · 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

Compilando um programa em C...

Page 11: Introdução a Linguagem Java · 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

Máquina Virtual Java

Page 12: Introdução a Linguagem Java · 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

Java além da linguagem

Pilares

•Máquina Virtual Java (JVM)

•Grande conjunto de APIs

•Linguagem Java

Page 13: Introdução a Linguagem Java · 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

Java além da linguagem

Java é uma plataforma de desenvolvimento e execução

completa

Page 14: Introdução a Linguagem Java · 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

Java além da linguagem

Pilares

•Máquina Virtual Java (JVM)

•Grande conjunto de APIs

•Linguagem Java

Page 15: Introdução a Linguagem Java · 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

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)

Page 16: Introdução a Linguagem Java · 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

Máquina Virtual Java

•A JVM executa instruções de máquina

genéricas no Sistema Operacional

Page 17: Introdução a Linguagem Java · 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

Máquina Virtual Java

•Para executar aplicativos escritos em

Java os usuários precisam ter a JVM

instalada

Page 18: Introdução a Linguagem Java · 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

Máquina Virtual Java

•Não é possível baixar apenas a JVM no

site da Oracle

Page 19: Introdução a Linguagem Java · 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

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)

Page 20: Introdução a Linguagem Java · 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

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

Page 21: Introdução a Linguagem Java · 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

O que eu preciso para desenvolver em Java?

Page 22: Introdução a Linguagem Java · 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

O que eu preciso para desenvolver em Java?

O JRE é suficiente?

Page 23: Introdução a Linguagem Java · 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

O que eu preciso para desenvolver em Java?

JDKJVM +APIs +

Compilador + Outras

Ferramentas

Java Development Kit

Page 24: Introdução a Linguagem Java · 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

JVM é uma especificação

•O que é uma especificação?

•Qual a vantagem de ser uma

especificação?

Page 25: Introdução a Linguagem Java · 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

JVM é uma especificação

•O que é uma especificação?

•Qual a vantagem de ser uma

especificação?

• Independência do fabricante

•Competitividade

Page 26: Introdução a Linguagem Java · 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

Java é compilado ou interpretado?

Page 27: Introdução a Linguagem Java · 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

Java é

compilado E interpretado!

Page 28: Introdução a Linguagem Java · 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

O que existe por trás de um programa Java?

.java .class JVM

Compilação Interpretação

Page 29: Introdução a Linguagem Java · 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

O que existe por trás de um programa Java?

.java .class JVM

Compilação Interpretação

bytecodes

Page 30: Introdução a Linguagem Java · 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

Bytecodes Java

•Bytecodes são instruções de máquina

virtual

•Equivalentes aos mnemônicos (comandos)

do assembly

Page 31: Introdução a Linguagem Java · 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

Bytecodes Java

javap

Ano.class

Compilação

Page 32: Introdução a Linguagem Java · 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

Ambiente de execução multi-linguagem

.java

.class JVM

Compilações

específicas

Interpretação

.scala

.ruby

Page 33: Introdução a Linguagem Java · 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

Primeiro Programa Java

• Hello World!!!

public class Principal{

public static void main(String[] args)

{

System.out.println("Olá Mundo!!");

}

}

Page 34: Introdução a Linguagem Java · 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

Compilando...

• Comando: javac• Sintaxe: javac [NomeDaClasse].java

• Exemplo: javac HelloWorld.java

Page 35: Introdução a Linguagem Java · 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

Executando...

• Comando: java• Sintaxe: java [NomeDaClasse]

• Exemplo: java HelloWorld

Page 36: Introdução a Linguagem Java · 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

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;

Page 37: Introdução a Linguagem Java · 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

Variáveis

Declaração vs. Inicialização

Page 38: Introdução a Linguagem Java · 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

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

Page 39: Introdução a Linguagem Java · 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

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

Page 40: Introdução a Linguagem Java · 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

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

Page 41: Introdução a Linguagem Java · 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

Exercícios Variáveis e Tipos Primitivos

Page 42: Introdução a Linguagem Java · 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

Discussão

convenções de código

e

código legível

Page 43: Introdução a Linguagem Java · 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

Casting e Promoção

Atribuindo valores para variáveis com tipos diferentes

Page 44: Introdução a Linguagem Java · 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

Casting e Promoção

Atribuindo valores para variáveis com tipos diferentes

Page 45: Introdução a Linguagem Java · 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

Casting e Promoção

Isso não compila!

Atribuindo valores para variáveis com tipos

diferentes

Page 46: Introdução a Linguagem Java · 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

Casting e Promoção

E esse trecho compila?

Page 47: Introdução a Linguagem Java · 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

Casting e Promoção

Não compila!

E esse trecho compila?

Page 48: Introdução a Linguagem Java · 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

Casting e Promoção

E esse?

Page 49: Introdução a Linguagem Java · 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

Casting e Promoção

Esse compila

E esse?

Page 50: Introdução a Linguagem Java · 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

Casting e Promoção

Como fazer para (por exemplo) armazenar um valor do tipo double em uma variável int?

Page 51: Introdução a Linguagem Java · 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

Casting e Promoção

Como fazer para (por exemplo) armazenar um valor do tipo double em uma variável int?

Realizando um casting!

Page 52: Introdução a Linguagem Java · 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

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");

}

Page 53: Introdução a Linguagem Java · 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

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");

}

Page 54: Introdução a Linguagem Java · 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

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");

}

Page 55: Introdução a Linguagem Java · 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

Laços de Repetição

•While

int idade = 15;

while (idade < 18) {

System.out.println(idade);

idade = idade + 1;

}

Page 56: Introdução a Linguagem Java · 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

Laços de Repetição

•While (outro exemplo)

int i = 0;

while (i < 10) {

System.out.println(i);

i = i + 1;

}

Page 57: Introdução a Linguagem Java · 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

Laços de Repetição

•For

for (inicializacao; condicao; incremento) {

codigo;

}

Page 58: Introdução a Linguagem Java · 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

Laços de Repetição

•For

for (int i = 0; i < 10; i = i + 1) {

System.out.println("olá!");

}

Page 59: Introdução a Linguagem Java · 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

Exercícios

1. Imprima todos os números de 120 a 530

2. Imprima a soma de 1 até 1000

Page 60: Introdução a Linguagem Java · 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

Controlando Loops

Page 61: Introdução a Linguagem Java · 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

Controlando Loops

Page 62: Introdução a Linguagem Java · 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

Escopo de variável• Trecho de código em que aquela variável existe e onde é

possível acessá-la

Page 63: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

Page 64: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

O problema da validação do CPF

Page 65: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

Alguém te obriga

a validar o CPF?

O problema da validação do CPF

Page 66: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

Quantos formulários

você tem?

O problema da validação do CPF

Page 67: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

O que acontece quando

chega um novo

programador no time?

O problema da validação do CPF

Page 68: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

Os desenvolvedores precisam saber de

muitas informações que geralmente

não estão relacionadas à sua parte no

sistema

Page 69: Introdução a Linguagem Java · 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

Problemas do Paradigma Procedural

Outro problema é ler e

entender o código escrito por

outros desenvolvedores...

Page 70: Introdução a Linguagem Java · 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

No que a orientação a objetos vai ajudar?

•Organização

•Escrever menos

•Concentrar as responsabilidades

•Evoluir os sistemas

•E muito mais...