aulas java prof. marcelo heitor. síntese das aulas: capacitar os alunos na compreensão da...

31
Aulas Java Prof. Marcelo Heitor

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

AulasJava

Prof. Marcelo Heitor

Page 2: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Síntese das aulas:

Capacitar os alunos na compreensão da linguagem java.

Durante o curso será estudado parte do fundamento de java baseando-se no conceito de orientação a objetos.

Tópicos gerais:

# História e anatomia java;# Sintaxe e primitivos;# Condicionais;# Estruturas de repetição;# Conceitos de Orientação a Objetos;# Manipulação de arquivos (projeto em sala);

Page 3: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Sobre o professor: Marcelo Heitor Teixeira – [email protected]

# Certificações em tecnologia Java:SCJP – Sun Certified Java Programmer;SCWCD – Sun Certified Web Component Developer;SCJA – Sun Certified Java Associate;

# Analista de Infraestrutura Sênior – Capgemini – atuando no Complexo Tecnológico Banco do Brasil;

# Consultor na plataforma Java desde 2004;

# 13 anos de experiência em análise e desenvolvimento para web;

# Últimos 6 anos trabalhando com arquitetura e infra-estrutura para aplicações Java;

# Professor Faciplac;

Page 4: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Sobre a turma:

# Perfil da turma;# Experiência com desenvolvimento;# Razões pela qual está fazendo o curso;# Expectativas;

Page 5: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

O universo java:

Java

Desktop

WEB

Mobile e TV

Card

RFID

JSP

Servlet

JPA

Toplink

EJB

JSF

Framework

Design Pattern

Hibernate

Netbeans

Eclipse

DAO

MVC

POJO

Tomcat

GlassfishWebsphere

Weblogic

Applet

Entity Manger

JAR

Interface

Classe

FX

JAD

WEB.xml

SCJASCJP

SCEA

CDCCLDC

Model 1Model 2

FrontController

EntityBean

JEE

JSEJME

API

JDK

JREjavac

JNIJNDI

JDBC

MIDP

Struts

Datasource

context.xml

JMX

POO

Swing

AWT

RMIC SCWCD Midlet

Maven

Webservices

SCBCD

Facelets

JBOSS

E muito mais...

Page 6: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

História e anatomia java

Page 7: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Genealogia java:

# História e anatomia java:

BCPL e B Década 1960

CDécada de 1970

C++ Década 1980

JavaDécada de 1990

Page 8: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

O grande impacto na indústria de dispositivos eletrônicos pessoais foi

causado pelo surgimento do micro-processador.

Década de 1991, a Sun Microsystems (hoje da

Oracle) resolveu financiar um projeto liderado por James

Gosling.

Nasce então a linguagem “Java”, baseada no C++, que seria executada de forma a convergir computadores e dispositivos

eletrônicos criados por diferentes fabricantes. (tentativa de antecipar o

mundo digital)

Page 9: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Entretanto, esse mercado não decolou da forma

que a empresa esperava. Por isso os dias da java

estavam contados.

Surge então a idéia de aproveitar a linguagem para agregar conteúdo dinâmico nos navegadores de internet

da época.

Em 1995, java é oficialmente apresentada para o mercado

mundial.

Atualmente java é usada como linguagem e plataforma nos mais

variados tipos de computadores, como: Desktops, dispositivos móveis, cartões

inteligentes, RFID e servidores de aplicações.

Page 10: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Java é composta por uma grande biblioteca de classes que juntas formam a Java-API (Application Programing Interface) organizada em chamados pacotes.

A documentação da linguagem pode ser estudada em:java.sun.com/javase/downloads/

JAVA - API

Pacote A

classe X { metodo1(){} metodo2(){} }

Pacote B

classe Y { metodo1(){} metodo2(){} }

Page 11: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Evolução da Java-API:

Java 1.0

1996

Java 1.1JDBC1997 Java 2

(1.2 até 1.4)

Collections

Codinomes:

Playground,

