Skip to content

hsjdhudn/XF-APP

Repository files navigation

XF-APP

XF-APP is a versatile visual code editor built on Google Blockly, designed to lower the programming barrier through drag-and-drop block-based interactions. It supports users in editing multiple programming languages such as R, Ruby, Python, Go, PHP, Dart, Lua, and more. The project is developed using Java and JavaScript, and Bazel is chosen as the build tool to support a multi-language ecosystem, avoiding the limitations of Gradle or Maven. Currently, it supports Windows x86-64, Linux x86-64/arm64, and macOS x86-64/arm64 platforms, but Windows ARM64 is not yet compatible due to dependency constraints. Developers are actively improving the plugin system and plan to launch a new language XFLANG compatible with Java/Kotlin. Future development will continue to expand functionality and welcome community collaboration.

Technical Foundation and Core Design

The core of XF-APP relies on Google Blockly, a visual programming tool that is a pure JavaScript library, running entirely on the client side without server support and featuring high customizability. Blockly represents code logic (such as variables, loops, and conditional judgments) through graphical block combinations, allowing users to generate programs without focusing on syntax details, and supporting the export of JavaScript, Python, PHP, and other mainstream language code. Building on this, XF-APP integrates the Blockly engine through Java, extending code conversion capabilities to more languages (such as R, Go, etc.), enabling drag-and-drop editing to cover a wider range of development scenarios.

Multi-language Support and Build Tool Selection

The key reason for choosing Bazel over Gradle or Maven is its multi-language build capability. While Gradle and Maven are primarily designed for the Java ecosystem, Bazel natively supports multiple languages such as Python, C++, and Go, which aligns with XF-APP's need to handle Java, JavaScript, and target languages (like Ruby, PHP) simultaneously. For example, when users drag blocks to generate Python code, Bazel can uniformly manage dependencies and build processes, ensuring the stability of cross-language collaboration. For low-level languages like C, due to the difficulty in designing visual blocks that involve memory management and pointer operations, reserved plugin interfaces provide space for future community contributions.

Cross-platform Compatibility and Architecture Support

XF-APP prioritizes coverage of mainstream operating systems and architectures, with particular emphasis on the ARM64 ecosystem to avoid the burden of manual compilation for users. Currently, Linux and macOS support both x86-64 and ARM64 architectures, but Windows ARM64 is not yet supported due to the absence of OpenJFX binary libraries in Maven repositories. This limitation stems from the delayed adaptation of the Java ecosystem to ARM64, and developers are exploring alternative solutions (such as directly integrating native libraries) to reduce dependence on specific tools. In the future, this issue may be resolved through custom JFX builds or community collaboration.

Development Progress and Future Plans

The current project is maintained by individuals, but its modular design allows for external contributions. Although the plugin system is not yet complete, interfaces have been reserved for developers to add new languages or features (such as debugging tools). The planned XFLANG language aims to combine the conciseness of Kotlin with the interoperability of Java, further lowering the entry barrier to the Java ecosystem. The long-term goal is to transform XF-APP into a general-purpose tool applicable to fields such as education and automated testing, similar to the successful cases of Blockly in programming teaching and robot control.

Collaboration Invitation and Community Building

Developers encourage users to provide feedback or participate in code contributions, especially in plugin development (such as C language support), ARM64 architecture optimization, and XFLANG design. Project documentation and source code are hosted on public platforms (such as GitHub), facilitating community iteration. This open model is similar to Blockly's open-source ecosystem, whose custom block and toolbox mechanisms have been widely applied in platforms like APP Inventor, demonstrating the potential of visual programming tools in lowering technical barriers.

About

A blockly code editor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published