web-dev-qa-db-ja.com

scalaはJavaの代わりに良い選択でしょうか?

Java(frameworks/ECO system etc))ですべての.net開発者をトレーニングする新しいプロジェクトを開始します。C#で記述された多くのコードがあり、これはすべてJavaで書き直す必要があるので無駄になります。私が目にする問題は、最初の1年程度(おそらく2年)は、ほとんどの時間を私たちが持っていたものを再現するのに費やすので、何も提供できないということです以前はJavaでした。

私たちのチームは世界中のさまざまなオフィスに分散しており、Java開発者(20から30))と.netを使用する10人の開発者がいるため、すべての開発者にコンポーネント/モジュールの再利用を開始できるように、同じ言語/プラットフォームなので、管理の観点を理解することができます。

昨日、私はScalaに出会いました。現在の製品(C#で記述されています)でこれを使用する方が良いのではないかと思っていました。少なくとも1年間で実用的な製品ができます。また、1年後には、Java=世界で使用できるモジュールがあり、製品の他の部分を移行しています。

Scalaは、Javaよりも良い選択でしょうか?

11
JD01

考慮すべきいくつかのポイント:

  • Scalaはすばらしい言語ですが、正しく学習して使用することは非常に難しい言語であることにも注意してください。 私の意見だけでなく、経験豊富でもScala専門家はそう言っています 。チームのスキルのレベルによっては、最も経験豊富な人のためのツールとしておそらく最適です/エキスパート開発者
  • JavaとC#は多くの点でかなり似ています-訓練を受けた開発者が移動するのにそれほど時間はかかりません(構文は似ていますが、ほとんどの場合、それぞれの癖を学び、さまざまなライブラリーを理解するだけのケースです。多くの場合、同様の機能を備えていますが、パッケージが異なっていたり、名前が異なっていたりします。私は個人的にJavaからC#に切り替え、再びJavaに問題なく切り替えました。
  • また、すべてのJVM言語(JavaとScala、JRubyとClojureなど)は非常に互換性があり、同じ基本的なJVMプラットフォームを共有し、コード/ライブラリを非常に簡単に共有できることにも注意してください。

これらすべてを考慮して、賭けをヘッジして、混合Java/Scala戦略に進むことができます-つまり、JVMプラットフォーム、および最初はJavaに焦点を当てますが、使用するオプションを開いたままにしますScala開発者が快適であるか、またはそれが手。

管理の観点から、これには多くの利点があります:

  • すべてのライブラリを共有できるため、投資を安全に行えます
  • 経験の浅い開発者はC#を転送できます-> Javaかなりすばやく
  • より経験豊富な開発者は、Scalaの高度な機能を最大限に活用できます
  • すべてのツールは互換性があります/共有できます(ビルドシステム、IDE、デプロイメントツールなど)
  • JVM上のライブラリの非常に幅広いオープンソースエコシステムに無料でアクセスできます(クロスプラットフォームの移植性と並んで、これが間違いなくJVMプラットフォームにある最も良い理由です)。
  • 開発者は、スキル/手元のタスクを考慮して、最も生産的になる言語を使用できます(Javaの場合、Scala、将来的にはClojureのような他の言語)

欠点は、サポートする主要な言語がまだ2つあることです。しかし、おそらく実際には2つ以上(シェルスクリプト、ドメイン固有のXML形式、構成ファイル、ルールエンジン、HTML、Javascriptなど)を既に持っているので、それほど大したことではないと主張できます。

15
mikera

3番目のオプションを追加します。組織内の誰かがC#とJavaモジュールの相互運用性を確認しました。C#機能をどのように公開していますか?SOAPまたはRESTFul Webサービスはオプションですか?

2年間の書き直しは、組織にとって死刑になる可能性があります(Netscapeに質問してください)。ただし、既存のコードが相互にうまく機能する段階的な移行は、ビジネスへの影響が少ない可能性があります。

15
Martijn Verburg

C#をScalaに書き換えるのは、Javaに書き換えるのと同じくらい難しいでしょう。どちらの言語が「優れている」かというと、その点は意味がないので、各言語には独自のプラス点とマイナス点があります。

私のコードベースがどれほど大きいかはわかりませんが、30人の開発者が2年間いると、単純な書き換えで巨大に見えます。ピックアップJava C#が簡単だとわかっている場合。C#に慣れるまでに1〜2日かかりました。

私のアドバイスは、管理を成功させ、あなたのスキルセットを拡大するためにあなたが支払われるという事実を楽しむことです。

3
Tom Squires

簡単なオプションは、Java開発者にC#を学ぶことです。両方の言語は多くの点で非常に似ており、Java開発者がC#を選択しました。私は多くのJava C#を学んだ開発者と協力してきましたが、通常はスムーズな移行です。しばらくの間立ち往生する可能性がある領域の1つは、 WebFormsプログラミングモデル。Java開発者はMVCパラダイムに適応します。このようにすると、新機能の開発を開始する前に1年待つ必要がありません。Scalaに関しては、新しい言語を学ぼうとする30人の開発者全員にまったく新しい問題をもたらします。

1
Sriram