¡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.
¿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
No tome la fecha de la biblioteca estándar de Java. – Debilski
@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