- PVSM.RU - https://www.pvsm.ru -

30 лет Java: от провалившегося гаджета до фундамента разработки ПО

30 лет Java: от провалившегося гаджета до фундамента разработки ПО - 1

Некоторые языки программирования, например, Rust, Go и TypeScript, считаются крутыми. Другие, в том числе Cobol и Java [1], «скучны». Однако пусть Java, которому 23 мая этого года исполнилось тридцать лет, может, и не самый захватывающий язык, он остаётся одним из самых важных. 

Путь Java начался 23 мая 1995 года, когда его выпустила компания Sun Microsystems. За прошедшее время благодаря удачному видению разработчиков и адаптивности он превратился из нишевого проекта для потребительской электроники в мощный фундамент энтерпрайз-, облачной и веб-разработки.

Хоть Java исполнилось тридцать, его история гораздо дольше. Корнями этот язык уходит в 1991 год, когда инженеры Sun Джеймс Гослинг, Майк Шеридан и Патрик Ноутон приступили к созданию языка для интерактивного телевидения и встроенных устройств. Этот проект назвали Green Project [2]. Его цель заключалась не столько в написании нового языка, сколько в создании того, что бы мы сегодня назвали контроллером Интернета вещей. Ещё один разработчик Java Тим Линдхольм, описал его как «своего рода гибрид между КПК и универсальным пультом дистанционного управления [3]».

Устройство под названием Star7 было цифровым беспроводным КПК на основе процессора SPARC [4] с пятидюймовым цветным ЖК-экраном. К сожалению, он оказался слишком мощным и дорогим для того времени, поэтому устройству не удалось найти свой рынок.

С языком же вышла другая история. Версия Java, изначально называвшаяся Oak, использовала синтаксис в стиле C++, но, по словам Гослинга, Oak/Java был подобен «C++ без ружей и ножей». Почему бы просто не использовать C++? Этот язык плохо подходил для создания приложений, которые, по словам Линдхольма, могли «легко перемещаться по Интернету; по крайней мере, их сложно было запускать на разных архитектурах. Кроме того, на C++ было достаточно трудно писать код менее опытным программистам, на привлечение которых мы надеялись».

Гослинг проектировал Java как язык с автоматическим управлением памятью (сборкой мусора), что снижало количество ошибок и уязвимостей безопасности, свойственных ручному управлению памятью в C++. Кроме того, он предложил философию Java «напиши один раз — запускай везде», реализация которой стала возможной благодаря Java Virtual Machine [5] (JVM), сделавшей Java хорошо портируемым и платформонезавимимым языком, при том, что код на C++ необходимо компилировать отдельно для каждой платформы.

Конечно, все эти преимущества замечательны, но как может пригодиться язык, спроектированный для провалившегося проекта потребительской электроники? К счастью, Гослинг и его команда завершали разработку Java приблизительно ко времени публикации World Wide Web в 1993 году [6]. Java оказался нужным языком в нужное время.

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

Чтобы подчеркнуть полезность Java, в 1995 году Гослинг выпустил браузер под названием WebRunner [7]. Этот прототип веб-браузера так и не добился коммерческого успеха, однако продемонстрировал, как браузер может отображать HTML-контент в сочетании с Java-апплетами. 

С этого момента ситуация начала активно развиваться. Сначала WebRunner превратился в HotJava, а потом домашний веб-сайт Java java.sun.com [8] открыл его для публичного доступа. Sun не могла использовать название Oak из-за проблем с торговыми марками. После долгих обсуждений команда решила, что назовёт язык в честь любимого напитка — кофе.

Java быстро эволюционировал. Первым существенным изменением стал релиз Java Development Kit 1.1 [9] в 1997 году. В этой версии появились JavaBeans [10], сильно упростившие разработчикам объектно-ориентированное программирование. Также в неё была добавлена Java Database Connectivity (JDBC) [11]. Этот стандартный для Java интерфейс программирования приложений (API) позволяет программам на Java работать с базами данных.

В году 1998 году Java подверглась изменениям: в неё была добавлена библиотека Swing [12], расширившая возможности Java в разработке графического интерфейса пользователя (GUI), появились плагины Java и фреймворк Java Collections [13]. Наверно, самым заметным различием стало разделение Java на три ветви: J2SE (Standard Edition) [14] для десктопных приложений общего назначения, J2EE (Enterprise Edition) [15] для серверных приложений и J2ME (Micro Edition) [16] для мобильных устройств и встроенных систем. Все три версии и сегодня живы и хорошо себя чувствуют.

В последующие годы в языке появилось множество усовершенствований, однако самым важным изменением, вероятно, стало то, что в 2006 году Sun сделала Java опенсорсным. Эталонная реализация Java — это Open Java Development Kit (OpenJDK) [17], свободно распространяемая с открытым кодом по GNU General Public License (GPL) version 2 с исключением Classpath [18]

