2009-01-14 4 views
29

Wenn ich heute eine Webanwendung von Grund auf implementieren würde, für welchen App-Stack sollte ich gehen? Drei Hauptkandidaten sind Java, Python und Ruby on Rails (RoR). Es gibt auch .NET, aber es ist gegenüber M $ voreingenommen.Java oder Python oder Ruby für Web-Anwendung?

Pro-java:

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

Pro-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. 

Insgesamt gibt es nicht viel Auswahl zwischen Python/RoR. Die Wahl, die ich treffen muss, ist zwischen Java und Python. Ich bevorzuge Java, weil es eine getippte Sprache ist, aber mein guter Freund bevorzugt Python, weil es prägnanter ist. Bedeutet dicke Java-Bücher, dass seine Lösungen umfassender sind (und ich selbst weniger Code schreiben muss)?

Antwort

21

Wählen Sie, was Ihnen vertraut ist und damit laufen.

Oder Sie können Django on Jython wählen, um das Beste aus Java-Bibliotheken und Pythons Geschwindigkeit-Codierung zu erhalten.

Oder wählen Sie Java, wenn Sie jemanden davon überzeugen müssen, dass es Enterprise-y ist.

Ich würde sagen, wenn Sie alleine/in einem kleinen Team arbeiten, dann wählen Sie dasjenige, das am wenigsten Ressourcen benötigt (Hinweis: Python).

2

Wenn es in Produktion ist, verwenden Sie die Technologie, die Sie am besten kennen. Wenn Sie ein neues Framework, eine neue Sprache oder eine neue Technologie lernen, kann dies zu Verzögerungen führen und am Anfang wird Ihre Codequalität geringer sein.

6

Ist Ihre App hauptsächlich Präsentation, Datenbank (CRUD-Typ Wartung), oder viele Back-End-Logik?

Für meist Präsentation würde ich Python/Django gehen (oder sogar php).

Für einfache CRUD RoR hat es geleckt.

Für alles mit schwerer Backend-Logik oder, die eine vorhandene Legacy-Datenbank verwendet, würde ich für die Java-Servlets mit Spring mit Freemarker, Ibatis und Tomcat oder Jetty gehen.

P.S. Machen Sie sich keine Sorgen um Skalierbarkeit - nichts wird so gut skalieren wie die Tomcat/Java-Lösung.

+0

Warum denken Sie, dass Java/Spring besser für eine starke Backend-Logik geeignet ist? Was genau kann Python/Django in diesem Fall nicht handhaben? – Utku

12

Anti-Java:

  • ausführlich, manchmal umständlich
  • schlechte Wahl für Template-Scripting (kann durch Verwendung eines sekundären Skriptsprache wie Groovy, Jython usw. gemildert werden
  • )

Anti-Python:

  • keine besondere Rahmennorm, muß Forschung und wählt (oder verwenden Sie nur Standalone-Programm-Module auf der WSGI)
  • noch relativ begrenzte Hosting-Optionen (außer GAE oder eigener Server)

Anti-RoR:

  • kein nativer Unicode in einer modernen Web-Skriptsprache? Für die Scham
  • mögliche Leistungsskalierung gibt

Persönlich endete ich mit Python, aber alle diese Optionen - sowie .NET - sind leicht zu verteidige.

+0

Es scheint auch eine Python-Schnittstelle für Amazon S3, EC2 zu geben. Dies sind gültige Hosting-Optionen für Python. –

+0

Für Java Template Scripting schauen Sie sich Spring/Freemarker an. Freemarker ist wahrscheinlich die beste Templating-Software. –

+4

Ruby 1.9 enthält native Unicode-Unterstützung und Rails hat es seit Rails 1.2 zurückportiert. Auch "Rails skaliert nicht" ist ein Mem in der Rails-Community: Es wird skalieren. –

23

Hintergrund: Ich bin ein professioneller Java-Entwickler, der Django auf der Seite tut.

Java

Java wird hauptsächlich in Unternehmen eingesetzt, und es gibt sehr gute Gründe dafür. Java ist eine gute Lösung, wenn Sie eine ausgereifte Sprache, gute Unterstützung für Parallelität, Transaktionen, Zugriff auf mehrere Datenbanken benötigen ... Java ist auch eine sehr stabile Plattform. Und bei stabil, ich meine nicht, dass es weniger Bugs als Python oder Ruby, ich meine, dass es nicht so viel ändert.

Es gibt wunderbare Werkzeugunterstützung für Java. Große IDE, großartige Refactoring-Tools, großartige statische Analyse-Tools ... Wahrscheinlich werden Sie nicht so viele Tools dieser Qualität für jede andere Sprache finden.

Es gibt viele langsame Java-Anwendungen, aber meiner Meinung nach kommt es mehr von Entwicklern, die eine Architektur verwenden, die sie nicht verstehen und versuchen, die Dinge komplizierter zu machen, als sie brauchen. Sie können hochperformante, sehr schnelle Websites mit Java entwickeln.

Django

Django ist geringes Gewicht, mehr Spaß bei der Arbeit. Sie können eine Anwendung in sehr kurzer Zeit ausführen. Die Admin-Schnittstelle ist magisch für einfache CRUD-Operation und kann für sogar ziemlich komplexe Logik verwendet werden. Sie können viele "wiederverwendbare Apps" finden, die einige der benötigten Funktionalitäten implementieren.

Auch wenn Django jetzt in der Version 1.0 ist, ist es weit davon entfernt, stabil zu sein. Wenn Sie Ihr Projekt in 1-2 Jahren noch entwickeln müssen, können Sie viele Änderungen erwarten, nur um dem Zustand von Django zu folgen.

Fazit

Java verwenden, wenn Sie wissen es bereits und wenn Sie Bedarf für komplexe Architektur und langfristige Unterstützung.

Verwenden Sie Django (oder RoR), wenn Sie schnelle Entwicklung wollen und nicht kümmern, wenn Sie viel von der App in 1-2 Jahren neu schreiben müssen.

+2

Ich muss dir zustimmen, dass Django relativ instabil ist. –

1

Ich war früher ein Java-Entwickler und machte hauptsächlich C#.Meine Argumente gegen Java sind, dass es (oder zumindest war) ein echter Schmerz war, sich einzurichten und zu laufen. Es ist auch besser für große Anwendungen geeignet, die viel Organisation und Wartbarkeit benötigen. Das hat jedoch seinen Preis.

Von den Klängen Ihres Posts denke ich, dass eine der dynamischen Sprachen besser geeignet wäre. Außerdem machen sie mehr Spaß mit (IMHO).

+5

Mit Maven für den Aufbau ist Java relativ einfach einzurichten (zumindest jetzt). –

10

Ich würde empfehlen, Java und Spring-Framework - es löst alle die Last der typischen Java-Web-Anwendung und bietet Ihnen mit klaren Weg zu bekommen, was Sie wollen.

Ich persönlich benutze Hibernate - JPA - Spring Framework (oder Spring Web Flow) - Kacheln - Freemarker Stack, der mir die Möglichkeit gibt, neue Webanwendungen ziemlich schnell zu erstellen, aber insgesamt stellen sie ziemlich steile Lernkurve auf.

Ich würde vorschlagen - geben Sie Spring einen Versuch für einen Start.

4

Wenn Sie sich nicht in einem Java/.net-Shop befinden oder aus einem bestimmten Grund Java/.net verwenden, würde ich eine der Plattformen vorschlagen, die für die Webentwicklung optimiert ist: Python/Django (oder Ruby/Rails, PHP/CodeIgniter/Kuchen).

Sie finden Python/Ruby/PHP so viel einfacher zu lernen, zu implementieren, zu programmieren, etc. Es gibt viel Literatur über sie und viele Support-Ressourcen. Alle wurden verwendet, um große Websites zu erstellen (YouTube auf Python, Twitter auf Ruby, Facebook auf PHP).

Verwandte Themen