Javas Einband

April 2001

Dieses Essay entstand aus Gesprächen, die ich mit mehreren anderen Programmierern über die Gründe geführt habe, warum Java verdächtig roch. Es ist keine Kritik an Java! Es ist eine Fallstudie über das Radar von Hackern.

Mit der Zeit entwickeln Hacker eine Nase für gute (und schlechte) Technologie. Ich dachte, es könnte interessant sein, zu versuchen aufzuschreiben, was Java für mich verdächtig erscheinen ließ.

Einige Leute, die dies gelesen haben, halten es für einen interessanten Versuch, über etwas zu schreiben, worüber noch niemand geschrieben hat. Andere sagen, ich würde Ärger bekommen, weil ich anscheinend über Dinge schreibe, die ich nicht verstehe. Also, nur für den Fall, dass es nützlich ist, möchte ich klarstellen, dass ich hier nicht über Java schreibe (das ich nie benutzt habe), sondern über das Radar von Hackern (über das ich viel nachgedacht habe).


Das Sprichwort „Man kann ein Buch nicht nach seinem Einband beurteilen“ stammt aus der Zeit, als Bücher in schlichten Pappumschlägen verkauft wurden, die jeder Käufer nach eigenem Geschmack binden lassen konnte. Damals konnte man ein Buch nicht nach seinem Einband beurteilen. Aber der Verlagswesen hat sich seitdem weiterentwickelt: Heutige Verlage arbeiten hart daran, den Einband zu etwas zu machen, nach dem man ein Buch beurteilen kann.

Ich verbringe viel Zeit in Buchhandlungen und habe das Gefühl, dass ich inzwischen gelernt habe, alles zu verstehen, was Verlage mir über ein Buch sagen wollen, und vielleicht noch ein bisschen mehr. Die Zeit, die ich nicht in Buchhandlungen verbracht habe, habe ich hauptsächlich vor Computern verbracht, und ich habe das Gefühl, dass ich auch die Technologie bis zu einem gewissen Grad nach ihrem Einband beurteilen gelernt habe. Es mag nur Glück sein, aber ich habe mich vor ein paar Technologien gerettet, die sich als echte Stinker herausstellten.

