1.2 Основные особенности
■ Простой
■ Объектно-ориентированный
■ Распределённый
■ Устойчивый
■ Безопасный
■ Независимый от структуры системы
■ Мобильный
■ Интерпретирующее выполнение
■ Высокая эффективность
■ Многопоточный
■ Динамичный
1.2.1. Простота
Проектировщики Java пытались разработать язык, который могли бы быстро изучить программисты. Также они хотели, чтобы язык был знаком большинству программистов, для простоты перехода. Отсюда, в Java проектировщиками было удалено множество сложных особенностей, которые существовали в С и C++. Особенности, такие как манипуляции указателя, перегрузка оператора и т.д. в Java не существуют.
Java не использует goto инструкцию, а также не использует файлы заголовка. Конструкции подобно struct и union были удалены из Java.
1.2.2 Объектно-ориентированность
В Java всё может быть объектом. Так основное внимание уделяется свойствам и методам, которые оперируют данными в нашем приложении и нет концентрации только на процедурах. Свойства и методы вместе описывают состояние и поведение объекта. В Java мы будем наталкиваться на термин метод очень часто, с ним мы будем должны познакомиться. Термин метод используется для функций.
1.2.3. Распределенность
Java может использоваться для разработки приложений, которые работают на различных платформах, операционных системах и графических интерфейсов пользователя. Java предназначен также для поддержки сетевых приложений. Таким образом Java широко используется как инструмент разработки в среде подобной Internet, где существуют различные платформы.
1.2.4. Устойчивость
Java - язык со строгим контролем типов, так что требуется явное объявление метода. Java проверяет код во время трансляции и во время интерпретации. Таким образом устраняются некоторые типы ошибок при программировании. Java не имеет указателей и соответственно арифметических операций над ними. Все данные массивов и строк проверяются во время выполнения, что исключает возможность выхода за границы дозволенного. Преобразование объектов с одного типа на другой также проверяется во время выполнения.
Автоматическая обработка исключений - В традиционных средах программирования, программист должен был вручную распределять память, и в конце программы имел явное количество свободной памяти. Возникали проблемы, когда программист забывал освобождать память. В Java, программист не должен беспокоиться о проблеме, связанной с освобождением памяти. Это делается автоматически, поскольку Java обеспечивает обработка исключений для объектов, которые не используются.
Обработка исключений упрощает задачу обработки ошибок и восстановления.
1.2.5 Безопасность
Вирусы - большая причина беспокойства в мире компьютеров. До Java, программисты должны были сначала просмотреть файл перед загрузкой и выполнением. Даже после этого они не были уверены в надёжности файла. Также, существует много специальных программ, о которых мы должны знать. Эти программы могут находить уязвимые данные нашей системы.
Java обеспечивает управляемую среду, в которой выполнена программа. Java никогда не предполагает, что код может быть безопасно выполнен. И так как Java - больше чем язык программирования, он обеспечивает несколько уровней контроля защиты. Со справкой этих уровней, он гарантирует безопасную среду выполнения.
Первый уровень - это безопасность, обеспеченная языком Java. Свойства и методы описываются в классе, и к ним можно обратиться только через интерфейс, обеспеченный классом. Java не позволяет никаких операций с указателями, таким образом запрещает прямой доступ к памяти. Избегается переполнение массивов. Проблемы, связанные с безопасностью и мобильностью, скрыты.
На следующем уровне компилятор, прежде чем приступить к компиляции кода, проверяет безопасность кода и затем следует в соответствии с протоколами, установленными Java.
Третий уровень - это безопасность, обеспеченная интерпретатором. Прежде, чем байт-код будет фактически выполнен, он является полностью укрытым верификатором.
Четвертый уровень заботится о загрузке классов. Загрузчик класса гарантирует, что класс не нарушает ограничения доступа прежде, чем он загружен в систему.
1.2.6 Независимость от структуры системы
Мы способны выполнить код Java на множественных платформах. Нейтралитет достигается при смешении трансляции и интерпретации.
1. Программы Java оттранслированы в байт-код компилятором
• байт-код - это универсальный машинный код
2. Байт-код выполняется интерпретатором (Виртуальная Машина Java)
• интерпретатор должен выполнять байт-код для каждой аппаратной платформы
• байт-код выполняется на любой версии Виртуальной Машины Java