2009-04-20 17 views
11

Acabo de comenzar a leer el libro de Joe Armstrongs en Erlang y escuché su excelente charla sobre Software Engineering Radio.Erlang en una JVM/CLR

Es un lenguaje/sistema interesante y uno cuyo tiempo parece haber llegado con el advenimiento de las máquinas multi-core.

Mi pregunta es: ¿qué hay para evitar que se transmita a la JVM o CLR? Me doy cuenta de que las dos máquinas virtuales no están configuradas para ejecutar los procesos livianos que exige Erlang, pero ¿no podrían ser simulados por hilos? ¿Podríamos ver una versión ligera o reducida de Erlang en una VM no Erlang?

Respuesta

2

Erjang es una máquina virtual para Erlang, que se ejecuta en Java ™.

4

Nada de nada, en realidad. Puede echarle un vistazo al Clojure, que es un lenguaje funcional interesante construido en la JVM.

+0

He estado mirando a Scala también. También ordené el próximo libro de Clojure. Clojure se ve interesante ..! – Fortyrunner

2

No conozco ningún problema técnico que implique esto.

En realidad Scala (un lenguaje funcional JVM) utiliza lo que se llama un Actor Modelo que es muy similar a, y como yo lo entiendo inspira en gran medida a partir, el modelo de Erlang de compartición nula concurrencia. Los subprocesos no pudieron simular los procesos de Erlang. Son demasiado pesados.

23

No se pudieron usar las bibliotecas JVM/CLR, dada su dependencia de los objetos mutables.

El manejo de excepciones de Erlang es bastante diferente de las excepciones de JVM y CLR, necesitaría manejar esto de alguna manera.

Implementar procesos como hilos significa que cualquier sistema Erlang de tamaño se agota bastante rápido (tamaño de proceso en mi máquina en la creación: 1268 bytes, tamaño de pila de subprocesos en CLR: 1 MB) y la comunicación entre procesos es mucho más lenta en Erlang.

Lo que probablemente quiera es una implementación de Actor Model en JVM o CLR.

Scala y Clojure ya han sido mencionados. Además, hay muchas implementaciones actor por JVM: Kilim, Functional Java, Jetlang, Actors Guild, ActorFoundry, y al menos uno de CLR: Retlang, que se puede utilizar desde cualquier lenguaje/CLR JVM.

+0

Interesante - gracias por los enlaces – Fortyrunner

7

Esta es una discusión bien pisada. Algún contexto puede ser útil.

De la lista de distribución de Erlang en noviembre pasado:

Mi contribución al debate sobre Erlang en la JVM?No, no es una buena idea :(

+0

Gracias por los enlaces. ¡El contexto es que estoy simplemente interesado! – Fortyrunner

+1

Me malinterpreta, entiendo por qué las personas están interesadas, solo quería darle a usted/Stackoverflow el beneficio de una discusión más amplia ... –

1

Posible Sí práctica Bueno, probablemente no;?.? Que resolver diferentes problemas de maneras muy diferentes, y por lo tanto tienen un montón de grandes diferencias en la forma de hacer las cosas. Esto haría que la transferencia sea difícil, y el rendimiento probablemente sufrirá severamente. Eso no significa que no se pueda hacer, solo que hay mejores formas de lograr lo que ese puerto traería a la mesa.

2

Solo para completar source adicional sobre el tema

3

Axum - un proyecto de incubación en el CLR: fue claramente inspirado por Erlang.

+0

Sí. ¡Vi algunas cosas en Axum esta semana e inmediatamente pensé en Erlang! – Fortyrunner

9

Por razones educativas, estamos implementando un subconjunto de ErlangVM para CLR. Estábamos muy inspirados por Kresten Krab Thorup y su proyecto Erjang, una máquina virtual Erlang basada en JVM. Erjang usa el marco Kilim para representar procesos ligeros, y comienza a llamar la atención.

Javalimit - Blog de autor de Erjang.

Erjang repository