Когда Sun Microsystems выпустила технический документ Java Language Environment в 1995 году, они перечислили следующие 7 преимуществ, которые Java принесет в мир разработки программного обеспечения:
- Java проста и знакома.
- Java является объектно-ориентированным.
- Java не зависит от архитектуры.
- Java надежна и безопасна.
- Java многопоточен.
- Java обладает высокой производительностью.
- Java статически типизирована и компилируется.
Примечание. В первоначальном официальном документе 1995 года о семи преимуществах Java на самом деле говорилось, что «Java интерпретируется и является динамичной», но в 1997 году это уже не так. Вместо этого мы можем сказать, что она «статически типизирована и скомпилирована».
Вопрос в том, так ли применимы 7 преимуществ Java сегодня, как когда они были впервые изложены на бумаге почти 30 лет назад?
Java — это просто
Java был простым по сравнению со своими конкурентами в то время, включая такие языки, как:
- КОБОЛ
- С и С++
- Visual Basic
- PHP
- Паскаль
Ландшафт разработки программного обеспечения значительно изменился с середины 90-х годов, когда в области разработки программного обеспечения утвердились Python, JavaScript, Rust и Go.
К счастью, Java развился, чтобы на равных конкурировать с этими языками, а новые функции делают Java таким же простым и легким в освоении, как Python и Rust.
- JShell делает Java более простым языком для сценариев, чем Python.
- Лямбды и потоки делают функциональное программирование на Java проще, чем на Scala или Clojure.
- Поддержка автономных приложений упрощает создание настольных приложений на Java по сравнению с C или C++.
Кроме того, такие онлайн-компиляторы, как Replit и Onecompiler, невероятно упрощают начало работы и изучение Java.
Java остается простым языком программирования, который легко изучить и использовать на продвинутом уровне. Простота остается важным преимуществом Java.
Java является объектно-ориентированным
Объектно-ориентированный анализ и проектирование (OOA&D) остается лучшим способом решения крупномасштабных корпоративных проблем. Приверженность Java своим объектно-ориентированным корням никогда не колебалась.
Даже сегодня организации, занимающиеся предметно-ориентированным проектированием и нуждающиеся в мощном объектно-ориентированном языке программирования, выбирают Java. Ни один другой язык не делает OOA&D лучше, чем Java, и ни один другой язык не упрощает его.
Однако в последние годы наблюдается тенденция отхода от OOA&D к функциональному программированию . Однако Java также оказалась на вершине этой тенденции.
Введение в Java лямбда-выражений, потоков и интерфейсов по умолчанию позволяет Java поддерживать как функциональную модель программирования, так и объектно-ориентированную модель одновременно.
Таким образом, Java не только по-прежнему актуальна с точки зрения объектно-ориентированного программирования и разработки, но и эволюционировала для поддержки функционального программирования, что сегодня так же важно, как и поддержка объектно-ориентированного программирования.
Java не зависит от архитектуры
«Напиши один раз, работай где угодно» — таков был боевой клич разработчиков Java на заре Интернета.
Java остается кроссплатформенным и архитектурно-нейтральным , но эта функция сегодня менее актуальна, чем в прошлом.
Любое приложение, которое может работать внутри контейнера Docker, включая все, что написано на PHP, Ruby, Python, Go или Rust, теперь является кроссплатформенным, поскольку контейнер Docker может работать где угодно.
Кросс-платформенный характер Java был главным преимуществом Java в 1995 году, но сегодня это не так важно.
Java надежна и безопасна
Приложения Java, независимо от того, работают ли они на клиентской машине или на сервере, отличаются высокой степенью безопасности и надежности. Эта безопасность и надежность в Java обеспечивается за счет:
- Проверка исходного кода во время компиляции .
- Динамическая проверка байт-кода во время выполнения.
- Удаление использования указателей и арифметики указателей.
- Изоляция пространства имен для загружаемого извне кода.
- Выполнение происходит в ограниченной песочнице.
Это преимущество Java по-прежнему дает сетевым администраторам и домашним пользователям уверенность в том, что программы, которые они запускают, с меньшей вероятностью установят вредоносное ПО или станут объектом злонамеренной атаки.
Безопасность и надежность Java сегодня важны как никогда.
Java многопоточен
Невероятно мощные, многоядерные, многопоточные компьютеры не были нормой в начале 90-х, когда была впервые задумана Java.
Однако с самого первого дня в Java был встроенный набор библиотек , которые сделали многопоточность и параллелизм невероятно простыми в реализации.
В дополнение к возможностям многопоточности Java, Java имеет чрезвычайно мощный параллельный API, который позволяет разработчикам создавать программы, использующие преимущества многоядерных компьютеров множеством способов.
Сравните это с Python, языком, в котором ограничения сборщика мусора не позволяют многопоточному приложению выйти за рамки одного процессора.
Тот факт, что Java был многопоточным, когда он был выпущен в 1996 году, был дальновидным и смелым.
Сегодня многопоточность Java и параллельные API отличают его от таких языков, как Python, JavaScript и C#.
Java обладает высокой производительностью
Java-приложения работают на JVM, уровне абстракции, который находится между ЦП и вашим Java-кодом. Как и в случае с любым уровнем абстракции, JVM снижает производительность .
Однако, учитывая большой объем работы, необходимой для оптимизации сборки мусора, своевременной компиляции и управления памятью, приложения Java приближаются к производительности, близкой к естественной.
Программы на Java не могут работать так же быстро, как бинарные файлы, сгенерированные Rust или C++, но очень близко. Этот незначительный удар по производительности — незначительная цена, если принять во внимание все 7 преимуществ Java.
Java интерпретируется и динамична
Первоначальный технический документ Java обещал, что Java будет интерпретироваться и быть динамичной, чтобы исключить цикл компиляции-связывания-загрузки-тестирования-отладки-отладки , с которым в то время сталкивались разработчики C и C++.
Это утверждение было верным в 1994 году. Как упоминалось выше, оно уже не было правдой в 1997 году.
Java теперь статически типизирована и скомпилирована.
Разработчики Java уже в зачаточном состоянии осознали негативные долгосрочные последствия для производительности, возможностей многопоточности и поддержки исходного кода, если бы Java оставался интерпретируемым языком, таким как Python или JavaScript. Итак, они развернулись.
Вероятно, вы могли бы добавить это предвидение в качестве дополнительного пункта в список 7 преимуществ Java. Архитекторы языка быстро адаптируются, если видят возможность улучшить язык, когда появляется такая возможность.