Краткий курс истории языка Java
В этом разделе кратко описывается история языка Java. В основу этого
раздела положены различные опубликованные материалы (в основном,
интервью с создателями языка Java в июльском выпуске электронного
журнала SunWorld за 1995 год).
История Java восходит к 1991 году, когда группа инженеров из
компании Sun под руководством Патрика Нотона (Patrick Naughton) и члена
Совета директоров (и разностороннего компьютерного волшебника) Джеймса
Гослинга (James Gosling) занялась разработкой небольшого языка, который
можно было бы использовать для программирования бытовых устройств,
например, контроллеров для переключения каналов кабельного телевидения
(cable TV switchboxes).
Поскольку такие устройства не потребляют много энергии и не имеют
больших микросхем памяти, я должен был быть маленьким и генерировать
очень компактные программы. Кроме того, поскольку разные производители
могут выбирать разные центральные процессоры (Central Processor Unit—
CPU), было важно не завязнуть в какой-то одной архитектуре компьютеров.
Проект получил кодовое название "Green".
Стремясь изобрести небольшой, компактный и машинонезависимый код,
разработчики возродили модель, использованную при реализации первых
версий языка Pascal заре эры персональных компьютеров. Никлаус Вирт,
создатель языка Pascal, в свое время разработал машинонезависимый язык,
генерирующий промежуточный код для некоей гипотетической машины. Этот
язык стал коммерческим продуктом под названием UCSD Pascal. (Такие
гипотетические машины часто называются виртуальными — например,
виртуальная машина языка Java, или JVM.) Этот промежуточный код
можно выполнять на любой машине, имеющей соответствующий интерпретатор.
Инженеры, работавшие над проектом "Green", также использовали
виртуальную машину, что решило их основную проблему.
Однако большинство сотрудников компании Sun имели опыт работы с
операционной системой UNIX, поэтому в основу разрабатываемого ими языка
бь л положен язык C++, а не Pascal. В частности, они сделали язык
объектно-, а не процедурно-ориентированным.
Как сказал Гослинг в своем интервью: "Язык — это всегда средство, а не цель".
Сначала Гослинг решил назвать его "Oak" ("Дуб"). (Возможно потому,
что он любил смотреть на дуб, растущий прямо под окнами его офиса в
компании Sun.) Потом сотрудники компании Sun узнали, что слово Oak уже
используется в качестве имени ранее созданного языка программирования, и
изменили название Java.
В 1992 году в рамках проекта Green была выпущена первая продукция, названная
"*7". Это было средство для чрезвычайно интеллектуального
дистанционного управления. (Оно имело мощность рабочей станции SPARK,
помещаясь в коробочке размером 6x4x4 дюйма.) К сожалению, ни одна из
компаний— производителей электронной техники не заинтересовалась этим
изобретением.
Затем группа стала заниматься разработкой устройства для кабельного
телевидения, которое могло бы осуществлять новые виды услуг, например,
включать видеосистему по требованию. И снова они не получили ни одного
контракта. (Забавно, что одной из компаний, отказавшихся подписать с
ними контракт, руководил Джим Кларк (Jim Clark) — основатель компании
Netscape, впоследствии сделавшей очень много для успеха языка Java.)
Весь 1993 год и половину 1994 года продолжались безрезультатные
поиски покупателей продукции, разработанной в рамках проекта "Green"
(под новым названием "First Person, Inc."). (Патрик Нотон, один из
основателей группы, впоследствии в основном занимавшийся маркетингом,
налетал в общей сложности более 300 тысяч миль, пытаясь продать
разработанную технологию.) Проект "First Person, Inc." был прекращен в
1994 году.
Тем временем в рамках Интернет разрасталась сеть World Wide Web.
Ключом к этой сети является броузер, превращающий гипертекст в
изображение на экране. В 1994 году большинство людей пользовалось
броузером Mosaic, некоммерческим Web-броузером, разработанным в
суперкомпьютерном центре Университета штата Иллинойс (University of
Illinois) в 1993 году. (Частично этот броузер был написан Марком
Андреессеном (Mark Andreessen) за 6,85 доллара в час. В то время Марк
заканчивал университет и броузер был его дипломной работой. Затем он
стал одним из основателей и главным программистом компании Netscape, и к
нему пришли слава и богатство.)
В своем интервью журналу Sun World Гослинг сказал, что в середине
1994 года разработчики языка поняли: "Нам нужно создать действительно
крутой броузер. Такой броузер должен представлять собой одно из немногих
приложений модной клиент-серверной технологии, в которой жизненно
важным было бы именно то, что мы сделали: архитектурная независимость,
выполнение в реальном времени, надежность, безопасность — вопросы, не
являвшиеся чрезвычайно важными для рабочих станций. И мы создали такой
броузер".
На самом деле броузер был разработан Патриком Нотоном и Джонатаном
Пэйном (Johnatan Payne). Позднее он превратился в современный броузер
HotJava. Этот броузер был написан на языке Java, чтобы
продемонстрировать всю его мощь. Однако разработчики не забывали о
мощных средствах, которые теперь называются апплетами, наделив свой
броузер способностью выполнять код внутри Web-страниц. "Демонстрация
технологии" была представлена на выставке Sun World '95 23 мая 1995
года и вызвала всеобщее помешательство на почве язака Java,
продолжающееся и поныне.
Компания Sun выпустила первую версию языка Java в начале 1996 года.
Через несколько месяцев после нее появилась версия Java 1.02. Люди
быстро поняли, что версия Java 1.02 не подходит для разработки серьезных
приложений. Конечно, эту версию можно применять для разработки
Web-страниц с пляшущими человечками, однако в версии Java 1.02 ничего
нельзя даже напечатать.
Честно говоря, версия Java 1.02 была еще сырой. Ее преемница, версия
Java 1.1, заполнила большинство зияющих провалов, намного улучшив
возможность отражения и добавив новую модель событий для
программирования графического пользовательского интерфейса. Несмотря на
это, она все еще была довольно ограниченной.
Выпуск версии Java 1.2 стал основной новостью конференции JavaOne в
1998 году. В новой версии слабые средства для создания графического
пользовательского интерфейса и графических приложений были заменены
сложным и масштабным инструментарием. Это был шаг вперед, к реализации
лозунга "Write Once, Run Anywhere" ™ ("Один раз напиши— и везде
выполняй"), выдвинутого при разработке предыдущих версий.
В декабре 1998 года через три дня (!) после выхода в свет название
новой версии было изменено на громоздкое словосочетание Java 2 Standart
Edition Software Development Kit Version 1.2 (Стандартное издание
пакета инструментальных средств для разработки программного обеспечения
на языке Java 2, версия 1.2).
Кроме стандартного издания пакета ("Standart Edition") были
предложены еще два варианта: "микроиздание" ("Micro Edition") для
портативных устройств, например, для мобильных телефонов, и.
"промышленное издание" ("Enterprise Edition") для создания сер верных
приложений. В нашей книге в центре внимания находится стандартное
издание.
Версии 1.3 и 1.4 стандартного издания пакета инструментальных
средств намного совершеннее первоначального выпуска языка Java 2. Они
обладают новыми возможностями и, разумеется, содержат намного меньше
ошибок. В табл. 1 1 показан стремительный рост объема библиотеки API по
мере появления новых версий стандартного издания пакета SDK.
Таблица 1.1. Рост объема библиотеки API из пакета Java Standart Edition
Версия
|
Количество классов и интерфейсов
|
Количество методов и полей
|
1.0
|
212
|
2125
|
1.1
|
504
|
5478
|
1.2
|
1781
|
20935
|
1.3
|
2130
|
23901
|
1.4
|
3020
|
32138
|
Распространенные заблуждения относительно языка Java
В этом разделе перечислены и прокомментированы некоторые из распространенных заблуждений, касающихся Java.
Язык Java - это расширение языка HTML.
Java— это язык программирования, а язык HTML— это способ описания
структуры Web-страниц. Между ними нет ничего общего, за исключением
расширений языка HTML, позволяющих размещать на Web-страницах апплеты,
написанные на языке Java.
Я работаю на языкеXML, поэтому мне не нужен язык Java.
Язык Java— это язык программирования, а язык XML— просто способ
описания данных. Данные, описанные с помощью языка XML, можно
обрабатывать с помощью программ, написанных на любом языке
программирования, но лишь библиотека API языка Java содержит
превосходные средства поддержки для обработки таких данных. Кроме того,
в языке Java реализованы многие возможности языка XML. Более подробно
они описаны во втором томе.
Язык Java легко выучить.
Нет ни одного языка программирования, столь же мощного, как язык
Java, который можно было бы легко выучить. Игрушечные программы писать
довольно просто, однако выполнять серьезную работу всегда трудно. Кроме
того, обратите внимание на то, что в этой книге обсуждению собственно
языка Java посвящено только четыре главы. В остальных главах
объясняется, как работать с его библиотеками, содержащими тысячи
классов и интерфейсов, а также многие тысячи функций. К счастью, знать
каждую из них не обязательно, однако для выполнения реального проекта
от пользователя требуется на удивление много знаний.
На языке Java легко программировать.
Набор инструментальных средств Java SDK использовать нелегко всем,
за исключением программистов, привыкших к режиму командной строки.
Существуют интегрированные среды программирования, включающие текстовые
редакторы, компиляторы, средства для создания форм с помощью технологии
"drag-and-drop", однако для новичка они выглядят слишком сложными и
устрашающими. Кроме того, они часто генерируют программы, состоящие из
сотен строк. Нам кажется, что начинать изучение языка Java по длинным
программам, сгенерированным автоматически и заполненным комментариями
типа "РУКАМИ НЕ ТРОГАТЬ!", — не слишком удачная идея. Мы полагаем, что
лучше всего изучать язык Java, пользуясь привычным текстовым
редактором. Именно так мы и поступим.
Язык Java со временем станет универсальным языком программирования для всех платформ.
Теоретически это возможно. Именно об этом мечтают все производители
программного обеспечения, кроме компании Microsoft. Однако есть много
приложений, прекрасно работающих на персональных компьютерах, которые не
будут так же хорошо работать на других устройствах или под управлением
броузера. Кроме того, эти приложения написаны так, чтобы максимально
использовать возможности процессоров и машинозависимых библиотек. В
любом случае они уже перенесены на все важные платформы. К таким
приложениям относятся текстовые и графические редакторы, а также
Web-броузеры. Обычно эти приложения пишутся на языках С или C++, и
пользователь ничего не выиграет, если переписать их на языке Java.
Помимо всего прочего, после переписывания на языке Java эти программы
станут более медленными и менее эффективными, по крайней мере, в
ближайшем будущем.
Язык Java — это просто еще один язык программирования.
Java— прекрасный язык программирования. Многие программисты отдают
предпочтение именно ему, а не языкам С или C++. Однако в мире существуют
сотни прекрасных языков программирования, так никогда и не получивших
широкого распространения, в то время как языки с очевидными
недостатками, такие как C++ и Visual Basic, достигли ошеломительных
успехов.
Почему? Успех любого языка программирования в основном определяется
практичностью его системы поддержки (support system), а не
элегантностью его синтаксиса. Существуют ли полезные, удобные и
стандартные библиотеки, позволяющие сделать именно то, что необходимо
программисту? Разработана ли удобная среда для создания и отладки
программ? Интегрирован ли язык и его инструментарий в компьютерную
инфраструктуру? Язык Java достиг успехов в области серверных
приложений, поскольку его библиотеки классов позволяют легко сделать
то, что раньше было трудным, например, поддерживать работу в сети и
многопоточность. Тот факт, что язык Java уменьшил количество ошибок,
связанных с указателями, также говорит в его пользу. Благодаря этому
производительность труда программистов повысилась. Однако не в этом
кроется причина его успеха.
Программы на языке Java
интерпретируются, значит, серьезные приложения будут слишком медленно
выполняться на конкретной платформе.
Многие программы затрачивают большую часть времени на взаимодействие
с пользовательским интерфейсом или ожидание данных из сети. Все
программы, независимо от того, на каком языке они написаны, должны
реагировать на щелчок мыши за определенное время. Разумеется, не
следует выполнять задачи, требующие высокой производительности
центрального процессора, с помощью интерпретатора языка Java. Однако на
платформах, допускающих синхронную компиляцию, нужно лишь запустить
байт-коды на выполнение, и большинство вопросов просто отпадут.
В конце концов язык Java отлично подходит для разработки сетевых
программ. Опыт показывает, что он легко поддерживает высокую скорость
передачи в сети даже во время таких интенсивных вычислений,
как шифрование. Поскольку скорость работы на языке Java выше скорости
передачи данных в сети, становится неважным, что программы на языке C++
могут работать еще быстрее. На языке Java легче программировать, а
программы, написанные на нем, машинонезависимы.
Все программы на языке Java выполняются под управлением Web-броузеров.
Все апплеты, написанные на языке Java, действительно выполняются под
управлением Web-броузеров. Собственно, это и есть определение апплета—
программа, выполняемая Web-броузером. Однако вполне возможно и уместно
создавать с шостоятельные программы на языке Java, которые выполняются
независимо от Web-броузера.
Эти программы (обычно называемые приложениями) являются полностью
машинонезависимыми. Просто берите программу и выполняйте ее на другой
машине! Поскольку язык Java более удобен и менее подвержен ошибкам, чем
язык C++, он представляет собой хороший выбор. В сочетании со
средствами доступа к базам данных, например, пакетом Java Database
Connectivity, язык Java становится просто неотразимым. Особенно удобно
его изучать в качестве первого языка программирования. Большинство
программ в этой книге являются абсолютно самостоятельными. Конечно,
апплеты очень забавны. Однако приложения на языке Java на практике
более важны и полезны.
Апплеты на языке Java представляют собой большую опасность для системы защиты.
Было опубликовано несколько отчетов об ошибках в системе
безопасности языка Java. Большинство из них касалось реализации языка
Java с помощью конкретного броузера. Исследователи восприняли это как
вызов и принялись искать лазейки в системе защиты языка Java, чтобы
преодолеть силу и сложность модели безопасности апплетов. Обнаруженные
технические ошибки вскоре были исправлены, и, насколько мы знаем, ни
одна реальная система никогда не была скомпрометирована. Чтобы оценить
важность этого факта, вспомните о миллионах вирусных на выполняемые
файлы операционной системы Windows и макросы текстового процессора
Word, действительно вызвавшие немало бед, и удивительно беззубую
критику слабостей атакованной платформы. Кроме того, механизм ActiveX в
броузере Internet Explorer мог бы вызвать много нареканий, однако
способы его взлома настолько очевидны, что лишь немногие специалисты
потрудились опубликовать свои изыскания.
Некоторые системные администраторы даже стали выключать системы
защиты языка Java в своих броузерах, чтобы пользователи могли, как и
прежде загружать исполняемые файлы, элементы управления ActiveX и
документы, созданные с помощью текстового процессора Word. Забавно, что
в настоящее время вероятность преодоления системы защиты апплетов на
языке Java сравнима с вероятностью погибнуть в авиационной катастрофе, в
то время как риск заразить компьютер, открыв документ, созданный
текстовым процессором Word, сравним с риском погибнуть под колесами
автомобиля, перебегая дорогу в час пик.
Язык JavaScript — упрощенная версия языка Java.
Язык JavaScript — это язык разработки сценариев, который можно
использовать на Web-страницах. Он был разработан компанией Netscape и
сначала назывался LiveScript. Синтаксис языка JavaScript напоминает
синтаксис языка Java, однако на этом их сходство заканчивается (за
исключением имени, конечно). Подмножество языка JavaScript было
стандартизовано под именем ЕСМА-262, однако его расширения, необходимые
для реальной работы, стандартизованы не были. В результате программа
на языке JavaScript, которую можно было бы выполнять как под
управлением броузеров компании Netscape, так и с помощью броузера
Internet Explorer, осталась несбыточной мечтой.
Для разработки сценариев графического пользовательского интерфейса нужно использовать язык Java, а не Perl.
Это правда лишь наполовину. Для разработки серверных приложений
больше не следует применять не только язык Perl, но и сами сценарии
графических пользовательских интерфейсов (CGI-сценарии). Сервлеты
языка Java превосходно справляются с решением этой задачи. Они работают
намного эффективнее, чем CGI-сценарии, и для их реализации можно
использовать реальный язык программирования — язык Java.
Язык Java совершит революцию в области клиент-серверных приложений.
Это возможно. Именно в этой области язык Java особенно полезен.
Некоторые серверные приложения, например BEA Weblogic, полностью
встроены в язык Java.
Язык Java отменит компонентную модель вычислений.
Вряд ли найдутся хотя бы два человека, у которых совпали бы мнения о
компонентах. В качестве визуальных компонентов управления в версии
Java 1.1 были предложены функциональные компоненты JavaBeans,
аналогичные компонентам ActiveX, использующимся для создания
графического пользовательского интерфейса.
Функциональные компоненты JavaBeans позволяют делать то же самое,
что и компоненты ActiveX, за исключением того, что они автоматически
являются кроссплатформенными. С точки зрения серверных приложений
промышленные компоненты, предназначенные для повторного использования,
легко применять при разработке широкого круга серверных приложений.
Возможно, в будущем возникнет рынок этих компонентов, аналогичный рынку
компонентов ActiveX в мире Windows.
Пользуясь языком Java, можно заменить компьютер "Интернет-устройством" стоимостью 500 долларов.
Некоторые специалисты уверены, что это непременно случится. Нам
кажется абсурдным думать, что домашние пользователи могут заменить
мощные и удобные персональные компьютеры ограниченными машинами без
жестких дисков. Однако сетевой компьютер, оснащенный средствами языка
Java, предоставляет вполне реальную возможность реализовать "нулевую
администраторскую инициативу", направленную на уменьшение стоимости
компьютеров, занятых в бизнесе.
Мы рассматриваем Интернет-устройство как дополнение к персональному
компьютеру. Если цена позволяет, почему бы не приобрести устройство,
поддерживающее работу в Интернет, для просмотра на экране электронной
почты и новостей? Ядро языка Java настолько мало, что он является
очевидным выбором для такого рода телефонов и других
"Интернет-устройств".
|