Opa es un lenguaje de programación de código abierto para desarrollar aplicaciones web escalables .
Paradigma | multi-paradigma : funcional , imperativo |
---|---|
Desarrollador | MLstate |
Apareció por primera vez | 2011 |
Lanzamiento estable | |
Disciplina de mecanografía | estático , fuerte , inferido |
SO | Linux , OS X , Windows |
Licencia | Licencia MIT , AGPLv3 |
Sitio web | opalang |
Influenciado por | |
OCaml , Erlang , JavaScript |
Puede ser utilizado tanto para el lado del cliente y de script del lado del servidor , donde los programas completos se escriben en Opa y posteriormente compilados para Node.js en el servidor y JavaScript en el cliente , con el compilador de la automatización de todas las comunicaciones entre los dos. [3] [4] Opa implementa un tipo fuerte y estático , que puede ser útil para proteger contra problemas de seguridad como inyecciones de SQL y ataques de secuencias de comandos 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 GNU Affero General Public License . Más tarde, la licencia cambió a la licencia MIT para la parte del marco (biblioteca) y AGPL para el compilador, de modo que las aplicaciones escritas en Opa se puedan lanzar 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 distribuido. [8] El código escrito en Opa se compila en JavaScript usando Node.js en el lado del servidor y en JavaScript usando jQuery para compatibilidad entre navegadores en el lado del cliente . [9] La ventaja del enfoque en comparación con ciertas plataformas de aplicaciones de Internet enriquecidas (RIA) es que los usuarios no están obligados a instalar un complemento en su navegador. [10] Opa comparte motivaciones con los marcos web , pero adopta un enfoque diferente. [11] Sus diseñadores afirman que esto ayuda a Opa a evitar muchos problemas de seguridad, como inyecciones de SQL o ataques de scripts entre sitios (XSS). [12]
El lenguaje central 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 las gramáticas de expresión analítica . [14] Debido a esta adhesión entre el lenguaje y los conceptos relacionados con la web, Opa no está diseñado para aplicaciones que no sean 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 de
Hola Mundo
El programa tradicional Hola mundo , que produce un servidor web que sirve una página estática con "¡Hola, web!" como su contenido, se puede escribir en Opa como: [19]
Servidor . start ( Server . http , { title : "Hola" , página : function () { } } )
Se puede compilar en un archivo JS ejecutable independiente con:
$ opa hello_web.opa
Al ejecutar el archivo JS ejecutable resultante, se inicia la aplicación web:
$ ./hello_web.js
Ver también
- Ur (lenguaje de programación) : un lenguaje de programación funcional para el desarrollo web
- Dart : una alternativa de 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
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: enfrentamiento de marco web" . developer.com.
- ^ Opa en realidad admite varios backends del lado del servidor, siendo Nodejs el más popular
- ^ Robertson, William; Giovanni, Vigna (2009). "Cumplimiento estático de la integridad de las aplicaciones web a través de un tipo fuerte" . SSYM'09 Actas de la 18ª Conferencia sobre el Simposio de Seguridad de USENIX .[ enlace muerto permanente ]
- ^ "OPA: Soporte de idiomas para una Web sana, segura y protegida, en OWASP 2010" . OWASP. Junio de 2010.
- ^ "Repositorio de GitHub" .
- ^ "Opa - El lenguaje de nube de código abierto escalable" . 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.
- ^ "Revisión de InfoWorld: herramientas para el desarrollo web rápido" . 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 analizador 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 MongoDB de bajo nivel" . 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, reinventado" . Computerworld . 1 de febrero de 2012.
- ^ Alastair Aitken (26 de julio de 2011). "Opa, el lenguaje de la nube - una prueba de manejo" . Morgan Hill. Archivado desde el original el 25 de septiembre de 2011 . Consultado el 6 de septiembre de 2011 .
Bibliografía
- Opa: en funcionamiento , 2013, O'Reilly MediaISBN 978-1449328856
enlaces externos
- Página web oficial