semântica de java

21
DI UFPE Semântica de Java Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram Schulte

Upload: risa

Post on 16-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Semântica de Java. Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram Schulte. Introdução. Objetivos Definição rigorosa, mas legível Base para padronização de Java (ambiguidades e inconsistencias foram detectadas) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Semântica de Java

DI

UFPE

Semântica de Java

Java and the Java Virtual Machine - Definition, Verification, Validation

Robert Stark, Joachim Schmid, and Egon Borger

Wolfram Schulte

Page 2: Semântica de Java

DI

UFPE

Introdução

Objetivos

Definição rigorosa, mas legível

Base 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

Page 3: Semântica de Java

DI

UFPE

Introdução 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

Page 4: Semântica de Java

DI

UFPE

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

Page 5: Semântica de Java

DI

UFPE

Introdução 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

Page 6: Semântica de Java

DI

UFPE

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

Execução: noção tradicional

Page 7: Semântica de Java

DI

UFPE

Abstract State MachinesTipos de Funções

Estáticas

Dinâmicas

Controladas

Monitorada

Interativas

Derivadas

Page 8: Semântica de Java

DI

UFPE

Abstract State MachinesFormas Especiais de Regras forall x with Condition do Rule choose x with Condition do Rule

Além disso where let if then else Parametrização

Page 9: Semântica de Java

DI

UFPE

Visão geral

Cinco sublinguagens

Isolamento de características ortogonais

Imperativas - JavaI

Procedimentais (baseadas em objetos) - JavaC

Orientadas a objetos - Javao

Tratamento de exceções - JavaE

Concorrência - JavaT

Page 10: Semântica de Java

DI

UFPE

JavaI

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

Page 11: Semântica de Java

DI

UFPE

JavaI

Estado 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

Page 12: Semântica de Java

DI

UFPE

JavaI

Transições 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

Page 13: Semântica de Java

DI

UFPE

JavaI

Expressões

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

Page 14: Semântica de Java

DI

UFPE

JavaI

Comandos

Figura 3.3, página 42

Page 15: Semântica de Java

DI

UFPE

JavaC

Linguagem com módulos

Sintaxe: páginas 48- 49, Figura 4.3, página 50, 51-52

Informações de tipo já inseridas em tempo de compilação

Ambiente de classes estático

Definido por funções: página 62

Page 16: Semântica de Java

DI

UFPE

JavaC

Estado Mais componentes de estado

initialized

globals

Chamada de métods

type Frame = (Class/Msig, Phrase,Pos,Locals)

frames: Frame*

Mais Abr para mudança abrupta de fluxo

Page 17: Semântica de Java

DI

UFPE

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 static void main()

body, restbody, pos, locals

Page 18: Semântica de Java

DI

UFPE

JavaC

Regras de Transição

Expressões

Figura 4.4, página 64

Comandos

Figura 4.5, página 66

Page 19: Semântica de Java

DI

UFPE

JavaC

Inicialização

Inicialmente nenhuma classe é inicializada

Inicialização ocorre no primeiro uso ativo

Superclasses devem ser inicializadas antes

O mesmo não ocorre com superinterfaces

Page 20: Semântica de Java

DI

UFPE

JavaO

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

Page 21: Semântica de Java

DI

UFPE

JavaE

Sintaxe: Figura 6.1, página 88

data Abr = Break(Lab) | Continue(Lab) |

Return | Return(Val) | Exc(Ref)

Regras de transição:

Figura 6.2, página 91

Figura 6.3, página 93