パスワードを忘れた? アカウント作成
11931489 story
Java

開発者のマインドシェアを奪い合うJavaとNode.js 83

ストーリー by headless
競合 部門より
本家/.「Java Vs. Node.js: Epic Battle For Dev Mindshare」より

20年前には思いもよらなかったことだが、現在はJavaとJavaScriptがプログラミングの世界で覇権を争っている。InfoWorldのPeter Wayner氏が、昔ながらのコンパイラ方式のJavaが守り続けている領域と、Node.jsにより速度と柔軟性を獲得したサーバーサイドのJavaScriptが選ばれる領域との仕分けを行っている。

記事によれば、「コンピューティングの歴史で、1995年はとても忙しいときだった。Javaが登場し、JavaScriptが続いた。名前から同じ系統と思われがちだったが、2つは全く異なるものだった。一方はコンパイル方式で、静的型付けを使用するのに対し、もう一方はインタープリター方式で、動的型付けを使用する。これは2つのまるで方向の異なる言語の技術的相違点の一部に過ぎないが、Node.jsの出現により競合する方向へ進むことになった。」とのこと。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Javaもnode.jsも使っていますが,適材適所で双方を使い分けるのが良いと思います

    性能に関しては,まともなプログラマがコーディングすれば
    Javaでもnode.jsでもそれなりの性能がでます.
    細かいところでは,セッションの生成はnode.jsとか,スループットはJavaとか色々ありますが,
    それらはケースバイケースで,どちらが良いとかは一概に言えません.

    開発効率については
    大規模,特に複数人で開発をするなら Java
    それ以外,特に一人/数日で開発が終わるようなものは node.js が良いと思います

    たとえば,Javaだと,Javadocやアノテーションがあり
    大規模なものを複数人で開発する際はとても効率良いです
    反面,小規模なものを短期間で作る場合だと,
    Javaでクラス設計とかアノテーションをいちいちやっても,工数の無駄でしかありません.自己満足で終わるだけです.

    • by Anonymous Coward on 2015年02月22日 19時50分 (#2765782)

      小規模だったアプリが大規模になるパターンは往々にしてあるので、小規模だから○○と分けるのはあまりよろしくないかと思います。
      初めは小規模だったのでrailsで作っていたのですが、利用者数が拡大するにつれ要望が増え、だんだんと規模が大きくなり、
      railsではつらくなったという事例を目の当たりにしたことあります

      親コメント
    • by Anonymous Coward on 2015年02月22日 19時25分 (#2765768)

      今は大規模開発に耐えうるよう静的型付けに対応させたTypeScriptがあるので開発規模による適正の差はさらに縮まりつつある
      さらにJavaは関数が第一級関数でないため最近の関数型の潮流に追随できない致命的とも言える欠点がある
      それでもJavaは実績と信頼感が大きいので当分需要は減らないだろうが長期的には言語の進化から取り残されシェアを失うだろう

      親コメント
      • Re: (スコア:0, 荒らし)

        by Anonymous Coward

        >静的型付けに対応させたTypeScriptがあるので
        そういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。

        長期サポートする(つもりの)製品には採用しにくい。
        #長期サポートするつもりだったけど、短期でサービスが打ち切られる方が可能性は高いけどさ(涙)

        >長期的には言語の進化から取り残されシェアを失うだろう
        そういう根拠のない個人的願望を書き連ねるのはいかがなものか。

        • by Anonymous Coward

          > そういうのが非標準で、似たようなのが出ては消えていくのが痛いんだよ。
          TSは「ESの先取り」言語なんだが。
          HaxeやCoffeeScriptやJSXみたいなクソ言語と一緒にされては困るんだよねぇ。

      • by Anonymous Coward

        >Javaは関数が第一級関数でない
        Java8「」

        8ではかなり改善されてScalaっぽくなってます、7までに慣れた人は戸惑うかもしれません。

        int sum = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
                .filter(e -> {return e >= 5;})
                .reduce(Integer::sum).get();

        System.out.println(sum);//45

        • by Anonymous Coward

          Java8は各日に次の世代の基準点ですよね。
          あるJava8前提のフレームワークとか最初に見たときはほんとに動くんかいなと思いました。

          今のところ自分の範囲では第一級関数であるかどうかは必須条件では無いのでこれがないと致命的欠陥であるという意見は不思議ではあります。
          書き方面倒でも今までなんとかなってたじゃんとか関数型言語にすればすべての問題が解決するわけでもないじゃんと思います。
          ま、ケースバイケースということで。

          • by Anonymous Coward on 2015年02月22日 23時32分 (#2765880)

            「関数型の機能を取り入れればすべての問題が解決する」なんて誰も言っていないのに、
            「関数型の機能を取り入れてもすべての問題が解決するわけじゃない」という人が多いのはなぜなんだろうか。

            関数型言語の機能は必須じゃないよ。もちろんなくてもコーディングはできる。
            オブジェクト指向言語の登場以前、クラスやインターフェイスがなくても何とか開発できていたように。
            ただオブジェクト指向が登場して、オブジェクト指向はすべての問題を解決するわけじゃないけど、すこし開発が楽になった。
            関数型の機能が導入されて、関数型はすべての問題を解決するわけじゃないけど、また少し開発が楽になる。それだけの話だ。
            勝手に銀の弾丸に祀り上げて勝手に失望してはいけない。

            他の人も言っているけど、「適材適所」「ケースバイケース」「状況に応じて」はとても聞こえの良い言葉だし、間違ってはない。
            ただ、それは「高度の柔軟性を維持しつつ臨機応変に [nicovideo.jp]」というのと同じくらい具体性がない。
            何の指針にもならないし、何も言っていないも同然だ。

            親コメント
          • by Anonymous Coward

            第一級関数の市場価値は再帰と高階関数を使いこなせる開発者を基準に開発できるかによるでしょうね
            要するにプログラマの平均水準次第です

        • by Anonymous Coward

          しっかし無駄が多いなぁStreamは

      • by Anonymous Coward

        なお静的型はES7以降のJavaScriptで対応予定となっている
        TypeScriptは未来のJavaScriptの先行実装として作られているため
        仮にMSの開発が終了したとしても支障なく開発を継続できるのも強みである

    • by Anonymous Coward

      優秀なプログラマなら何を使っても優秀な結果を出すだろうから問題にならない。
      問題になるのは大多数の普通の(優秀でない)プログラマの場合だから、その前提で議論しないと意味がないと思う。
      外注に出す場合、名指しや選り好みはできないわけですし。
      自分が担当したプログラムを墓場まで持っていくつもりがないなら、後々のことも考えなくちゃならない。
      故人の趣味ならいいけど、職業となると色々制約がついて回りますよね。

      • by Anonymous Coward

        優秀なプログラマのただでさえ高い生産性を最大化することは企業利益に直結する
        例えば優秀なプログラマを揃えた新規開発に今更VBを強制する企業は間違いなく無能だろう
        開発競争するまでもなく人材を失って倒産する

        優秀でないことを前提にしても全体として成長が停止した世界まで前提にするのはあまりに非生産的に過ぎる
        いずれは高階関数くらい使えるのが普通になるのを見越して言語を整備しなければならない
        それが今のJava8
        進歩を否定する老害になってはいけない

        • by Anonymous Coward

          高階関数を扱える程に複雑化した言語が、本当に望まれているのか怪しいところ。
          進歩だと喚きつつ肥大化&複雑化した挙句、シンプルな実装に回帰するのはコンピュータの歴史が証明している。

          • by Anonymous Coward

            高階関数は既存機能の特化でなく異なるパラダイムの基本機能なのでそれにはあたらない

          • by Anonymous Coward

            高階関数を複雑だと思うかどうかで、その人のコーディング能力が推し量れるな

            高階関数はごくシンプルな道具だし、プログラミングの基礎中の基礎にすぎない。
            でも、高階関数を理解していない人ほど、高階関数は複雑で扱うのが難しい機能だと思い込んで恐れている

  • だからコーディングしててもかなり楽しい。

  • by Anonymous Coward on 2015年02月22日 17時59分 (#2765718)

    マインドシェアって知名度と訳せばいいのかな?

    JavaとJavaScriptは相違点が明確だし、適材適所使い分ければ済むだけないのか?
    マインドシェアと言語選択は無関係な話じゃないかな。

    • by Anonymous Coward

      据え置きゲームとスマホゲームくらいの乖離かな?

    • by Anonymous Coward

      開発者の脳ミソのリソースをJavaとJavascriptで取り合っている、
      という風に自分は読みました。
      →マインドシェア

      • by Anonymous Coward

        Web開発で両方扱う必要があるのがとてもウザいです。

        #「JAVA案件」て言うなよ。「Web案件」て言えよ。営業ども。

    • by Anonymous Coward

      とくにヨーロッパだと、「高等教育で教わる言語」の比率でJavaが多いんだよね。だから、必然的に(特に労働力としては若年層の)すそ野が広い。優秀な人もそれほどな人も、とりあえずJavaがわかる。

      一方で、JavaScriptは自分でウェブページを書いたことがある人だったら、さわらないことはないし、インタプリタがブラウザに入っているんだから、圧倒的な手軽さであって、これまたすそ野が広い。

      で、人数集める段階で経験者数がJava→JavaScriptに移っていくかも、って話でしょ。どうせ職場である程度教えなきゃいけないんだし、バックエンドが「今はJavaScript

    • by Anonymous Coward

      使おうとするモチベーション(マインド)だと思いますた

  • by Anonymous Coward on 2015年02月22日 18時13分 (#2765726)

    .NET Coreが生き残った。

    • by Anonymous Coward

      それだけはない

    • by Anonymous Coward

      .NETはWebフレームワークが迷走気味なのがねえ。今のメインストリームがWebアプリであることを考えるとつらい。

      まあJavaも褒められたものではないけど。どの言語もWebフレームワークはいまいちコレというのがない。

      唯一の例外はRubyで、なんだかんだでRailsは偉大。

  • by Anonymous Coward on 2015年02月22日 18時27分 (#2765733)

    どっちかが勝ちとか負けとか言ってる時点で、本筋から逸脱してる。
    勝負って、共通のルールと土俵があって初めて成り立つものだし、
    そもそも、プログラミング言語って、戦うものじゃないし。

    • by Anonymous Coward

      言語を擬人化して、戦わせてみてはどうだろう。

      • by Anonymous Coward

        綱引き大会とか?

      • by Anonymous Coward

        DMM さん出番ですよ。

      • by Anonymous Coward

        ラノベであったなあ、登場人物の名前がプログラム言語のやつ。

  • by Anonymous Coward on 2015年02月22日 18時32分 (#2765738)

    Javascriptはバグを生みやすいから
    JavaからJavascript に乗り換える企業は少ないだろ

  • by Anonymous Coward on 2015年02月22日 18時35分 (#2765741)

    > 一方はコンパイル方式で、静的型付けを使用するのに対し、もう一方はインタープリター方式で

    よくそこを違いだと言われるけど、実際にはもっと違うんじゃないの?

    • by Anonymous Coward

      コンパイルした中間言語をインタプリタ方式で実行するJavaとソースコードをインタプリタ方式で実行するJavaScriptなのでそっくり。
      一度書けばどこでも動くと言いながらインタプリタ(エンジンまたはVM)が存在しない環境では動かないところが似ている。

  • by Anonymous Coward on 2015年02月22日 18時51分 (#2765750)

    ちょっと前まではVBマが業界の覇権を握るとか意味不明な記事書いてふんぞり返ってるような奴らがブイブイ言わしてたし

    • by Anonymous Coward

      派遣のタイポなんじゃないの、それ。

      • by Anonymous Coward

        派遣はJavaと.NETばっかだろ
        VBなんてあるか?
        VBはITに明るい社員がチャチャッと何か作るとかには使われそうだが、開発じゃ使われなさそう

        • by Anonymous Coward

          ITに明るくなさそうなコメントだな…

        • by Anonymous Coward

          それはVBじゃなくてVBAじゃなかろうか

        • by Anonymous Coward

          VB.NETなんぞVBとは認めねえって事ですね、よくわかります。

  • by Anonymous Coward on 2015年02月22日 19時26分 (#2765770)

    nodeは多数のコネクションを捌きたいAPI系、JavaはWebアプリ系でしょ。
    nodeには現状"良い"と言い切れるMVCフレームワークは無いし(まぁJavaもPlay以外はゴミだけど)、
    逆にJavaに"良い"WebAPIフレームワークがあるかっていうとJAX-RS2.0実装が一番マシだけど実際微妙だし。

    • by Anonymous Coward
      よろしければ、あなたのおっしゃる"良い"フレームワークとは
      どんなものかを教えてくれると嬉しいのですが。
      • by Anonymous Coward

        ・即死級の脆弱性を出さない
        ・古くさく忌避される仕様を切り捨てる勇気がある
        ・それ要る?と多くの人から思われるセンスレスな実装をしない
        ・アプリケーションライフサイクルの維持およびロードマップの方向性がしっかりしている
        ・実際よく使われている

        • by Anonymous Coward
          ありがとうございます。
  • by Anonymous Coward on 2015年02月22日 21時33分 (#2765841)

    「マインドシェアを分け合っている」というのが、あたかも事実であるかのように書いてあるけど、
    根拠としてリンクされているブログはただの機能比較なんだけど。

  • 開発者のマッドサイエンティストを奪い合うJavaとNode.js

    に見えた

typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...