Loading...

JAVA'S COVER

Original

April 2001

Dieser Aufsatz entwickelte sich aus Gesprächen, die ich mit mehreren anderen Programmierern darüber geführt habe, warum Java verdächtig roch. Es ist keine Kritik an Java! Es ist eine Fallstudie über den Radarsensor von Hackern.

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

Einige Leute, die diesen Text gelesen haben, finden, dass es ein interessanter Versuch ist, über etwas zu schreiben, worüber noch nicht geschrieben wurde. Andere sagen, ich werde Ärger bekommen, weil es so aussieht, als würde ich über Dinge schreiben, die ich nicht verstehe. Also, nur für den Fall, dass es irgendwie hilft, lass mich klarstellen, dass ich hier nicht über Java (das ich nie benutzt habe) schreibe, sondern über den Radarsensor von Hackern (worüber ich viel nachgedacht habe).

Das Sprichwort "man kann ein Buch nicht an seinem Einband erkennen" stammt aus der Zeit, als Bücher in einfachen Pappeinbänden verkauft wurden, um von jedem Käufer nach seinem eigenen Geschmack gebunden zu werden. In jenen Tagen konnte man ein Buch nicht an seinem Einband erkennen. Aber das Verlagswesen hat sich seitdem weiterentwickelt: Heutige Verlage arbeiten hart daran, den Einband zu etwas zu machen, an dem man ein Buch erkennen kann.

Ich verbringe viel Zeit in Buchhandlungen und ich habe das Gefühl, dass ich inzwischen gelernt habe, alles zu verstehen, was mir die Verlage über ein Buch sagen wollen, und vielleicht sogar noch etwas mehr. Die Zeit, die ich nicht in Buchhandlungen verbracht habe, habe ich meist vor Computern gesessen, und ich habe das Gefühl, als hätte ich auch gelernt, Technologie bis zu einem gewissen Grad an ihrem Äußeren zu beurteilen. Vielleicht ist es nur Glück, aber ich habe mich vor einigen Technologien bewahrt, die sich als wirkliche Nieten erwiesen haben.

Bisher erscheint mir Java wie so eine Niete. Ich habe nie ein Java- Programm geschrieben, nie mehr als einen flüchtigen Blick in Referenzwerke darüber geworfen, aber ich habe das Gefühl, dass es keine sehr erfolgreiche Sprache sein wird. Ich könnte mich irren; Vorhersagen über Technologie zu machen, ist ein gefährliches Geschäft. Aber was es wert ist, hier ist als eine Art Zeitkapsel, warum mir 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 schon etabliert, wenn die meisten Menschen davon hören. Auf dem Hacker-Radarschirm ist Perl genauso groß wie Java, oder sogar größer, allein 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 entworfen, um ein weiteres C++ zu sein: C plus ein paar Ideen aus fortgeschritteneren Sprachen. Wie die Macher von Sitcoms oder Junkfood oder Pauschalreisen haben die Entwickler von Java bewusst ein Produkt für Leute entworfen, die nicht so schlau sind wie sie. Historisch gesehen waren Sprachen, die für andere Leute entwickelt wurden, schlecht: Cobol, PL/I, Pascal, Ada, C++. Die guten Sprachen waren diejenigen, die für ihre eigenen Schöpfer entwickelt 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 haben, anstatt weil sie ein Buch schreiben wollen. Ebenso ist der Grund, warum wir ständig von Java hören, 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 der Leute, die ich kenne und die Java benutzen, tun das, weil sie das Gefühl haben, dass sie müssen. Entweder ist es etwas, das sie für eine Finanzierung für nötig hielten, oder etwas, von dem sie dachten, dass die Kunden es wollen, oder etwas, das ihnen von der Geschäftsführung aufgetragen wurde. Das sind kluge Leute; wenn die Technologie gut wäre, hätten sie sie freiwillig benutzt.

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

  7. Es ist bürokratisch. Soweit ich Java kenne, gibt es viele Protokolle, um Dinge zu tun. Wirklich gute Sprachen sind nicht so. Sie lassen dich machen, was du willst, und stellen sich nicht in den Weg.

  8. Es ist pseudo-hip. Sun tut jetzt so, als sei Java eine grassroots, Open-Source-Sprachbemühung wie Perl oder Python. Nur zufällig wird die Sprache von einem Großkonzern kontrolliert. Daher wird die Sprache wahrscheinlich die gleiche triste Klobigkeit haben 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 (angeblich) für den Einsatz durch große Teams von durchschnittlichen Programmierern geeignet sind - Sprachen mit Funktionen, die, wie die Geschwindigkeitsbegrenzer in U-Haul-Trucks, verhindern, dass Toren zu viel Schaden anrichten. Hacker mögen keine Sprache, die auf sie herabblickt. Hacker wollen einfach nur 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 begeistert. Wer mag Java? Anzugträger, die nicht wissen, was für eine Sprache besser ist, aber wissen, dass sie ständig von Java in den Medien hören; Programmierer in großen Unternehmen, die erstaunt sind, dass es etwas Besseres als C++ gibt; und Durchschnittsstudenten, die bereit sind, alles zu mögen, was ihnen vielleicht einen Job verschaffen könnte (wird das in der Prüfung abgefragt?). Die Meinungen dieser Leute ändern sich mit jedem Wind.

  11. Sein Vater steckt in der Klemme. Suns Geschäftsmodell wird auf zwei Fronten untergraben. Billige Intel-Prozessoren, vom gleichen Typ wie in Desktopcomputern, sind für Server inzwischen mehr als schnell genug. Und FreeBSD scheint mindestens genauso gut ein Betriebssystem für Server zu sein wie Solaris. Suns Werbung suggeriert, dass man für industrietaugliche Anwendungen Sun-Server braucht. Wenn das wahr wäre, würde Yahoo als Erstes Suns kaufen; aber als ich dort arbeitete, liefen die Server alle auf Intel-Kisten mit FreeBSD. Das deutet auf eine düstere Zukunft für Sun hin. Wenn Sun in Schwierigkeiten gerät, könnte das Java mit in den Abgrund reißen.

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

Denk daran, das ist keine Kritik an Java, sondern eine Kritik an seiner Hülle. Ich kenne Java nicht gut genug, um es zu mögen oder zu mögen. Das ist nur eine Erklärung dafür, warum ich nicht besonders begierig darauf bin, es zu lernen.

Es mag leichtsinnig erscheinen, eine Sprache abzulehnen, bevor man auch nur versucht hat, Programme in ihr 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 es wert sind, seine Zeit darauf zu verwenden. Ich habe ebenso leichtfertig Cobol, Ada, Visual Basic, den IBM AS400, VRML, ISO 9000, das SET-Protokoll, VMS, Novell Netware und CORBA abgelehnt, unter anderem. Sie rochen einfach falsch.

Es könnte sein, dass ich im Fall von Java falsch liege. Es könnte sein, dass eine Sprache, die von einem großen Unternehmen gefördert wird, um ein anderes zu untergraben, von einem Ausschuss für ein "mainstream" Publikum entworfen, bis in den Himmel gehypt und vom Verteidigungsministerium geliebt wird, dennoch eine saubere, schöne, leistungsfähige Sprache ist, in der ich gerne programmieren würde. Es könnte sein, aber es erscheint sehr unwahrscheinlich.