Navigation überspringen

Killer Java-Webapplikation?

2.8.2006·Kommentare:  7

In letzter Zeit habe ich über Skript- bzw. Webprogrammiersprachen nachgedacht und auch ein wenig mit anderen darüber diskutiert. Dabei ist mir aufgefallen, dass es anscheinend keine einzige Web-2.0-Anwendung gibt die mit Java umgesetzt wurde.

Falls ich mich irre, lasse ich mich gern eines besseren belehren. Mir geht’s nicht darum Java zu »degradieren«, aber in Anbetracht der Tatsache, dass in vielen Diskussion PHP in Bezug auf Last und Skalierbarkeit oft belächlelt wird (und das trotz Flickr, Wikipedia, Digg & Co.), frage ich mich, wo die ganzen Killer Java-Applikationen nun geblieben sind.

Wie gesagt, ich will keinen Flamewar vom Zaun brechen. Aber vielleicht kann man die meisten Web-Projekte (mit Ausnahme von überlebens- und arg finanzkritischen Systemen) doch in jeder Programmiersprache in guter Qualität umsetzen.


Schlagwörter

·


7 Kommentare

#1 von Christoph am 2.8.2006, 13:26 Uhr

Vorweg mal zwei interessante Links:
What Is Java’s Role in Web 2.0? und Digg PHP’s Scalability and Performance, wobei die Kommentare zumindest beim Ersten Artikel interessanter sind, als der Artikel selbst.

Ich denke, dass man jedes Problem/Projekt, egal ob kritisch oder nicht, in (fast) jeder Programmiersprache lösen kann. Den Vorteil den Java gegenüber anderen hat ist sicherlich, dass es »altbewährt« ist und einen gewissen Mythos hat.
Was Skalierbarkeit anbelangt, ist es imho ziemlich egal, welche Sprache man verwendet. Ein paar sehr interessante Slides (Scale with Rails) gibt hier.

#2 von Benedikt am 2.8.2006, 15:28 Uhr

Über die Links bin ich auch gestolpert, hab sie aber erst überfolgen. Sehr schön finde ich jedenfalls schon:

However it just isn’t true to say that PHP doesn’t scale, and with the rise of Web 2.0, sites like Digg, Flickr, and even Jobby are proving that large scale applications can be rapidly built and maintained on-the-cheap, by one or two developers.

Stimmt, Java ist bewährt und solide. Leider wird oft für Java argumentiert (erst kürzlich wieder erlebt), indem man andere Sprachen mit holprigen Argumenten heruntermacht (Performance, Skalierbarkeit, …). Dafür gibt es einfach zu viele unumstößliche Gegenbeispiele (Flickr, Digg, …).

#3 von Christoph am 2.8.2006, 20:03 Uhr

Gerade das Kriterium Skalierbarkeit finde ich eher nebensächlich. Selbst wenn die Technologie keine geeigneten Mechanismen zur Verfügung stellt, kann ich immer noch meinen MySQL-Cluster erweitern und einen Loadbalancer einsetzen (wie es ja üblicherweise gemacht wird, zumindest in der RoR Welt).

#4 von Dominik am 6.8.2006, 14:19 Uhr

Habe die Freude mich als großer Java-Verfechter auch mal zu beteiligen: Die Zimbra Collaboration Suite ist wohl eines der heftigsten Web 2.0 Projekte das es derzeit so gibt. In Java. Weil es besser skaliert.

Ich glaube einfach, dass sich Web 2.0 in sehr offenen Communities viel schneller durchgesetzt hat (genauso wie vorher CSS-Design). Aufgrund der Größe der Applikationen ist es dort einfacher, praktischer und auch sinnvoller eben mal etwas PHP reinzuklopfen…

Wegen dem Skalierbarkeitsargument (Das wenig mit der »Killer«-Frage zu tun hat): Was ist wenn der Flaschenhals die verwendete Technologie (PHP, Ruby on Rails, usw…) ist und nicht die Datenbank? Wie genau arbeitet man eigentlich in PHP mit Sessions wenn mehrere Server eine Web-Applikation verarbeiten sollen?!?

