Beruflich Dokumente
Kultur Dokumente
Contents
• Histórico e Aplicabilidade
• Modelo da Linguagem de Programação
• Modelo de Execução
• Avaliação da Linguagem
• Tipos de dados
• Ambientes de Nomes
• Tratamento de Exceções
• Programação Concorrente
more
Quando Java foi desenvolvida o objetivo era trazer o que seria tendência do mundo
digital, uma linguagem que desse suporte para novos aparelhos resultantes da
convergência de aparelhos comuns entre si. Acreditava-se que em breve haveria a
integração dos computadores com os equipamentos e eletrodomésticos comumente
usados pelas pessoas no seu dia-a-dia.
Por sorte surgiu a internet que se popularizou rapidamente, formando uma grande rede
interativa. Ambiente ideal para se aplicar as idéias que o Oak trazia. Assim não era mais
necessário construir a infra-estrutura para a rede. O Oak então foi adaptado para a
Internet e em janeiro 1995 foi lançada uma nova versão rebatizada para Java.
A tecnologia Java tinha sido projetada para se mover por meio das redes de dispositivos
heterogêneos, redes como a Internet. Neste momento as aplicações poderiam ser
executadas dentro dos browsers nos Applets Java e tudo seria disponibilizado pela
Internet instantaneamente. Através dos applets podem-se incluir programas complexos
no âmbito de uma página web. Foi o estático HTML dos browsers que promoveu a
rápida disseminação da dinâmica tecnologia Java. Daí a utilização da linguagem se
propagou rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram
suporte para a tecnologia Java.
• CLASSE E OBJETO
• ENCAPSULAMENTO E ABSTRAÇÃO
• HERANÇA DE CLASSE
• MÉTODOS, MÉTODO CONSTRUTOR, SOBRECARGA E
POLIMORFISMO.
• ASSOCIAÇÃO E COMPOSIÇÃO
A correta aplicação de tais técnicas traz benefícios para o programador que passa a
trabalhar com um maior nível de abstração, modularização e reutilização.
Modelo de Execução
Avaliação da Linguagem
Legibilidade
Pode ser definida como a forma pela qual é escrito o código do programa que possibilita
a facilidade de leitura e compreensão do mesmo, e tornou-se um importante parâmetro
de qualidade de programas e linguagens de programação. (SEBESTA, 2003).
Java oferece recursos que auxiliam na legibilidade que vão desde elementos externos
como um avançado sistema de documentação, o JavaDoc até a padronização de nomes
de métodos, atributos e classes. A utilização de padrões de projeto também facilita
bastante o entendimento de códigos. Graças a esta padronização a etapa de manutenção
no ciclo de vida do software se torna menos custosa. O tempo para o seu entendimento é
reduzido nos distanciarmos do conceito de “estado da arte”, no sentido de o código
depender do humor do programador.
Simplicidade
Para que uma linguagem tenha uma simplicidade global, é necessário que ela seja de
fácil leitura e compreensão, ou seja, a legibilidade do programa, como um fator bem
marcante é de que os comandos sejam simples, e sejam fáceis de serem manipulados.
(SEBESTA, 2003).
Java oferece interessantes recursos que favorecem sua legibilidade. Seu esqueleto é uma
derivação de C e C++. Apesar disso está é uma linguagem “viva”, que é constantemente
incrementada pela comunidade. Este fato tem seu grande lado positivo que é a idéia de
que a cada dia surgirem novos recursos, novas formas de se realizar uma determinada
tarefa de forma mais prática ou mais eficiente. Porém defasa sua simplicidade, uma vez
que surgem novos “dialetos” de programação.
Ortogonalidade
Java possui uma forte tipagem o que diminui um pouco sua ortogonalidade, porém
fornece recurso de conversão de tipos.
...
x = (int) (b + z);
...
Expressividade
Expressividade pode se referir diferente a características. Por exemplo, na Linguagem
Java utilizar cont++ é mais elegante do que se usar cont = cont + 1, como em Delphi é
melhor usar inc(cont) do que cont := cont + 1. A inclusão da instrução for em uma
linguagem de programação torna mais fácil à escrita de laços de contagem do que com o
uso de while, por exemplo.
Confiabilidade
Para se obter uma grande confiabilidade é interessante que a linguagem ofereça suporte
as seguintes capacidades:
• Verificação de Tipos
• Manipulação de Exceções
• Legibilidade e Capacidade de Escrita
Portabilidade
Tipos de dados
Ambientes de Nomes
Java não possui “limites” quanto à definição do nome de variáveis e métodos. Esta
questão pode ajudar ao desenvolvedor melhorar a legibilidade do código. Assim como
em C, cada bloco é agrupado pelo par de chaves { }. Em relação a outras linguagens o
recurso de abre e fecha chaves não é uma excelente solução em termos de
expressividade de seu significado.
Onde TipoX pode ser igual a TipoY ou ser uma superclasse de qualquer nível de TipoY.
TipoY é o objeto “verdadeiro” na memória e TipoX é o nome associado a este objeto, é
através dele que acessamos o TipoY instanciado.
Tratamento de Exceções
try {
<procedimentos-normais>
<procedimentos-de-exceção>
finally {
<procedimentos-finais>
}
O primeiro bloco, logo após a palavra chave try, delimita os procedimentos para os
quais o tratamento de exceções definido nessa estrutura será aplicado. A cláusula catch
define um tratador para uma classe de exceções especificada. Uma estrutura try / catch
pode conter diversos tratadores, para diferentes classes de exceções. Um bloco catch
definido para uma classe genérica, como Exception ou RuntimeException por exemplo,
pode tratar tanto as exceções daquela classe como de suas subclasses. A busca do
tratador para uma dada exceção se processa na ordem em que os blocos catch aparecem
na estrutura, sendo selecionado o primeiro catch cuja classe abranja aquela exceção. Por
esse motivo, havendo mais de um bloco catch para um mesmo bloco try eles devem
estar ordenados do mais específico para o mais genérico. A cláusula opcional finally
define procedimentos a serem executados incondicionalmente quando os procedimentos
da estrutura try / catch são terminados, independentemente da ocorrência de alguma
exceção. O fluxo de controle para tratamento das exceções de Java implementa o
chamado modelo de terminação. Resumindo: Quando uma exceção é lançada o bloco de
procedimentos (try) que está sendo executado é interrompido e o processamento é
desviado para a rotina de tratamento apropriada para aquela classe de exceção (catch).
Ao final dessa rotina de tratamento é executado o bloco finally, se houver.
Programação Concorrente
System.out.println(“Usando herança”);
System.out.println(“Usando Runnable”);
Prioridades: