Eclipse Scala IDE-死んだロバの耳から...

Scalaは、約4年前に楽しんだ素晴らしいプログラミング言語です。 私はおそらく彼のファンでした。私はCourseraで本やコースを購入し、ペットや生産的なプロジェクトで使用しました。



Scalaは魅力的な関数型プログラミングの世界を開いてくれ、Martin Oderskyの「真空中の球体タスク」で大学時代に戻りました...



しかし今、彼はScalaとして2年間死んでいます。 この理由は...



いいえ、Java 8ではなく、ほとんどの場合、暗号化インクリメンタルコンパイルを備えたSBTではなく、Eclipse Scala IDEでさえあります。



エコシステムとしてのScalaには、2つの苦情があります。膨大なコンパイル時間と不快なツールです。



コンパイル時間でさらに悪いことに我慢できなければ、ツール...



しかし、まず最初に。



私たちは、状況の力により、Eclipse IDEに厳しく(そして永遠に)拘束されています。 どういうわけか、ワークフローに必要なプロジェクトはEclipseの下でのみ行われ、IntelliJ IDEA(たとえば同じBIRT )では行われません(そして今後もそうなることはありません)。



はい、ペットプロジェクトにScalaとIntelliJ IDEAを使用することを誰も禁止していませんが、これはIntelliJ IDEAとClojureを楽しむのはそれほど面白くなく、はるかに楽しいことです(もちろんCursiveについて話します)。



Eclipse Scala IDEの何が問題になっていますか?



一言で言えば-これは私がXXI世紀の開発に使用しなければならなかった最もグリッチで不安定で神秘的な「がらくた」です。 簡単に言えば、あなたのscalaコードが彼らによってコンパイルされるかどうか、Scala IDE、Scala、Eclipse、クラッシュワークスペースを更新するときの時間、同僚によってコードがコンパイルされない理由、およびタンバリンすべてが再び機能するようにビートする必要があります。



ここで2つの明確化を行う必要があります。Java+ Scalaの混合プロジェクトとScala 2.11.xについて話している(これは、私たちが「放棄」し、Scalaでストーリーを継続しないことを決定したバージョンです)。



おそらく、Eclipse Scala IDEは「純粋なScala」プロジェクトに理想的ですが、私たちのような複雑で複雑なプロジェクトでは、これは原子戦争よりも恐怖と悪夢のようなものです。



昨日の例。 Eclipse Oxygen.2(4.7.2)とOSXを搭載した2台のコンピューター。



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] }
      
      





Eclipseをコンパイルすると、すべてのバージョンが同一になります(JVMおよびOSXバージョンを除く)。



  1. コンパイル中にSBTビルダーがクラッシュしました。 エラーメッセージは「ディレクトリを作成できませんでした/ XYZ / lib / print」です。
  2. Scalaコンパイラのエラー:REScalaVariablesConfiguration


ソースコードを少し調整します(「ネイティブ」SBTをコンパイルしながら、問題なくコンパイルします)



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





私はエラーを取り除くことに成功しましたが、MacBookの1つだけです。



そのような魔法は常に起こります。 たとえば、オートコンプリートによりプロジェクト全体がクラッシュするプロジェクトがありました(ただし、ファイルにscalaコードへのリンクがある場合のみ)。



同僚、これは私にとって再び間違っているのですか、それともScalaで同様の経験がありますか?



All Articles