В этой статье кратко изложена история развития языка Java. В основу этого материала положены различные опубликованные первоисточники (в частности, интервью с создателями языка Java в июльском выпуске электронного журнала SunWorld за 1995 г.).
История Java восходит к 1991 году, когда группа инженеров из компании Sun Microsystems под руководством Патрика Нотона (Patrick Naughton) и члена совета директоров (и разностороннего специалиста) Джеймса Гослинга (James Gosling) занялась разработкой языка, который можно было бы использовать для программирования бытовых устройств, например, контроллеров для переключения каналов кабельного телевидения. Подобные устройства не обладают большими вычислительными мощностями и объемом оперативной памяти, и поэтому новый язык должен был быть простым и способным генерировать очень компактный код. Кроме того, разные производители могут выбирать разные процессоры для контроллеров, и поэтому было очень важно не привязываться к конкретной их архитектуре. Проект создания нового языка получил кодовое название "Green".
Стремясь получить компактный и независимый от платформы код, разработчики нового языка возродили модель, использовавшуюся при реализации первых версий языка Pascal на заре эры персональных компьютеров. Никлаус Вирт, создатель языка Pascal, в свое время разработал переносимый язык, генерирующий промежуточный код для некоей гипотетической машины. Такие машины называются виртуальными, отсюда термин — виртуальная машина ]ava (JVM). Этот промежуточный код можно выполнять на любой машине, имеющей соответствующий интерпретатор. Инженеры, работавшие над проектом "Green", также использовали виртуальную машину, что решило основную проблему переносимости кода.
Большинство сотрудников компании Sun Microsystems имели опыт работы с операционной системой Unix, поэтому в основу разрабатываемого ими языка был положен язык C++, а не Pascal. В частности, они сделали язык объектно-, а не процедурно-ориентированным. Как сказал Гослинг в своем интервью: "Язык — это всегда средство, а не цель". Сначала Гослинг решил назвать его Oak (Дуб). (Возможно потому, что он любил смотреть на дуб, росший прямо под окнами его рабочего кабинета в компании Sim Microsystems.) Затем сотрудники компании узнали, что слово "Oak" уже используется в качестве имени ранее созданного языка программирования, и изменили название на Java. Этот выбор был сделан по наитию.
В 1992 г. в рамках проекта "Green" была выпущена первая продукция под названием "*7". Это было устройство интеллектуального дистанционного управления. (Умещаясь в корпусе 6x4x4 дюйма, оно имело мощность рабочей станции SPARC.) К сожалению, ни одна из компаний-производителей электронной техники не заинтересовалась этой разработкой. Затем группа стала заниматься созданием устройства для кабельного телевидения, которое могло бы осуществлять новые виды услуг, например, включать видеосистему по требованию. И снова они не получили ни одного контракта. Примечательно, что одной из компаний, согласившихся все-таки с ними сотрудничать, руководил Джим Кларк (Jim Clark) — основатель компании Netscape, впоследствии сделавшей очень много для развития языка Java.
Весь 1993 год и половину 1994 года продолжались безрезультатные поиски покупателей продукции, разработанной в рамках проекта "Green", получившего новое название — "First Person, Inc.". Патрик Нотой, один из основателей группы, в основном занимавшийся маркетингом, налетал в общей сложности более 300 тысяч миль, пытаясь продать разработанную технологию. Работа над проектом "First Person, Inc." была прекращена в 1994 г.
Тем временем в рамках Интернета начала развиваться система под названием World Wide Web (Всемирная паутина). Ключевым элементом этой системы является браузер, превращающий гипертекстовые данные в изображение на экране. В 1994 году большинство пользователей применяли некоммерческий веб-браузер Mosaic, разработанный в суперкомпьютерном центре университета штата Иллинойс в 1993 г. Частично этот браузер был написан Марком Андреессеном (Mark Andreessen), подрядившимся работать за 6,85 доллара в час. В то время Марк заканчивал университет, и браузер был его дипломной работой. (Затем он достиг известности и успеха как один из основателей и ведущих специалистов компании Netscape.)
В своем интервью журналу Sun World Гослинг сказал, что в середине 1994 г. разработчики нового языка поняли: "Нам нужно создать высококачественный браузер. Такой браузер должен представлять собой приложение, соответствующее технологии "клиент-сервер", в которой жизненно важным является именно то, что мы сделали: архитектурная независимость, выполнение в реальном времени, надежность, безопасность — вопросы, которые были не так уж важны для рабочих станций. И мы создали такой браузер".
Сам браузер был разработан Патриком Йотоном и Джонатаном Пэйном (Johnatan Payne). Позднее он был доработан и получил имя Hotjava. Чтобы продемонстрировать все возможности Java, браузер был написан на этом языке. Но разработчики не забывали о таких средствах, которые теперь называются аплетами, наделив свой продукт способностью выполнять код на веб-страницах. Программный продукт, подтверждавший действенность новой технологии, был представлен 23 мая 1995 года на выставке SunWorld '95 и вызвал всеобщий интерес к Java, сохраняющийся и по сей день.
Компания Sun Microsystems выпустила первую версию Java в начале 1996 г. Пользователи быстро поняли, что версия Java 1.0 не подходит для разработки серьезных приложений. Конечно, эту версию можно применять для реализации визуальных эффектов на веб-страницах, например, написать аплет, выводящий на страницу случайно "прыгающий" текст, но версия Java 1.0 была еще сырой. В ней даже отсутствовали средства вывода на печать. Грубо говоря, версия Java 1.0 еще не была готова. В следующей версии, Java 1.1, были устранены наиболее очевидные недостатки, улучшены средства рефлексии и реализована новая модель событий для программирования ГПИ. Но несмотря на это, ее возможности были все еще ограничены.
Выпуск версии Java 1.2 стал основной новостью на конференции JavaOne в 1998 г. В новой версии слабые средства для создания графического пользовательского интерфейса и графических приложений были заменены мощным инструментарием. Это был шаг вперед, к реализации лозунга "Write Once, Run Anywhere" ("Однажды написано — везде выполняется"), выдвинутого при разработке предыдущих версий. В декабре 1998 года через три дня (!) после выхода в свет название новой версии было изменено на громоздкое Java 2 Standard Edition Software Development Kit Version 1.2 (Стандартная редакция набора инструментальных средств для разработки программного обеспечения на Java 2, версия 1.2).
Кроме Standard Edition, были предложены еще два варианта: Micro Edition ("микроредакция") для портативных устройств, например для мобильных телефонов, и Enterprise Edition (редакция для корпоративных приложений).
Версии 1.3 и 1.4 набора инструментальных средств Standard Edition являются результатами поэтапного усовершенствования первоначально выпущенной версии Java 2. Они обладают новыми возможностями, повышенной производительностью и, разумеется, содержат много меньше ошибок. В процессе развития Java многие взгляды на аплеты и клиентские приложения были пересмотрены. В частности, оказалось, что на Java удобно разрабатывать высококачественные серверные приложения.
В версии 5.0 язык Java подвергся наиболее существенной модификации с момента выпуска версии 1.1. (Первоначально версия 5.0 имела номер 1.5, но на конференции JavaOne в 2004 г. была принята новая нумерация версий.) После многолетних исследований были добавлены обобщенные типы (которые приблизительно соответствуют шаблонам C++), хотя при этом не были выдвинуты требования модификации виртуальной машины. Ряд других языковых элементов, например, циклы в стиле for each, автоупаковка и метаданные, были явно "навеяны" языком С#.
Версия 6 (без суффикса .0) была выпущена в конце 2006 г. Опять же сам язык не претерпел существенных изменений, но были внесены усовершенствования, связанные с производительностью, а также произведены расширения библиотек.
По мере того как в центрах обработки данных все чаще стали применяться аппаратные средства широкого потребления вместо специализированных серверов, для компании Sun Microsystems наступили тяжелые времена, и в конечном итоге она была приобретена компанией Oracle в 2009 г. Разработка последующих версий Java приостановилась на долгое время. И только в 2011 году компания Oracle выпустила новую версию Java 7 с простыми усовершенствованиями. А более серьезные изменения было решено отложить до версии Java 8, выпуск которой ожидается в 2013 г.
В табл. 1 сведены данные об этапах развития языка и библиотек Java. Как видите, размеры прикладного программного интерфейса API значительно увеличились.
Таблица 1. Этапы развития языка Java
Версия | Год выпуска | Новые языковые средства | Количество классов и интерфейсов |
1.0 | 1996 | Выпуск самого языка | 211 |
1.1 | 1997 | Внутренние классы | 477 |
1.2 | 1998 | Отсутствуют | 1524 |
1.3 | 2000 | Отсутствуют | 1840 |
1.4 | 2002 | Утверждения | 2723 |
5.0 | 2004 | Обобщенные классы, цикл в стиле for each, автоупаковка, аргументы переменной длины, метаданные, перечисления, статический импорт | 3279 |
6 | 2006 | Отсутствуют | 3793 |
7 | 2011 | Оператор switch со строковыми метками ветвей, ромбовидный оператор, двоичные литералы, усовершенствованная обработка исключений | 4024 |
8 | 2014 | Лямбда-выражения, библиотеки потоков и даты/времени, интерфейсы с методами по умолчанию | 4240 |
9 | 2017 | Литералы в коллекциях, оператор Элвиса, Class Optional, Streams, IO, Regrexp, обработка процессов ProcessHandle | более 4500 |
В 2018 году коренным образом изменилась парадигма разработки и выпуска релизов Java. Об этом можно почитать в этой новости нашего портала.