JOPA: Java compiler in C++, Jikes modernized to Java 6 with Claude
Recorded: Nov. 27, 2025, 1:02 a.m.
| Original | Summarized |
GitHub - 7mind/jopa: JOPA: Java compiler in C++ Skip to content Navigation Menu Toggle navigation
Sign in
Appearance settings Platform GitHub Copilot
Write better code with AI GitHub Spark Build and deploy intelligent apps GitHub Models Manage and compare prompts GitHub Advanced Security
Find and fix vulnerabilities Actions
Automate any workflow Codespaces
Instant dev environments Issues
Plan and track work Code Review
Manage code changes Discussions
Collaborate outside of code Code Search
Find more, search less Explore Why GitHub
Documentation
GitHub Skills
Blog
Integrations GitHub Marketplace
MCP Registry
View all features
Solutions By company size Enterprises
Small and medium teams
Startups
Nonprofits
By use case App Modernization
DevSecOps
DevOps
CI/CD
View all use cases
By industry Healthcare
Financial services
Manufacturing
Government
View all industries
View all solutions
Resources Topics AI
DevOps
Security
Software Development
View all
Explore Learning Pathways
Events & Webinars
Ebooks & Whitepapers
Customer Stories
Partners
Executive Insights
Open Source GitHub Sponsors
Fund open source developers The ReadME Project
GitHub community articles Repositories Topics
Trending
Collections
Enterprise Enterprise platform
AI-powered developer platform Available add-ons GitHub Advanced Security
Enterprise-grade security features Copilot for business
Enterprise-grade AI features Premium Support
Enterprise-grade 24/7 support Pricing Search or jump to... Search code, repositories, users, issues, pull requests...
Search Clear
Search syntax tips Provide feedback Include my email address so I can be contacted Cancel Submit feedback Saved searches
Name Query To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up
Appearance settings Resetting focus You signed in with another tab or window. Reload to refresh your session. Dismiss alert 7mind jopa Public forked from daveshields/jikes Uh oh! There was an error while loading. Please reload this page.
Notifications
Fork
Star JOPA: Java compiler in C++ View license 25 14 Branches Tags Activity
Star
Notifications Code Pull requests Actions Projects Security Uh oh! There was an error while loading. Please reload this page. Insights
Additional navigation options
Code Pull requests Actions Projects Security Insights
7mind/jopa
mainBranchesTagsGo to fileCodeOpen more actions menu Folders and filesNameNameLast commit messageLast commit dateLatest commit History109 Commits.github.github assetsassets cmakecmake docsdocs runtimeruntime scriptsscripts srcsrc testtest tools/jikespgtools/jikespg .envrc.envrc .gitignore.gitignore .gitmodules.gitmodules CMakeLists.txtCMakeLists.txt LICENSELICENSE README.mdREADME.md flake.lockflake.lock flake.nixflake.nix View all filesRepository files navigationREADMEContributingLicenseJOPA: Javac One Patch Away A totally Claude'd effort in modernizing jikes, the historical independent javac implementation in C++. ✅ Generics - Type erasure with generic classes, methods, and bounded type parameters Java 6 Features ✅ Class file version 50.0 - Generate Java 6 bytecode with -target 1.6 Java 7 Features ✅ Diamond Operator - Type inference for generic instance creation (new ArrayList<>()) Java 7 Bytecode Status Feature Diamond operator Multi-catch Try-with-resources String switch Exception suppression (addSuppressed) Note: Use -source 1.7 -target 1.6 to compile Java 7 code to Java 6 bytecode, which runs on any JVM without verification issues. Full -target 1.7 support requires StackMapTable generation (not yet implemented). ✅ Default Methods - Interface methods with default implementations Building Requirements: CMake 3.20+ and a C++17 compiler With Nix: Generic CMake: Useful CMake options: -DJIKES_ENABLE_DEBUG=ON — Enable internal compiler debugging hooks jikes Originally written by Philippe Charles and David Shields of IBM Research. Chris Abbey
About JOPA: Java compiler in C++ Readme View license Contributing Contributing Uh oh! There was an error while loading. Please reload this page. Activity Custom properties 25 0 1 Report repository Releases 3 Sponsor this project
Uh oh! There was an error while loading. Please reload this page. patreon.com/7mind https://www.buymeacoffee.com/7mind Learn more about GitHub Sponsors Packages No packages published Languages C++ C Java GAP CMake SWIG Other Footer © 2025 GitHub, Inc. Footer navigation Terms Privacy Security Status Community Docs Contact Manage cookies Do not share my personal information You can’t perform that action at this time. |
JOPA: Java compiler in C++ represents a significant, albeit somewhat troubled, effort to modernize the historical jikes compiler – originally developed by IBM Research. This repository, maintained by 7mind, presents a fork of the original daveshields/jikes project, aiming to bring the compiler up-to-date with evolving Java language features. The project’s history reveals a complex journey, marked by ambitious goals and ultimately, limitations in achieving full bytecode generation support for newer Java versions. The core of JOPA’s design centers around providing a C++ implementation of a Java compiler. The initial focus was on supporting Java 5 and 6 language features, including Generics, Enhanced For-Loops, Varargs, Enums, Autoboxing/Unboxing, and Static Imports. Furthermore, support was added for Java 6's class file version 50.0 and debugging information. A notable, partial, effort was made to support Java 7, incorporating features like the Diamond Operator, Multi-catch, Try-with-resources, String switch, Binary Literals, and Underscores in Numeric Literals. However, full support for Java 7’s bytecode generation required StackMapTable support, a feature not yet implemented. The development process, as outlined in the README, highlights significant technical challenges. The tight coupling between the parser and the core compiler, specifically due to the legacy parser used, proved difficult to overcome, hindering the compiler’s ability to generate modern Java 7 bytecode. The project acknowledged limitations around StackMapTable generation, a crucial element for achieving compatibility with newer JVMs. Building JOPA requires CMake 3.20 or later and a C++17 compiler. The recommended approach utilizes the repo’s nix/direnv setup for a streamlined build process. It relies heavily on CMake for configuration and then utilizes it to build the project, leveraging multiple cores for reduced compilation times. Important CMake options are configurable, including enabling debugging hooks and choosing between emulated and native floating-point support. The project’s origins are intertwined with the history of jikes, which was initially developed by Philippe Charles and David Shields at IBM Research. Their initial release in 1997, known for its speed and helpful error messages, gained widespread recognition and was even included in Redhat Linux in 1999. The project continued to evolve, benefiting from contributions from numerous individuals over the years, including Chris Abbey, Musachy Barroso, and others. Although IBM discontinued its formal involvement in late 1999, the project continued, first at Developerworks and later on Sourceforge. The project’s development was eventually halted due to the shifting landscape of the Java language, particularly the introduction of generics, which presented significant technical hurdles. Despite these challenges, JOPA remains valuable as a snapshot of a dedicated effort to modernize a historical compiler and as a demonstration of the complexities involved in building a compiler from scratch. It provides insight into the evolution of the Java language and the challenges of achieving full compatibility with Java bytecode. The project's legacy serves as a reminder of a smaller, yet ambitious, undertaking within the broader world of Java development. |