Analisando o Java:
principais conceitos, apresentados
em um enfoque comparativo com o C++.
Eng. Luciano Santos Driemeier
COMET DPM/FEM UNICAMP
Estrutura da Apresentação
1. Motivação
2. Introdução
3. Compilando e Executando em Java
4. Estrutura de Dados e Gerenciamento de Memória
5. Classes, Objetos e Herança
6. Applets: o Java e a Internet
7. Ferramentas Úteis
8. Dicas para Design no Rose
9. Projeto BIA
10.Tendências
11. Referências
Conteúdo
Objetivos e público alvo
- Descrever e acabar com eventuais mitos
a respeito do Java.
- Apresentação direcionada a comparação das
linguagens
CONCEITUAL.
- Apresentação de recursos que podem ser destacados
pela eficiência ou utilidade no Java.
- Não é objetivo apresentar conceitos de OOP ou OOD.
Motivação
Histórico: Projeto Green
- Histórico baseado na entrevista dos criadores do Java
a revista online SunWorld’s (jul/95).
- Antes de 91 - Motivação - criação de uma linguagem
compacta para ser usada em equipamentos domésticos.
- Pela aplicação o produto deveria:
- usar pouca memória;
- executar em diferentes CPU’s.
- O projeto recebeu o nome Green.
Introdução
Histórico: Viabilizando a Idéia
Conceito: gerar um código intermediário para
máquinas hipotéticas.
- Máquinas hipotéticas
Virtual Machines
JVM
Java Virtual Machine
- O código poderia ser lido em toda máquina que tivesse
o interpretador adequado.
- Como o background dos programadores da Sun é
UNIX, o Java foi baseado em C++.
Introdução
Histórico: Do Primeiro Produto ao Sucesso
- *7 - primeiro produto. Não despertou interesse dentro
da Sun e o departamento comercial não conseguiu
clientes para o produto.
- Mudança de nome. (First Person)
- Paralelamente ao desenvolvimento do produto, a WWW
(93/94) crescia muito.
- Navegador Mosaic escrito, em parte, por Marc
Andreessen (em sua graduação a US$ 6,80 por h).
Introdução
Histórico: Do Primeiro Produto ao Sucesso
- Dentro da Sun, surgiu a idéia da aplicação na WWW.
- As motivações do projeto se encaixavam nos maiores
desafios da rede.
- O grande salto do Java foi quando a Netscape lançou
sua versão Java Enabled.
- Após a Netscape, os demais navegadores também
lançaram suas versões Java Enabled.
Introdução
O que é o Java?
- O Java é uma linguagem de programação:
- simples;
- orientada a objetos;
- de arquitetura neutra;
- portável;
- interpretada.
Introdução
Inverdades sobre o Java.
- O Java é uma extensão do HTML.
- Todos os programas em Java são executados em uma
página da Web.
- O Java é uma linguagem fácil de programar.
- O Java será uma linguagem de programação universal.
- O Java é interpretado, portanto muito lento para
aplicações “sérias”.
Introdução
Compilando em Java
- O Java não faz distinção entre arquivos de:
Interface (declaração)
Implementação (definição)
- Toda a classe Java está definida e declarada em um
arquivo de extensão .java com o mesmo nome da classe.
- Existem, atualmente, muitos compiladores para o Java
(inclusive o Visual J++).
- O compilador padrão JDK, fornecido pela Sun, é
gratuito.
Compilando e Executando
Compilando em Java
- Utilizando o JDK fornecido pela Sun:
c:\>javac MyClass.java
- O compilador vai gerar um arquivo interpretável
chamado MyClass.class.
- Para interpretar o arquivo deve-se executar o seguinte
comando:
c:\>java MyClass
- Todos os .class necessários devem ser fornecidos.
Compilando e Executando
O Compilador Java
- Os compiladores em Java são muito mais rígidos que
os compiladores em C++.
- Esta característica do compilador facilita portar o
código entre as linguagens.
- O compilador JDK é case sensitive para interpretar
mas não para compilar.
- O JDK é um compilador de console, portanto tem
algumas limitações.
Compilando e Executando
Diferenças entre Java e C++
- O Java não define as funções de pré-processador #.
- As diretivas de #if e #ifdef são menos necessárias
em Java. Em geral, servem para marcar código em
linguagem específica.
A diretiva #
Compilando e Executando
Diferenças entre Java e C++
- Como ficam os #includes ?
- Os compiladores do Java e C++ trabalham de maneira
muito diferente nesta questão.
- Organizar as classes Java em packages, para tornar
o projeto mais organizado.
- Importar os packages necessários para cada uma
de suas classes.
Compilando e Executando
Diferenças entre Java e C++
- O import do Java é absolutamente diferente do
#include do C++.
- O compilador do C++ somente abrirá os arquivos
especificados por completo no include.
- O compilador Java abrirá o arquivo que for necessário,
bastando indicar onde procurar.
- O import é apenas uma questão de conveniência. Podese evitar por completo o import (o include não).
Compilando e Executando
As maiores diferenças
- Neste ponto estão as grandes diferenças:
JAVA NÃO TEM PONTEIROS.
JAVA NÃO POSSUI DESTRUTORES.
- Comentar as principais diferenças e abordar com
maior profundidade as frases acima.
ED e GM
Tipos Inexistente
- O Java não define o tipo enumerado
- Solução: declarar variáveis public static final
byte (solução não segura).
- Pois, infelizmente, o Java não define o const.
- Declarar classes do tipo enumerado.
- Única maneira de conseguir dados seguros:
declará-los em classes constantes.
ED e GM
Ponteiros
- Os dados em Java se comportam mais como ponteiros
que como valores.
- Um outro ponto de vista: tudo no Java é ponteiro.
- O argumentação para afirmação anterior é consistente.
Ponteiros
ED e GM
Destrutores
- Os dados em Java não precisam ser destruídos. NÃO É
NECESSÁRIO se preocupar com vazamentos de
memória.
- Sistema garbage-collection implementado evita que
o programador tenha que desalocar seus dados.
- Fazendo uma variável igual a null o programador
pode forçar o dado a ser recolhido antes do
fim do escopo.
ED e GM
Definições: Modificadores
- Como no C++ os dados e métodos podem ser declarados
como public, protected e private.
- O processo de dynamic cast permanece inalterado.
- O modificador static permanece inalterado.
- Criando classes estáticas: variáveis e funções
pertencem a classe e não a uma instância desta.
Objetos e Classes
Definições: Modificadores
- O Java não define o modificador friend.
Java has no friends.
Classe friend.
- Uma solução para o problema, sem ter de declarar
os dados como públicos, é fazer os dados e
métodos package private.
Objetos e Classes
Definições: Herança
- Polimorfismo: os conceitos de orientação a
objetos mais fortes no Java.
- Diferença quando um método é chamado no C++ e no
Java.
- Conceito de late binding:
late binding - o compilador não gera o código
a ser executado por um método em
tempo de compilação.
Objetos e Classes
Definições: Herança
- Não é necessário declarar um método em Java
como virtual. Este é seu comportamento padrão.
- Pode-se prevenir a herança declarando métodos
e classes como final.
- Classes finais não podem gerar herdeiras.
- Métodos finais não podem ser sobrecarregados
pela herança.
Objetos e Classes
Definições: Múltipla Herança
- O Java não permite a múltipla herança.
- Em Java uma classe pode ter uma única classe mãe.
- Esta exclusão foi proposital pois a múltipla herança
torna os compiladores muito complexos (C++) ou
ineficientes (Eiffel).
- Para contornar o problema da herança múltipla foram
criadas as interfaces.
Class X extends Y implements Z
Objetos e Classes
Facilidades do Java
- Supõe-se ser o Java a melhor ferramenta para
conectar computadores a Internet.
- Um programador C\C++ ficará surpreso ao descobrir
quão fácil é implementar códigos em Java.
- Java permite a criação de Applets
- Applets são programas escritos em Java e executados
em uma página da Web via um navegador como o
Netscape.
Applets: o Java e a Internet.
Applets: Funcionamento
- Existem três formas de visualizar o funcionamento
de um applet:
- usando o AppletViewer da Sun;
- carregando uma página local no navegador;
- dando uma URL para o navegador carregar
o arquivo.
Applets
Applets: o Java e a Internet.
Native Methods e Multithread
- É possível importar um método escrito em C
para um código em Java.
- É possível que um código em C chame um método
em Java.
- O Java tem implementação fácil de multithreads
Multithread.
Ferramentas Úteis
Rose
- A interface para design no Rose para Java
é muito parecida com a do C++.
- A geração de código é mais simples tanto nas
opções de o que gerar quanto na questão das
áreas de preserve.
- Criar uma variável de projeto para não ter
problemas com componentes.
Dicas para Design no Rose
Descrição do Programa
- O programa resolve os problemas de viga, barra e
eixos da Resistência dos Materiais.
- Tem como ferramenta matemática as funções
singularidade.
- As funções de singularidade são capazes de
representar esforços. Uma vez construída a
equação de carregamento apropriada , basta integrá-la.
- A versão sem interface visual recebe um arquivo texto
com os dados do problema e devolve um arquivo html
de solução .
Projeto BIA
Classes e Funcionamento
- O programa está estruturado em 8 pacotes e 28
classes (sem as classes de interface visual).
Material
CrossSection
BoundaryCond
Problem
Equations
Maths
Loads
Auxiliar
Projeto BIA
O Java Hoje
- O Java, como outras linguagens de programação,
tem pontos positivos e negativos em sua aplicação.
- Sua principal aplicação ainda está na Internet.
- Há muita especulação sobre o Java. O que se pode
afirmar é que até mesmo o C++ não tem uma aplicação
universal.
- Microsoft's next IE browser, quite likely to continue to
dominate the browser universe, will supposedly not even have
Java included at all.
Tendências
Referências
Core Java - second edition
Gary Cornell & Cay Horstmann
Sun Microsystems
Java CookBook
Porting C++ to Java
Taligent White Papers - http:\\www.taligent.com
Rational Rose 98i - Using Java
Manual
Aprenda em 24 horas C++
Editora Campus
Jesse Liberty
Referências
Download

Java - Unicamp