Чтение онлайн

на главную - закладки

Жанры

Java: руководство для начинающих
Шрифт:

Добиться безопасности и переносимости программ по сети позволяет генерируемый компилятором Java код, не являющийся исполняемым. Такой код называется байт-кодом. Это оптимизированный набор команд, предназначенных для выполнения в исполняющей системе Java, называемой виртуальной машиной Java (Java Virtual Machine — JVM). Виртуальная машина Java, по существу, представляет собой интерпретатор байт-кода. Такой подход может показаться не совсем обычным, поскольку для повышения производительности компиляторы большинства современных языков генерируют исполняемый код. Но выполнение программы под управлением виртуальной машины позволяет разрешить многие затруднения, возникающие в работе веб-приложений.

Преобразование исходного кода Java в байт-код существенно упрощает перенос программ из одной среды в другую, поскольку

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

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

Как правило, интерпретируемая программа выполняется медленнее, чем скомпилированная в машинный код. Но для кода Java отличия в быстродействии не очень существенны. Ведь байт-код оптимизирован, и поэтому программа выполняется под управлением виртуальной машины значительно быстрее, чем следовало бы ожидать.

Несмотря на то что Java был задуман как интерпретируемый язык, ничто не мешает преобразовать байт-код по ходу компиляции в собственный для повышения производительности. С этой целью сразу же после первой реализации JVM компания Sun Microsystems начала работу над технологией HotSpot, в рамках которой был разработан динамический компилятор байт-кода. Если в состав виртуальной машины входит динамический компилятор, байт-код по частям преобразуется в собственный исполняемый код. Преобразовывать сразу всю программу на Java в исполняемый код нецелесообразно из-за разнообразных проверок, которые могут производиться только на этапе выполнения программы. Поэтому динамический компилятор выполняет преобразования кода частями по мере необходимости (отсюда и его другое название — JIT-компилятор, т.е. компилятор, вступающий в действие лишь в нужный момент времени). Более того, компиляции подвергаются не все фрагменты байт-кода, а лишь те, скорость выполнения которых можно повысить благодаря компиляции, а остальной код интерпретируется. Несмотря на все ограничения, присущие динамической компиляции, она, тем не менее, позволяет существенно повысить производительность программ. И невзирая на динамическое преобразование байт-кода в исполняемый код, переносимость и защита сохраняются, поскольку JVM по-прежнему участвует в процессе выполнения программ. Основные свойства Java

Даже самый краткий обзор языка Java будет неполным без упоминания его основных свойств. И хотя главной причиной, побудившей к разработке Java, послужила потребность в языке, позволяющем создавать переносимые и защищенные программы, заметное влияние на оформление Java в окончательном виде оказали и другие факторы. Ниже вкратце перечислены основные свойств этого языка программирования. Простота Java обладает лаконичными, тесно связанными друг с другом и легко усваи¬ваемыми языковыми средствами Безопасность Предоставляет безопасные средства для создания интернет-приложений Переносимость Программы на Java могут выполняться в любой среде, для которой имеетсяисполняющая система Java Объектно-ориентированный характер Воплощает современную концепцию объектно-ориентированного програм¬мирования Надежность Стимулирует безошибочное программирование благодаря строгому кон¬тролю типов и проверкам во время выполнения программ Многопоточность Обеспечивает встроенную поддержку многопоточного программирования Архитектурная независимость Не привязан к конкретному типу вычислительной

машины или архитектуре операционной системы Интерпретируемость Предоставляет байт-код, обеспечивающий независимость от платформы Высокая производительность Байт-код Java сильно оптимизирован на повышение скорости выполнения Распределенность Разработан для применения в распределенной среде Интернета Динамичность Программы на Java содержат значительную долю информации, используе¬мой во время выполнения для проверки и разрешения доступа к объектам Объектно-ориентированное программирование

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

Объектно-ориентированный подход к программированию позволяет разрабатывать достаточно сложные программы. С момента появления первого компьютера методология программирования претерпела ряд существенных изменений, связанных с возрастанием сложности программ. На заре вычислительной техники процесс программирования представлял собой ввод машинных команд в двоичной форме с пульта управления ЭВМ. В то время размеры программ не превышали нескольких сотен команд, и поэтому такой подход считался вполне приемлемым. Затем появился язык ассемблера. Символьное представление машинных команд и процедура компиляции позволили перейти к созданию более сложных программ. В связи с дальнейшим увеличением объема программного кода появились языки высокого уровня. Они стали теми инструментами, которые позволили программистам справиться с постепенным усложнением программ. Первым из широко распространенных языков высокого уровня стал FORTRAN. Разработка FORTRAN стала важным этапом в развитии языков программирования, но этот язык не вполне подходил для создания удобочитаемых программ.

В 1960-е годы начало зарождаться структурное программирование. Впоследствии для поддержки данного подхода был созданы такие языки, как С и Pascal. Благодаря структурированным языкам программирования появилась возможность очень просто создавать программы средней сложности. Главными свойствами структурированных языков стали поддержка независимых подпрограмм, локальных переменных, наличие расширенного набора управляющих конструкций и отсутствие оператора GOTO. Но, несмотря на то что структурированные языки стали мощными инструментами программирования, с увеличением объема и сложности проектов их возможности были быстро исчерпаны.

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

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

Объектно-ориентированное программирование подразумевает другой подход. Программы организуются на основе данных по следующему главному принципу: данные управляют доступом к коду. В объектно-ориентированных языках программирования определяются данные и процедуры, которым разрешается обрабатывать эти данные. Таким образом, тип данных определяет те операции, которые применимы к этим данным.

Во всех объектно-ориентированных языках программирования, в том числе и в Java, поддерживаются три основных принципа ООП: инкапсуляция, полиморфизм и наследование. Рассмотрим каждый из этих принципов в отдельности. Инкапсуляция

Поделиться:
Популярные книги

Адъютант

Демиров Леонид
2. Мания крафта
Фантастика:
фэнтези
6.43
рейтинг книги
Адъютант

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Всплеск в тишине

Распопов Дмитрий Викторович
5. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Всплеск в тишине

Секретарша генерального

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
короткие любовные романы
8.46
рейтинг книги
Секретарша генерального

Назад в СССР: 1985 Книга 2

Гаусс Максим
2. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Назад в СССР: 1985 Книга 2

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Жена на четверых

Кожина Ксения
Любовные романы:
любовно-фантастические романы
эро литература
5.60
рейтинг книги
Жена на четверых

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

СД. Восемнадцатый том. Часть 1

Клеванский Кирилл Сергеевич
31. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.93
рейтинг книги
СД. Восемнадцатый том. Часть 1

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11