Opa is a new generation of web development platform – it is a new programming language, a new web server, a new database and a new distributed execution engine, all of them tightly integrated to provide a great experience for web developers.
OPA is concise, simple and readable, it is also provides concurrent, dynamically distributed, and extremely secure programming model. Opa is designed to make web development fun, secure and right. Opa is a complete language and not just a framework, the unified approach of Opa delivers a new level of developing experience with unmatched ease of use and security.
While Opa offers all the features that developers have come to expect from a high-end web server, a high-end distributed database management system, frameworks or distribution engine, Opa does not resemble Apache or Tomcat, MySQL or Oracle SQL, Drupal or Ruby on Rails, Google AppEngine or Hadoop.
Let us take a sneak peek preview and take a look at the simplest application: Hello, web.
server = one_page_server("Hello", -> <>Hello, web!</>)
This is the full source code of the application. Without any setup (besides the installation of the compiler), obtaining a complete, deployable application is only a matter of one step:
This command produces a stand-alone executable binary, containing everything required for execution, including database management, compiled requests, server code, client code, user interface and everything that may be needed to connect them or to handle malicious connections or inputs. Opa generated and checked all this code for you. You may now launch the server:
Or, if you prefer, you may deploy it to a cloud:
opa-cloud hello_web.exe --host localhost --host my@server1 --host my@server2
Your application is launched, load-balanced, and servers share whichever information is necessary.
Although I’ve yet to develop an OPA application of more than average complexity to gauge the actual benefits of it; it looks promising and also something new to try. The OPA API also looks quite complete and well documented.