Плюсы и минусы программирования на Java

Не так много технологий могут похвастаться тем, что они актуальны уже более 20 лет. Однако в этом году java заняла пятое место в списке самых популярных технологий, уступив только неоспоримым лидерам: JavaScript, HTML, CSS и SQL. Java занимает 18-е место в рейтинге любимых технологий (по результатам опроса StackOverflow) и не попадает в рейтинги ненавистных. Сегодня обсудим плюсы и минусы Java — близкого и дорогого для многих программистов языка, проверенной временем технологии с узнаваемым логотипом, в виде чашки горячего кофе.

Что такое Java-программирование: история и вклад

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

  • Загрузки Java
  • Документация Java
  • Сообщество Oracle Java
  • JavaWorld — популярный портал о Java
  • JavaRanch — форум для Java-разработчиков

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

  • Java Development Kit (JDK) — комплект разработчика Java. С помощью JDK и стандартного блокнота можно писать и запускать/ компилировать код на Java;
  • Java Runtime Environment (JRE) — исполняющая система Java. Механизм распространения программного обеспечения, состоит из автономной виртуальной машины Java, стандартной библиотеки Java (Java Class Library) и инструментов настройки.
  • Integrated Development Environment (IDE) — интегрированная среда разработки. Инструменты, которые помогают запускать, редактировать и компилировать код. Самые популярные из них — IntelliJ IDEA, Eclipse и NetBeans.

Java можно найти везде. Это основной язык разработки для Android. Он используется в веб-приложениях, правительственных веб-сайтах и ​​технологиях обработки больших данных, таких как Hadoop и Apache Storm. Java подходит и для научных проектов, особенно в области обработки естественного языка. Язык Java преобладал и в программировании для мобильных устройств, задолго до появления смартфонов — первые мобильные игры в начале 2000-х годов были написаны на Java. Java, благодаря своей долгой истории, заработал свое место в Зале славы программирования. Индекс TIOBE, один из самых авторитетных индексов популярности программ в мире, при составлении рейтинга использует результаты поисковой выдачи. Несмотря на растущую популярность Go и Python, Java остается на вершине списка уже более десятилетия.

Индекс TIOBE, Август 2018 года
Индекс TIOBE, Август 2018 года

Все началось в начале 1990-х, когда команда Sun Microsystems начала разрабатывать улучшенную версию C ++ — независимую от конкретной платформы, удобную для начинающих и с автоматическим управлением памятью. Исследование привело к созданию совершенно нового языка. Название Java — одно из десятков других, предложенных командой. Сегодня логотип кофейной чашки с паром — это неприметный, но узнаваемый символ программирования. И уже неясно, что было первым: одержимость программистов кофеином или ассоциация с Java.

Как Java изменила мир программирования:

Гибкость. Java доказала, что C — процедурный, управляемый вручную и зависящий от платформы код — это не предел совершенства . Благодаря Java, все больше людей начали применять объектно-ориентированное программирование, которое сейчас используется повсеместно.

Апплеты. Еще до появления JavaScript, в Java добавили апплеты — небольшие веб-программы, которые предоставляют интерактивные элементы для визуализации и обучения. Они не используются ни для чего, кроме простой анимации, однако апплеты привлекли внимание многих программистов и подтолкнули их к разработке HTML5, Flash и JavaScript.

Разработка через тестирование. Java TDD — уже давно не экспериментальная практика, а стандартный способ разработки программного обеспечения. Введение JUnit в 2000 году считается одним из самых больших достижений Java.

Плюсы программирования на Java

Java — уже не единственный официально поддерживаемый язык для разработки на Android. Java далеко не единственный выбор в веб-программировании. Тем не менее, Java идет в ногу со временем. Давайте рассмотрим, какие преимущества предлагает Java.

+ Объектно-ориентированное программирование

Java включает в себя объектно-ориентированное программирование (OOP) — концепцию, в которой вы не только определяете тип данных и его структуру, но и набор функций, применяемых к нему. Таким образом, структура данных становится объектом, которым можно управлять для создания отношений между различными объектами.

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

Сравнение процедурного и объектно-ориентированного программирования
Сравнение процедурного и объектно-ориентированного программирования

В чем плюсы ООП?

  • При ООП можно повторно использовать объекты в других программах
  • ООП предотвращает ошибки, поскольку объекты скрывают информацию, к которой не должно быть доступа
  • ООП более эффективно организует структуру программ, в том числе больших
  • ООП упрощает обслуживание и модернизацию старого кода

+ Java — язык высокого уровня с простым синтаксисом и плавной кривой обучения

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

Hello World
Hello World

Синтаксис Java основан на C ++, поэтому Java похожа на C. Тем не менее, синтаксис Java проще, что позволяет новичкам быстрее учиться и эффективнее использовать код для достижения конкретных результатов.

Java не так дружелюбен к новичкам, как Python, однако довольно прост для любого разработчика с базовым пониманием фреймворков, пакетов, классов и объектов. Он прост, типизирован и предсказуем, что позволяет учиться мыслить в правильном направлении. Кроме того, новичок всегда может обратиться к множеству бесплатных онлайн-уроков и курсов.

+ Стандарт для корпоративных вычислительных систем

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

+ Безопасность

Существует мнение, что Java — безопасный язык, однако это не совсем так. Сам язык не защищает вас от уязвимостей, но некоторые его функции устраняют распространенные уязвимости. Во-первых, в отличие от C, в Java нет указателей. Указатель — это объект, который сохраняет адрес ячейки памяти другого значения, что может вызвать несанкционированный доступ к памяти. Во-вторых, в Java есть Security Manager, созданная для каждого приложения политика безопасности, в которой можно указать правила доступа. Это позволяет запускать приложения Java в «песочнице» и устранять таким образом уязвимости.

+ Независимость от платформы («Написать один раз и использовать везде»)

«Написать один раз и использовать везде» (WORA) — популярная в IT-сфере фраза, с помощью которой Sun Microsystems описывает кросс-платформенные возможности Java. Можно создать Java-приложение на Windows, скомпилировать его в байт-код и запустить его на любой другой платформе, поддерживающей виртуальную машину Java (JVM). Таким образом, JVM служит уровнем абстракции между кодом и оборудованием.