Язык Java

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

Программы на Java транслируются в байт-код Java, который выполняется виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения при помощи другого компьютера), вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

  • применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
  • широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
  • аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами архитектуры ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях — в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10—30 раз больше, чем программой на C/C++. Также примечательно исследование, проведенное компанией Google, согласно которому отмечается более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java, в сравнении с аналогичными программами на C++. Идеи, заложенные в концепцию, и различные реализации среды виртуальной машины Java вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине [15]. Эти идеи нашли также отражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

Следующие успешные проекты реализованы с привлечением Java (J2EE)-технологий: RuneScape, Amazon, eBay[29][30], LinkedIn, Yahoo! Следующие компании в основном фокусируются на Java (J2EE) технологиях: SAP, IBM, Oracle. В частности, СУБД Oracle Database включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, хранимые процедуры.

Основные возможности

  • автоматическое управление памятью;
  • расширенные возможности обработки исключительных ситуаций;
  • богатый набор средств фильтрации ввода-вывода;
  • набор стандартных коллекций: массив, список, стек и т. п.;
  • наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);
  • наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
  • встроенные в язык средства создания многопоточных приложений, которые потом были портированы на многие языки (например, python);
  • унифицированный доступ к базам данных:
    на уровне отдельныхSQL - запросов: на основе JDBC, SQLJ;
    на уровне концепции объектов, обладающих способностью к хранению в базе данных: на основе Java Data Objects и Java Persistence API;

  • поддержка обобщений (начиная с версии 1.5);

  • поддержка лямбд, замыканий, встроенные возможности функционального программирования (с 1.8);

  • множество вариантов реализации многопоточных программ.

results matching ""

    No results matching ""