Opa es un lenguaje de programación de código abierto para desarrollar aplicaciones web escalables .
Se puede utilizar tanto para scripts del lado del cliente como del lado del servidor , donde los programas completos se escriben en Opa y posteriormente se compilan en Node.js en el servidor y JavaScript en el cliente , y el compilador automatiza toda la comunicación entre los dos. [3] [4] Opa implementa tipado estático fuerte , que puede ser útil para proteger contra problemas de seguridad como inyecciones SQL y ataques de scripts entre sitios . [5]
El lenguaje se presentó oficialmente por primera vez en la conferencia OWASP en 2010, [6] y el código fuente se publicó en GitHub [7] en junio de 2011, bajo una licencia pública general GNU Affero . Más tarde, la licencia cambió a la licencia MIT para la parte del framework (biblioteca) y AGPL para el compilador, de modo que las aplicaciones escritas en Opa se pueden publicar bajo cualquier licencia, propietaria o de código abierto.
Diseño y características
Opa consta de un servidor web , una base de datos y un motor de ejecución distribuida. [8] El código escrito en Opa se compila a JavaScript usando Node.js en el lado del servidor y a JavaScript usando jQuery para compatibilidad entre navegadores en el lado del cliente . [9] La ventaja de este enfoque en comparación con ciertas plataformas de aplicaciones de Internet enriquecidas (RIA) es que los usuarios no necesitan instalar un complemento en su navegador. [10] Opa comparte motivaciones con los frameworks web , pero adopta un enfoque diferente. [11] Sus diseñadores afirman que esto ayuda a Opa a evitar muchos problemas de seguridad, como inyecciones SQL o ataques de secuencias de comandos entre sitios (XSS). [12]
El lenguaje principal es funcional y tiene un sistema de tipos estáticos con inferencia de tipos . Opa también proporciona sesiones que encapsulan un estado imperativo y se comunican mediante el paso de mensajes , similar a los procesos de Erlang . Opa proporciona muchas estructuras o funciones que son comunes en el desarrollo web, como objetos de primera clase , por ejemplo HTML [13] y analizadores , basados en gramáticas de expresión de análisis . [14] Debido a esta adhesión entre el lenguaje y los conceptos relacionados con la web, Opa no está destinado a aplicaciones no web (por ejemplo, aplicaciones de escritorio ). [15]
La versión 0.9.0 de febrero de 2012 introdujo la tecnología de mapeo de bases de datos para la base de datos no relacional y orientada a documentos MongoDB , similar al mapeo relacional de objetos . [16] [17] [18] La versión 1.1.0 de febrero de 2013 también agregó soporte para PostgreSQL , allanando el camino para el soporte de varias bases de datos SQL .
Ejemplos
Hola Mundo
El programa tradicional Hola mundo , que produce un servidor web que sirve una página estática con "¡Hola, web!" como contenido, se puede escribir en Opa como: [19]
Servidor . inicio ( Servidor . http ,
{ título : "Hola"
, página : función() { <h1>¡Hola, web!</h1> }
}
)
Se puede compilar en un archivo JS ejecutable independiente con:
$ opa hola_web.opa
Al ejecutar el archivo JS ejecutable resultante se inicia la aplicación web:
$ ./hola_web.js
Véase también
- Ur - un lenguaje de programación funcional para el desarrollo web
- Dart : una alternativa a Javascript para aplicaciones web
- Haxe : lenguaje de programación similar para aplicaciones web
- CoffeeScript : un lenguaje de programación transcompilado a Javascript para aplicaciones web
- Dark, un lenguaje de programación que integra el desarrollo y la implementación de servicios sin servidor
Referencias
- ^ "Versión 1.1.1 · MLstate/opalang". GitHub . Consultado el 29 de enero de 2021 .
- ^ "Buenas noticias sobre Opa" . Consultado el 29 de enero de 2021 .
- ^ Adam Koprowski (24 de febrero de 2012). "Node.js vs. Opa: Web Framework Showdown". developer.com.
- ^ Opa en realidad admite varios backends del lado del servidor, siendo Nodejs el más popular
- ^ Robertson, William; Giovanni, Vigna (2009). "Aplicación estática de la integridad de aplicaciones web mediante tipado estricto". Actas de la 18.ª Conferencia sobre el Simposio de seguridad de USENIX . SSYM'09.[ enlace muerto permanente ]
- ^ "OPA: Soporte lingüístico para una Web segura y sensata, en OWASP 2010". OWASP. Junio de 2010.
- ^ "Repositorio de GitHub". GitHub .
- ^ "Opa: el lenguaje escalable de código abierto en la nube". WebAppers. 22 de julio de 2011.
- ^ "Entrevista: François-Régis Sinot sobre Opa, una plataforma de desarrollo web". InfoQ. 7 de septiembre de 2011.
- ^ Neil McAllister (8 de septiembre de 2011). "Presentamos Opa, un lenguaje de desarrollo web para gobernarlos a todos". InfoWorld.
- ^ "InfoWorld review: Herramientas para el desarrollo rápido de la Web". InfoWorld . 12 de mayo de 2010.
- ^ "Auch Opa ist für Cloud-Anwendungen". Heise en línea . 29 de julio de 2011.
- ^ "Opa - un enfoque unificado para la programación web". i-Programmer. 28 de agosto de 2011.
- ^ Koprowski, Binsztok (2011). "TRX: Un intérprete de análisis formalmente verificado". Métodos lógicos en informática.
- ^ "Opa, un nouveau langage pour le développement d'applications Web" (en francés). LinuxFr. 22 de junio de 2011.
- ^ "Hola, base de datos". Documentación de Opa. Archivado desde el original el 12 de enero de 2014. Consultado el 22 de febrero de 2012 .
- ^ "Soporte de bajo nivel para MongoDB". Documentación de Opa. Archivado desde el original el 12 de enero de 2014. Consultado el 22 de febrero de 2012 .
- ^ "Programación Opa: desarrollo web, reimaginado". Computerworld . 1 de febrero de 2012.
- ^ Alastair Aitken (26 de julio de 2011). «Opa, el lenguaje en la nube: una prueba». Morgan Hill. Archivado desde el original el 25 de septiembre de 2011. Consultado el 6 de septiembre de 2011 .
Bibliografía
- Opa: en marcha , 2013, O'Reilly Media ISBN 978-1449328856
Enlaces externos
- Sitio web oficial