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

Languages and Managed Runtimes

(pt: Linguagens e Ambientes de Execução)

Professor: Miguel Gamboa de Carvalho

Year: 2
Semester: 4
ECTS: 6

Repository
Institutional information at ISEL

Goals

A student completing this course unit should be able to:

  1. Compare and use different common constructs in modern programming languages, mapping different programming paradigms, and their support in the execution environment.
  2. Understand the main constituents of managed runtimes, and know how to compare different type systems approaches in these environments.
  3. Use runtime metadata (reflection) to examine types and use metaprogramming to analyze and transform programs at runtime.
  4. Analyze the performance of managed programs and efficiently use automatic memory management support (garbage collection).

Syllabus

  1. Main constructions of languages supported in managed runtimes, and their contextualization in different programming paradigms, using as main case study the Java Virtual Machine (JVM).
  2. Main constituents of managed runtimes, namely: class loader, verifier, just-in-time compiler, metadata and memory management.
  3. Comparison of type systems for managed runtimes regarding: equivalence rules, compatibility and inference.
  4. Java reflection API and metaprogramming case studies in software development.
  5. Execution stack model and records. Analysis of the main Java bytecode instructions supported by tools for structural reflection (e.g. ASM, Javassist).
  6. Introduction to the performance analysis of programs written in Java, and the use of monitoring tools for the JVM (e.g. jconsole).
  7. Introduction to garbage collection algorithms in the JVM.

Outcomes

This course identifies the main problems solved by runtimes for high-level languages and the support they provide for application development. In particular, it analyzes constructions available in high-level languages and their type systems, using Java as the main case study.

The consistency between the syllabus and the objectives of the course is as follows:

  • Objective 1 is achieved through contents I and III;
  • Objective 2 is achieved through contents II, III, and IV;
  • The contents IV and V contribute to objective 3;
  • The contents V, VI and VII aim to achieve objective 4.

Bibliography

“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