Григорий Кислин @gkislin
Автор онлайн обучения Java: https://javaops.ru
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Specialist
Lead
Java
Git
JavaScript
Training
Coaching
Interview
Team recruitment
IT consulting
Индекс удовлетворенности языком — процент людей, которые работают на данном языке и выбрали бы его же в следующем своем проекте
Scala — 0.85
Groovy ~ 0.42
Интересно от пользователей Груви услышать комментарии…
За груви есть Grails и Gradle, за Scala- akka, play, счас вот spray включили в typesafe stack.
А что есть у Kontlin?
1. SBT:
— sbt далеко не интуитивен.
— настороить по локальный репозиторий maven (чтоб не дублировать скачку, использую maven) не удалось.
— зависимость sbt и проекта от различных версий scala
— зачем на 1 модуль делать \target, \project\target и \project\project\target?
2. Scala
— местами сыровата (например наткнулся на баг работы с json github.com/playframework/playframework/issues/1189)
— чужой код (особенно фраймворковский) очень сложен для понимания
— очень плохо дебажится (особенно фраймворки)
— implicit фреймворка (например в spray) начинают в trait пересекаться с моими именами (например delete, get, create)
— обнаружил зависимость от порядка объяления в trait — моя ошибка при инициализации, но достаточно запрятанная
— уже совсем субъективно- specs2 в стремлении к сделать жизнь проще больше запутывает, чем помогает
3. Playframework-шаблоны (смесь javascript c синтакисом шаблонов play)
— IDEA никак не поможет в нахождении ошибки в javascript, т.к это не javascript
— никак не отдебажить из IDE по той же причине
Понимаю, что к некоторым отосбенностям (например sbt) надо просто привыкнуть, как обходятся с остальными?
2. Пользую slf4j с адаптерами. При этом если модуль подтягивает зашаренную библиотеку контейнера, то эти (общие) классы или не имеют реализации slf4j- тогда весь логгинг у них теряется, либо, если подложить реализацию в общие библиотеки, будет двойной биндинг. В любом случае логгинг зашаренных классов по модулям уже корректно не растащить. Может кто подскажет решение? (не считая решением тащить все библиотеки с собой)
3. Пользую таки свою обертку с такими вспомогательными вещами как:
и менее известной: github.com/typesafehub/config?
Последнюю юзает playframework, почитайте взможности: www.playframework.com/documentation/2.0/Configuration
На мой взгляд- самая передовая.
Данный подход свободен от них, кроме нестрогое ограничение полей.
Изменение типа документа- это в дизайне?
И сюда: www.scala-lang.org/node/27499
А вот работа с JSON:
github.com/playframework/Play20/wiki/ScalaJson
github.com/playframework/Play20/wiki/ScalaJsonCombinators
Библиотека интересная, для включения в java 8, как я понимаю.
И как на ней будет выглядеть !(2 to math.sqrt(N).toInt).par.exists(N % _ == 0)?