あなたの会社は、Javaから別のテクノロジーへの移行を考えていますか?[閉まっている]


9

すべてのJava開発者が知っているように、OracleはSunを購入しましたが、特にOracle はJVM を収益化したいと考えているため、Java将来は非常に不透明に見えます。言語としてのJavaもここ数年陳腐化しており、クロージャが含まれていないことがその一例です(Java 1.8に含まれる可能性があります)同時に、Ruby、Scala、Groovyなどのいくつかの新しいテクノロジーが使用されています複雑なサイトを配信する。

15年前に企業がC ++、perlから移行したのと同じように、グリーンフィールドプロジェクトでのJavaの使用をやめるというアイデアで、話し合ったり、急上昇したり、別のテクノロジーを使い始めたりしている企業や組織があるかどうかと思います。およびその他のテクノロジーをJavaに。たとえば、2年後に別のテクノロジーへの移行を計画しているなど、これが起こっている印象を教えてください。

明確にするために、私はどちらのテクノロジーが優れているかを尋ねているのではありません。あなたの組織がJavaを別のテクノロジーに任せることを考えているかどうか尋ねています。


1
GroovyとScalaはJVMに依存していませんか?もしそうなら、彼らはまた、OracleがJVMを収益化したいと考えていることを懸念しています。
POSIX_ME_HARDER

あなたが正しい。これは、オープンjvmではなく商用jvmを必要とする企業でのScala、Groovy、またはJRUbyの採用に影響を与えます。元の質問はそのままにしておきます。別の言語を使用するために商用JVMにお金を払って喜んでくれる企業もあると思います
Augusto

Java開発者として、私はあなたの「すべてのJava開発者が知っているように」という声明に問題を取り上げます。Javaの将来は、a)明確で、b)明るいと思います。一部の人々は、Oracleの「プレミアム」サポートパッケージに追加料金を支払うことを望んでいると思いますが、無料のオープンソースバージョンのJava(廃止されません!)に固執するつもりの私たちにとっては、やや無関係。
mikera

Mikera、あなたはオープンソースについて言及しましたが、オープンソースプロジェクトをリードしていた影響力のあるJava開発者の一部は現在他の言語でプロジェクトをリードしているため、「エネルギー」はJavaから流用されています。Scala、Groovy、Ruby向けのすばらしいフレームワークをすべてチェックしてください。これを裏付ける数字はありませんが、さまざまな主流言語のオープンソースリポジトリにコミットされている「コード行」の数と傾向を確認することは興味深いかもしれません。
アウグスト

回答:


9

まったくそうではありません。実際、私は自社のプラットフォーム(データマイニング用のSaaSアプリケーションとツールを開発している新興企業)としてJavaに多額の投資をしています。

理由は次のとおりです。

  • ピッキングプラットフォームとしてのJavaは、あなたが言語としてのJavaを使用する必要が意味するものではありません。主要なアプリケーション開発言語としてClojureを使用し、必要に応じてJava を使用することもあります。しかし、ScalaやGroovyなどの他のJVM言語も優れています。

  • 私は個人的にOracleについて心配していません。Javaの主な実装は、ほぼ間違いなく引き続きオープンソース(OpenJDK)であり、自由に利用できます。Oracleが愚かなことをしたら、他の大企業(特にIBMとGoogleは特にIBMと考えています)はJavaへの投資が多すぎてそれを回避できず、Oracleの助けがなくてもJavaを簡単に開発し続けることができました。

  • JVMは、偉大な実行環境です。クロスプラットフォーム、非常に高いパフォーマンス、非常に優れた最適化JITテクノロジー。これはネイティブの速度に十分近いので、C / C ++よりも遅い分数については気にしません。このオーバーヘッドは、適切なガベージコレクションとマネージバイトコード実行環境などによって相殺されます。

  • Javaには、オープンソースライブラリのすばらしいエコシステムがあります。実際、それはあらゆる言語の中で最高のエコシステムだと思います。これは、インフラストラクチャに関する「大規模なリフティング」のほとんどが、非常に高品質ですでに行われていることを意味します。また、必要なほとんどのものがオープンソースであるという事実は、ライセンスを取得するためのコスト(管理時間の両方)がないことを意味します。

  • Eclipseは優れたIDEであり、堅牢なエンタープライズアプリケーションを開発するための素晴らしいツールチェーンを提供します。私たちは、Maven、JUnit、Git / SVN統合、およびEclipseプラグインとして利用可能な他の多数のツールを使用しています。それはすべて「うまくいく」だけです。

最後に、他のオプションは何ですか?

  • .NETは同等の機能を備えた唯一のプラットフォームであり、個人的にはC#が好きですが、Microsoftテクノロジー(Oracle / IBM IMHOよりも悪い)に縛られ、同じくらい幅広いオープンソースエコシステムを備えていません。マイクロソフトショップにとっては問題ありませんが、独自の技術的な運命を管理したい場合はそうではありません。そして、はい、Monoはかわいいですが、.NETメインストリームとの互換性の実用レベルを維持できるかどうかに関係なく、プラットフォームにビジネスを賭ける余裕はありません。

  • 次に、他の優れた言語(Ruby、Python、PHP、Javascriptなど)には非常に優れているものの、Javaプラットフォームに匹敵する強力で包括的なものはありません。リスクは、美しさよりもわずかに劣るアーキテクチャで多くのものを接着し始めなければならないことです。Webサイトの構築、問題のないアプリの作成には問題はありませんが、長期的な製品開発にはそれほど魅力的ではありません。

  • C / C ++はシステムプログラミングやゲームに最適ですが、現代のWebアプリケーション開発には複雑すぎ/高コスト/柔軟性に欠けます。

  • そして、私がHaskellのように大好きな美しい言語があります。それらは、学術的な観点からは素晴らしいですが、信頼できるプラットフォームの選択にするために必要な業界の採用/エコシステムがないだけです。また、JVMでClojureを実行することにより、最新の関数型プログラミングの利点のほとんどを得ることができます。

そう、それは複雑な決定です。しかし、かなりの調査と検討の結果、私は他のすべてのオプションよりもJavaの決定を下しました。今日も同じ決断をするだろう。

更新

言語選択としてのJVMでのClojureの選択についてのいくつかの言葉。これの主な動機は次のとおりです。

  • 並行性-Clojureには独自の並行性のストーリーがあります。コアコンセプトのいくつかを説明するこのビデオをよくご覧ください。ソフトウェアトランザクションメモリを使用することにより、大規模なマルチコアアーキテクチャまで確実に拡張できます。そして、それは何のオーバーヘッドもなく(ロックフリー!)これをなんとか成し遂げました。これはエンジニアリングのかなりの偉業です。
  • 関数型プログラミング-Clojureは、不変性と高次関数を強調する関数型言語です。Haskellほど純粋に機能的ではありませんが、何よりもまずFP言語です。これはあなたがより良いプログラムを書くのに役立つと言う人もいます。
  • プログラマーの生産性-Clojureは、Lispのcode-is-data哲学による生産性のメリットをすべて享受します。実際には、これは信じられないほど強力なマクロ機能と、対処しているあらゆる問題に対して独自のDSLを定義するために使用できるシンプルだが非常に柔軟な構文を意味します。
  • 迅速な開発とスクリプティングに適した動的言語の必要性-Clojureは、標準のビルド-テスト-デプロイサイクルで使用できますが、REPLを使用してインタラクティブに開発し、実行中のコード環境を変更するのが実際的です。たとえば、私はIncanterを使用して、バッチ実行の結果を確認するために開発しているときに、グラフをプロットし、その場でデータを視覚化できるようにしています。
  • Javaの相互運用性-ClojureのJavaの相互運用は非常に効果的です。ClojureオブジェクトはJavaオブジェクトであり、その逆も同様であるため、必要なときにいつでもJava APIおよびライブラリを呼び出すのは簡単です。これにより、ライブラリとツールのJavaエコシステム全体のすべての利点が得られます。
  • 良いコミュニティ-Clojureのコミュニティは小規模ですが、ダイナミックで、友好的で、急速に成長しています。Incanter(統計コンピューティング)、Ring / Compojure(Webサーバーフレームワーク)、Counterclockwise(Eclipse IDEプラグイン)など、優れたオープンソースプロジェクトがすでに多数

