Semântica de Java
Java and the Java Virtual Machine - Definition, Verification,
Validation
Robert Stark, Joachim Schmid, and Egon Borger
Wolfram Schulte
DI
UFPE
Introdução

Objetivos
 Definição
 Base
rigorosa, mas legível
para padronização de Java (ambiguidades e
inconsistencias foram detectadas)
 Especificação
e avaliação de extensões de Java
 Análise
e comparação de implementações de Java
 Modelo
passível de tratamento automático
 Validação
de esquemas de compilação e de
propriedades de segurança
DI
UFPE
Introdução


DI
UFPE
Requerimentos
 Validação por inspeção
 Técnica de modelagem que:
 Expresse conceitos básicos
 Modele ações básicas de forma abstrata
Abstract State Machines (ASM)
 Gurevich- Evolving Algebras
 Semântica operacional em que estados são
definidos algebricamente
 Pseudo-code envolvendo tipos de dados abstratos
Introdução

Interpretador de programas Java
 “Parsing”
 Elaboração:
tipos e formação
 Execução

Carga, ligação e execução

Semântica dinâmica
 Jumps
 Exceções
 Concorrência
DI
UFPE
Introdução


DI
UFPE
Características do modelo
 Orientado a processo ao invés da sintaxe
 Separação de aspectos estáticos e dinâmicos
Métodos estruturados
 Semântica operacional estruturada, semântica natural,
semântica de ações, etc.
 Adequados para linguagens cujo fluxo de controle segue
a árvore sintática
 Nenhuma vantagem quando:
 Ambientes são mais complexos
 Concorrência é considerada
Abstract State Machines

Estado: estrutura matemática

Conjunto de regras de transição da forma
if Condition then Updates

Condition: predicado

Updates: conjunto de
f(t1,...,tn) := t

DI
UFPE
Execução: noção tradicional
Abstract State Machines
Tipos de Funções

Estáticas

Dinâmicas
 Controladas
 Monitorada
 Interativas
 Derivadas
DI
UFPE
Abstract State Machines
Formas Especiais de Regras



DI
UFPE
forall x with Condition do Rule
choose x with Condition do Rule
Além disso
 where
 let
 if then else
 Parametrização
Visão geral

Cinco sublinguagens
 Isolamento
DI
UFPE
de características ortogonais

Imperativas - JavaI

Procedimentais (baseadas em objetos) - JavaC

Orientadas a objetos - Javao

Tratamento de exceções - JavaE

Concorrência - JavaT
JavaI


DI
UFPE
Sintaxe
 Página 35, Figura 3.1
 Programa anotado, como em tempo de execução
Modelo de execução
 Passeio pelos nós da árvore sintática de um
programa
 Em cada nó
 Uma tarefa é executada
 Prosseguimento para a próxima tarefa
JavaI
Estado
DI
UFPE

Contador de programas abstrato: programa a ser
executado
pos : Pos
restbody: Pos  Phrase

Ambiente
locals: Locals
type Locals = Map(Loc  Val)

Estado: restbody, post, locals
JavaI
Transições



DI
UFPE
Regras de transição: mudanças de estado devido a
 Avaliação de expressões
 Execução de comandos
Estado inicial
 Determinado por uma phrase dada
 restbody = a frase
 pos = posição inicial
 locals vazio
Execução termina: nenhuma regra é aplicável
JavaI
Expressões

DI
UFPE
Expressões
 Ordem de avaliação
 Da esquerda para direita, de dentro para fora
 context e yield e yieldUp
 Figura 3.2, página 41
JavaI
Comandos

DI
UFPE
Figura 3.3, página 42
JavaC

Linguagem com módulos

Sintaxe: páginas 48- 49, Figura 4.3, página 50, 51-52
 Informações

Ambiente de classes estático
 Definido
DI
UFPE
de tipo já inseridas em tempo de compilação
por funções: página 62
JavaC
Estado

Mais componentes de estado
 initialized
 globals

Chamada de métods
 type
Frame = (Class/Msig, Phrase,Pos,Locals)
 frames:

DI
UFPE
Frame*
Mais Abr para mudança abrupta de fluxo
JavaC
Regras de Transição

Todas as regras de JavaI com

Ambiente definido pelo programa dado

Todos os atributos inicializados com valores “default”

Início
 public
 body,
DI
UFPE
static void main()
restbody, pos, locals
JavaC
Regras de Transição

Expressões
 Figura

Comandos

DI
UFPE
4.4, página 64
Figura 4.5, página 66
JavaC
Inicialização
DI
UFPE

Inicialmente nenhuma classe é inicializada

Inicialização ocorre no primeiro uso ativo

Superclasses devem ser inicializadas antes

O mesmo não ocorre com superinterfaces
JavaO




DI
UFPE
Sintaxe: Figura 5.1, página 73
Ambiente
 instanceFields
 defaultVal
 type
 lookup
Estado
 type Val = ... | Ref | Null
 data Heap = Object(Class,Map(Class/Field,Val))
 heap: Ref  Heap
Regras de transição: Figura 5.2, página 81
JavaE

Sintaxe: Figura 6.1, página 88

data Abr = Break(Lab) | Continue(Lab) |
Return | Return(Val) | Exc(Ref)

DI
UFPE
Regras de transição:
 Figura
6.2, página 91
 Figura
6.3, página 93
Download

Semântica de Java