¿Funciona bien Scala en las JVM propietarias?
jrockit (3)
Nada en lo que pudiera pensar.
El compilador no debería hacer una diferencia, de hecho, si ejecutar
scalac
en una máquina virtual diferentescalac
unscalac
descalac
diferente, definitivamente es un error.Siempre debe ejecutar el código de Scala con la misma versión de Scala con la que se compiló. El código compilado en 2.x no se ejecutará en 2.x + 1 por defecto. Sin embargo, el código compilado en 2.xy debería ejecutarse en 2.x.y + 1.
Sin embargo, estoy de acuerdo en que sería bueno obtener licencias de proveedores externos como IBM o Azul para incluir esas plataformas en las pruebas.
Mi empresa tiene una gran base de código Java heredada y muchos de nuestros clientes ejecutan WebSphere y WebLogic. Estamos considerando comenzar a usar Scala, pero no hemos podido confirmar que Scala (2.9.X) funciona bien con JDK de IBM (y JRockit de BEA).
Como estas JVM pasan el TCK , diría que debería funcionar, pero dado los diversos problemas que he tenido con las diferentes JVM a lo largo de los años, estoy un poco nervous . ¿Hay algún error que deba tener en cuenta al utilizar scala con otras JVM?
- ¿Alguna bandera del compilador para usar (o evitar)?
- ¿Debo compilar el código utilizando Scala en el punto de acceso o en la JVM de los clientes?
- ¿Algún problema con la mezcla de JAR compilados usando diferentes versiones de Scala / Java en diferentes JVM?
Cualquier historia de guerra, enlaces y sugerencias son bienvenidas.
El compilador de Scala debe producir el mismo código de bytes independientemente de la JVM que utilice. Espero que Scala se ejecute en las tres plataformas, sin embargo, HotSpot ha intentado optimizar los lenguajes dinámicos y podría ser un poco mejor. (Posiblemente no es suficiente para preocuparse)
En los últimos años ha habido cada vez menos diferencia entre estas plataformas y, en un futuro cercano, espero que todas se basen directamente en OpenJDK (ya que IBM ha aceptado apoyar OpenJDK ahora). Los equipos de JRockit y Hotspot se han fusionado desde hace algún tiempo. Oracle posee ambos.
Sin embargo, si no está ejecutando una versión reciente de JDK, es posible que vea algún problema.
Las JVM hablan muy bien entre sí y consideraría la posibilidad de ejecutar Scala en su propia JVM para aislar cualquier inquietud que pueda tener.
Sí, Scala trabaja en máquinas JVM que no son de Sun. Considere, por ejemplo, estos dos comentarios del código fuente:
//print SourceAnnotation in a predefined way to insure
// against difference in the JVMs (e.g. Sun''s vs IBM''s)
// on IBM J9 1.6 do not use ForkJoinPool
No hay muchos de estos. Después de todo, se supone que las diversas JVM son compatibles y se han probado. Pero, mientras surgen problemas, se toman medidas para garantizar que las cosas funcionen sin problemas.