Scala объявлен как масштабируемый язык, функция, которая даже включена в его название :
Название Scala - это название «масштабируемого» и «языка», означающее, что оно разработано с учетом потребностей своих пользователей.
Что означает «масштабируемый» в контексте Scala? Что делает Scala более масштабируемым, чем, скажем, Java?
scala
scalability
prasonscala
источник
источник
Ответы:
Когда Мартин Одерски говорит о scala как о масштабируемом выборе языка, он имеет в виду, что сам язык подходит для:
Он, безусловно, не имеет в виду масштабируемость с точки зрения производительности!
Тот факт, что он может утверждать, что scala подходит как для быстрых и грязных сценариев, так и для крупномасштабного корпоративного развертывания, примерно таков:
Scripting
Scala отлично подходит для написания сценариев, потому что вывод типа и функциональный стиль делают его одновременно лаконичным, а также отлично подходят для нарезки и нарезания кубиков и т. Д.
Приложения
Scala отлично подходит для написания приложений, потому что это статически проверенный тип языка с некоторыми замечательными функциями для работы как в функциональном, так и в императивном стилях. Scala совместима с Java, и, следовательно, вы можете использовать огромную экосистему библиотек.
Развертывание предприятия
Scala компилируется в байт-код и работает на виртуальной машине Java, стабильной системе с высокой производительностью по сравнению с (так называемыми) динамически типизированными (то есть нетипизированными) языками. Опять же, тот факт, что он статически типизирован, означает, что рефакторинг стал намного проще на больших кодовых базах.
источник
Вот что говорит Одерский (Слайд 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Это означает, что масштабируемость означает гибкость и выразительность. Вы можете создавать свои собственные структуры управления. Например, рамки для актеров - это библиотека, но, похоже, она использует языковые возможности.
Это означает, что Scala будет масштабироваться в соответствии с необходимой абстракцией, не обязательно с точки зрения «ответа на 1 000 000 запросов в секунду» (но Scala здесь тоже силен).
источник
На практике масштабируемость Java ограничивается не JVM, а трудностью написания правильного параллельного кода. Scala делает это проще благодаря поддержке функционального программирования и модели актера.
Java может быть очень масштабируемой, когда параллелизм прост, например, на веб-серверах (каждый запрос почти полностью независим). Но когда дело доходит до распараллеливания одной длительной задачи, это может быть настоящая борьба, чтобы получить право.
источник
Scala означает масштабируемый язык , он не имеет ничего общего с характеристиками производительности. Вы можете найти лучшее объяснение здесь: http://www.artima.com/scalazine/articles/scalable-language.html
источник
Нет необходимости в самом языке, который является более масштабируемым, чем Java, поскольку вы говорите, что оба языка могут генерировать один и тот же байт-код.
Но модель Actor и стиль функционального программирования могут улучшить масштабируемость (в двух словах - упрощая правильное параллельное программирование и уменьшая потребность в синхронизации).
Для лучшего понимания взгляните на модель актера и сравните ее с традиционным многопоточным Java-приложением:
Вы даже можете использовать инфраструктуру Akka для создания масштабируемого Java-приложения без программирования в Scala:
источник