Choosing a Language: Java, C++, or Python
WPILib officially supports three text-based languages — Java, C++, and Python (RobotPy). Learn the tradeoffs and where LabVIEW fits today.
Sign in to track progress, earn XP, and save lessons.
The three officially supported text-based languages
WPILib has three officially supported text-based languages, all with full WPILib bindings:
- Java (WPILibJ) — by far the most popular FRC language. Great balance of safety, readability, and a huge community. Most tutorials, example code, and Chief Delphi posts are in Java. Recommended for new teams and beginners.
- C++ (WPILibC) — used by teams that want maximum performance or lower-level control. More powerful but less forgiving (manual memory concerns, longer compile times). Modern WPILib C++ uses smart pointers and a units library, which helps a lot.
- Python (RobotPy) — Python became an officially supported FRC language for the 2024 season (after years as a community project). RobotPy provides Python bindings to WPILib. Excellent if your team already knows Python; a smaller but growing ecosystem of FRC-specific examples.
These three were chosen because they hit the right level of abstraction and are common in both industry and high-school CS classes.
What about LabVIEW?
LabVIEW still exists for FRC and is technically still offered by NI, but it is a graphical (not text-based) language, is Windows-only, and its community support, examples, and momentum have declined sharply. WPILib's own docs list the three text-based languages first, and the vast majority of vendor examples (CTRE, REV, PathPlanner, Choreo) target Java/C++/Python. For these reasons, new teams should not start in LabVIEW — choose Java, C++, or Python instead. (Note: even text-language teams still install part of NI's tooling, because the Driver Station and roboRIO Imaging Tool ship in the NI FRC Game Tools.)
How to decide
| If your team... | Pick |
|---|---|
| Is new, or unsure | Java |
| Already does AP CS / takes a Java class | Java |
| Wants max performance / has experienced mentors | C++ |
| Already knows Python well | Python (RobotPy) |
The concepts in this guide (command-based programming, PID, odometry, trajectories) are identical across all three text languages — only the syntax changes. WPILib's documentation shows Java, C++, and Python side-by-side for nearly every example, so you can switch later without relearning the ideas.
Java vs. the others, concretely
A tiny example — setting a motor to half power — looks like:
- Java:
motor.set(0.5); - C++:
motor.Set(0.5); - Python:
motor.set(0.5)
The shapes are nearly identical. C++ method names are PascalCase; Java/Python use camelCase. The deeper differences (memory management, the build) rarely affect day-one learning.
Bottom line
If you have no strong reason otherwise, use Java. It has the most learning resources, the largest community, and the gentlest on-ramp, while still being powerful enough to win championships. This guide uses Java in its examples, but the lessons apply to all three text languages.
Key takeaways
- WPILib officially supports three text-based languages: Java, C++, and Python (RobotPy).
- Java is the most popular and the best default for beginners.
- Python (RobotPy) became officially supported starting in the 2024 season.
- LabVIEW still ships from NI but is Windows-only, graphical, and in decline — don't start a new team in it.
- Concepts are identical across the text languages; only syntax differs.
Lesson quiz
RequiredAnswer all 3 questions correctly to complete this lesson.
1.Which three text-based languages does WPILib officially support for programming an FRC robot?
2.How is the Python version of WPILib (RobotPy) primarily implemented?
3.What does WPILib do to keep the Java, C++, and Python libraries consistent for teams?
Answer every question to submit.