ミケラ、これはまさに私が求めていたものです。あなたの会社はJavaをアプリケーション開発の主要言語として残し、代わりにClojureを使用しています。特に、JVM上で実行される他の言語に投資している一部の企業では、JVMがなくなることはないことに同意します。clojureを主な開発言語として使用する決定の背後にあったものについてもう少し詳しく教えていただけますか?
アウグスト

確かに、私は特にClojureについて特にいくつかの解説を追加しました(私もScalaを検討しましたが、これも非常に有望でしたが、ClojureはLisp-nessのために
わずかな

あなたの会社がクロジュールを使用することにした理由についての説明をありがとう!
アウグスト

7

それはすべてお客様に依存します。

Javaは常に、何らかの理由で.phpまたは.netに引き寄せられるのと同じ理由で、人々がそれに引き寄せられる独自の小さなニッチを持ちますが、最終的には顧客の要件と好みに依存します。

顧客が言った場合...このアプリケーションをJavaで実行したい...いいえと言うつもりですか?おそらくそうではない...彼らが私たちが本当に気にしないと言うなら...私たちはそれをJavaで書くつもりですか?おそらくそうではありませんが、それは単なる推測です。

私たちは長い歴史を持つJavaで書かれたアプリケーションを持っていますが、顧客はすべてをWindowsブランドに慎重に置き換えているようです。 .netを使用したjava。

それが起こった場合は、はい...新しい顧客が来て、ちょっと言っていない限り...私たちはこれをJavaで記述したい...私たちは.netを使用します。


米国の大手自動車小売業者も同様のことを行っており、グリーンフィールドプロジェクトのほとんどをJavaではなくルビーで構築し始めています。
アウグスト

1

まず前提として、私はソフトウェア会社で働いていません。

OK、Oracleをメインデータベースとして使用し、重要な情報をすべて保存しています。このため、Oracleとの関係なく、引き続きJavaを使用する予定です。OracleによるSunの買収は、Oracleに関連するあらゆることにJavaを使い続けることを後押しするものです。

ただし、デスクトップアプリケーションはすべてWindowsベースであるため、C#で記述されています。


0

あなたの会社は、Javaから別のテクノロジーへの移行を考えていますか?

質問にお答えします。番号。

すべてのJava開発者が知っているように...

重要な規模の企業では、一般に、企業がJavaから離れて他の何かに向けるべきかどうかなどの問題を決定するのは開発者ではありません。そして、これらの決定を行うタイプの場合、リストしたもの以外の要因が重要です。

...特にOracleがJVMを収益化したいので、Javaの将来はかなり不透明に見えます。

逆に未来は明らかだと思います。Javaの進化はゆっくりではありますが着実なペースで続き、コアのSEおよびEEテクノロジーは引き続き無料です。私にとって、不確実性の本当の領域は、OracleとGoogleのバンファイトで何が起こるかです。しかし、いずれにせよ、Android / DavlikがJava MEの代替として繁栄することを期待していますが、これはモバイルプラットフォームのみです。

言語としてのJavaもここ数年陳腐化しており、クロージャーが含まれていないことがその一例です(Java 1.8に含まれている可能性があります)。

これは開発者をいらいらさせるかもしれませんが、「古さ」は実際には、Sun / Oracleがビジネスが何を望んでいるかに注意を払っている結果です...長期的に安定した言語/プラットフォーム。

同時に、Ruby、Scala、Groovyなどのいくつかの新しいテクノロジーが、複雑なサイトの配信に使用されています。

繰り返しになりますが、管理の観点からは、これらのテクノロジーが全体的に優れているかどうかについての陪審は出されます。

  • 主張された生産性の向上は本当に長期的に実証できますか?
  • パフォーマンスはまだありますか?スケーラビリティ?サードパーティのツールとライブラリ?
  • 経験豊富なスタッフを採用できますか?

新しい言語に切り替えるという企業レベルの決定には、特に「レガシー」言語の既存のコードが大量にある場合は、かなりのコストとリスクがあります。


@Augusto-私はあなたの質問に答えました。最初の文を参照してください。今楽しいですか?
スティーブンC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.