Dynamic languages gained popularity for their flexibility, letting developers move fast and iterate quickly. Still, turning prototypes built this way into maintainable software requires well thought-out infrastructure and specialist tooling to support evolution. In all truth, "enterprise-grade" is not just about type safety, but about meeting organizational needs of software departments.
GraalVM, developed by Oracle Labs, runs dynamic languages on Java™, combining the scripting agility with the performance and stability of the global platform. While this enables serious development, integrating de-facto scripts into sustainable workflows while meeting the modern gold-standard of developer experience has so far remained an unsolved challenge.
Farao | feroʊ | by British Software bridges this gap. It offers an integrated development suite that enables multilingual teams and developers to smoothly connect dynamic runtime code with static codebases. This empowers engineers to freely experiment with and gradually adopt the scripting paradigm – whether in legacy systems or greenfield projects.
Farao utilities allow programmers to interface between Java and GraalVM languages with proper Dev-X via frictionless cross-language bridges. For instance, our Javish initiative offers a collection of high-quality translations available to the public who can just jump in to import Java libs from the VMs.
Farao explores the foundations of GraalVM design, conducts and communicates academic-grade research, and facilitates technology transfer to accelerate market adoption, equipping industry with the right tools it needs to unlock the full potential of dynamic languages in the era of agile.
Farao's philosophy is that Java should not be viewed as a programming language — but as a full-cycle programming system. True enterprise software engineering is not only about types, but rather about managing knowledge and complexity through modularity. Our tools are built to deliver exactly that.
A Javadoc doclet to generate TypeScript headers for GraalJS. Includes advanced features like example adaptations.
An automatic API changelog generator that tracks additions, removals and signature changes across releases.
A protoc plugin written in Java that follows native protobuf CPP code. Outputs wrappings for GraalVM languages.
| Library | Lang | Description |
|---|---|---|
| Javadoc 2 Md | java | Converts Javadoc to markdown, handling all block and inline tags including lists, tables, snippets, etc. |
| Parallel Doclet | java | Helps to run doclets in parallel threads by synchronizing access to the elements and type utils in the DocletEnvironment. |
| Resolver | java | Resolves elements (types and their members) by names inside Javadoc comments (for resolution of @links, @throws). |
| Namespacer | js | Allows use of traditional, Java-esque imports in GraalJS by reconstructing linked class path inside node_modules. |
Development server running as a daemon to instantly spawn GraalVM virtual machines without waiting for HotSpot cold-starts. Resolves and isolates dependencies listed in guest manifests accordingly.
A bold new runtime with the standard library comprised of OpenJDK and other canonical modules. Compiled into native image, is conceived to be the enterprise-first alternative to the mainstream runtimes.
The task-force to port the Java ecosystem headers to GraalVM languages for broader and easier developer engagement.
The namespace for sharing Protobuf™ definitions of popular libraries needed to establish inter-process pipings.
The era of runtime distros is here: let's embrace it! As more devs build their own, we maintain a collection of distributions.
By bringing high-performance scripting languages into the same runtime as Java, and backing them with the most mature standard library in the industry, GraalVM is at the heart of a new wave of agile productivity tools not seen since the first software crisis. Engineers can now move seamlessly from prototyping in dynamic environments to hardening solutions in static codebases, all while relying on Oracle for support and responsible engineering practices seldom found in "vibrant Open Source communities".
As the barrier to adoption is shifting from "does it work?" to "does it meet developer expectations?", attracting new and onboarding existing developers, all spoilt by the most sophisticated inference engines in the world, requires a 100% dedication to the mission of finding a place for a product that can complement rather than replace Java. It is the domain of Developer Experience (Dev-X) that will determine whether this new powerful technology will reach its full potential or remain confined to research papers.