Создание языка Java

Начало разработке Java было положено в 1991 г. Джеймсом Гослингом (James Gosling), Патриком Нотоном (Patrick Naughton), Крисом Вартом (Chris Warth), Эдом Франком (Ed Frank) и Майком Шериданом (Mike Sheridan), работавшими в компании Sun Microsystems, Inc. Разработка первой работающей версии заняла 18 месяцев. Вначале язык получил название "Oak" ("Дуб"), но в 1995 г. он был переименован в "Java". Между первой реализацией языка Oak в конце 1992 г. и публичным объявлением о создании Java весной 1995 г. множество других людей приняло участие в проектировании и развитие этого языка. Билл Джой (Bill Joy), Артур ван Хофф (Arthur van Hoff), Джонатан Пэйн (Jonathan Payne), Франк Йеллин (Frank Yellin) и Тим Линдхольм (Tim Lindholm) внесли основной вклад в развитие исходного прототипа.

Как ни странно, первоначальной побудительной причиной к созданию Java послужила вовсе не сеть Internet! Основной причиной была потребность в независящем от платформы (т.е. архитектурно нейтральном) языке, который можно было бы использовать для создания программного обеспечения, встраиваемого в различные бытовые электронные устройства, такие как СВЧ-печи и устройства дистанционного управления. Как не трудно догадаться, в качестве контроллеров используется множество различных-типов процессоров. Проблема применения языков С и С++ (как и большинства других языков) состоит в том, что написанные на них программы должны компилироваться для конкретной платформы. Хотя программы С++ могут быть скомпилированы практически для любого типа процессора, для этого требуется наличие полного компилятора С++, предназначенного для данного процессора. Проблема в том, что создание компиляторов обходится дорого и требует значительного времени. Поэтому требовалось более простое — и экономически выгодное — решение. Пытаясь найти такое решение, Гослинг и другие начали работу над переносимым, не зависящим от платформы языком, который можно было бы использовать для создания кода, пригодного для выполнения на различных процессорах в различных средах. Вскоре эти усилия привели к созданию языка Java.

Примерно в то же время, когда определялись основные характеристики Java, на сцену выступил второй, несомненно, более важный фактор, который должен был сыграть решающую роль в судьбе этого языка. Конечно же, этим вторым фактором была World Wide Web. Если бы формирование Web не происходило почти одновременно с реализацией Java, этот язык мог бы остаться полезным, но оставшимся незамеченным языком программирования бытовых электронных устройств. Но с появлением World Wide Web Java вышел на передний рубеж проектирования компьютерных языков, поскольку Web также нуждалась в переносимых программах.

Еще на заре своей карьеры большинство программистов твердо усвоили, что переносимые программы столь же недостижимы, сколь и желанны. В то время как потребность в средстве создания эффективных, переносимых (не зависящих от платформы) программ почти столь же стара, как и сама отрасль программирования, она отодвигалась на задний план другими, более насущными проблемами. Более того, поскольку большая часть самого мира компьютеров была разделена на три конкурирующих лагеря Intel, Microsoft и UNIX, большинство программистов оставалось запертым в своих аппаратно-программных "твердынях", что несколько снижало потребность в переносимом коде. Тем не менее, с появлением Internet и Web старая проблема переносимости снова возникла с еще большей актуальностью. В конце концов, Internet представляет собой разнообразную и распределенную вселенную, заполненную множеством различных типов компьютеров, операционных систем и процессоров. Несмотря на то что к Internet подключено множество типов платформ, пользователям желательно, чтобы все они могли выполнять одинаковые программы. То, что в начале было неприятной, но не слишком насущной проблемой, превратилось в потребность первостепенной важности.

К 1993 г. членам группы проектирования Java стало очевидным, что проблемы переносимости, часто возникающие при создании кода, предназначенного для встраивания в контроллеры, возникают также и при попытках создания кода для Internet. Фактически, та же проблема, для решения которой в малом масштабе предназначался язык Java, в большем масштабе была актуальна и в среде Internet. Понимание этого обстоятельства вынудило разработчиков языка Java перенести свое внимание с бытовой электроники на программирование для Internet. Таким образом, хотя потребность в архитектурно нейтральном языке программирования послужило своего рода "начальной искрой", Internet обеспечила крупномасштабный успех Java.

Как уже упоминалось, Java наследует многие из своих характеристик от языков С и С++. Это сделано намеренно. Разработчики Java знали, что использование знакомого синтаксиса С и повторение объектно-ориентированных свойств С++ должно было сделать их язык привлекательным для миллионов опытных программистов на C/C++. Помимо внешнего сходства, Java использует ряд других атрибутов, которые способствовали успеху языков С и С++. Во-первых, язык Java был спроектирован, проверен и усовершенствован настоящими работающими программистами. Этот язык построен с учетом потребностей и опыта людей, которые его создали. Таким образом, Java — это язык программистов. Во-вторых, Java целостен и логически непротиворечив. В-третьих, если не учитывать ограничения, накладываемые средой Internet, Java предоставляет программисту полный контроль над программой. Если программирование выполняется правильно, это непосредственно отражается в программах. В равной степени справедливо и обратное. Иначе говоря, Java не является языком тренажера. Это язык профессиональных программистов.

Из-за сходства характеристик Java и С, кое-кто склонен считать Java просто "Internet-версией С++". Однако это серьезное заблуждение. Языку Java присущи значительные практические и концептуальные отличия. Хотя и верно, что С++ оказал влияние на характеристики языка Java, последний не является усовершенствованной версией С++. Например, Java не обладает совместимостью с С++ ни по восходящей, ни по нисходящей. Конечно, сходство с языком С++ значительно, и в программе Java программист С++ будет чувствовать себя как дома. Вместе с тем, Java не предназначен служить заменой С++. Java был предназначен для решения одного набора проблем, а С++ — для решения другого. Еще длительное время оба эти языка неизбежно будут сосуществовать.

Как уже было отмечено в начале этой главы, развитие компьютерных языков обусловлено двумя причинами: необходимостью адаптации к изменениям в среде и необходимостью реализации новых идей в области программирования. Изменением среды, которое обусловило потребность в языке, подобном Java, была потребность в не зависящих от платформы программах, предназначенных для распространения в Internet. Однако Java изменяет также подход к написанию программ. В частности, Java углубил и усовершенствовал объектно-ориентированный подход, использованный в С++, добавил в него поддержку многопоточной обработки и предоставил библиотеку, которая упростила доступ к Internet. Однако столь поразительный успех Java обусловлен не теми или иными его отдельными особенностями, а их совокупностью как языка в целом. Он явился прекрасным ответом на потребности в то время лишь зарождающейся среды в высшей степени распределенных компьютерных систем. Для программирования Internet-программ Java стал тем, чем язык С был для системного программирования: революционной силой, которая изменила мир.




Rambler's Top100