1 / 21

Semântica de Java

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)

risa
Download Presentation

Semântica de Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Abstract State MachinesTipos de Funções • Estáticas • Dinâmicas • Controladas • Monitorada • Interativas • Derivadas

  8. 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

  9. 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

  10. 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

  11. JavaIEstado • 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

  12. JavaITransiçõ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

  13. JavaIExpressõ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

  14. JavaIComandos • Figura 3.3, página 42

  15. 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

  16. JavaCEstado • 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

  17. JavaCRegras 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

  18. JavaCRegras de Transição • Expressões • Figura 4.4, página 64 • Comandos • Figura 4.5, página 66

  19. JavaCInicialização • Inicialmente nenhuma classe é inicializada • Inicialização ocorre no primeiro uso ativo • Superclasses devem ser inicializadas antes • O mesmo não ocorre com superinterfaces

  20. 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

  21. 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

More Related