На чем написан java

Урок 2. Обзор Java: введение, преимущества и история создания языка программирования

Прежде, чем перейти к обучению, начнём с введения в java-программирование, разберёмся кратко, что это за такой язык программирования. Немного истории языка java. Язык Java разработан компанией Sun Microsystems, создателем которого был Джеймс Гослинг, и выпущен в 1995 году в качестве основных компонентов компании Sun Microsystems — Java платформ (Java 1.0 [J2SE]).

По состоянию на 2017 год последней версией Java Standard Edition является 8 (J2SE). С развитием Java, и её широкой популярностью, несколько конфигураций были построены для различных типов платформ. Например: J2EE — приложения для предприятий, J2ME — для мобильных приложений.

Sun Microsystems переименовала прежнюю версию J2 и ввела новые: Java SE, Java EE и Java ME. Введение в программирование Java различных версий подтверждало знаменитый слоган компании «Напиши один раз, запускай везде».

Содержание

История создания языка Java

Но официальной датой создания языка Java считается 23 мая 1995 года, после выпуска компанией Sun первой реализации Java 1.0. Она гарантировала «Напиши один раз, запускай везде», обеспечивая недорогой стоимостью на популярных платформах.

13 ноября 2006 года, Sun выпустила большую часть как свободное и открытое программное обеспечение в соответствии с условиями GNU General Public License (GPL).

После 8 мая 2007 года судьба Java сложилась иначе. Компания завершила процесс, делая все чтобы исходный код был бесплатным и открытым, кроме небольшой части кода, на который компания не имела авторских прав.

Преимущества языка Java: краткий обзор

Объектно-ориентированный: в джава все является объектом. Дополнение может быть легко расширено, так как он основан на объектной модели.

Платформонезависимый: в отличие от многих других языков, включая C и C++, Java, когда был создан, он не компилировался в платформе конкретной машины, а в независимом от платформы байт-коде. Этот байт код распространяется через интернет и интерпретируется в Java Virtual Machine (JVM), на которой он в настоящее время работает.

Простой: процессы изучения и введение в язык программирования Java остаются простыми. Если Вы понимаете основные концепции объектно-ориентированного программирования, то он будет прост для Вас в освоении.

Безопасным: методы проверки подлинности основаны на шифровании с открытым ключом.

Архитектурно-нейтральным: компилятор генерирует архитектурно-нейтральные объекты формата файла, что делает скомпилированный код исполняемым на многих процессорах, с наличием системе Java Runtime.

Портативный: архитектурно-нейтральный и не имеющий зависимости от реализации аспектов спецификаций — все это делает Java портативным. Компилятор в Java написан на ANSI C с чистой переносимостью, который является подмножеством POSIX.

Прочный: прилагает усилия, чтобы устранить ошибки в различных ситуациях, делая упор в основном на время компиляции, проверку ошибок и проверку во время выполнения.

Многопоточный: функции многопоточности, можно писать программы, которые могут выполнять множество задач одновременно. Введение в язык Java этой конструктивной особенности позволяет разработчикам создавать отлаженные интерактивные приложения.

Интерпретированный: Java байт-код переводится на лету в машинные инструкции и нигде не сохраняется. Делая процесс более быстрым и аналитическим, поскольку связывание происходит как дополнительное с небольшим весом процесса.

Высокопроизводительный: введение Just-In-Time компилятора, позволило получить высокую производительность.

Распространенный: предназначен для распределенной среды интернета.

Динамический: программирование на Java считается более динамичным, чем на C или C++, так как он предназначен для адаптации к меняющимся условиям. Программы могут выполнять обширное количество во время обработки информации, которая может быть использована для проверки и разрешения доступа к объектам на время выполнения.

После небольшого введения, обзора преимуществ и истории Java, приступим к нашему обучению.

Инструменты, которые понадобятся

Для выполнения примеров, рассмотренных в этом учебнике, Вам нужен компьютер Pentium 200 МГц с минимальной оперативной памятью 64 Мб (рекомендуется оперативная память 128 Мб).

Вам также понадобится следующее программное обеспечение:

Самоучитель обеспечит необходимыми навыками для создания GUI, сетевых и веб-приложений.

Ознакомившись с особенностями истории появления и преимуществами языка Java, Вы закончили урок введения в язык программирования. Следующий урок будет Вас вести к изучению языка и документации. Проинструктирует Вас о том, как установить и подготовить среду для разработки приложений.

Источник

Инструменты для запуска и разработки Java приложений, компиляция, выполнение на JVM

Ни для кого не секрет, что на данный момент Java — один из самых популярных языков программирования в мире. Дата официального выпуска Java — 23 мая 1995 года.

Эта статья посвящена основам основ: в ней изложены базовые особенности языка, которые придутся кстати начинающим “джавистам”, а опытные Java-разработчики смогут освежить свои знания.

* Статья подготовлена на основе доклада Евгения Фраймана — Java разработчика компании IntexSoft.
В статье присутствуют ссылки на внешние материалы
.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

1. JDK, JRE, JVM

Java Development Kit — комплект разработчика приложений на языке Java. Он включает в себя Java Development Tools и среду выполнения Java — JRE (Java Runtime Environment).

Java development tools включают в себя около 40 различных тулов: javac (компилятор), java (лаунчер для приложений), javap (java class file disassembler), jdb (java debugger) и др.

Среда выполнения JRE — это пакет всего необходимого для запуска скомпилированной Java-программы. Включает в себя виртуальную машину JVM и библиотеку классов Java — Java Class Library.

JVM — это программа, предназначенная для выполнения байт-кода. Первое преимущество JVM — это принцип “Write once, run anywhere”. Он означает, что приложение, написанное на Java, будет работать одинаково на всех платформах. Это является большим преимуществом JVM и самой Java.

До появления Java, многие компьютерные программы были написаны под определенные компьютерные системы, а предпочтение отдавалось ручному управлению памятью, как более эффективному и предсказуемому. Со второй половины 1990-х годов, после появления Java, автоматическое управление памятью стало общей практикой.

Существует множество реализаций JVM, как коммерческих, так и с открытым кодом. Одна из целей создания новых JVM — увеличение производительности для конкретной платформы. Каждая JVM пишется под платформу отдельно, при этом есть возможность написать ее так, чтобы она работала быстрее на конкретной платформе. Самая распространённая реализация JVM — это JVM Hotspot от OpenJDK. Также есть реализации IBM J9, Excelsior JET.

2. Выполнение кода на JVM

Согласно спецификации Java SE, для того, чтобы получить код, работающий в JVM, необходимо выполнить 3 этапа:

3. Загрузчики классов и их иерархия

Вернемся к загрузчикам классов — это специальные классы, которые являются частью JVM. Они загружают классы в память и делают их доступными для выполнения. Загрузчики работают со всеми классами: и с нашими, и с теми, которые непосредственно нужны для Java.

Представьте ситуацию: мы написали свое приложение, и помимо стандартных классов там есть наши классы, и их очень много. Как с этим будет работать JVM? В Java реализована отложенная загрузка классов, иными словами lazy loading. Это значит, что загрузка классов не будет выполняться до тех пор, пока в приложении не встретится обращение к классу.

Иерархия загрузчиков классов

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Первый загрузчик классов — это Bootstrap classloader. Он написан на C++. Это базовый загрузчик, который загружает все системные классы из архива rt.jar. При этом, есть небольшое отличие между загрузкой классов из rt.jar и наших классов: когда JVM загружает классы из rt.jar, она не выполняет все этапы проверки, которые выполняются при загрузке любого другого класс-файла т.к. JVM изначально известно, что все эти классы уже проверены. Поэтому, включать в этот архив какие-либо свои файлы не стоит.

Следующий загрузчик — это Extension classloader. Он загружает классы расширений из папки jre/lib/ext. Допустим, вы хотите, чтобы какой-то класс загружался каждый раз при старте Java машины. Для этого вы можете скопировать исходный файл класса в эту папку, и он будет автоматически загружаться.

Еще один загрузчик — System classloader. Он загружает классы из classpath’а, который мы указали при запуске приложения.

Процесс загрузки классов происходит по иерархии:

4. Структура Сlass-файлов и процесс загрузки

Перейдем непосредственно к структуре Class-файлов.

Все числа, строки, указатели на классы, поля и методы хранятся в Сonstant pool — области памяти Meta space. Описание класса хранится там же и содержит имя, модификаторы, супер-класс, супер-интерфейсы, поля, методы и атрибуты. Атрибуты, в свою очередь, могут содержать любую дополнительную информацию.

Таким образом, при загрузке классов:

5. Исполнение байт-кода на JVM

В первую очередь, для исполнения байт-кода, JVM может его интерпретировать. Интерпретация — довольно медленный процесс. В процессе интерпретации, интерпретатор “бежит” построчно по класс-файлу и переводит его в команды, которые понятны JVM.

Также JVM может его транслировать, т.е. скомпилировать в машинный код, который будет исполняться непосредственно на CPU.

Команды, которые исполняются часто, не будут интерпретироваться, а сразу будут транслироваться.

6. Компиляция

Компилятор — это программа, которая преобразует исходные части программ, написанные на языке программирования высокого уровня, в программу на машинном языке, “понятную” компьютеру.

Компиляторы делятся на:

Также компиляторы могут классифицироваться по моменту компиляции:

7. Организация памяти в Java

Стек — это область памяти в Java, которая работает по схеме LIFO — “Last in — Fisrt Out” или “Последним вошел, первым вышел”.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Он нужен для того, чтобы хранить методы. Переменные в стеке существуют до тех пор, пока выполняется метод в котором они были созданы.

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

Ключевые особенности стека:

Куча разбита на несколько более мелких частей, называемых поколениями:

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Почему отказались от Permanent generation? В первую очередь, это из-за ошибки, которая была связана с переполнением области: так как Perm имел константный размер и не мог расширяться динамически, рано или поздно память заканчивалась, кидалась ошибка, и приложение падало.

Meta space же имеет динамический размер, и во время исполнения он может расширяться до размеров памяти JVM.

Ключевые особенности кучи:

Основываясь на информации выше, рассмотрим, как происходит управление памятью на простом примере:

У нас есть класс App, в котором единственный метод main состоит из:

— примитивной переменой id типа int со значением 23
— ссылочной переменной pName типа String со значением Jon
— ссылочной переменной p типа person

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Как уже упоминалось, при вызове метода на вершине стека создаётся область памяти, в которой хранятся данные, необходимые этому методу для выполнения.
В нашем случае, это ссылка на класс person: сам объект хранится в куче, а в стеке хранится ссылка. Также в стек кладется ссылка на строку, а сама строка хранится в куче в String pool. Примитив хранится непосредственно в стеке.

Для вызова конструктора с параметрами Person (String) из метода main() в стеке, поверх предыдущего вызова main() создается в стеке отдельный фрейм, который хранит:

this — ссылка на текущий объект
— примитивное значение id
— ссылочную переменную personName, которая указывает на строку в String Pool.

После того, как мы вызвали конструктор, вызывается setPersonName(), после чего снова создается новый фрейм в стеке, где хранятся те же данные: ссылка на объект, ссылка на строку, значение переменной.

Таким образом, когда выполнится метод setter, фрейм пропадет, стек очистится. Далее выполняется конструктор, очищается фрейм, который был создан под конструктор, после чего метод main() завершает свою работу и тоже удаляется из стека.

Если будут вызваны другие методы, для них будут также созданы новые фреймы с контекстом этих конкретных методов.

8. Garbage collector

В куче работает Garbage collector — программа, работающая на виртуальной машине Java, которая избавляется от объектов, к которым невозможно получить доступ.

Разные JVM могут иметь различные алгоритмы сборки мусора, также существуют разные сборщики мусора.

Мы поговорим о самом простом сборщике Serial GC. Сборку мусора мы запрашиваем при помощи System.gc().

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Как уже было упомянуто выше, куча разбита на 2 области: New generation и Old generation.

New generation (младшее поколение) включает в себя 3 региона: Eden, Survivor 0 и Survivor 1.

Old generation включает в себя регион Tenured.

Что происходит, когда мы создаем в Java объект?

В первую очередь объект попадает в Eden. Если мы создали уже много объектов и в Eden уже нет места, срабатывает сборщик мусора и освобождает память. Это, так называемая, малая сборка мусора — на первом проходе он очищает область Eden и кладёт “выжившие” объекты в регион Survivor 0. Таким образом регион Eden полностью высвобождается.

Если произошло так, что область Eden снова была заполнена, garbage collector начинает работу с областью Eden и областью Survivor 0, которая занята на данный момент. После очищения выжившие объекты попадут в другой регион — Survivor 1, а два остальных останутся чистыми. При последующей сборке мусора в качестве региона назначения опять будет выбран Survivor 0. Именно поэтому важно, чтобы один из регионов Survivor всегда был пустым.

JVM следит за объектами, которые постоянно копируются и перемещаются из одного региона в другой. И для того, чтобы оптимизировать данный механизм, после определённого порога сборщик мусора перемещает такие объекты в регион Tenured.

Когда в Tenured места для новых объектов не хватает, происходит полная сборка мусора — Mark-Sweep-Compact.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Во время этого механизма определяется, какие объекты больше не используются, регион очищается от этих объектов, и область памяти Tenured дефрагментируется, т.е. последовательно заполняется нужными объектами.

Источник

Кто создал Java: главное про Джеймса Гослинга

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Java-разработчики знают, что язык и платформу создал Джеймс Гослинг, но зачастую на этом знания о нём и заканчиваются. Кто это вообще такой? Что ещё он делал в жизни? Почему перестал участвовать в работе над Java?

Мы считаем, что такие люди заслуживают большего внимания. Поэтому, во-первых, Джеймс появится на нашей онлайн-конференции JPoint и ответит там на многие вопросы. А во-вторых, в этом посте мы расписали заметные вехи его жизни до, во время и после работы над Java. Как он успел насолить Ричарду Столлману? Почему по изначальному плану язык Java вообще не должен был появиться? Какое отношение Гослинг имеет к подводным роботам?

До Java

Первый вопрос: как думаете, где родился Гослинг? Напрашивается ответ «в США», но на самом деле в канадском городе Калгари (в 1955-м). И ещё тинейджером в Канаде он впервые задумался о вещах, впоследствии сказавшихся на Java.

Как Джеймс позже рассказывал, в университете Калгари он занимался программой обработки данных с канадского спутника ISIS 2, работавшие с программой люди постоянно просили его что-то туда добавить, и это раздражало.

В текстовом редакторе TECO он подсмотрел идею макросов: с помощью встроенного интерпретируемого языка пользователи могли делать собственные мини-программы (так, например, появился Emacs). Это навело его на мысль «Если я тоже встрою простенький интерпретатор, то люди смогут решать свои задачи макросами и перестанут дёргать меня по мелочам, заставляя постоянно перекомпилировать всю систему». Это сработало — так Гослинг сделал свою первую платформу для исполнения чужого кода.

Затем, перебравшись в США, в университете Карнеги-Меллона он ближе подобрался к идее JVM. Перед ним встала задача портирования софта с рабочих станций PERQ на VAX, и начал он с эмулятора, но в итоге глубже погрузился в вопросы, позволяющие разработчикам софта вообще абстрагироваться от железа.

А самым громким проектом Гослинга до Java стал Gosling Emacs (он же Gosmacks). После взлёта популярности Emacs стали появляться сторонние реализации этого редактора для разных ОС и архитектур, и в 1981-м Гослинг представил свою имплементацию для UNIX. Со временем она стала второй по популярности разновидностью Emacs после основной версии Ричарда Столлмана.

Джеймс распространял Gosmacks бесплатно и охотно принимал в проект чужие улучшения, но сохранял единоличную власть над ним и указывал своё имя в копирайте. А в 1983-м решил, что больше не готов тратить на него много сил, и продал его компании UniPress. Которая стала распространять его уже коммерческим образом:

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Неудивительно, что Ричард Столлман воспринял это в штыки: производную версию его детища продали корпорации, оставляя UNIX без свободной реализации. К тому моменту он уже вынашивал идею GNU Project. Но собирался начать с «низов» ОС — а из-за этой истории поменял очерёдность действий. В итоге флагманом всего движения за свободный софт стал GNU Emacs, и получается, что этому ненамеренно поспособствовал Гослинг.

В первую версию GNU Emacs даже входило немного кода из Gosmacks. Но затем UniPress предъявили претензии к тому, что используется код их коммерческого продукта, и в более поздних версиях GNU Emacs всё было переписано. Отдельная забавная деталь: часть кода у Гослинга была помечена черепом и костями («тут лучше ничего не трогайте, не разберётесь»), но Столлмана таким не остановить.

На тот момент представления об авторских правах в софте только формировались, и людям было совершенно неочевидно, что вообще можно и что нельзя. История с Gosmacks сама и сказалась на становлении норм, став прецедентом — и теперь её пересказывают в книгах вроде «Making and Unmaking Intellectual Property».

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

А в 1984-м Гослинг устроился в Sun Microsystems. Среди вещей, которыми он занимался там до Java, можно назвать оконную систему NeWS. У неё были некоторые преимущества перед X11, но она не стала массово распространённой — отчасти из-за того, что Sun запрашивали деньги за её исходный код, в то время как X распространялась открыто.

В 1991-м Sun Microsystems затеяли так называемый Green Project, определивший дальнейшую судьбу Гослинга. Интересно, что задумка этого проекта довольно точно предсказала будущее, но сам проект дал человечеству совершенно не то, что от него ожидалось.

Сегодня, если спросить случайного айтишника про Java, он может сказать «это язык, популярный в бэкенде веб-сервисов». А на старте Green Project никто не думал в таких категориях: современных веб-сервисов не существовало, а создавать язык программирования там вообще не собирались.

Что же собирались сделать? Предвосхитить «следующую волну компьютеризации». В Sun предположили, что вслед за взлётом ПК придут новые «умные» потребительские устройства (от телевизоров до микроволновок), и захотели первыми занять какую-то нишу на этом рынке. Полной определённости «какую именно» не было, компанию интересовали и железо, и софт.

Когда пытаешься опередить прогресс и строгие ТЗ невозможны, требуется работа не в корпоративном духе, а в исследовательско-стартаперском. И Green Project, по сути, сделали самостоятельным стартапом. Для него сняли отдельный офис, посадили всю команду из 13 человек туда, дали ей время и бюджет, а коммуникацию между ней и основным офисом минимизировали. То есть у команды было много самостоятельности, но это были не просто теоретические исследования: за отведённое время она должна была сделать что-то такое, на чём Sun дальше сможет зарабатывать.

В Green Project делали одновременно и собственный железный прототип нового устройства, и операционную систему для него GreenOS. А вот новый язык для приложений изначально создавать даже не планировали, вместо этого Гослинг собирался выбрать подходящий.

Гослинг принялся за создание подходящего языка — и поначалу назвал его Oak попросту из-за того, что за его офисным окном рос дуб. Он вспомнил то, что ему было известно о UCSD Pascal (тоже довольно независимом от железа языке), а также пообщался с людьми, занимавшимися виртуальной машиной Smalltalk — и вдохновился этим опытом. Тем временем в проекте по-прежнему воспринимали этот язык лишь как вспомогательный инструмент, а не как масштабный самодостаточный продукт. Так что большой команды у Гослинга не появилось, он сам занимался и дизайном языка, и компилятором, и виртуальной машиной.

Спустя полтора года работы, осенью 1992-го, у группы было готово устройство-прототип «Star7» и софт для него. Это было нечто вроде пятидюймового КПК — страшно отличающегося от современных устройств, но уже с цветным тачскрином! На этом экране для примера надо было показать что-то яркое, и так возник мультяшный персонаж Дюк, ставший впоследствии маскотом Java.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Этот прототип впечатлил в Sun значимых людей вроде Билла Джоя (если имя кажется вам смутно знакомым, вы можете знать его как автора редактора vi, из которого вырос vim). Но он был скорее демонстрацией наработок, чем продуктом, а тем временем пора было переходить к монетизации. У Green Project появилось собственное юрлицо FirstPerson, Inc., теперь это официально была дочерняя компания Sun, и ей надо было разобраться, как зарабатывать.

Решено было, что имеющиеся наработки хорошо подойдут для телеприставок, и до 1994-го эту идею предлагали кабельным компаниям вроде Time Warner. Но переговоры с ними не завершились успехом (из 2020-го кажется, что идея просто обогнала своё время: эпоха умных телеприставок пришла позже). Поэтому весь проект оказался под угрозой закрытия.

Пока шли переговоры с компаниями, работа над языком продолжалась. Можно посмотреть, например, спецификацию Oak 0.2 и умилиться «детским шагам» («юникод пока нельзя, enum тоже ещё не имплементирован, но всё будет»). Но в 1994-м после жалобы от другой компании, владеющей правами на название Oak, его пришлось переименовать. Тогда и возникло название Java, но затруднительно сказать, кто его автор.

Гослинг вспоминал так: «Название появилось на совещании, где около дюжины человек брейнштормили вместе. (. ) По сути, совещание было продолжительным диким безумием. Много людей кричало много слов. Кто именно что крикнул — не установить, да и не имеет значения. По ощущениям, там было выкрикнуто большинство слов из словаря. Было много фраз «мне нравится, потому что. » и «мне не нравится, потому что. «, и в конце мы сделали список примерно из дюжины названий. Передали его юристам, чтобы они выбрали ближайший к вершине списка вариант, подходящий для регистрации торговой марки. Вариант «Java» был третьим-четвёртым сверху».

Примерно в одно время с переименованием произошла и масштабная смена курса. В 1993-м появился популярный браузер Mosaic — и спустя год стало ясно, что веб растёт гигантскими темпами. Пользователей становилось всё больше, и им хотелось уже не только передачи текста, но и чего-то сложнее. При этом у разных пользователей могли быть очень разные компьютеры. И тут внезапно оказался очень уместен язык со слоганом «Write Once Run Anywhere», изначально поставивший себе цель отвязаться от железа.

В сентябре 1994-м в Sun прошла внутренняя демонстрация собственного браузера: он мог получать по сети специальные фрагменты Java-кода (апплеты) и исполнять их. Среди тех, кто оценивал разработку, был Эрик Шмидт (на тот момент CTO Sun, позднее — СЕО Google). В компании решили действительно сделать ставку на апплеты. И на SunWorld ’95 представили два продукта: Java 1.0 и браузер HotJava.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

HotJava не стал массово популярен (он был скорее демонстрацией возможностей Java, чем полноценным участником браузерных войн), а вот апплеты действительно стали прорывом: это ж можно теперь прямо в браузере, например, с кем-то в шахматы сыграть! Их поддержку добавили тогдашние короли рынка Netscape и IE, и это позволило Java занять важнейшее место в списке языков.

В XXI веке с переходом к другим технологиям все браузеры постепенно убрали поддержку апплетов, и новые поколения Java-разработчиков вообще не сталкиваются с этим понятием. Но благодаря тому начальному рывку Java удалось заполучить и другие рынки, на которых она по-прежнему остаётся — а без него, вероятно, так никогда и не стала бы популярной.

Так детище Гослинга, которое в рамках Green Project казалось просто вспомогательной частью системы, оказалось единственной важной для человечества составляющей этой системы и развилось в отдельный продукт.

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java
Фразы Гослинга можно встретить даже на сайте с вдохновляющими цитатами.

После Java

Ещё в 2004-м Гослинг признавался: «Я сам не понимаю, в чём сейчас заключается моя работа. В основном провожу время на каких-то совещаниях, где спорю с людьми, а ещё очень активен как евангелист, общаясь с разработчиками по всему миру и получая слишком много авиамиль».

Но настоящий разрыв с Java у него произошёл после того, как в 2010-м компания Sun была куплена Oracle. По его словам, переход в новую компанию предполагал его перевод на другую роль со снижением статуса, ограничением возможностей в принятии решений и снижением оплаты. Гослинг не согласился на такие условия и ушёл.