Kestrel,

Merlin

1998 – 2002

Java 5.0 (1.5 +)

Enumeration,Generics,For-each

Codinome:Tiger

2004

Veio em 3 versões:

J2ME – Java Micro Edition;J2SE – Java Standard Edition;J2EE – Java Enterprise Edition;

A evolução da java é controlada pelo JCP – Java Community Process (jcp.org) e pela própria Oracle e usuários java.

Java 6.0

Evolução de

performance

Codinome:

Mustang

2006Java 7.0

Evoluções de sintaxe

2011

Page 12: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

A Java-API é usada pelo SDK e pelo JRE.

O SDK é o kit de desenvolvimento de software java, ou seja, o ambiente de desenvolvimento java. Nele, existe uma coleção de ferramentas de linha de comando que executam tarefas como compilar, executar e depurar aplicações escritas em java.

Para que o SDK possa ser usado via linha de comando, é necessário configurar algumas variáveis de ambiente que serão vistas em breve.

O JRE é o ambiente de execução, a API do JRE contém tudo que é necessário para executar aplicações java.

Page 13: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Um programa java passa por 5 fases:Edição – Compilação – Carregamento – Verificação e Execução.

Fase 1Edição

Fase 2Compilação

Fase 3Carregador de

ClasseFase 4

Verificador deBytecodes

Execução pelaJVM

É criado em um editor um arquivo com a extensão .java

O compilador cria os bytecodes a partir do .java gerando um arquivo .class

O class-loader lê os bytecodes do .class e carrega na memória.

O verificador confirma se os bytecodes não violam nenhuma restrição de segurança java

JVM lê os bytecodes e os traduz para uma linguagem que a máquina entenda.

# História e anatomia java:

Page 14: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

E por falar em JVM…

Java Virtual Machine!

É o mecanismo que recebe os créditos pela frase:“escreva uma vez, rode em qualquer lugar!”

A JVM manipula os bytecodes gerados pelo compilador java e conversa com a máquina real. Isso permite à java ser multi-plataforma.

# História e anatomia java:

Page 15: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Hardware

JVM

Compilador Java

Bytecodes…

Código executável de máquina…

Page 16: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Windows

Máquina Virtual Java - JVM

Código Java

Executável

Linux

Page 17: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Hardware

Bytecode PrimeiraClasse.class

classloader

classe remota?

verificador debytecodes

Em tempo de execução…

interpretador tradutor JIT gera código nativo…

Enquanto isso, na JVM…

JIT – Just-In-Time é a parte da JVM usada para acelerar o tempo de execução compilando (traduzindo) partes dos bytecodes que tem algorítmos parecidos, ao mesmo tempo…

SIM

NÃO

Page 18: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

O Class Loader ou Carregador de Classes é a primeira tarefa executada pela JVM e figura responsável por carregar as classes na hora da execução da aplicação. Além disso é o mecanismo que efetua a verificação se os bytecodes de classes remotas não ofendem as regras de segurança da API Java.

A ordem de carregamento das classes obedece a seguinte sequência:

1 – Carrega classes nativas do JRE (API);2 – Carrega extensões do JRE, por exemplo os arquivos “.jar” que estão mapeados em $JAVA_HOME/jre/lib/ext; e classes em $JAVA_HOME/jre/lib/classes;3 – Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH indica a ordem);4 – Classes remotas se existirem;

# História e anatomia java:

Page 19: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Pilha e Heap!

São o que os programadores java precisam saber diferenciar com relação a utilização de memória.

Na pilha, ficam as chamadas de métodos e variáveis locais.Na heap é onde residem os objetos.

Os valores literais dos primitivos são armazenados em bytes na pilha ao passo que uma variável de referência a um objeto contem os bytes que permitem o acesso ao objeto que está na heap.

# História e anatomia java:

Ref. objeto B

Primitivo int010011

Ref. objeto ARef. objeto A

PILHA HEAP

AA

BB

Page 20: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