#5 von Benedikt am 6.8.2006, 16:42 Uhr

Ah, der Java-Mann meldet sich zu Wort. 🙂

Zimbra kenn ich sogar, wusste gar nicht, dass das mit Java umgesetzt wurde.

wenn der Flaschenhals die verwendete Technologie

Das ist genau der Punkt. Kann man von Flaschnehals sprechen, wenn Flickr (PHP/Perl) mit 5000 Seitenaufrufen pro Minute klarkommt und Digg (PHP) 200 Millionen Zugriffe pro Monat verkraftet?

Deine zweite Frage kann ich selber nicht beantworten, aber wenn ich aus Digg PHP’s Scalability and Performance zitieren darf:

From talking with Owen I learned digg.com gets on the order of 200 million page views per month, and they’re able to handle it with only 3 web servers and 8 small database servers (I’ll discuss the reason for so many database servers in the next section)

Was …

eben mal etwas PHP reinzuklopfen…

… betrifft: Da klingt so nach Bastelei, aber gerade Wikipedia und Flickr sind ja ziemlich ausgereifte und extrem praktische Anwendungen (das meinte ich mit »Killer«).

#6 von Dominik am 6.8.2006, 17:15 Uhr

Ui, jetzt wird es kompliziert. Prinzipiell hast du ja in deinem Artikel schon recht, dass es eigentlich völlig egal ist in welcher Programmiersprache man arbeitet. Nur ist das Framework rundherum sehr unterschiedlich.

Java ist in seinem Enterprise-Tick (was Web angeht) immer sehr extrem gewesen. Man muss sich Gedanken über 1000ende Sachen machen die dir in PHP einfach wurscht sind. Du brauchst für Wikipedia keine robusten Transaktionen im Code. Das machst du aber in Java: Du synchronisierst mit anderen Threads, arbeitest mit Transaktionen auf Objektebene, usw. Der andere Weg: Sperr eine DB-Zeile und geht schon. Das reicht meistens auch 😉 Der Großteil der Hits schreiben ja auch nix sondern lesen »nur«, und das wird geschickt über einen Cache beschleunigt.

In Zimbra andererseits ist jeder Zugriff Userspezifisch, hat möglicherweise Auswirkungen auf mehrere aktive Sessions (sowohl Web-, als auch Synchronisations-sessions über IMAP/SyncML/…) und pfuscht überdies ständig in der Datenbank herum (Group-Kalender und IM stell ich mir einfach nur schlimm vor).

Das mit dem »reinklopfen« war nicht negativ gemeint, ganz im Gegenteil: Es ist ein Genuss einfach mal was abzuändern und eben mal auf »Reload« zu drücken ohne die VM neu starten zu müssen etc.

Gott Sei Dank lernen das auch die Burschen von Java: Siehe etwas das RIFE-Framework (mit den witzigen BlaBla-List, die dir sicher bekannt vorkommen), und andererseits (als Position gegen Ruby on Rails) Grails auf der Basis von Groovy der neuen Standard-Scriptsprache ab Java 6.

#7 von Christoph am 7.8.2006, 18:05 Uhr

Wie genau arbeitet man eigentlich in PHP mit Sessions wenn mehrere Server eine Web-Applikation verarbeiten sollen?!?

So wie bei jedem anderen Framework auch, man speichert sie in eine DB.

Das machst du aber in Java: Du synchronisierst mit anderen Threads, arbeitest mit Transaktionen auf Objektebene, usw.

Ich weiß nicht, ob das in Java schon built-in ist, jedoch gibt’s auch in der Rails Welt Leute, die daran arbeiten (weil sie von Java kommen und diese Features gerne hätten). Und für PHP wird’s sowas imho auch geben, wenn nicht kann man ja noch immer die DB selbst hinzuziehen.


Kommentieren

Dieser Eintrag kann nicht mehr kommentiert werden.