The Java Virtual Machine in Hardware

This course is about the Java processor JOP, an implementation of the Java Virtual Machine (JVM) in hardware and embedded systems programming in Java.


The aim of this class is to prepare the students for a career in the emerging area of System-on-Chip with FPGAs and embedded systems.


This course is about the implementation of the Java Virtual Machine (JVM) in hardware and the design trade-offs for different HW/SW partitioning schemes. The students will learn the fundamentals of the JVM and a Java processor architecture. The combination of these two topics will be shown with and practiced on JOP (the Java Optimized Processor). They will learn the design flow starting with building a soft-core CPU in an FPGA up to the Java application that runs on this CPU. Based on the understanding of the design flow the practical aspects of the embedded  Java programming and HW/SW partitioning will be explored in the lab with small projects.

Areas Covered


Held as special course (5 ECTS) during the three week period in June  (07.06.10 – 25.06.10).

The course starts Monday 7. June in Room 205 in building 322 at 10:00. The lab part is also in building 322, the Databar in the third floor (room 299).

Lecturer: Martin Schoeberl

Sign up per email to
Limit of participants: 25

Lecture Dates

The lab (322.299) shall be available during the whole three weeks. Supervision in the lab on appointment - just drop by in my office opposite of the lab.


Lab Work

The work will be done in groups of up to 4 in the laboratory. The students are free to chose exercises that fit to their skills and interests. A report in a short paper format (up to 4 pages or as Wiki page) and a short presentation of one project will conclude the course.

Introduction Exercise: 10 Points

The first exercise is a Hello World program running on JOP. This work is supervised and will help the students to get used to the design flow. After this introduction the students are free to select one project.

The design flow and the exercise is described in the handbook in Chapter 2. Take care that the default configuration of the Makefile is for a different board. You have to set the Quartus project (QPROJ) to altde2-70 and use the USB-Blaster instead the ByteBlaster (uncomment the line in the Makefile).

Thread Example: 10 Points

The second exercise gives an introduction into programming of periodic real-time threads. Implement a tiny application that uses at least two real-time threads, perform WCET analysis, and schedulability analysis with utilisation based analysis (see: An example could be the implementation of a clock that prints the current time by flashing the watchdog LED.

Project: 60 Points

A project is autonomous work and each project can only be done by one group. Your ideas are welcome.

For a list of possible ideas see  You shall also enter your project into that Wiki.

Final report: 20 Points

The final report should describe the problems and solutions of one task or project. The report has to be written in English. In can be a PDF or just entered into the JOP Wiki.