La escalabilidad de un lenguaje se ve afectada por algunos factores que van desde los detalles de sintaxis hasta la construcción de abstracción de componentes. El aspecto principal de Scala que lo hace escalable es que es una combinación de programación orientada a objetos y funcional . Tiene un buen soporte tanto para construcciones de programación como funciones de alto orden, optimización de llamada final, valores inmutables, coincidencia de patrones, polimorfismo, abstracción, herencia, etc. Scala también incluye su propio intérprete que se puede usar para ejecutar instrucciones directamente, sin previa compilando Otra característica clave es la biblioteca de colecciones paralelas diseñada para ayudar a los desarrolladores a abordar los patrones de programación paralela.
Algunas otras características son las siguientes:
- Scala es conciso. proporciona un mejor soporte para las operaciones de back-end. Los programas de Scala tienden a ser cortos hasta un factor de 10 en comparación con Java. Evita el código que aparece una y otra vez para obtener algún resultado que sobrecarga el programa Java.
Ejemplo: en Java, una clase con constructor se parece a:
Java
class Geek { // data members of the class. String name; int id; // constructor would initialized data members // with the values of passed arguments while // object of that class created. Geek(String name, int id) { this.name = name; this.id = id; } }
- En Scala se escribirá como:
Scala
class Geek(name: String, id: Int) {}
- Scala lo ayuda a administrar la complejidad al permitirnos elevar el nivel de abstracción en las interfaces que diseñamos. Java trata las picaduras como entidades de bajo nivel que se recorren carácter por carácter en un bucle. El código de Scala trata la misma string como secuencias de caracteres de nivel superior que se pueden consultar. Scala proporciona la facilidad para desarrollar los marcos y las bibliotecas.
Ejemplo: En Java, para encontrar la primera letra mayúscula.
Java
// Function to find string which has // first character of each word. static char first(String str) { for (int i = 0; i < str.length(); i++) if (Character.isUpperCase(str.charAt(i))) return str.charAt(i); return 0; }
- En scala se escribirá como:
Scala
val first = str.exists(_.isUpperCase)
- En el código Java, la string es una entidad de bajo nivel, mientras que en Scala la misma string se trata como una entidad de alto nivel. En Scala _.isUpperCase es una función literal.
- Admite tipado estático en el que los cálculos se forman como declaraciones que cambian el estado del programa en el momento de la compilación. Es un enfoque que puede proporcionar eficiencias de tiempo de ejecución mejoradas. Por los valores que tienen y computan, un sistema de tipo estático clasifica variables y expresiones. Un sistema de tipos de clases anidados muy parecido al de Java, nos permite parametrizar tipos con genéricos, ocultar detalles usando tipos abstractos y al usar intersecciones combina tipos.
- Se implementa en Java Virtual Machine (JVM) para que pueda acceder a todos los métodos y campos de Java, heredar de las clases de Java e implementar la interfaz de Java. No requiere ninguna sintaxis especial, descripciones de interfaz explícitas o código de pegamento. Utiliza los tipos de Java y los viste para que se vean mejor. El compilador de Scala compila el programa en un archivo .class, que contiene el código de bytes que JVM puede ejecutar. Todas las clases de Java SDK pueden ser utilizadas por Scala. Con la ayuda de Scala, el usuario puede personalizar las clases de Java.