Scala как новый Java?

Обратите внимание, что все эти механизмы только копируют содержание файла, не метаданные, такое как полномочия. Таким образом, если бы необходимо было скопировать или переместить исполняемый файл .sh файл на Linux, то новый файл не был бы исполняемым файлом.

, Чтобы к действительно копии или перемещению файл, т.е. получить тот же результат как копирование с командной строки, на самом деле необходимо использовать собственный инструмент. Или сценарий оболочки или JNI.

, По-видимому, это могло бы быть зафиксировано в java 7 - http://today.java.net/pub/a/today/2008/07/03/jsr-203-new-file-apis.html . Пальцы скрещены!

33
задан Zack Marrapese 9 July 2009 в 14:34
поделиться

6 ответов

Обратной стороной является то, что вы должны быть готовы к тому, что Scala будет немного грубовата:

  • вы получите странную загадочную внутреннюю ошибку компилятора Scala
  • Поддержка IDE не так хороша, как Java (как и поддержка отладки)
  • , в будущих выпусках будут перерывы в обратной совместимости (хотя они будут ограничены)

Вы также должны принять некоторый риск, что Scala как язык выдохнется.

Тем не менее, Я не думаю, что вы оглянетесь назад ! Мой опыт в целом положительный; IDE можно использовать, вы привыкаете к тому, что означают загадочные ошибки компилятора, и, хотя ваша кодовая база Scala мала, нарушение обратной совместимости не является серьезной проблемой.

Это того стоит для Option ,

26
ответ дан 27 November 2019 в 18:03
поделиться

Некоторые недостатки Scala вообще не связаны с относительной молодостью языка. В конце концов, Scala существует около пяти лет, а Java сильно изменилась за пять лет своей жизни.

В частности, потому что Scala не имеет поддержки предприятия, которое считает его стратегическим приоритетом, ресурсы поддержки для этого скорее не хватает. Например:

  • Отсутствие подробных руководств
  • Низкое качество документации
  • Несуществующая локализация документации
  • Собственные библиотеки (Scala использует библиотеки Java или .NET как основу для своих собственных)

Другой Важное различие связано с тем, как Sun видит Java, а EPFL видит Scala. Sun рассматривала Java как продукт, предназначенный для корпоративных клиентов. EPFL рассматривает Scala как язык, призванный быть лучшим языком, чем существующие, в некоторых аспектах (в основном интеграция OOxFunctional и проектирование системы типов).

Как следствие, где Sun сделала JVM ледяно-стабильной, а Java полностью обратно совместимой, с очень медленным устареванием и удалением функций (фактически, удаление? ), Файлы JAR, созданные с помощью одной версии Scala, вообще не будут работать с другими версиями (серьезная проблема для сторонних библиотек), и язык постоянно получает новые функции, а также фактически удаляет устаревшие, как и библиотека Scala. . История изменений Scala 2.x, которой, как мне кажется, едва насчитывается 3 года, впечатляет.

Наконец, из-за всего вышесказанного, поддержка Scala третьими сторонами только начинается . Но важно отметить, что JetBrains , который приносит денег от продажи IntelliJ IDEA IDE, уже довольно давно поддерживает Scala и продолжает улучшать свою поддержку. Для меня это означает, что существует потребность в поддержке третьих лиц, и поддержка обязательно будет расти.

Я указываю на ситуацию с книгами. Год назад на рынке не было книги по Scala. Прямо сейчас на рынке есть две или три вводные книги по Scala , примерно такое же количество книг должно быть выпущено до конца года, и есть книга об очень важном веб-фреймворке, основанном на Scala. , Lift .

Готов поспорить, что в ближайшем будущем мы увидим книгу о ESME , а также книги о Scala и параллелизме. Издательский рынок, очевидно, достиг переломного момента. Как только это произойдет, предприятия последуют за ним.

16
ответ дан 27 November 2019 в 18:03
поделиться

Расскажу о своем небольшом личном опыте и о том, как я обнаружил, что интегрировать Scala с существующими библиотеками Java не так просто:

Я хотел начать с чего-нибудь простого , и поскольку я думал, что Scala очень хорошо подходит для научных вычислений, я хотел сделать небольшую оболочку вокруг JAMA (библиотеки Java Matrix) ... Мой первоначальный подход заключался в расширении типа Matrix с помощью класса Scala, а затем перегрузке арифметических операторов и вызывают собственные методы Java, но:

  • Класс Matrix не предоставляет конструктор по умолчанию (без аргументов)
  • Классу Scala нужен один первичный конструктор
  • Я думал, что один хороший первичный конструктор может быть тем, который принимает массив [Array [Double]] (первое, что отстой,этот синтаксис гораздо более подробный и трудный для чтения, чем Double [] [])
  • Насколько я знаю, читая руководства, параметры основного конструктора также неявно являются полями класса, поэтому я бы закончил одним Array [Array [Double]] в подклассе Scala и еще один double [] [] в суперклассе Java, который довольно избыточен.

Я думаю, что мог бы использовать пустой первичный конструктор, который инициализировал суперкласс с некоторыми значениями по умолчанию ( например, [[0]]), или просто создайте класс адаптера, который использовал Jama.Matrix в качестве делегата, но если язык должен быть элегантным и бесшовным, интегрированным с другим, такого не должно происходить. .

Это мои два цента.

поэтому я бы закончил одним Array [Array [Double]] в подклассе Scala и еще одним double [] [] в суперклассе Java, что довольно избыточно.