Впрочем, при наличии претензий к Oracle он не является радикальным хейтером компании. В том же 2010-м на вопрос о будущем Java он отвечал «у Oracle многое работает на Java, так что у них есть большая мотивация не напортачить, и я смотрю в будущее с осторожным оптимизмом».

Также Гослинг поддержал иск Oracle к Google в связи с использованием Java API в Android. По его мнению, Google действительно неправильно поступила по отношению к Sun. В 2007-м при анонсе Android Джонатан Шварц, возглавлявший тогда Sun, в блоге одобрительно высказался об этом. Поэтому со стороны всё выглядело так, будто в Sun никакой проблемы в поведении Google не видели, и только Oracle увидела повод предъявить претензии. Но Джеймс озвучивал другой взгляд изнутри: «Мы все были очень обеспокоены, в том числе и Джонатан, он просто попытался сделать из лимонов лимонад, и в Sun его поведение тогда многих разозлило».

Любопытно, что при этом Google оказался следующим его местом работы после Sun, но там он задержался всего на полгода. Уже в сентябре 2011-го Гослинг внезапно перешёл на работу в маленький стартап Liquid Robotics: «в Google я встретил множество интересных людей, но теперь познакомился с другими людьми, делающими нечто вопиющее, и скрепя сердце решил покинуть Google».

На чем написан java. Смотреть фото На чем написан java. Смотреть картинку На чем написан java. Картинка про На чем написан java. Фото На чем написан java

Этим «чем-то вопиющим» были подводные роботы: автономные устройства, которые перемещаются под водой (порой годами подряд), собирая информацию сенсорами и отправляя её в облако. Это нужно, например, для мониторинга химического состава воды. Гослинг отвечал за софт — как на самих роботах, так и со стороны дата-центра, куда поступала собранная информация. Похоже, ему опять пришлось со стороны софта иметь дело с очень разным железом!

Там он провёл шесть лет. Похоже, что работа ему нравилась, но, как он сам отмечал, рассказывать обо всех подробностях он не мог, потому что в этой сфере много строгих NDA.

В 2016-м компанию купил Boeing. Получилось, что у Гослинга второй раз подряд произошло то же самое: сначала занимаешься чем-то в формате стартапа, а годы спустя при покупке компании обнаруживаешь себя внутри гиганта.

Как и в предыдущий раз, он снова ушёл. Но в этот раз новым местом его работы тоже оказался гигант: он перешёл в AWS на позицию «distinguished engineer» (что бы это ни значило — вот как раз на JPoint можно будет уточнить, чем именно он занимается каждый день).

Связан ли он ещё как-то с дизайном языков программирования? Да: помимо основной работы, он является советником компании Lightbend, известной по языку Scala. В 2011-м он сказал «Если бы я сегодня выбирал для использования язык, отличный от Java, выбрал бы Scala». (Прямо ощущаем, как в 2020-м на этом месте у некоторых напрашивается вопрос про Kotlin.)

Что ещё можно о нём сказать? Его любимое иррациональное число — корень из двойки. Наверное, тут больше информации даёт не «корень из двойки», а сам тот факт, что у человека есть любимое иррациональное число.

Итог получается такой. Когда-то Гослинг в компании Sun сделал язык для проекта, связанного с «умными потребительскими устройствами», а сейчас это выглядит интересной иронией судьбы. И задуманные устройства конкретно тогда не материализовались, и той компании уже нет, и сам он занимается другим — но язык спустя 25 лет после релиза продолжает активно жить, и в том числе на нём пишут приложения для умных устройств. В 1992-м у прототипа был пятидюймовый тачскрин — а теперь у всех людей в кармане по пятидюймовому тачскрину, и на большинстве из них люди видят приложения, написанные на Java. В каком-то смысле исходный план воплотился.

Джеймс Гослинг поучаствует в онлайн-конференции JPoint, чтобы ответить на вопросы — и наши, и ваши. Что он думает о современном развитии Java? Что он сделал бы иначе, если бы сейчас вернулся в 1991-й и делал Java с нуля? Почему что-то из базовых вещей Java было спроектировано именно таким образом? Вот и узнаем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *