
Web Development
Language of the Month: Opa
By Adam Koprowski, October 31, 2011
A single language to write all three tiers of a Web application and provide intelligent scalable deploymentRelated Reading
More Insights
White Papers
- Modernize your Security Operations with Human-Machine Intelligence
- The Cyber Threat Impact of COVID-19 to Global Business
Reports
- How Enterprises are Attacking the Cybersecurity Problem
- Forrester Report: The Total Economic Impact Of Bizagi's Low-Code Intelligent Process Automation Platform
Webcasts
- PAM for the Extended Enterprise: Enforcing privileged access in hybrid cloud environments
- Strategies For Securing Your Supply Chain

Currently we allow the following HTML tags in comments:
Single tags
These tags can be used alone and don't need an ending tag.
<br>
Defines a single line break
<hr>
Defines a horizontal line
Matching tags
These require an ending tag - e.g. <i>italic text</i>
<a>
Defines an anchor
<b>
Defines bold text
<big>
Defines big text
<blockquote>
Defines a long quotation
<caption>
Defines a table caption
<cite>
Defines a citation
<code>
Defines computer code text
<em>
Defines emphasized text
<fieldset>
Defines a border around elements in a form
<h1>
This is heading 1
<h2>
This is heading 2
<h3>
This is heading 3
<h4>
This is heading 4
<h5>
This is heading 5
<h6>
This is heading 6
<i>
Defines italic text
<p>
Defines a paragraph
<pre>
Defines preformatted text
<q>
Defines a short quotation
<samp>
Defines sample computer code text
<small>
Defines small text
<span>
Defines a section in a document
<s>
Defines strikethrough text
<strike>
Defines strikethrough text
<strong>
Defines strong text
<sub>
Defines subscripted text
<sup>
Defines superscripted text
<u>
Defines underlined text
Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.
![]() |
To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy. |
I have noticed a discrepancy in the information provided here and in http://en.wikipedia.org/wik... about the compiler's result - here the result is an executable with extension .exe, in the wikipedia document the compile steps results in an 'executable' .js file.
As for CSS and similar resources Opa has a special "development" mode where such resources are mapped to the file system, can be edited (with immediate changes in the running application) and only then the app can be recompiled to embed those changed files. [http://doc.opalang.org/inde..., http://blog.opalang.org/201...]
As for the code Opa supports a plug-in mechanism which allows linking against other libraries, which can be written either in Opa or in other languages (JS, C, Ocaml), [http://doc.opalang.org/inde...].
How are external dependencies managed?
Having evreything in one deployment package is nice, but we've been here before, and often it's essential to be able to swap out a particular sub-component (library, DLL, SO, etc.) for a newer (fixed) version. Same goes for other assets (CSS, etc.).
To have to rebuild the whole unit just for a CSS change seems extreme, or have I missed something?
WT achieves this using C++.
Apart from Opa I think there is Node.js and Ur/web that are trying to do that. But indeed, there does not seem to be a *popular* language (Ruby on Rails aside) using this approach. Of course my hopes are high that Opa will fit this bill one day :).
Weird that after the success of Ruby on Rails, no other language has embraced this approach. That is, of using one language for all three tiers.