Я думаю, что мог бы использовать пустой первичный конструктор, который инициализировал суперкласс с некоторыми значениями по умолчанию (например, [[0]]), или просто создайте класс адаптера, который использовал Jama.Matrix в качестве делегата, но если язык должен быть элегантным и бесшовным, интегрированным с другим, этот тип чего не должно происходить.

Это мои два цента.

поэтому я бы закончил одним Array [Array [Double]] в подклассе Scala и еще одним double [] [] в суперклассе Java, что довольно избыточно.

Я думаю, что мог бы использовать пустой первичный конструктор, который инициализировал суперкласс с некоторыми значениями по умолчанию (например, [[0]]), или просто создайте класс адаптера, который использовал Jama.Matrix в качестве делегата, но если язык должен быть элегантным и бесшовным, интегрированным с другим, этот тип чего не должно происходить.

Это мои два цента.

но если предполагается, что один язык должен быть элегантным и безупречно интегрированным с другим, такого не должно происходить.

Это мои два цента.

но если предполагается, что один язык должен быть элегантным и безупречно интегрированным с другим, такого не должно происходить.

Это мои два цента.

3
ответ дан 27 November 2019 в 18:03
поделиться

Я не думаю, что есть какие-то недостатки. На самом деле изучение нового языка очень полезно для расширения ваших знаний в области программирования. Вы можете получить от Scala такие вещи, как универсальные классы, аннотации отклонений, верхние и нижние границы типов, внутренние классы и абстрактные типы как члены объектов, составные типы, явно типизированные ссылки на себя, представления и полиморфные методы.

3
ответ дан 27 November 2019 в 18:03
поделиться

В прошлом году меня освободили от привязи J2EE, и я хотел сделать что-то новое после 12 лет использования Java на предприятии, построившего очень большие системы для некоторых крупнейших компаний мира.

Я пробовал Ruby on Rails в прошлом. После создания нескольких примеров приложений мне не понравилось ощущение этого или тот факт, что мне придется писать тонну модульных тестов, чтобы охватить то, что обычно выполняется компилятором.

Следующей моей остановкой был Groovy on Grails. Я должен сказать, что мне это нравится, но он страдает теми же проблемами динамической печати, что и ROR. Не поймите меня неправильно, я не отказываюсь от Grails, поскольку это отличный фреймворк, и я все равно буду его использовать. У каждого свое место ИМО.

Затем я перешел на Scala и теперь создал гибридное приложение на основе Scala и Spring MVC. Сначала работать со Scala сложно, но чем больше времени вы вкладываете в это, тем легче и продуктивнее становится. Я достиг переломного момента, и теперь я тоже хочу потратить время на Lift.

Комбинация книг «Programming in Scala» и Дэвида Поллака «Beginning Scala» хороша для изучения языка, причем последний имеет менее академический уклон.

Scala еще молода, и ей еще предстоит кое-что сделать. Я думаю, что у него светлое будущее, и я вижу, что импульс уже набирает обороты. Недавно один из создателей языка Groovy сказал в своем блоге, что никогда бы не стал заниматься разработкой Groovy, если бы Scala существовала в то время.

Я думаю, что дальнейшая работа над улучшением интеграции / упаковки Java API даст Scala необходимый импульс для привлечения большего числа последователей. Базовая интеграция уже есть, но я думаю, что ее можно улучшить.

Да, поддержка IDE есть, но на данный момент она является базовой. Мощной поддержки рефакторинга Intellij еще нет, и я очень по ней скучаю. Компилятор + поддержка IDE вместе с другими плагинами еще не развита. Иногда у меня возникают очень странные внутренние ошибки компилятора, вызванные тем, как Scala сочетается с улучшением JDO для движка приложения Goggle. Однако это мелочи, которые легко исправить. Ранняя адаптация новых технологий и языков всегда сопряжена с небольшой болью. Но эта небольшая боль может принести большое удовольствие в будущем.

Если я посмотрю на возможности Scala по сравнению с ранней версией Java, то все будет впереди. Когда я перешел с C ++ на Java, JVM еще не была готова к масштабируемости. Раньше было много странных сбоев и дампов ядра JVM в различных ОС. Все это теперь исправлено в Java, и JVM надежна. Масштабирование выполняется в JVM, поэтому ему было дано большое преимущество в интеграции с собственной платформой. Он стоит на плечах гигантов!

После многих лет создания и поддержки корпоративных приложений я голосую за язык, на котором компилятор может отловить большинство нефункциональных ошибок еще до того, как будут созданы модульные тесты. Мне нравится проверка типов в сочетании с мощью функционального программирования. Мне нравится то, что я занимаюсь OO ++.

Я думаю, что сообщество разработчиков решит, будущее за Scala или нет. Обратной стороной принятия Scala сейчас было бы, если бы он не набирал обороты и не адаптировался. Было бы очень сложно поддерживать кодовую базу Scala с очень небольшим количеством разработчиков Scala. Однако я наблюдал, как Java пришла из скунса в предприятие, чтобы заменить C ++, и все это было продвинуто снизу вверх сообществом разработчиков. Время покажет, что касается Scala, но сейчас я голосую за нее.

15
ответ дан 27 November 2019 в 18:03
поделиться

Это постоянно нарушает обратную совместимость. Размер сообщества невелик. Поддержка IDE пока отсутствует.

В противном случае все в порядке.
Это всего лишь молодой язык, он рано или поздно станет там. Отлично подходит для любителей, но не готов к работе.

2
ответ дан 27 November 2019 в 18:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: