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

Post on 02-Aug-2020

47 views 0 download

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...