A complete compiler, interpreter, and IDE for the MiniJaja programming language. Built as a group project during the first semester of M1 Computer Science at Université de Franche-Comté.
MiniJaja Studio is an educational compiler and interpreter system for MiniJaja, a simplified Java-like programming language designed for teaching compiler construction and program execution concepts. The project features a full-featured JavaFX-based IDE with real-time compilation, step-through debugging (including step-by-step execution and breakpoints), and memory visualization.
MiniJaja - A class-based source language supporting:
- Variables and constants with type checking (
int,boolean,void) - Single-dimensional arrays
- Methods with parameters and return values
- Control flow structures (
if/else,while) - Arithmetic and logical operators
- Console Output operations
JajaCode - Low-level bytecode representation:
- Stack machine instructions
- Memory operations (load, store, heap allocation)
- Control flow primitives (goto, conditional jumps)
- Array manipulation
- Dual Editor: Edit both MiniJaja source code and JajaCode bytecode
- Compilation: Transform MiniJaja programs into JajaCode with comprehensive error reporting
- Interpretation: Execute both language levels directly
- Debugging: Step-by-step execution with breakpoint support
- Memory Visualization: Real-time stack and heap inspection during program execution
- Syntax Highlighting: Color-coded syntax for improved readability
- File Management: Load and save
.mjjsource files
The project follows a modular architecture with clear separation of concerns:
├── memory/ Memory management (stack, heap, symbol tables)
├── ast/ ANTLR-based parser and AST construction
├── compiler/ MiniJaja to JajaCode compilation with type checking
├── interpreter/ Dual interpreters for MiniJaja and JajaCode
├── driver/ JavaFX IDE application
├── integration_tests/ Integration test suite
└── acceptation_tests/ BDD-style acceptance tests (Cucumber)
- Java 22 - Core implementation language
- Maven - Build and dependency management
- ANTLR 4 - Lexer and parser generation
- JavaFX - GUI framework
- JUnit 5 + Mockito - Unit testing
- Cucumber/Gherkin - Acceptance testing
- JaCoCo - Code coverage analysis
- Java Development Kit (JDK) 22 or higher
- Maven 3.6+
# Compile all modules
mvn clean install
# Run tests
mvn test
# Generate code coverage report
mvn jacoco:report# Launch the MiniJaja Studio IDE
cd driver
mvn javafx:runOr use the Maven wrapper :
./mvnw -pl driver javafx:runOr the produced jar :
cd driver/target
java -jar driver-VERSION.jarExample MiniJaja programs are included in the acceptation_tests/src/test/resources/ directory:
Simple.mjj- Basic class structureBasicOperations.mjj- Variable declarations and arithmeticLoops.mjj- While loop demonstrationConditionals.mjj- Conditional branchingComplex.mjj- Methods, parameters, and I/O operations
Generate JavaDoc for all modules:
# Linux/macOS
./generate-javadoc.sh
# Windows
generate-javadoc.batDocumentation will be available in target/site/apidocs/ for each module.
The project maintains high code quality standards with continuous integration and automated testing.
- Unit Tests: Comprehensive test coverage across all modules
- Integration Tests: End-to-end compilation and execution verification
- Acceptance Tests: BDD scenarios validating language specifications
- Static Analysis: SonarQube integration for code quality metrics
- Code Coverage: JaCoCo reports with detailed coverage statistics
This project was developed as part of the "Application Machines Virtuelles" (AMV) course during the first semester of the Master's program in Computer Science at Université de Franche-Comté (2025). The project was completed as a team of six students throughout the semester.
6 developers
- Program: Master 1 Computer Science
- Course: AMV (Application Machines Virtuelles)
- Semester: Fall 2025
- Institution: Université de Franche-Comté
The project uses GitHub Actions for automated builds and testing (but was originally designed for the private university GitLab) :
- Automated compilation on push and pull requests
- Test execution across all modules
- Code coverage reporting
Each module has its own pom.xml and follows Maven's standard directory layout:
src/main/java- Production codesrc/main/antlr4- ANTLR grammar files (AST module)src/main/resources- Resource filessrc/test/java- Test codesrc/test/resources- Test resources
This project was developed for educational purposes as part of university coursework.
Special thanks to the teaching staff of the course and my teammates for their involvement throughout the project !

