logo CCISEL
  • Home
  • Team
  • Academia
  • News
  • Archive
  • Contacts
  

Linguagens e Ambientes de Execução

(en: Languages and Managed Runtimes)

Professor: Miguel Gamboa de Carvalho

Ano: 2
Semestre: 4
ECTS: 6

Repositório
Informação institucional no ISEL

Objectivos

Os estudantes que terminam com sucesso esta unidade curricular serão capazes de:

  1. Comparar e utilizar diferentes construções comuns em linguagens de programação modernas, enquadrando diferentes paradigmas de programação, e o seu suporte no ambiente de execução.
  2. Entender os principais constituintes de um ambiente de execução para linguagens de alto nível, e saber comparar diferentes abordagens de sistemas de tipos destes ambientes.
  3. Usar metadados em tempo de execução (reflexão) para examinar tipos e usar metaprogramação para analisar e transformar programas em tempo de execução.
  4. Analisar o desempenho de programas managed e usar eficientemente o suporte automático de gestão de memória (garbage collection).

Programa

  1. Principais construções de linguagens suportadas em ambientes de execução para linguagens de alto nível (managed runtimes) e a sua contextualização em diferentes paradigmas de programação, tendo como principal caso de estudo a máquina virtual Java.
  2. Principais constituintes dos ambientes de execução managed, nomeadamente: class,verifier,just-intime compiler, metadados e gestão de memória.
  3. Comparação de sistemas de tipos para ambientes de execução managed quanto às regras de equivalência, compatibilidade e inferência.
  4. API de reflexão em Java e casos práticos de metaprogramação no desenvolvimento de software.
  5. Modelo de pilha e registos. Análise das principais instruções bytecode Java apoiada em ferramentas de suporte à reflexão estrutural (e.g. ASM, Javassist).
  6. Introdução à análise de desempenho de programas Java e uso de ferramentas de monitorização da JVM (e.g. jconsole).
  7. Introdução aos algoritmos de garbage collection na JVM.

Resultados

Esta unidade curricular identifica os principais problemas resolvidos por um ambiente de execução para linguagens de alto nível e o suporte que fornece ao desenvolvimento de aplicações. Em particular são analisadas diferentes construções disponíveis nestas linguagens e nos sistemas de tipos, usando como principal caso de estudo a linguagem Java.

A coerência entre os conteúdos programáticos e os objetivos da unidade curricular é a seguinte:

  • O objetivo 1 é alcançado através dos conteúdos I e III;
  • O objetivo 2 é alcançado através dos conteúdos II, III, e IV;
  • Os conteúdos IV e V contribuem para o objetivo 3;
  • Os conteúdos V, VI e VII pretendem concretizar o objetivo 4.

Bibliografia

“Optimizing Java: Practical Techniques for Improving JVM Application Performance” by Chris Newland, James Gough, Benjamin J Evans. Released April 2018. Publisher(s): O’Reilly Media, Inc. ISBN: 9781492039259.

“Programming Language Pragmatics” Michael L. Scott, 2015. Publisher(s): Morgan Kaufmann Publishers.

“The Java Virtual Machine Specification” Java SE 12 Edition” by Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. Released February 2019. Publisher(s): Oracle America, Inc.

Copyright © CCISEL 2025