Eclipse
Java
Scala
Programming
Functional Programming
March 2018 2

Eclipse Scala IDE — от мертвого осла уши…

Scala — это изумительный язык программирования, которым я наслаждался года 4 назад. Я, наверное, был его фанатом: покупал книги и курсы на Coursera, использовал в pet- и продуктивных проектах et cetera, et cetera, et cetera.

Scala открыл для меня увлекательный мир функционального программирования, вернул во времена студенчества со «сферическими задачами в вакууме» от Martin'a Odersky…

Но вот он уже года два как Scala для меня мертва. Виной этому…

Нет, не Java 8 и даже, скорее всего, не SBT с его загадочной инкрементальной компиляцией, а Eclipse Scala IDE.

К Scala, как к экосистеме, у меня есть только две претензии: непомерное время компиляции и отвратительный tool'инг.

Если со временем компиляции я еще худо бедно могу мириться, то tool'инг…

Но обо всем по порядку.

Мы, силою обстоятельств, плотно (и навечно?) прикованы к Eclipse IDE. Как-то так случилось, что те проекты, которые нужны для рабочего процесса есть только под Eclipse и их нет (и не будет) под IntelliJ IDEA (например, тот же BIRT).

Да, никто не запрещает мне для pet project'ов использовать Scala и IntelliJ IDEA, но это уже не так интересно и гораздо приятнее развлекаться с IntelliJ IDEA и Clojure (я, конечно же, говорю о Cursive).

Что же не так с Eclipse Scala IDE?


В двух словах — это самая глючная, нестабильная и загадочная «хрень» которой мне приходилось пользоваться для разработки в XXI веке. Попросту говоря ты никогда не знаешь будет ли твой scala code им компилироваться, как долго, что произойдет при обновлении Scala IDE, Scala, Eclipse'a, crash'е workspace'a и почему твой код не будет компилироваться у коллеги, и в какие бубны нужно будет бить чтобы это все снова заработало.

Здесь надо сделать два уточнения: я говорю о смешанных Java+Scala проектах и Scala 2.11.x (это версия на которой мы «сдались» и решили дальше историю со Scala не продолжать).

Возможно, Eclipse Scala IDE идеален для «pure Scala» проектов, но для сложных и смешанных как наш — это ужас и кошмар почище атомной войны.

Пример вчерашнего дня. Два компьютера с Eclipse Oxygen.2 (4.7.2) с OSX.

package com.XXX
import java.util.{List=>JList}
import scala.collection.JavaConversions._
...
abstract class REScalaVariablesConfiguration {
	def calculateVariables (runtimeObject: GBObject): JList[Variable] = {
	    val result = for {(name, result) <- variables(runtimeObject)
	    				  if result != null
	      			 } yield result match {
	      case x:LWDecimal => new NumberVariable(name, x.getJavaDecimal, runtimeObject)
	      case x:Number => new NumberVariable(name, x, runtimeObject)
	      case x:String => new StringVariable(name, x, runtimeObject)
	      case x:Boolean => new BooleanVariable(name, x, runtimeObject)
	      case x:LWDate => new DateVariable(name, x.getJavaDate, runtimeObject)
	      case _ => throw new IllegalStateException("Not supported result type for rule engine variable: " + name)
	    }
	    new ArrayList[Variable](result)
	}
	
	protected def variables(runtimeObject: GBObject): Map[String, Any]
}

Идентичные версии всего (кроме JVM и версий OSX) получаем при компиляции Eclipse:

  1. SBT builder crashed while compiling. The error message is 'Could not create directory /XYZ/lib/print'.
  2. Error in Scala compiler: REScalaVariablesConfiguration

Слегка подправив исходный код (при этом «родным» SBT он компилируется без проблем)

package com.XXX
import scala.collection.JavaConversions._
...
abstract class REScalaVariablesConfiguration {
	def calculateVariables (runtimeObject: GBObject): java.util.List[Variable] = {
...

Мне удается избавиться от ошибок, но лишь на одном из MacBook'ов.

Такое волшебство происходит постоянно. Например, у меня был проект, где autocompletion приводил к crash'у всего проекта (но только если в файлы была ссылка на scala code).

Коллеги, это снова у меня что-то идет не так или у Вас подобный опыт общения со Scala?
Оцените Ваш опыт использования Scala в реальных проектах
23.2% 2.12 - полет нормальный, Scala only 29
16.8% 2.12 - полет нормальный, смешанные проекты 21
16% 2.11 - полет нормальный, Scala only 20
15.2% 2.11 - полет нормальный, смешанные проекты 19
17.6% Все плохо 22
6.4% Eclipse 8
71.2% IntelliJ IDEA 89
3.2% NetBeans 4
Voted 125 users. Passed 156 users.
+11
10.4k 13
Comments 41
Top of the day