2. O que vamos ver
hoje?
CONCEITOS BÁSICOS,
Introdução a linguagem Java;
Um pouco de História
Java Virtual Machine; Bytecode;
Método e Classe;
Garbage Collection
3. OBJETIVOS
Apresentar o mundo java e um pouco de sua história.
Compreender os aspectos que colaboraram para o
crescimento da linguagem Java.
Entender o processo de compilação.
Compreender a anatomia de uma classe.
Conhecer o Garbage Collection
Criar programas usando o editor de texto com uma console de
desenvolvimento.
4. O que é Java?
Java é uma linguagem de programação introduzida no mercado em 1995
pela Sun Microsystems, que provocou e ainda provoca entusiasmo em
programadores, analistas e projetistas de softwares.
Mas porque Java produz essa reação?
Simplesmente porque Java é resultado de um trabalho consistente de
pesquisa e desenvolvimento de mais do que uma simples linguagem de
programação, mas todo um ambiente de
desenvolvimento e execução de programas que exibe
as facilidades proporcionadas pela orientação à objetos,
pela extrema portabilidade do código
produzido, pelas características de
segurança que esta plataforma
oferece e finalmente pela facilidade
de sua integração aos outros
ambientes, destacando-se a internet.
5. Um pouco de História
A partir do século XIII quando os
Vikings exploraram e colonizaram
grandes áreas da Europa e das
ilhas do Atlântico Norte...
Ops! Não é preciso voltar tanto
assim...rs
6. Um pouco de História
Tudo começou em 1991, com um
pequeno grupo de projeto da Sun
Microsystem denominado green que
pretendia criar uma nova geração de
computadores portáteis e inteligentes,
capazes de se comunicar de várias
formas, ampliando suas potencialidades
de uso. Para tanto decidiram criar uma
nova plataforma para desenvolvimento
destes equipamentos de forma que seu
software pudesse ser portado para os
mais diferentes tipos de equipamentos.
A primeira escolha de uma linguagem
de programação para tal foi C++, mas
mesmo o C++ não permitia realizar tudo
aquilo que o grupo visionava...
7. James Gosling, coordenador do projeto,
decidiu então pela criação de uma nova
linguagem de programação que
pudesse conter tudo aquilo que era
considerado importante e que ainda
assim fosse simples, portátil e fácil de
programar.
Surgiu assim a linguagem
interpretada Oak
(carvalho em inglês)
Batizada assim dada a existência de
uma destas árvores em frente ao
escritório de Gosling. Para dar suporte
também surgiu o Green OS e uma
interface gráfica padronizada.
Mas tarde descobriu-se que já existia uma linguagem com esse nome, o
nome java foi sugerido por acaso quando a equipe visitava a cafeteria
(java era o nome de uma cidade de origem de um café importado).
8. Durante algum tempo o projeto passou por dificuldades por causa da falta de
mercado, pois o mercado produtos eletrônicos que era o principal foco da
linguagem não estava crescendo como esperado, porém apos a grande
popularidade alcançada pela internet em 1993, a Sun viu o grande potencial que o
java tinha para criar paginas mais dinâmicas. A Sun anunciou formalmente o Java
em 1995, e hoje é uma das linguagens mais populares do mundo, sendo usada
para construir páginas web, sistemas para PC, celulares e todo tipo de
dispositivos moveis.
9. Apesar de relativamente nova, a linguagem Java obteve uma espetacular aceitação
por programadores do mundo inteiro, tendo se difundido como nunca antes ocorreu
com uma linguagem de programação.
Características que colaboraram para grande aceitação da linguagem Java
• simples
• orientada a objetos
• interpretada
• robusta
• portável e de arquitetura neutra
• alta performance
• distribuída e dinâmica
• multithreaded
• segura
Com o advento da Internet, que tornou ainda
mais necessário a comunicação entre plataformas
heterogêneas, estes fatores fizeram com que o Java
fosse a tecnologia perfeita para este novo cenário.
10. Simples
Java foi idealizada para ser de fácil entendimento. Ela tem uma
sintaxe muito parecida com a do C e C++, facilitando a migração dos
programadores destas linguagens.
11. Orientada a objetos
A programação orientada a objetos está baseada no conceito de
classes. Uma classe é um conjunto de dados e métodos para
manipulação destes. Os dados podem ser vistos como as
propriedades do objeto, enquanto os métodos são os
comportamentos do objeto.
12. Interpretada
O compilador Javac gera um código
("byte code") para uma máquina
Virtual (Java virtual Machine - JVM),
ao invés de um código de máquina
para uma plataforma específica.
Qualquer plataforma que possuir um
interpretador Java poderá executar o
programa compilado. Assim, o
programa compilado é independente
de plataforma .
13. Robusta
Java foi desenvolvida para garantir a criação
de programas altamente confiáveis. Ela não
dispensa uma programação cuidadosa, mas
elimina alguns tipos de erros de programação,
possíveis em outras linguagens. A ausência da
aritmética de ponteiros exclui toda uma classe
de erros relacionados a esse tipo de estrutura.
O acesso a arrays e strings e a conversão de
tipos são checados em tempo de execução para
assegurar a sua validade. A coleta de lixo
(garbage collection) faz a desalocação
automática de memória evitando erros de
referência (ponteiros nulos), e perda de área de
memória por não desalocação de objetos não
mais referidos (leakage). Finalmente, o recurso
de Exception Handling permite o tratamento de
erros em tempo de execução, por um mecanismo
robusto, análogo ao do C++.
14. Portável e de arquitetura neutra
O fato do compilador gerar um código neutro ("byte code") permite
que o mesmo programa possa ser executado em qualquer máquina e
sistema operacional que possua um interpretador Java. Mas isto não
basta para um programa ser portável. Java pretende garantir que
todos os aspectos da linguagem sejam independentes da plataforma.
Por exemplo, Java especifica o tamanho e comportamento de cada
tipo de dado. É diferente de C no qual um tipo int pode ter 16, 32 ou
64 bits dependendo da plataforma.
15. Alta performance
Por ser uma linguagem interpretada, Java não oferece a mesma
velocidade de programas escritos em C/C++. Mas a sua performance
é adequada para aplicações como interface gráfica de programas
interativos e para funcionar em rede, já que eles demandam algum
tempo para a entrada de dados. Para aplicações onde se pode abrir
mão da portabilidade, podemos usar Java na interface gráfica e nos
recursos de rede e integrar um pacote escrito em C/C++ para as
operações de cálculo. Também é importante salientar que existe um
projeto da Sun em parceria com grandes empresas para melhorar a
performance da linguagem o que pode trazer grandes benefícios a
curto prazo.
16. Distribuída e dinâmica
Java verifica o tipo de qualquer objeto em tempo de compilação e
dinamicamente em tempo de execução.
Imagine agora que criamos um programa para tratamento de imagens.
Com o tempo os padrões vão se alterando e o nosso programa
precisa de atualizações. Em java é possível que o próprio programa se
atualize, conectando um computador remoto e carregando a classe
necessária, tudo isso em tempo de execução. Isto permite que
tenhamos instalado um programa simples que busca as classes
necessárias em diversos computadores da rede. Esta é a razão de
chamá-la de uma linguagem distribuída.
17. Multithreaded
Um programa escrito em Java
pode realizar várias tarefas
assincronamente com o uso de
"Threads". Criar um "Thread" e
manipulá-lo é tão simples quanto
criar e trabalhar com qualquer
variável. Isto permite que uma
rotina possa ser executada sem
que o usuário tenha que esperar
para entrar um novo comando do
programa. Por exemplo, ao lançar
um thread para imprimir um
documento, o usuário estará
imediatamente livre para continuar
sua edição.
18. Segura
Como vimos Java é uma linguagem que pode manipular objetos
distribuídos pela rede. Para garantir a segurança do sistema contra
operações ilegais existe a classe Security Manager. O objetivo é
permitir a execução de um programa, monitorando as ações que
podem causar dano ao sistema. Por exemplo, podemos impedir que
um programa tenha acesso ao disco local ou a informações do nosso
sistema. Mas se temos certeza da origem do programa, podemos ser
menos rígidos dando mais acesso ao mesmo. Isto é possível através
de uma assinatura digital, recurso implementado nas versões mais
novas da linguagem.
29. Public class OlaMundo {
public static void main (string[ ] args) {
System.out.println(“Olá!”);
System.out.println(“Mundo”);
}
}
30. Máquina Virtual Java - JVM
A máquina virtual java (JVM) é uma máquina imaginária que emula
uma aplicação em uma máquina real. É a JVM que permite a
portabilidade do código Java, isto ocorre porque todo código Java é
compilado para um formato intermediário, bytecode, este formato é
então interpretado pela JVM.
Existem diversas JVMs cada uma delas destinada a um tipo de
sistema operacional (Windows, Linux, Mac e etc.), desta forma sendo o
código da aplicação Java, bytecode, um código interpretado pela JVM,
podemos desenvolver uma aplicação sem nos preocuparmos onde ela
será executada pois sabemos que existindo a JVM instalada nosso
código será executável.
31. BYTECODE
O bytecode é uma linguagem de máquina especial que pode
ser entendida pela Máquina Virtual Java (JVM). O
bytecode é independente de qualquer hardware de
computador particular. Assim, qualquer computador com o
interpretador Java pode executar um programa Java
compilado, não importando em que tipo de computador o
programa foi compilado.
34. Coletor de Lixo – Garbage Collection
Muitas linguagens de programação nos permitem alocar
espaço na memória em tempo de execução, uma vez
encerrado o programa deve haver uma maneira de
liberar este espaço para que outras aplicações possam
utilizá-lo. Em muitas das linguagens de programação,
inclusive C e C++, a responsabilidade pela liberação do
espaço que não mais será utilizado é do programador,
no entanto, nem sempre é fácil gerenciar
o que está e o que não está sendo
utilizado, a má gerência da memória
ocasiona muitas vezes o estouro de pilha
(stack overflow) entre outros problemas.
Na linguagem de programação Java a
responsabilidade pela gerência da memória é do
Coletor de lixo (Garbage Collector), desta forma,
programadores Java ficam livres da preocupação de
alocação e desalocação da memória.
O Coletor de lixo é um processo que roda em segundo
plano e é responsável pela liberação de memória
alocada por variáveis que não mais serão utilizadas
pela aplicação.
35. Exercícios
Criando a primeira aplicação console
Neste exercício utilizaremos um simples editor de texto, que pode ser
o gedit do Linux ou o notepad do Windows, para editar o código
fonte. Em seguida será necessário abrir uma janela
terminal para compilar e executar os programas.
36. Primeiro Programa Java
1º passo: digitar o código fonte
Digite as seguintes instruções no editor de textos:
public class Hello
{
/**
* Meu primeiro programa Java
*/
public static void main(String[] args) {
// Mostra na tela o texto "Hello world"
System.out.println("Hello world!");
}
}
37. Primeiro Programa Java
2º passo: Salvar o programa Java
Chamaremos o programa de "Hello.java" e o
colocaremos em uma pasta denominada
"myJavaPrograms".
ATENÇÃO: Para o Notepad no Windows, mude o
Tipo para "All Files" (em Save as Type).
38. Primeiro Programa Java
3º passo: Abrir a janela de console
Para abrir o terminal no Linux, selecione
Applications ⇒ Accessories ⇒ Terminal.
Para abrir o terminal no Windows, selecione
Start ⇒ Run... e na janela que se apresenta, digite
cmd e pressione o botão OK
39. Primeiro Programa Java
4º passo: Compilar o programa
Para compilar o programa, utilizamos o comando:
javac [Nome do Arquivo]. Ou seja:
javac Hello.java
Durante a compilação, é criado o arquivo: [Nome do
Arquivo].class, neste caso, Hello.class,
que contém o código em linguagem de máquina
(chamado de bytecode).
40. Primeiro Programa Java
5º passo: Executar o programa
Assumindo que não ocorreu problemas na
compilação (caso tenha ocorrido qualquer problema
refaça os passos realizados), estamos prontos para
executar o programa.
Para executar o programa, utilizamos o comando:
java [nome do arquivo sem a extensão].
No caso do exemplo, digite:
java Hello
41. Exercícios
1. Crie uma classe que imprima o seguinte texto “Bem-vindo
ao mundo Java”.
2. Compile e execute a classe desenvolvida no exercício
anterior.
3. Comente o trecho de código responsável pela execução
da impressão, compile e execute.
4. O que é o Garbage Collection e qual a sua função?