Bisher scheint Java für mich ein Stinker zu sein. Ich habe nie ein Java-Programm geschrieben, nie mehr als einen Blick in Nachschlagewerke dazu geworfen, aber ich habe die Ahnung, dass es keine sehr erfolgreiche Sprache sein wird. Ich könnte mich irren; Vorhersagen über Technologie sind ein gefährliches Geschäft. Aber was es wert ist, als eine Art Zeitkapsel, hier ist, warum mir das Aussehen von Java nicht gefällt:

  1. Es wurde so energisch gehypt. Echte Standards müssen nicht beworben werden. Niemand musste C, Unix oder HTML bewerben. Ein echter Standard ist in der Regel bereits etabliert, wenn die meisten Leute davon hören. Auf dem Radarbildschirm von Hackern ist Perl genauso groß wie Java, oder größer, nur aufgrund seiner eigenen Verdienste.

  2. Es zielt niedrig. Im ursprünglichen Java-Whitepaper sagt Gosling ausdrücklich, dass Java so konzipiert wurde, dass es für Programmierer, die an C gewöhnt sind, nicht zu schwierig ist. Es wurde als ein weiteres C++ konzipiert: C plus ein paar Ideen aus fortschrittlicheren Sprachen. Wie die Schöpfer von Sitcoms, Junkfood oder Pauschalreisen entwarfen die Java-Designer bewusst ein Produkt für Leute, die nicht so schlau sind wie sie selbst. Historisch gesehen waren Sprachen, die für andere Leute zum Gebrauch entworfen wurden, schlecht: Cobol, PL/I, Pascal, Ada, C++. Die guten Sprachen waren diejenigen, die für ihre eigenen Schöpfer entworfen wurden: C, Perl, Smalltalk, Lisp.

  3. Es hat Hintergedanken. Jemand sagte einmal, die Welt wäre ein besserer Ort, wenn die Leute nur Bücher schreiben würden, weil sie etwas zu sagen hätten, anstatt weil sie ein Buch schreiben wollten. Ebenso hören wir ständig von Java, nicht weil es etwas über Programmiersprachen zu sagen hat. Wir hören von Java als Teil eines Plans von Sun, Microsoft zu untergraben.

  4. Niemand liebt es. C-, Perl-, Python-, Smalltalk- und Lisp-Programmierer lieben ihre Sprachen. Ich habe noch nie jemanden sagen hören, dass er Java liebt.

  5. Leute werden gezwungen, es zu benutzen. Viele Leute, die ich kenne und die Java benutzen, tun dies, weil sie das Gefühl haben, es tun zu müssen. Entweder war es etwas, das sie tun mussten, um eine Finanzierung zu erhalten, oder etwas, von dem sie dachten, dass Kunden es wollen würden, oder etwas, das ihnen das Management aufgetragen hat. Das sind kluge Leute; wenn die Technologie gut wäre, hätten sie sie freiwillig genutzt.

  6. Es hat zu viele Köche. Die besten Programmiersprachen wurden von kleinen Gruppen entwickelt. Java scheint von einem Komitee geleitet zu werden. Wenn es sich als gute Sprache herausstellt, wird es das erste Mal in der Geschichte sein, dass ein Komitee eine gute Sprache entworfen hat.

  7. Es ist bürokratisch. Soweit ich wenig über Java weiß, scheint es viele Protokolle für die Durchführung von Dingen zu geben. Wirklich gute Sprachen sind nicht so. Sie lassen dich tun, was du willst, und kommen aus dem Weg.

  8. Es ist pseudo-hip. Sun gibt nun vor, dass Java eine von der Basis getragene Open-Source-Sprachanstrengung ist wie Perl oder Python. Dieses hier wird zufällig von einem riesigen Unternehmen kontrolliert. Daher wird die Sprache wahrscheinlich die gleiche fade Klapprigkeit aufweisen wie alles andere, was aus einem großen Unternehmen kommt.

  9. Es ist für große Organisationen konzipiert. Große Organisationen haben andere Ziele als Hacker. Sie wollen Sprachen, die (glaubt man) für die Verwendung durch große Teams mittelmäßiger Programmierer geeignet sind – Sprachen mit Funktionen, die, wie die Geschwindigkeitsbegrenzer in U-Haul-Lastwagen, verhindern, dass Narren zu viel Schaden anrichten. Hacker mögen keine Sprache, die sie herablassend behandelt. Hacker wollen einfach Macht. Historisch gesehen haben Sprachen, die für große Organisationen entwickelt wurden (PL/I, Ada), verloren, während Hacker-Sprachen (C, Perl) gewonnen haben. Der Grund: Der Teenager-Hacker von heute ist der CTO von morgen.

  10. Die falschen Leute mögen es. Die Programmierer, die ich am meisten bewundere, sind im Großen und Ganzen nicht von Java eingenommen. Wer mag Java? Anzüge, die keine Sprache von einer anderen unterscheiden können, aber wissen, dass sie ständig von Java in der Presse hören; Programmierer in großen Unternehmen, die erstaunt sind, dass es etwas gibt, das sogar besser ist als C++; und Plug-and-Chug-Studenten, die bereit sind, alles zu mögen, was ihnen einen Job verschaffen könnte (wird das in der Prüfung vorkommen?). Die Meinungen dieser Leute ändern sich mit jedem Wind.

  11. Sein Vater ist in der Klemme. Suns Geschäftsmodell wird an zwei Fronten untergraben. Günstige Intel-Prozessoren, vom gleichen Typ wie in Desktop-Maschinen, sind jetzt mehr als schnell genug für Server. Und FreeBSD scheint mindestens ein ebenso gutes Betriebssystem für Server zu sein wie Solaris. Suns Werbung impliziert, dass man Sun-Server für industrielle Anwendungen benötigt. Wenn das wahr wäre, würde Yahoo als erstes Suns kaufen; aber als ich dort arbeitete, waren die Server alle Intel-Boxen, auf denen FreeBSD lief. Das verheißt nichts Gutes für die Zukunft von Sun. Wenn Sun in Schwierigkeiten gerät, könnten sie Java mit sich ziehen.

  12. Das DoD mag es. Das Verteidigungsministerium ermutigt Entwickler, Java zu verwenden. Das scheint mir das verheerendste Zeichen von allen zu sein. Das Verteidigungsministerium leistet gute (wenn auch teure) Arbeit bei der Verteidigung des Landes, aber sie lieben Pläne, Verfahren und Protokolle. Ihre Kultur ist das Gegenteil von Hacker-Kultur; bei Fragen der Software werden sie wahrscheinlich falsch liegen. Das letzte Mal, als das DoD eine Programmiersprache wirklich mochte, war es Ada.

Denken Sie daran, dies ist keine Kritik an Java, sondern eine Kritik an seinem Einband. Ich kenne Java nicht gut genug, um es zu mögen oder nicht zu mögen. Dies ist nur eine Erklärung, warum ich nicht daran interessiert bin, es zu lernen.

Es mag leichtfertig erscheinen, eine Sprache zu verwerfen, bevor man überhaupt versucht hat, Programme darin zu schreiben. Aber das ist etwas, das alle Programmierer tun müssen. Es gibt zu viele Technologien da draußen, um sie alle zu lernen. Man muss lernen, anhand äußerer Anzeichen zu beurteilen, welche Zeit wert sind. Ich habe auf ähnliche Weise leichtfertig Cobol, Ada, Visual Basic, die IBM AS400, VRML, ISO 9000, das SET-Protokoll, VMS, Novell Netware und CORBA unter anderem verworfen. Sie rochen einfach falsch.

Es könnte sein, dass ich mich im Fall von Java irre. Es könnte sein, dass eine Sprache, die von einem großen Unternehmen beworben wird, um ein anderes zu untergraben, von einem Komitee für ein "Mainstream"-Publikum entworfen wurde, in den Himmel gehypt wird und vom DoD geliebt wird, dennoch eine saubere, schöne, leistungsstarke Sprache ist, in der ich gerne programmieren würde. Es könnte sein, aber es erscheint sehr unwahrscheinlich.