Информационные технологии
Операционные системы
Информационные технологии
Информационные технологии представляют собой широкий класс дисциплин и сфер деятельности, которые относятся к технологиям создания, хранения, управления, ... читать далее »
Статьи по ИТ
28.06.2009 16:00

Особенности. Информационные технологии.

Создатели языка Java постарались воплотить в своем "детище" все лучшие, по их мнению, идеи объектно-ориентированных языков программирования. За основу был взят C++, масса полезных идей была заимствована из Objective C и SmallTalk, кое-что - из других языков.

Язык разрабатывался с 1990 года (подробности истории Java описаны в "SM" NN 37-38/1995), однако лишь совсем недавно появилась версия языка, получившая официальное название Java 1.0.

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

  • Простота. Описание языка занимает всего 60 страниц, его вполне можно прочитать за один вечер. Тем, кто знает C++, изучить этот язык будет особенно просто.
  • Объектная ориентированность. Концепция объектно-ориентированного программирования реализована в Java весьма строго: в нем нет данных, не являющихся объектами, нет и функций, не являющихся методами какого-либо объекта.

    Имеются следующие стандартные библиотеки классов:

    • java.lang - в нее входят базовые классы;
    • java.io - в ней хранятся средства для работы с потоками и файлами последовательного доступа;
    • java.net - библиотека для создания сетевых приложений;
    • java.util, содержащая классы-контейнеры с множеством полезных функций; наконец,
    • java.awt - "оконная" библиотека.
    Последняя представляет собой не что иное, как новый, не зависящий от конкретной графической оболочки стандарт для разработки приложений, использующих оконный интерфейс.
  • Средства работы в сети. Java хорошо приспособлен для работы в сетях, использующих протокол TCP/IP. Имеется специальная библиотека классов для создания сетевых приложений.
  • Интерпретируемость. Исходный код Java-приложений преобразуется компилятором в так называемый байт-код, исполняемый виртуальной машиной в режиме интерпретации. Java использует так называемое очень позднее связывание, которое начинается непосредственно перед исполнением. Еще одна характерная особенность: при создании байт-кода компилятор не определяет адресов и размеров объектов в памяти. Связывание имен и настройку адресов в оперативной памяти осуществляет виртуальная машина, которая, кстати, может изменить настройку на конкретные адреса, если сочтет это нужным, приложения же ни о каких изменениях догадываться не будут.
  • Надежность. Язык строго типизирован, стало быть, значительная часть ошибок может быть выявлена на стадии компиляции. Конструкции C++, предшественника Java, которые порой сбивали программистов с толку, в новый язык не вошли. Возможности для контроля приложений на стадии исполнения (переполнение стека, отслеживание границ массивов, поиск резервов для оптимизации и др.) стали обязательным элементом средств разработки.
  • Безопасность. Поскольку Java изначально планировался для создания коммерческих приложений, которые не только могут распространяться по сетям, но и сами способны работать с сетями, разработчики языка постарались уделить безопасности максимум внимания. Полученный по сети байт-код проверяется на правильность инструкций (принадлежность к байт-коду Java), на безопасность команд для компьютера и локальной сети, на соответствие разрешенным операциям, а также на целый ряд прочих условий.
  • Динамичность. Язык Java динамичен, он открыт для новаций, обновлений. По умолчанию все классы являются расширяемыми, а методы виртуальными, хотя при желании можно запретить дальнейшую модификацию класса или метода. В языке предусмотрена возможность создания модулей без реализации или с неполной реализацией (нечто подобное есть и в языке Ada).
  • Переносимость и нейтральность относительно архитектуры. Байт-код языка Java един для всех платформ и архитектур. Благодаря наличию виртуальных машин Java-приложения могут разрабатываться и исполняться на самых разных вычислительных платформах.

    Базовые типы данных имеют строго определенный формат. Существует 4 базовых типа для описания целых чисел (8, 16, 32 и 64-разрядные), 2 базовых типа чисел с плавающей запятой (32 и 64-разрядные), 1 символьный тип (символ кодируется 2 байтами в стандарте UNICODE) и 1 логический (boolean). Имеются специальные классы для работы со строками и символами.

  • Многопоточность. В языке Java предусмотрены механизмы создания так называемых легковесных параллельных процессов (threads), которые могут работать в режиме квантования времени, используя синхронизацию на основе мониторов Хоара.
  • Автоматическая сборка мусора. Сборщик мусора встроен в виртуальную машину. Он работает в фоновом режиме, осуществляя поиск потерянных объектов и освобождая занятую ими память.
  • Работа с исключениями. Язык содержит все необходимые средства для корректной работы со всеми объектами и ресурсами в случае возникновения исключительных ситуаций.
  • Высокая производительность. По скорости работы Java-приложения вполне соизмеримы с приложениями, разработанными на языках C и C++, оказываясь иногда производительнее последних. Можно считать, что генератор "родного" кода исполнительной машины встроен в динамический загрузчик виртуальной машины. Процесс генерации машинного кода прост, байт-коды легко интерпретируются и исполняются "на лету". Сильного замедления не происходит также благодаря весьма разумному изначальному кодированию, в результате которого работа с базовыми классами оказалась встроенной в байт-код, и оптимизации, которая производится как на этапе генерации байт-кода, так и перед непосредственным исполнением на конкретной машине.

Источник

© WIKI.RU, 2008–2017 г. Все права защищены.