Day 2 of 5 Days of Deep Dives: QubicJ – Java Infrastructure for the Qubic Network
Written by
The Qubic Team
Sep 24, 2024
On Day 2 of our deep dive series - a series that will cover five of the recent Qubic grant winners - we explore QubicJ - a tool-set designed to provide Java infrastructure for developers working on the Qubic network. QubicJ simplifies communication with Qubic nodes and facilitates operations like Qx transactions, making it easier for Java developers to build and innovate without needing to fully understand the underlying Qubic protocol.
The more programming languages Qubic supports, the stronger the ecosystem will become, allowing Qubic to reach and engage developers from different technical backgrounds. QubicJ is a key step in this direction, bringing one of the most popular programming languages, Java, into the Qubic ecosystem.
QubicJ provides developers with the tools they need to create powerful applications within the Qubic ecosystem. This post will explore the project's vision, current progress, and future roadmap.
Who Is Behind QubicJ?
QubicJ is being developed by mio (@o.mio on Discord), a skilled Java developer and active contributor to the Qubic community, with a background in decentralised technologies and blockchain infrastructure.
The Vision Behind QubicJ
QubicJ is designed to enable Java developers to easily interact with the Qubic network by providing both reactive and classic stacks. It takes away the need to understand the complexities of the Qubic protocol, allowing Java developers to focus on building applications, such as decentralised apps (dApps) or smart contract interactions.
With features like automatic selection of healthy nodes, transaction management, and smart contract interaction (e.g., Qx), QubicJ makes developing on the Qubic network more accessible.
Current Development Progress
QubicJ-Computor-API: Interaction with Qubic Nodes
The qubicj-computor-api module allows developers to communicate with Qubic nodes (Computors) efficiently. This API is central to enabling developers to create applications that can seamlessly interact with the Qubic network.
QubicJ-Shell: Command-Line Wallet and Node Tool
The qubicj-shell is a command-line tool for managing multiple Qubic wallets and interacting with nodes and smart contracts. Primarily designed for Linux users, the shell enables developers to:
Create and Manage Wallets
Communicate with Qubic Nodes
Execute Qx transactions
The shell also serves as a reference for developers, demonstrating how to use the QubicJ library in larger projects.
Getting Started with QubicJ
For developers looking to integrate QubicJ into their projects, you’ll need Java 21. While Linux is the officially supported OS, QubicJ can run on any operating system that supports Java and the needed shared library.
To ensure QubicJ works correctly, developers need to install the qubic-cli shared library, as the crypto components of Qubic (FourQ and SchnorrQ) have not yet been ported to Java.
If you only need the computor API, you don’t need to build the entire project - simply include the dependency from the official public Maven repository.
Latest Release: Link to Latest Release
GitLab Repository: View on GitLab
Roadmap and Future Milestones
QubicJ is already usable and continues to evolve. Below is the development roadmap, with milestones aimed at expanding its capabilities:
MS1 – Finished: Proof of Concept (POC)
MS2 – Finished (Autumn 2024): First version and wallet release
MS3 – Partly Finished (Jan 2025):
All wallet functionality, including Qx operations – Finished
API communication improvements – Open
Additional functionality for smart contracts and node calls – Open
MS4 – Mid 2025:
Finalize API, code, and documentation
Start long-term maintenance and support
Next Steps:
Complete Qx Implementation: Qx is mostly implemented, except for asset transfers, which will be added soon.
Key Features and Use Cases of QubicJ
Simplified Java Development
QubicJ simplifies the Qubic protocol, allowing developers to:
Build dApps without needing detailed protocol knowledge
Handle Node Communication with automatic node selection
Command-Line Wallet Management
The qubicj-shell offers developers a command-line interface for managing wallets and performing transactions:
Create and Manage Wallets
Communicate with Nodes
Execute Qx Transactions
Qx Integration
QubicJ integrates with Qx, enabling users to:
Manage Digital Assets
Show order books
Place bid/ask orders directly from the command line
Support and Contributing
For support, reach out to mio @o.mio via the Qubic Discord server. Developers are encouraged to contribute to the project, provided they agree to the dual-licensing conditions. Contributions must be free of copyright issues, and the project owner retains the right to license the code under proprietary terms.
Join the #qubic-java channel in the Qubic Discord for more information.
Long-Term Vision and Scalability
The vision for QubicJ is to become the foundation of Java development on the Qubic network. The tool-set provides a straightforward but powerful way for Java developers to contribute to the Qubic ecosystem, with a simple API that is already fully functional.
As it grows, the Qubic ecosystem will benefit from more developer tools like QubicJ, making it easier for developers to contribute more effectively to the network due to broader language support.
What’s Next?
The QubicJ project is actively evolving, with new features and improvements continuously being added. The team’s immediate focus is on completing Qx integration and enhancing API communication logic.
Join us tomorrow for Day 3 of our deep dive series, where we explore another innovative project in the Qubic ecosystem: Qubic Name Service (QNS).
What features of QubicJ are you most excited to see implemented? Join the conversation on Discord and Telegram and share your thoughts.
Disclaimer
QubicJ is a community-driven initiative and operates independently of Qubic Core and the Steering Committee (SteCo). It reflects the efforts and ideas of the community.
Developer Grants Available
Do you have a project idea that could support the growth of the Qubic network? Qubic is actively seeking developers to help us grow our ecosystem. Read more about the Qubic Grants Program and how to apply for a grant.
Please note: The Qubic Grants Program is not currently accepting applications. There will be an announcement when the next grant period opens.