→ Durante muito tempo o gerenciamento de memória, nas aplicações, era um grande problema pois os programadores eram os responsáveis por controlar a alocação e a liberação da memória;

→ Hoje, com plataformas modernas como java, o gerenciamento é automático e a alocação e liberação de memória é dinâmica, por meio de algorítmos específicos;

→ Garbage Collector (coletor de lixo) é a parte da JVM responsável por liberar a memória alocada por um objeto da heap.

→ O GC é um dos principais componentes da jvm;

→ O coletor de lixo não pode ser invocado diretamente pelo programador. Sua execução é feita por uma thread controlada pela própria JVM. Para que o GC libere memória, um objeto deve estar no status de elegível:

# História e anatomia java:

Page 21: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Objeto obj = new Objeto();obj.fazAlgo();

obj = null;

# História e anatomia java:

Objeto tornando-se elegível para o coletor de lixo!

“Configurar uma referência para um objeto como null é uma boa prática de programação.”

Código java hipotético!

Page 22: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

Tipos primitivos: → originam outros tipos em java;→ em java existem 8 tipos;

boolean → true/false → default false; char → inteiro unicode 16 bits → (sem sinal); byte → inteiro 8 bits → -128 a 127; short → inteiro 16 bits → -2^15 a 2^15 -1; int → inteiro 32 bits → -2^31 a 2^31 -1; long → inteiro 64 bits → -2^63 a 2^63 -1; float → flutuante 32 bits → norma IEEE 754-1985; double → flutuante 64 bits → norma IEEE 754-1985;

Page 23: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

# História e anatomia java:

private: acesso apenas dentro da classe;protected: acesso por classes no mesmo pacote e subclasses;public: acesso de qualquer classe;abstract: classe que não pode ser instanciada ou método que precisa ser implementado por uma subclasse não abstrata;class: especifica uma classe;extends: indica a superclasse que a subclasse está estendendo;final: impossibilita que uma classe seja estendida, que um método seja sobrescrito ou que uma variável seja reinicializada;implements: indica as interfaces que uma classe irá implementar;interface: especifica uma interface;native: indica que um método está escrito em uma linguagem dependente de plataforma, como o C;new: instancia um novo objeto, chamando seu construtor;static: faz um método ou variável pertencer à classe ao invés de às instâncias;strictfp: usado em frente a um método ou classe para indicar que os números de ponto flutuante seguirão as regras de ponto flutuante em todas as expressões;

synchronized:indica que um método só pode ser acessado por uma thread de cada vez;transient: impede a serialização de campos;volatile:indica que uma variável pode ser alterada durante o uso de threads;break: sai do bloco de codigo em que está;case: executa um bloco de código dependendo do teste do switch;continue:pula a execução do código que viria após essa linha e vai para a próxima passagem do loop;default:executa esse bloco de codigo caso nenhum dos teste de switch-case seja verdadeiro;do:executa um bloco de código uma vez, e então realiza um teste em conjunto com o while para determinar se o bloco deverá ser executado novamente;else: executa um bloco de código alternativo caso o teste if seja falso;for:usado para realizar um loop condicional de um bloco de código;if: usado para realizar um teste lógico de verdadeiro o falso;instanceof: determina se um objeto é uma instância de determinada classe, superclasse ou interface;

return: retorna de um método sem executar qualquer código que venha depois desta linha (também pode retornar uma variável);switch:indica a variável a ser comparada nas expressões case;while: executa um bloco de código repetidamente até que uma certa condição seja verdadeira;assert: testa uma expressão condicional para verificar uma suposição; do programador;catch: declara o bloco de código usado para tratar uma exceção;finally:bloco de código, após um try-catch, que é executado; independentemente do fluxo de programa seguido ao lidar com uma exceção;throw:usado para passar uma exceção para o método que o chamou;throws: indica que um método pode passar uma exceção para o método que o chamou;try: bloco de código que tentará ser executado, mas que pode causar uma exceção;import:importa pacotes ou classes para dentro do código;package: especifica a que pacote todas as classes de um arquivo pertencem;

