2009-01-14 26 views
29

如果我今天要從頭開始實施一個Web應用程序,我應該選擇哪個應用程序堆棧?三個主要的候選人是java,python和Ruby on Rails(RoR)。也有.NET,但它偏向M $。用於Web應用程序的Java或Python或Ruby?

專業的Java:

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

臨蟒蛇:

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

臨回報率:

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

總體而言,沒有蟒蛇/回報率之間太多的選擇。我必須做的選擇是在Java和Python之間。我稍微偏向java,因爲它是一種類型化的語言,但我的好朋友喜歡python,因爲它更簡潔。厚厚的java書籍意味着它的解決方案更全面(我必須自己編寫較少的代碼)?

回答

21

選擇你熟悉並且運行的選項。

或者您可以選擇Django on Jython以充分利用Java庫和Python的速度編碼。

或者選擇Java,如果你需要說服某人它是企業y。

我想說如果你一個人在一個小團隊中工作,那麼就選擇一個需要最少資源的人(提示:Python)。

2

如果要投入生產,請使用您當前最瞭解的技術。學習新的框架,語言或技術可能會導致延遲,開始時代碼質量會降低。

6

您的應用程序主要是演示文稿,數據庫(CRUD類型維護)還是大量後端邏輯?

對於大多數演示文稿,我會去Python/Django(甚至PHP)。

對於簡單的CRUD RoR有它舔。

對於任何有嚴重後端邏輯的應用程序,或者使用現有遺留數據庫的應用程序,我都會使用帶有Freemarker,Ibatis和Tomcat或Jetty的Spring的java servlets。

P.S.不要擔心可伸縮性 - 不會像Tomcat/java解決方案那樣擴展。

+0

爲什麼您認爲Java/Spring對重後端邏輯更好? Python/Django在這種情況下無法處理什麼? – Utku 2018-02-16 15:34:45

12

反爪哇:

  • 冗長,繁瑣,有時
  • 爲模板腳本(可以通過使用二次腳本語言比如Groovy,Jython的等來減輕差的選擇)

防的Python:

  • 沒有特定的標準框架,必須研究和選擇(或者只是使用上WSGI的頂部)
  • 還是託管相對有限的選項(比GAE其他獨立的實用程序模塊或自己的服務器)

防回報率:

  • 現代Web腳本語言中沒有本地Unicode?對於恥辱
  • 潛在的性能擴展性問題

個人而言,我結束了與Python,但所有這些選項 - 以及.NET - 是易守難攻。

+0

似乎還有Amazon S3,EC2的Python界面。所以這些是Python的有效託管選項。 – 2009-01-14 08:18:17

+0

對於java模板腳本來看看Spring/Freemarker。 Freemarker可能是最好的模板軟件。 – 2009-01-14 08:35:09

+4

Ruby 1.9包含原生的Unicode支持,而Rails自Rails 1.2以來就已經支持它。另外「Rails不縮放」是Rails社區的一個模範:它會擴展。 – 2009-01-14 10:04:48

23

背景:我是一名專業的Java開發人員,他在一邊做Django。

的Java

的Java主要應用於企業,並有很好的理由。如果您需要一種成熟的語言,對併發性,事務,對多個數據庫的訪問有良好的支持,那麼Java是一個很好的解決方案...... Java也是一個非常穩定的平臺。通過穩定,我不是說它比Python或Ruby有更少的錯誤,我的意思是它沒有改變太多。

Java有很棒的工具支持。偉大的IDE,偉大的重構工具,優秀的靜態分析工具...您可能不會爲其他語言找到許多質量高的工具。

Java應用程序有很多緩慢的問題,但在我看來,它更多的來自於開發人員使用他們不明白的架構,試圖做比他們需要更復雜的事情。您可以使用Java開發高性能,速度非常快的網站。

Django的

Django是更輕質,更一起工作的樂趣。您可以讓應用程序在很短的時間內運行。管理界面對於簡單的CRUD操作是神奇的,並且可以用於非常複雜的邏輯。您可以找到很多「可重複使用的應用程序」,它們將實現您需要的一些功能。

即使Django現在在版本1.0中,它也遠沒有穩定。如果你需要在1 - 2年內繼續開發你的項目,那麼你只需要遵循Django的狀態就可以做出很多改變。

結論

使用Java的,如果你已經知道了,如果你有一個複雜的架構和長期支持的需求。

如果您想要快速開發並且不在乎您是否需要在1 - 2年內重寫很多應用程序,請使用Django(或RoR)。

1

我曾經是一名Java開發人員,現在主要做C#。我反對Java的論點是(或者至少)是一個真正的痛苦,可以設置和運行。它也更適合需要大量組織和可維護性的大型應用程序。然而,這是有代價的。

從您發佈的聲音中,我認爲其中一種動態語言更適合。另外,他們玩起來更有趣(恕我直言)。

10

我會推薦Java和Spring框架 - 它解決了典型的Java Web應用程序的所有負擔,併爲您提供明確的方式來獲得您想要的。我個人使用Hibernate - JPA - Spring框架(或Spring Web Flow) - Tiles - Freemarker堆棧,它使我能夠快速創建新的Web應用程序,但總的來說,他們施加了相當陡峭的學習曲線。

我會建議 - 只是讓Spring嘗試一個開始。

4

除非你在Java/.net商店,或者你有使用Java/.net的特定原因,否則我會建議爲Web開發更優化的平臺之一:Python/Django(或Ruby/Rails,PHP/CodeIgniter/Cake)。

你會發現Python/Ruby/PHP更容易學習,部署,編程等。關於它們和大量的支持資源有大量的文獻。所有這些都已被用於製作主要網站(Python上的YouTube,Ruby上的Twitter,PHP上的Facebook)。

相關問題