2011-01-19 12 views
20

Muchos de los recursos disponibles para aprender Scala suponen algunos antecedentes en Java. Esto puede ser un desafío para alguien que está tratando de aprender Scala sin antecedentes Java.¿Qué partes del ecosistema y lenguaje de Java debería aprender un desarrollador para aprovechar al máximo Scala?

¿Cuáles son algunos de los isos de Java que un nuevo desarrollador de Scala debe conocer cuando aprenden el idioma?

Por ejemplo, es útil saber qué una ruta de clases es, cuáles son las opciones de línea de comandos de Java son, etc ...

Respuesta

9

¡Esa es una gran pregunta! Nunca pensé que las personas aprendieran Java solo para que les sea más fácil aprender Scala ...

Además de todos los principios básicos como for loops y tal, aprender Java Generics puede ser muy útil. El equivalente de Scala es mucho más potente (y mucho más difícil de entender) que Java Generics. Es posible que desee intentar averiguar dónde están los límites de los genéricos de Java y, en ese caso, en qué casos se pueden usar los constructores de tipos de Scala para superar esas limitaciones. En el nivel más básico, es importante saber por qué los genéricos son necesarios y cómo Java es un lenguaje fuertemente tipado.

Java le permite tener múltiples constructores para una clase. Este conocimiento no será de utilidad cuando aprenda Scala, porque Scala tiene otra manera que le permite ofrecer varios métodos para crear instancias de una clase. Por lo tanto, preferiría no tener una mirada profunda a este concepto de Java.

Aquí hay algunos conceptos que difieren mucho entre Java y Scala. Entonces, si aprende los conceptos de Java y luego quiere aprender el equivalente en Scala, debe tener en cuenta que el equivalente de Scala difiere tanto de la versión de Java que un desarrollador típico de Java tendrá algunas dificultades para adaptarse al modo Scala. de pensar Aún así, generalmente es útil acostumbrarse primero a la forma Java, porque generalmente es más simple y fácil de aprender. Personalmente prefiero pensar en Java como el curso introductorio, y Scala es la versión pro.

  • Java colección concepto mutable vs Scala diferenciación mutable/inmutable
  • static métodos (Java) vs. Singleton objetos (Scala)
  • for bucles
  • Java return comunicado vs.estilo funcional Scala ("toda expresión devuelve un valor")
  • uso de Java de null para "ningún valor" frente a más explícita Option tipo de Scala
  • importaciones
  • de Java switch vs Scala match

Y aquí hay una lista de cosas que probablemente utilizará de la biblioteca estándar de Java, incluso si desarrolla en Scala:

  • IO
  • interfaz gráfica de usuario (Scala tiene una envoltura para Swing, pero bueno)
  • URL, URI, archivos
  • fecha
  • temporizadores

Y, por último, algunos de los rasgos de Scala que no tienen equivalente directo en Java o la biblioteca estándar de Java:

  • sobrecarga de operadores
  • implícitos y impl conversiones ICIT
  • múltiples listas de argumentos/Currying
  • funciones anónimas/funciones como valores
  • actores
  • arroyos
  • patrón Scala juego (que se balancea)
  • rasgos
  • inferencia de tipos
  • for comprensiones
  • impresionantes operaciones de cobro e fold o map

Por supuesto, todas las listas están incompletas. Esa es solo mi opinión sobre lo que es importante. Espero que ayude.

Y, por cierto: definitivamente debe conocer la ruta de clase y otros conceptos básicos de JVM.

+0

¿Podría mencionar cuáles son algunos de los conceptos básicos de JVM a los que se refiere? Eso puede ser más útil que saber sobre los genéricos de Java, ya que afectará la vida cotidiana con Scala – pmn

+0

No tome la fecha de la biblioteca estándar de Java. – Debilski

+0

@icey: Eso sería una comprensión básica de lo que es bytecode Java (no los detalles, solo la idea de ello y que reside en los archivos .class), la recolección de basura, el comando 'java' command-line y sus parámetros, la ruta de acceso de clase, JAR como formato de despliegue y tal vez -sólo tal vez- incluso los hilos y la sincronización. Pero: los genéricos influirán en tu vida diaria con Java y Scala. Al menos debe saber cómo llenarlos, más adelante también cómo desarrollar clases genéricas. – Madoc

4

La librería estándar, por encima de todo, porque eso es lo Scala tiene más en común con Java .

También debe tener una idea básica de la sintaxis de Java, porque muchos libros terminan comparando algo en Scala con algo en Java. Pero aparte de la plataforma y parte de la biblioteca, son idiomas totalmente distintivos.

Hay algunas convenciones triviales pasadas de una a la otra (como opciones de línea de comandos), pero a medida que lee libros y tutoriales en Scala debe elegirlos a medida que avanza, independientemente de la experiencia previa de Java.

4

La serie "Scala for Java Refugees" puede dar algunas indicaciones sobre temas típicos de Java que se supone que usted debe saber y cómo se traducen en Scala.
Por ejemplo, el muy básico main() función de Java que se traducen en el rasgo Application, once considered harmful y now improved (por Scala 2,9 de todos modos).

Cuestiones relacionadas