Я полностью отношусь к Scala как к языку ... и все же я борюсь с тем, почему любая компания должна перейти с Java на Scala. Является ли Scala просто синтетическим сахаром на вершине JVM или есть фундаментальные улучшения в Scala по сравнению с Java, которые могли бы улучшить приложения реального мира?
16
Ответы:
Отказ от ответственности: я не гуру Скала.
Scala делает две вещи чрезвычайно хорошо, чего не делает Java (в настоящее время).
Решить функциональные проблемы
На самом базовом уровне Scala имеет полноценные замыкания с поддержкой коллекций. Это означает, что вам больше не нужно писать код котельной плиты, такой как (бессовестно сорванный пост DZone)
Но вместо этого напишите что-то вроде:
Решите параллелизм более безопасным способом
Честно говоря, я не могу думать слишком много о том, что делает Scala на голову выше Java. Да, много мелких достижений и улучшений, но и гораздо больше веревок, с которыми можно повеситься. YMMV
HTH немного
источник
Это зависит от вашего определения «просто синтаксический сахар». Например, каким образом Java больше, чем просто синтаксический сахар над машинным кодом?
Любой язык может сделать меньше, чем машинный код, но ни один язык не может сделать больше.
То, что языки высокого уровня привносят в таблицу, делает код более легким для чтения и понимания, более простым для составления и обнаружения большего количества ошибок. И, на мой взгляд, это первый из них, который имеет наибольшее значение - именно «просто синтаксический сахар».
Но, учитывая только два других, Scala по-прежнему имеет преимущества перед Java.
Не говоря уже о сути, но наличие замыканий делает код более удобным для компоновки, чем отсутствие замыканий. И хотя Java 7 добавит нечто, называемое замыканиями, они не будут такими - они будут просто анонимными функциями.
Что касается выявления большего количества ошибок, превосходная обработка дисперсий в Scala является достаточным доказательством. Кроме того, его акцент на неизменяемости также предотвращает всевозможные ошибки - это не значит, что Java не может делать неизменяемыми, а просто не поставляется с библиотекой для этого.
источник
В дополнение к ответу Martijn я хотел бы добавить, что Scala является более выразительным чем Java, и его преимущества заключаются в том, что (1) это делает вас более продуктивным (2) писать меньше кода для решения той же проблемы, что означает, что вы можете уменьшить количество ошибок в своем код (ИМХО без ошибок код является мифом).
источник
Я использую Scala уже около 3 месяцев и до сих пор не могу найти ничего, что не смог бы сделать на Java. Для меня буквально каждая литература о Scala, кажется, упоминает один и тот же шаблон . Если то, что вы ищете, это сокращение шаблона, тогда Scala для вас, но, к примеру, IMHO, например, приведенный выше пример с фильтром может быть решен с использованием коллекций apache.
или использовать замыкания как
Но, конечно, более многословно. Мне нравится вывод типа, хотя. Когда вы изучите Scala, вы поймете, что это, вероятно, то, что происходит в любом случае. На мой взгляд, каждый язык поставляется с + ve и -ve.
источник
понимание списка, для понимания.
например в Java вы пишете:
В Scala, тот же код, гораздо более элегантно написан (как Python), как:
и сделано.
В Scala столько всего, что в Java нет. Там просто нет сравнения вообще. Единственная проблема заключается в том, что люди более знакомы с Java (б / у, это то, чему они учат на уроках CS) и еще не настолько хорошо разбираются в парадигме Scala.
У Scala есть хвостовая рекурсия, она может возвращать кортежи (что-то, что может появиться в Java 8, я думаю).
Это не сравнение. Scala был разработан Мартином Ордски, который работал в основной команде Java Generics.
Скала - это просто превосходный язык. Это все, что нужно сделать. Люди, которые говорят иначе, просто недостаточно изучили Scala, чтобы лучше узнать.
Выше я хотел сказать оптимизацию хвостовой рекурсии (что JVM не может сделать так, как это делает компилятор Scala).
Scala также компилируется и работает быстрее, чем приложения JVM (да, это правда). Не говоря уже о рамках. Например, мы используем Tomcat и развертываем несколько сервлетов для обработки REST.
Tomcat не может сделать одну вещь - асинхронные операции, требующие неблокирующего ввода-вывода. Для этого разработчики JAVA обычно изобретают обходной путь, используя очередь сообщений (отправляют сообщение в очередь, и какой-то другой процесс или поток получает его и делает все, что вы хотите в фоновом режиме).
К сожалению, этот метод - cr * p, и он взломал ограничения развертывания Java-сервлетов на Tomcat.
Иди проверь акка + спрей. В ней используются акторы scala (актеры похожи на потоки, за исключением того, что они могут общаться только через сообщения).
И все сделано, асинхронные вызовы REST стали проще. Длительная фоновая задача? Нет проблем. Просто запустите и забудьте, и проведите REST-опрос, чтобы периодически проверять его состояние в интерфейсе.
Если вы все еще используете Java и думаете, что это лучше, чем scala, вы можете также прекратить использовать компьютер для набора текста и вернуться к временам перьевых ручек и написания при свечах. Java в основном допотопный по сравнению со Scala.
источник
int myVar = condition ? someValue : otherValue
//some value
//other value
комментарии так, чтобы они были в/*some value*/
стиле. В настоящее время он