No markup necessary: Hyperscala 0.10.0

JAX Editorial Team
Highlight image via Shutterstock

Hyperscala is a statistically typed, bare-metal HTML, CSS and JavaScript framework for Scala. It provides the ability to write web pages completely in Scala without having to resort to a markup language.

Developer Matt Hicks is the man behind Hyperscala, a web framework in Scala that provides type-safe HTML, CSS, SVG, and JavaScript to developers. He believed that “another web framework” was necessary and says that deep down, Hyperscala is simply a webpage rendering framework, which is its biggest advantage.

Introducing Hyperscala

So, you’ve already got HTML you want to use for a project and you think it’ll just be easier to use that. No problem with Hyperscala, which contains a utility that converts said code into Scala. Another approach allows the dynamic import of HTML via the DynamicContent trait. This way, only the elements you want to work with will be loaded as needed.

Contrary to the assumption that the latter variant will be incredibly slow, Hicks says that it’s actually the faster option due to pre-discarding optimisations in most cases, compared to a dynamically regenerated JSP file that only cares about the parts that were changed.

Using Modules, the core functionality of Hyperscala can be extended with additional features. Modules provide the ability to define shared functionality between applications, components and features.

For example, there is a rather simple Module for jQuery that any tag or page that needs to make use of can simply ‘require’ in their code. The significantly more powerful Realtime Module enables two-way communication in real-time via WebSockets.

To get a more comprehensive overview of Hyperscala, it’s worth having a look at the documentation available.

Hyperscala 0.10.0

The latest version at 0.10.0 offers an extensive refactoring, with the Realtime Module providing better and more efficient communication between client and server. The architecture has also been simplified and adjusted to facilitate the creation of websites.

The new ContentEditor feature aims to improve support for rich content editing in the browser. Furthermore, the added Wrapper-Support for FabricJS has created a new interface that serves up dynamic multi-page illustrations without needing to load a new page in the browser.

comments powered by Disqus