ひがやすを技術ブログ

電通国際情報サービスのプログラマ

google appengine に関してふた言

AppEngineでJavaPythonどっち使ったほうがいいのかはみんな気になるよね。


根拠なしに、Javaがいいとか、Pythonがいいというのは、聞いて(読んで)くれている人に対して、ちょっと不親切。聞いている人も、自信を持って選ぶためには、その根拠をきちんと納得しておきたいでしょう。


では、どちらがいいか根拠つきで答えましょう。


AppEngine上のJavaPythonは、生産性/パフォーマンスの違いがホトンドないので、好きな方を使うとよいでしょう。他に好きな言語があって、JavaPythonと特に好きではないという方は、LL使いならPython、硬い言語が好きならJavaを選ぶといいでしょう。使い心地は似ているのでそれほど違和感を感じないはずです。


「AppEngine上のJavaPythonは、生産性/パフォーマンスの違いがホトンドない」の根拠を知りたいと今あなた思いましたね。


いい質問です。まず、言語としての生産性を比べてみましょう。生産性と言っても人によって感じ方が違うので、ここでは、自分で文字をタイプする量が少ない言語の方が生産性が高いと定義しましょう。


同じことをするのに、Javaのほうが明らかにソースコードの量は多いのですが、IDEがほとんど自動生成してくれるため、自分でタイプする量は、2,3割でしょう。よく訓練されたEclipse使いは、1割しか自分でタイプしないそうです。
http://twitter.com/#!/kazunori_279/status/735146126872576


そうやって考えると言語として、JavaPythonの生産性の違いはホトンドないと言えることが納得してもらえたと思います。


それでは、開発環境(フレームワークを含む)の生産性はどうでしょうか。JavaSlim3を使えば、Pythonと生産性の違いがないということをSlim3のことを知っているPython使いなら、答えてくれることでしょう。
つまり開発環境も生産性の違いはないということです。


それでは、パフォーマンスはどうでしょうか。開発環境のパフォーマンスを考えてみると、spin-upはPythonが速く、リクエストの処理はJavaが速いというのがこれまでの定説です。
Javaのspin-up問題は、AppEngine/Jのspin-upを劇的に改善する方法 - yvsu pron. yasで解決されている(あの解決法が使えなくてもSlim3のspin-upは1100msくらいなので問題はないでしょう)ので、開発環境のパフォーマンスの違いはホトンドないと言ってもいいでしょう。


言語のパフォーマンスはJavaのほうがいいと思いますが、Datastoreにアクセスする処理などが入るとその違いは誤差のようなものだと思うので、違いはないと言っていいでしょう。


ほらね、きちんと根拠を示すことができました。
「AppEngine上のJavaPythonは、生産性/パフォーマンスの違いがホトンドない」というのは、事実なのです。
だから、JavaPythonどちらか好きな方を使えばいいよー。