boolean:um valor indicando verdadeiro ou falso;byte: um inteiro de 8 bits (signed);char: um caracter unicode (16-bit unsigned);double: um número de ponto flutuante de 64 bits (signed);float: um número de ponto flutuante de 32 bits (signed);int: um inteiro de 32 bits (signed);long: um inteiro de 64 bits (signed);short: um inteiro de 16 bits (signed);super: refere-se a superclasse imediata;this: refere-se a instância atual do objeto;void: indica que o método não tem retorno;const: Não utilize para declarar constantes; use public static final;goto: não implementada na linguagem Java por ser considerada prejudicial;

null, true e false são valores literais.

Page 24: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Instalar e configurar a java para ser usada em linha de comando é simples:

Usaremos a versão 6 do Java que pode ser baixada em: java.sun.com/javase/downloads/

Em seguida basta seguir os seguinte passos:

Após baixado o JDK ou Kit de Desenvolvimento Java, dispare o instalador e vá configurando de acordo com o que se pede. [bastante simples].

Após isso acesse as variáveis de ambiente no windows e proceda da forma que segue:

# História e anatomia java:

Page 25: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Nas variáveis de ambiente [windows] crie:

JAVA_HOMEC:\jdk6

CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\tools.jar;

Em seguida edite:

PATH%JAVA_HOME%\bin;

Após isso, abra o editor de linha de comando e digite: java –version você deve ver a versão do java instalado.

# História e anatomia java:

Page 26: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Alguns detalhes sobre o ambiente de desenvolvimento e execução java:

Depois de instalado e devidamente configurado devemos observar 2 programas em especial.

javac: Esse é o programa compilador da linguagem java:

javac nome_da_classe.java Onde:

Para ver mais opções do comando javac, digite javac e tecle enter (na linha de comando)

# História e anatomia java:

Page 27: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

java: Esse é o programa que executa o programa java a partir do .class.

java nome_da_classe

Para ver mais opções do comando java, digite java e tecle enter (na linha de comando)

# História e anatomia java:

Page 28: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Fechamento de método

Anatomia de uma classe em java:

public class PrimeiraClasse {

public static void main(String [] args) {

}

}

# História e anatomia java:

VisibilidadeIndica que é uma classe

Nome da classe usando CamelCase…

Chave de abertura da classe

Não precisa de um objeto instanciado para ser usado.

Tipo de retorno. Esse indica que não há valor de retorno

Nome do método…

Abertura de método

Argumentos

Fechamento da classe!

Page 29: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

O primeiro programa em java!!!

1 – crie [e salve] um arquivo com o nome PrimeiraClasse.java. Em seguida digite o seguinte código:

public class PrimeiraClasse { public static void main(String[] args) { System.out.println(“Primeira Classe Java!”); } }

2 – abra o editor de linha de comando e entre no diretório onde salvou o arquivo. [windows = menu iniciar executar digite cmd]

3 - Em seguida digite o comando: javac PrimeiraClasse.java

Se a sintaxe estiver correta será gerado um PrimeiraClasse.class…

# História e anatomia java:

Page 30: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

4 - em seguida digite: java PrimeiraClasse

Observe o resultado na saída padrão!!!

# História e anatomia java:

Page 31: Aulas Java Prof. Marcelo Heitor. Síntese das aulas: Capacitar os alunos na compreensão da linguagem java. Durante o curso será estudado parte do fundamento

Referências:

[Lindholm-Yellin] Tim Lindholm, Frank Yellin. The Java Virtual Machine Specification - Second Edition.

[Silveira-... et. al. 2012] Paulo Silveira, … . Introdução à arquitetura e design de software;

[Deitel-Deitel 2010] Paul Deitel, Harvey Deitel. Java Como Programar – Oitava Edição.

[Sierra-Bates 2005] Kathy Sierra, Bert Bates. Head First Java – Second Edition.

# História e anatomia java: