Думается, у каждого найдется что сказать по поводу будущего Java. На самом деле, конечно, заглянуть в будущее невозможно. Однако разработчики заинтересованы в том, чтобы технология развивалась в правильном направлении, и вполне способны контролировать этот процесс. Если мы начнем активно пропагандировать Java и продемонстрируем пользователям мощь данной технологии, Java станет такой, какой ее хотим видеть мы (при всем уважении к мнению квалифицированных экспертов).
Недавно я прочитал книгу Эрика Гаммы "Design Patterns" ("Примеры программных конструкций"), представляющую собой каталог фрагментов объектно-ориентированных программ, в котором обобщен опыт многих разработчиков, эффективно применяющих объектно-ориентированные (ОО) технологии. Но меня заинтересовало не само содержание книги: я хотел знать, как часто описываемые конструкции можно встретить в интерфейсах прикладных программ (API) Java. Частота использования - прямое доказательство высокой квалификации и глубоких знаний создателей Java API. Печально, но с этим никак не желает соглашаться довольно значительная часть компьютерного сообщества. Предсказаниям комментаторов, редакторов и аналитиков, твердящих либо о приближении кончины Java, либо о том, что данная технология никогда не станет доступна широким массам и останется уделом избранных, просто несть числа. К сожалению, очень мало "промышленных экспертов" обладает достаточными знаниями, чтобы хорошо ориентироваться в таких технологиях, как Java, и выдавать объективные заключения.
Вы, вероятно, слышали о Роберте Кринджели. Он написал ряд новелл Triumph of the Nerds ("Триумф болванов"), который компания PBS превратила в мини-сериал. У него есть постоянная аналитическая страничка в Web , названная I, Cringely ("Я, Кринджели"), которая находится на узле www.pbs.org. Я с уважением отношусь к мнению Роберта. Этот человек один из немногих, кто стремится сначала досконально разобраться в интересующем его вопросе, а уже потом публиковать материалы на эту тему. Я послал ему электронное письмо, в котором отметил, что в целом согласен с его комментариями, но категорически против концепции статей, посвященных Java. Ответ не заставил себя ждать и гласил примерно так: "Вы не сможете создать на Java ни одной программы, которую нельзя было бы написать на C++ (и которая бы работала быстрее, чем приложения C++). Java - это важный этап развития программной индустрии, но, увы, всего лишь этап. Java - это Pascal 90-х".
Java и транзистор: технологическая революция
Когда сотрудники лаборатории Bell Labs Бардин, Брэттейн и Шокли в 1948 году изобрели первый биполярный транзистор, многие отмечали, что у транзистора нет никаких функциональных преимуществ перед электронной лампой. В общем случае как транзистор, так и электронная лампа выполняют функции усилителя. Более того, электронные лампы довольно долго и стоили дешевле, и работали быстрее, и лучше усиливали сигнал по сравнению с транзисторами.
Роберт Нойс и Гордон Мур никогда не считали, что транзисторы призваны заменить электронные лампы. Они сумели разглядеть заложенный в транзисторах огромный потенциал. Нойс и Мур основали фирму Fairchild Semiconductor, а позже стали учредителями компании Intel. Можно твердить, что транзисторы - всего лишь один из этапов развития элементной базы электронных устройств, но отрицать их значение сегодня вряд ли придет кому-нибудь в голову. Точно так же нельзя относиться к Java просто как к очередному этапу развития информационных технологий. Как транзисторы, так и Java, получив повсеместное распространение, изменили общее направление технологического развития. Никто не предлагает начать переписывать на Java все старые приложения или отказаться от использования C++. Речь идет о новой функциональности, которая не рассматривалась ранее с практической точки зрения. Байт-код Java представляет собой отражение работы процессора на более высоком уровне абстракции. Это означает, что любой компьютер в любом месте сумеет правильно распознать информацию, занесенную в смарт-карточку, лежащую в вашем бумажнике, или в кольцо на вашем пальце. Еще одна интересная идея состоит в том, чтобы при помощи интерфейса прикладных программ Java Blend эффективно и без большого расхода ресурсов представлять хранящуюся в базе данных информацию в виде объекта Java. Применяя технологию удаленного вызова методов (remote method invocation, RMI), объекты можно будет получить из любого источника и просмотреть на любом терминале. Все это считается теоретически возможным, но с недавних пор в адрес Java посыпались обвинения в непрактичности из-за повышенной сложности реализации отдельных возможностей.
Java с точки зрения дилетанта
Изучая литературу, посвященную Java, я наткнулся на статью As the Sun Sets ("Когда заходит солнце"). Заголовок ясно выражает направленность статьи, написанной экспертом-самозванцем Дэвидом Коурси. Последний заявляет, что корпорация Sun Microsystems практически утратила контроль над развитием Java, и теперь инициатива в этом вопросе принадлежит Microsoft. Это утверждение основывается на том, что, по мнению автора, Microsoft "пишет более эффективный код". Не вдаваясь в подробности "противостояния двух религий", тем не менее позволю себе не согласиться с такой аргументацией. Я не считаю, что код Microsoft написан лучше. Ни у кого нет сомнений, что в этой корпорации работают лучшие из лучших. Однако я не уверен, что по-настоящему талантливый программист может реализовать себя в таких проектах, как Microsoft Word.
Поинтересовавшись технической квалификацией г-на Коурси, я в ответ услышал: "Я не инженер и не программист... Однако я знаком со многими авторитетными людьми, высоко ценю их мнение и использую его в своей работе".
Ну не забавно ли, что автор статей о технологиях не имеет даже технического образования. Впрочем, незнание технологических основ придает публикациям Коурси какое-то особое очарование. Я не говорю, что он неспособен освоить HTML или научиться работать с браузером. Но ведь речь идет о создании удобных методов удаленного вызова, эффективных интерпретаторов байт-кода и устойчивой модели управления памятью виртуальной машины Java (JVM). Все эти вопросы требуют глубокого понимания принципов разработки программного обеспечения. А так называемому эксперту явно не хватает серьезного базового образования и реального опыта работы в области информационных технологий.
Пророчества Билла
В апреле в Сан-Франциско в одно и то же время проходили две конференции: JavaOne и Software Development. Глава Microsoft Билл Гейтс должен был выступить на пресс-конференции, и я постарался заранее занять место в первых рядах, чтобы узнать, что думает руководитель крупнейшей корпорации о перспективах развития программной индустрии. Однако ничего неожиданного я не услышал. Билл расхваливал собственных "тонких" клиентов (NetPC и Windows-терминалы), а также много говорил об операционной системе Windows CE для портативных устройств. Когда речь зашла о Java, он заявил, что независимости от конкретной платформы достичь не удалось, а 54% от общего числа программистов в качестве основного инструментального средства используют Visual Basic. По словам Гейтса, о технологии Java за все время ее существования было написано всего 56 книг. Думаю, что у главы Microsoft нелады с арифметикой, ведь только из-под моего пера вышло две таких книги. К моему удивлению, в большинстве своем журналисты ловили каждое слово главы Microsoft и безропотно проглотили все сказанное им, не задав ни единого вопроса. Некоторые даже назвали его пророком!
На следующий день, беседуя с главой Sun Скоттом Макнили, я поинтересовался, слушал ли он выступление Билла Гейтса. Получив отрицательный ответ, я сказал, что, на мой взгляд, Билл намеренно исказил факты. Скотт прервал меня на полуслове, заметив: "Он прекрасно знает, что лжет". Тогда я подумал, что если Билл знает, что он лжет, а Скотт знает, что Билл знает, что он лжет, то все это напоминает интересную игру, где победителю в качестве награды достаются симпатии людей, мало что понимающих в технологии.
Каждый рисует картину будущего, исходя из собственных интересов. Билл Гейтс будет преуменьшать значение Java, чтобы эта технология не угрожала монополии Windows. Дэвид Коурси стремится всячески принизить роль Sun, чтобы никто не посягал на существующий в его воображении образ компьютерного совершенства - корпорацию Microsoft. Что касается Роберта Кринджели, то я не думаю, чтобы у него нашлось время погрузиться в изучение JDK. Однако если это все же произойдет, то скорее всего он придет к прямо противоположному мнению.
Заключение
Какое будущее ожидает Java? Я не знаю. Одно могу сказать совершенно точно: многие, слишком многие абсолютно не понимают, что представляет собой Java и какие возможности открывает перед нами данная технология. Это печально. Встречаются и "специалисты", которые не знают даже того, что у истоков технологии стояла корпорация Sun. Слушателям моих курсов я часто задаю один и тот же вопрос: "Кто разработал Java?" - и слышу в ответ: "IBM" или "AT&T". Иногда мне говорят: "Microsoft"(!).
Разработчики программ, создатели системной архитектуры и даже хакеры должны быть заинтересованы в пропаганде новой технологии. Нужно простыми и понятными словами разъяснять, что такое Java, для чего предназначен этот язык и какая роль ему отведена. Мы должны добиться того, чтобы люди поняли необходимость объективного изучения технологии, чтобы они принимали обоснованные решения, а не просто слепо следовали моде. Нужно стремиться к тому, чтобы любой пользователь осознал то, в чем давно уже убедились мы: Java - просто превосходная технология.
Мадху Сиддалингайя (Madhu Siddalingaiah) - соучредитель компании PraxisNET, разрабатывающей конкретные решения на базе технологии Java. Он занимается Java со времен появления первой бета-версии этого языка в 1995 году. Он преподает практический курс Java в компании Learning Tree International. Сиддалингайя - автор книг Java How-to ("Java в вопросах и ответах") и Java API for Dummies, Quick Reference ("Java API для "чайников". Краткое руководство"). С ним можно связаться по адресу madhu.siddalingaiah@javaworld.com.