www que org learn from example downloads documentacion compilador java scala jvm

que - ¿Qué debe saber un desarrollador de Scala sobre Java y/o la JVM?



scala java download (6)

Hasta hace unos 6 meses, la mayor parte de mi trabajo (procesamiento de gráficos grandes) consistía en Python y C ++. Hasta ese momento, e incluso ahora, no había escrito ningún Java en absoluto. Había visto el lenguaje y estaba familiarizado con la sintaxis (provenía de un fondo C / C ++), y me gustó la idea de la JVM, pero nunca en realidad escrito cualquier cantidad sustancial de Java.

Cuando elegí Scala, me encantaron, OOP y funciones funcionales de programación, todo en uno, y estar en la JVM fue genial. Me he esforzado constantemente por mejorar mi Scala y he estado jugando con Akka, y aún lo adoro. Sin embargo, a veces, tal vez solo lo estoy pensando demasiado, pero creo que debería aprender algo más sobre Java y / o la JVM.

He oído a muchos que Scala debe considerarse un lenguaje separado de Java, como C ++ a C. Tal vez sientas lo mismo, y quizás aprender Java sea más o menos ajeno al aprendizaje de Scala, pero siento que estoy aprendiendo. ¿Sería útil más información sobre la JVM (por ejemplo, compilación JIT, borrado de tipo)?

¿Pensamientos?


  1. La JVM ejecuta Bytecode y es definitivamente útil saber cómo funciona esto, como a veces es útil saber cómo funcionan las invocaciones del método C / C ++ o cómo se inicializan las clases; porque a veces importa y no se puede abstraer.

  2. Java es el lenguaje principal para la JVM, y es útil poder leer Java hasta cierto punto si necesita usar clases de Java directamente. Y esto puede suceder muy a menudo; sólo algunos ejemplos:

    • necesitas usar alguna biblioteca de Java de terceros (y hay toneladas)
    • trabajando con propiedades
    • necesita hacer algo especial en Swing que no sea compatible con el envoltorio Scala-Swing
    • También las fuentes que explican cosas para 1) probablemente usarán ejemplos de Java

Pero mi consejo es que no lo estudies con anticipación, lo recogerás cuando lo necesites.


Compra este libro ahora: Java Performance . Fue lanzado el pasado mes de octubre y es un tesoro de información para cualquier persona que quiera entender la JVM. Si va a ser un desarrollador de Scala, debe comprender, al menos, los parámetros de recolección de basura y tiempo de ejecución de JVM.


Creo que sabrás más sobre JVM cuando programes Scala. Quiero decir que tendrá más preguntas como ''¿Por qué esta solución es lenta y rápida?'' - Una forma de responder a esta pregunta es verificando el bytecode


Hay muchas herramientas en torno a la JVM. Si desea comprender cómo se ejecutan sus programas (por rendimiento u otras razones), entonces vale la pena estar al tanto de estos. Dos herramientas útiles son:

  1. jstack
  2. visualvm

Ambos son particularmente útiles para monitorear e interrogar procesos de larga ejecución.



Fuera de mi cabeza

  • primitivos, autoboxing, y cómo las matrices de Java son especiales;

  • borrar y manifestar

  • cómo se compilan lógicamente las llamadas recursivas de la cola en la fuente de Scala

  • instalando -client, -server en su plataforma y cuando quiera probar 32 bits: p. ej., JAVA_HOME y "preferencias de Java" en OS X. Creo que openJDK debería funcionar en cualquier lugar que use la misma versión de Oracle JDK, pero IntelliJ le advierte que use solo oficial de Oracle JDK. He visto informes muy aislados de que las librerías de gráficos 3D han tenido problemas con openJDK, y también partes de openJDK como las fuentes tienen problemas de licencia.

  • configurando classpaths en REPL, como opción de compilador, y en SBT

  • Interruptores de punto de acceso, XMX, XMS (configuración de almacenamiento dinámico), los recolectores de basura más comunes, llamadas de método en línea

  • java.util.concurrent

  • posibles problemas de compatibilidad binaria con java y código scala compilados en JDK 6 y 7.