web-dev-qa-db-ja.com

JavaまたはPythonまたはRuby for Web Application?

今日、ゼロからWebアプリケーションを実装する場合、どのアプリスタックを使用すればよいですか? 3つの主な候補はJavaです。pythonおよびRuby on Rails(RoR)です。NETもありますが、 M $に偏っています。

プロJava:

1) Stacks of thick books
2) Largest developer community
3) Typed languages, which prevents subtle bugs
4) Augmented with groovy interpreted language

プロPython:

1) Concise code
2) Thin books
3) Can launch web app for free on Google Apps

Pro-RoR:

1) Concise code
2) Thin books
3) Ruby may be slightly better programming language than python, but they are converging.

全体として、python/RoRの選択肢はあまりありません。私がしなければならない選択はJavaとPythonの間です。私はJavaそれが型付き言語であるため、私は良い友達がpythonより簡潔だからです。厚いJava本は、そのソリューションがより包括的であることを意味します(そして私は自分でより少ないコードを記述する必要があります)?

32
amit

使い慣れたものを選んで実行してください。

または、 Dygo on Jython を選択して、JavaライブラリとPythonのスピードコーディングを最大限に活用できます。

または、Javaを選択してください。それがエンタープライズであると誰かに納得させる必要がある場合です。

あなたが一人で/小さなチームで作業している場合は、必要なリソースが最も少ないものを選択してください(ヒント:Python)。

22
Swaroop C H

背景:私はプロですJava開発者Django側にいます

Java

Javaは主に企業で使用されていますが、それには非常に正当な理由があります。 Javaは、成熟し、並行性、トランザクション、複数のデータベースへのアクセスを十分にサポートしている言語が必要な場合に適したソリューションです... Javaも非常に安定したプラットフォームであり、安定したということは、PythonまたはRubyよりもバグが少ないということではありません。それほど変化しないということです。

Javaのすばらしいツールサポートがあります。優れたIDE、優れたリファクタリングツール、優れた静的分析ツール...おそらく、他の言語にはその品質のツールほど多くはありません。

遅いJavaアプリケーションはたくさんありますが、私の意見では、理解していないアーキテクチャを使用している開発者が必要以上に複雑なことをしようとしているからです。パフォーマンス、Javaを使用した非常に高速なWebサイト。

ジャンゴ

Djangoはより軽量で、より楽しく作業できます。非常に短時間でアプリケーションを実行できます。管理インターフェイスは、単純なCRUD操作にとって魔法であり、かなり複雑なロジックにも使用できます。必要な機能のいくつかを実装する「再利用可能なアプリ」をたくさん見つけることができます。

Djangoがバージョン1.0になったとしても、安定しているとは言えません。1〜2年でプロジェクトを開発し続ける必要がある場合は、 Djangoの状態。

結論

Javaをすでに知っていて、複雑なアーキテクチャと長期的なサポートが必要な場合は使用してください。

迅速な開発が必要な場合はDjango(またはRoR)を使用し、1〜2年で多くのアプリを書き直す必要がある場合は気にしないでください。

25
Guillaume

アンチJava:

  • 冗長、時には面倒
  • テンプレートスクリプトの不適切な選択(Groovy、Jythonなどの2次スクリプト言語を使用することで軽減できます)

アンチパイソン:

  • 特定の標準フレームワークはなく、調査して選択する必要があります(またはWSGIの上でスタンドアロンユーティリティモジュールを使用するだけです)
  • まだ比較的限られたホスティングオプション(GAEまたは独自のサーバー以外)

Anti-RoR:

  • 最新のWebスクリプト言語では、ネイティブUnicodeはありませんか?恥ずかしい
  • 潜在的なパフォーマンススケーリングの問題

個人的にはPythonになりましたが、これらすべてのオプション(.NETと同様)は簡単に防御できます。

12
bobince

私はJavaおよびSpringフレームワーク-それが典型的なJava Webアプリケーションのすべての負担を解決し、あなたが望むものを取得する明確な方法を提供します。

私は個人的にHibernate-JPA-Springフレームワーク(またはSpring Web Flow)-Tiles-Freemarkerスタックを使用しています。これにより、新しいWebアプリケーションをかなり速く作成できますが、全体としてかなり急な学習曲線が必要になります。

私はお勧めします-まずはSpringを試してみてください。

10
miceuz

アプリは主にプレゼンテーション、データベース(CRUDタイプのメンテナンス)、または多くのバックエンドロジックですか?

ほとんどのプレゼンテーションでは、Python/Django(またはphp)を使用します。

単純なCRUDの場合、RoRはそれをなめています。

重いバックエンドロジックのあるもの、または既存のレガシーデータベースを使用するものについては、JavaサーブレットでFreemarker、Ibatis、TomcatまたはJettyを使用したSpringを使用します。

追伸スケーラビリティのパフォーマンスについて心配する必要はありません。Tomcat/ Javaソリューションほど拡張性はありません。

6
James Anderson

Java/.netショップにいる場合や、Java/.netを使用する特定の理由がない限り、Python/Django(またはRuby/Rails、PHP/CodeIgniter/Cake)。

Python/Ruby/PHPは、学習、デプロイ、プログラミングなどがはるかに簡単です。それらに関する文献はたくさんあり、サポートリソースもたくさんあります。すべてが主要なWebサイト(PythonではYouTube、RubyではTwitter、PHPではFacebook)の作成に使用されています。

4
pbreitenbach

本番稼働する場合は、現在最もよく知っているテクノロジーを使用してください。新しいフレームワーク、言語、またはテクノロジーを習得すると、遅延が発生する可能性があり、最初はコードの品質が低下します。

2
wvb

以前はJavaの開発者でしたが、現在は主にC#を使用しています。 Javaに対する私の議論は、設定して実行するのが本当に(または少なくともwasだった)ことです。また、多くの整理と保守性を必要とする大規模なアプリケーションにも適しています。ただし、これにはコストがかかります。

あなたの投稿の音から、動的言語の1つがより適していると思います。さらに、(IMHO)で遊ぶのがもっと楽しいです。

1
tsimon