A Linguagem de Programação Java
Java: C++--,
- ou a sintaxe de C++, com semântica de Objective C
Características da Linguagem Java
- Simples
- Orientada a Objetos
- "Distríbuida"
- Interpretada
- Robusta
- Segura
- Arquiteturalmente Neutra
- Portável
- Interpretada
- Alta-Performance
- "Multithreaded"
- Dinâmica
- Integrada com Métodos Nativos
Simples
- Sem herança múltipla
- Alocação/dealocação implícita de memória (Garbage Collector)
- Sem aritmética de ponteiros
- Sem coerção automática
- 40 Kb - Interpretador Básico
- 175 Kb - Bibliotecas Básicas + Threads
Orientada a Objetos
- Objetos, Classes, Mensagens, Packages, Interfaces, Polimorfismo, Heranca, etc
"Distribuída"
-
Através do uso de bibliotecas tratando com TCP/IP, com protocolos como
HTTP, FTP, SNMP, etc. Facilidades no uso de URLs.
Robusta
- Verificação em tempo de compilação
- Verificação em tempo de execução
- O linker entende o sistema de tipos, evitando problemas de incompatibilidade de versões
- Sem ponteiros e aritmética de ponteiros
Arquiteturalmente Neutra
- Formato de bytecode arquiteturalmente neutro
- Executável em vários processadores sem recompilar
Portabilidade
- Tamanho dos tipos primitivos especificado
- int = intteiro de 32 bits, complementado de 2
- float = 32 bits IEEE 754
- Classe abstrata "Windows"
- POSIX
Interpretada
- Máquina Virtual
- Bytecodes executados em qualquer máquina para a qual o interpretador
foi portado
- Verificação de tipos em tempo de ligação
Alta-Performance
- Possibilidade de geração de código de máquina "on-the-fly"
- Bytecode convertidos para o código de máquina tem performance similar a C++
Multithreaded
- Conjunto de primitivas de sincronização baseado em monitores e variáveis de condição
- Melhor tempo de resposta em aplicações interativas
- Comportamento de tempo-real
Dinâmica
- Representacao de classes em "runtime"
- Ligação e verificação entre módulos em tempo de execução
- Bibliotecas podem adicional métodos e variáveis de instância livremente
- Lookup dinâmico de classes, com tipos de dados computados, ligados e verificados em tempo de execução.