Это исключение позволяет разработчикам компоновать системные библиотеки Java со своим кодом, вне зависимости от лицензии кода, и распространять полученные исполняемые файлы на любых условиях. Это исключение может в некоторых ситуациях немного усложнить применение Java [19]. Об этом лучше всего расскажет Google, которая вела долгие юридические бои с нынешним владельцем Java, компанией Oracle, по поводу применения Java в Android. 

Есть и ещё один аспект важности Java для опенсорсного ПО, о котором часто забывают. Как сказал основатель компании Sonatype [20] Брайан Фокс, файлы Java ARchive (JAR) [21] упростили создание удобны модулей кода, а благодаря появлению Apache Maven [22] стало возможным управление зависимостями Java.

Эти концепции сильно упростили создание опенсорсных проектов из кода. Брайан Фокс так вспоминает времена до наступления этого этапа: «Я чётко помню, как мне впервые удалось собрать опенсорсный проект. Чтобы что-то собрать могла потребоваться целая неделя». Можно считать, что пока Линус Торвальдс не создал Git, система пакетов кода JAR и Maven была самым важным улучшением в сфере сборки опенсорсных программ. 

Когда компания Oracle купила Sun, то она закрыла множество проектов Sun, однако продолжила поддержку Java. Сообщество разработчиков на Java по-прежнему могло выражать своё мнение посредством Java Community Process (JCP) [23], но окончательное решение оставалось за Oracle. 

В течение трёх десятков лет Java эволюционировала вместе с меняющимся миром технологий. Язык, в начале своего пути управлявший динамическим веб-контентом, стал доминирующим в энтерпрайз-разработке ПО, мобильных приложениях, а позже и в разработке облачных нативных проектов и решений big data. Благодаря своей прочной экосистеме, включающей в себя такие фреймворки, как Spring Boot [24]Jakarta EE [25] и Hibernate [26], он стал незаменимым для организаций, стремящихся к надёжности, масштабируемости и безопасности.

В отличие от других старых языков наподобие Cobol и Fortran (по-прежнему используемых, но почти всегда лишь в легаси-проектах), Java постоянно развивалась, пытаясь удовлетворить новые потребности и сохраняя при этом обратную совместимость.

Несмотря на рост популярности таких более новых языков, как Kotlin и Scala, Java остаётся одним из самых широко применяемых в мире языков программирования. Согласно индексу популярности языков программирования ZDNET [27], Java вместе с Python и JavaScript — это три самых популярных языка. И не нужно быть гением, чтобы понять причины этого. Гибкость Java, её поддержка облачных нативных архитектур, способность справляться с потребностями ИИ и big data гарантируют, что этот язык продолжит формировать будущее разработки ПО.

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

Автор: PatientZero

Источник [28]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/oracle/421583

Ссылки в тексте:

[1] Java: https://www.java.com/

[2] Green Project: https://www.tech-insider.org/java/research/1998/05-a.html

[3] гибрид между КПК и универсальным пультом дистанционного управления: https://web.engr.oregonstate.edu/~burnett/Reprints/tosem2005-impact.pdf

[4] процессора SPARC: https://www.oracle.com/servers/sparc/

[5] Java Virtual Machine: https://docs.oracle.com/en/java/javase/24/vm/java-virtual-machine-technology-overview.html

[6] публикации World Wide Web в 1993 году: https://practical-tech.com/1993/04/20/wais-and-web-the-future-of-internet-data-searching/

[7] Гослинг выпустил браузер под названием WebRunner: https://www.ccbp.in/blog/java-tutorial/history-of-java

[8] java.sun.com: http://java.sun.com

[9] Java Development Kit 1.1: https://www.java.com/releases/

[10] JavaBeans: https://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly

[11] Java Database Connectivity (JDBC): https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/

[12] Swing: https://docs.oracle.com/javase/7/docs/api/javax/swing/package-summary.html

[13] Java Collections: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html

[14] J2SE (Standard Edition): https://www.oracle.com/java/technologies/j2se-142.html

[15] J2EE (Enterprise Edition): https://www.oracle.com/java/technologies/appmodel.html

[16] J2ME (Micro Edition): https://www.oracle.com/java/technologies/javameoverview.html

[17] Open Java Development Kit (OpenJDK): https://openjdk.org/

[18] GNU General Public License (GPL) version 2 с исключением Classpath: https://openjdk.org/legal/gplv2+ce.html

[19] немного усложнить применение Java: https://www.azul.com/blog/why-the-classpath-exception-is-so-important/

[20] Sonatype: https://www.sonatype.com/

[21] Java ARchive (JAR): https://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

[22] Apache Maven: https://maven.apache.org/

[23] Java Community Process (JCP): https://www.jcp.org/

[24] Spring Boot: https://spring.io/projects/spring-boot

[25] Jakarta EE: https://jakarta.ee/

[26] Hibernate: https://hibernate.org/

[27] индексу популярности языков программирования ZDNET: https://www.zdnet.com/article/the-most-popular-programming-languages-in-2024-and-what-that-even-means/

[28] Источник: https://habr.com/ru/articles/914970/?utm_campaign=914970&utm_source=habrahabr&utm_medium=rss