Читайте также:
|
|
Цель работы
Получить знания о технологии Java, области ее применения и назначении Java-машины.
Задание для домашней подготовки
Ознакомиться с материалом, предоставленным в данных методических указаниях (без отладки примеров).
Технология Java
Изначально Java (официальный день рождения технологии Java — 23 мая 1995 г.) предназначалась для программирования бытовых электронных устройств, таких как телефоны. Потом Java стала применяться для программирования браузеров — появились апплеты. Затем оказалось, что на Java можно создавать полноценные приложения. Их графические элементы стали оформлять в виде компонентов — появились JavaBeans, с которыми Java вошла в мир распределенных систем и промежуточного программного обеспечения, тесно связавшись с технологией CORBA. Остался один шаг до программирования серверных сценариев — этот шаг был сделан — появились сервлеты и EJB (Enterprise JavaBeans). Серверные сценарии должны взаимодействовать с базами данных — появились драйверы JDBC (Java DataBase Connection). Взаимодействие оказалось удачным, и многие системы управления базами данных и даже операционные системы включили, Java в свое ядро, например Oracle, Linux, Mac OS X, AIX.
Такое быстрое и широкое распространение технологии Java не в последнюю очередь связано с тем, что она использует новый, специально созданный язык программирования, который так и называется — язык Java. Этот язык создан на базе языков Smalltalk, Pascal, C++ и др., вобрав их лучшие, по мнению создателей, черты и отбросив худшие. Язык Java становится языком обучения объектно-ориентированному программированию, так же, как язык Pascal был языком обучения структурному программированию. Недаром на Java уже написано огромное количество программ и библиотек классов.
Далее перечислены свойства приложений, создаваемых на языке Java.
§ Простота в создании и сопровождении.
§ Объектность.
§ Устойчивость в работе и защищённость.
§ Межплатформенность.
§ Высокая технологичность.
§ Многопоточность и динамичность.
§ Сетевая распределённость.
Области применения:
§ графические приложения;
§ клиент-серверные приложения для обмена данными между компьютерами в сети;
§ веб-серверные приложения для обработки запросов веб-клиентов;
§ приложения для работы с базами данных;
§ апплеты, встраиваемые в веб-страницы;
§ приложения для устройств беспроводной связи (мобильные телефоны,
§ карманные компьютеры и им подобные).
Выполнение Java-программы
Программа, написанная на одном из языков высокого уровня, к которым относится и язык Java, так называемый исходный модуль ("исходники", от английского "source"), не может быть сразу же выполнена. Ее сначала надо откомпилировать, т. е. перевести в последовательность машинных команд — объектный модуль. Но и он, как правило, не может быть сразу выполнен: объектный модуль надо еще скомпоновать с библиотеками использованных в модуле функций и разрешить перекрестные ссылки между секциями объектного модуля, получив в результате загрузочный модуль — полностью готовую к выполнению программу.
Исходный модуль, написанный на Java, не может избежать этих процедур, но здесь проявляется главная особенность технологии Java — программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (JVM, Java Virtual Machine).
Виртуальная машина Java — это совокупность команд вместе с системой их выполнения. Виртуальная машина Java полностью стековая, так что не требуется сложная адресация ячеек памяти и большое количество регистров. Поэтому команды JVM короткие, большинство из них имеет длину 1 байт, отчего команды JVM называют байт-кодами (bytecodes), хотя имеются команды длиной 2 и 3 байта. Согласно статистическим исследованиям средняя длина команды составляет 1,8 байта. Полное описание команд и всей архитектуры JVM содержится в спецификации виртуальной машины Java (VMS, Virtual Machine Specification).
Другая особенность Java — все стандартные функции, вызываемые в программе, подключаются к ней только на этапе выполнения, а не включаются в байт-коды. Как говорят специалисты, происходит динамическое связывание (dynamic binding). Это тоже сильно уменьшает объем скомпилированной программы.
Бинарный байт-код не зависит от платформы, что даёт возможность исполнять один и тот же бинарный код на компьютерах различных моделей и в разных операционных средах без перекомпиляции. Единственным требованием является наличие установленной на компьютере java-машины для данной операционной среды. Схема выполнения команд на JVM:
Таким образом, на первом этапе программа, написанная на языке Java, переводится компилятором в байт-коды. Эта компиляция не зависит от типа какого-либо конкретного процессора и архитектуры некоего конкретного компьютера. Она может быть выполнена один раз сразу же после написания программы. Байт-коды записываются в одном или нескольких файлах, могут храниться во внешней памяти или передаваться по сети. Это особенно удобно благодаря небольшому размеру файлов с байт-кодами. Затем полученные в результате компиляции байт-коды можно выполнять на любом компьютере, имеющем систему, реализующую JVM. При этом не важен ни тип процессора, ни архитектура компьютера. Так реализуется принцип Java "Write once, run anywhere" — "Написано однажды, выполняется везде".
Интерпретация байт-кодов и динамическое связывание значительно замедляют выполнение программ. Это не имеет значения в тех ситуациях, когда байт-коды передаются по сети, сеть все равно медленнее любой интерпретации, но в других ситуациях требуется мощный и быстрый компьютер. Поэтому постоянно идет усовершенствование интерпретаторов в сторону увеличения скорости интерпретации. Разработаны JIT-компиляторы (Just-In-Time), запоминающие уже интерпретированные участки кода в машинных командах процессора и просто выполняющие эти участки при повторном обращении, например, в циклах. Это значительно увеличивает скорость повторяющихся вычислений. Фирма SUN разработала целую технологию Hot-Spot и включает ее в свою виртуальную машину Java. Но, конечно, наибольшую скорость может дать только специализированный процессор. Фирма SUN Microsystems выпустила микропроцессоры PicoJava, работающие на системе команд JVM, и собирается выпускать целую линейку все более мощных Java-процессоров. Есть уже и Java-процессоры других фирм. Эти процессоры непосредственно выполняют байт-коды. Но при выполнении программ Java на других процессорах требуется еще интерпретация команд JVM в команды конкретного процессора, а значит, нужна программа-интерпретатор, причем для каждого типа процессоров, и для каждой архитектуры компьютера следует написать свой интерпретатор.
Эта задача уже решена практически для всех компьютерных платформ. На них реализованы виртуальные машины Java, а для наиболее распространенных платформ имеется несколько реализаций JVM разных фирм. Все больше операционных систем и систем управления базами данных включают реализацию JVM в свое ядро. Создана и специальная операционная система JavaOS, применяемая в электронных устройствах. В большинство браузеров встроена виртуальная машина Java для выполнения апплетов.
Кроме реализации JVM для выполнения байт-кодов на компьютере еще нужно иметь набор функций, вызываемых из байт-кодов и динамически связывающихся с байт-кодами. Этот набор оформляется в виде библиотеки классов Java, состоящей из одного или нескольких пакетов. Каждая функция может быть записана байт-кодами, но, поскольку она будет храниться на конкретном компьютере, ее можно записать прямо в системе команд этого компьютера, избегнув тем самым интерпретации байт-кодов. Такие функции называют "родными" методами (native methods). Применение "родных" методов ускоряет выполнение программы.
Виртуальная Java-машина не только исполняет байт-код (интерпретирует его, занимается JIT-компиляцией и исполняет JIT-компилированный код), но и выполняет ряд других функций. Например, взаимодействует с операционной системой, обеспечивая доступ к файлам или поддержку графики. А также обеспечивает автоматическое высвобождение памяти, занятой ненужными объектами – так называемую сборку мусора (garbage collection). Программы Java можно разделить на несколько основных категорий.
§ Приложение (application) – аналог "обычной" прикладной программы.
§ Апплет (applet) – специализированная программа с ограниченными возможностями, работающая в окне WWW-документа на стороне клиента под управлением браузера.
§ Сервлет (servlet) - специализированная программа с ограниченными возможностями, работающая в WWW на стороне сервера. Используется преимущественно в рамках технологии JSP (Java Server Pages - Серверных Страниц Java) для программирования WWW-документов со стороны сервера.
§ Серверное приложение (Enterprise application) – предназначено для многократного использования на стороне сервера.
§ Библиотека (Java Class Library – библиотека классов, либо NetBeans Module – модуль платформы NetBeans) – предназначена для многократного использования программами Java.
Между приложениями и апплетами Java имеется принципиальное различие: приложение запускается непосредственно с компьютера пользователя и имеет доступ ко всем ресурсам компьютера наравне с любыми другими программами. Апплет же загружается из WWW с постороннего сервера, причем из-за самой идеологии WWW сайт, с которого загружен апплет, в общем случае не может быть признан надежным. А сам апплет имеет возможность передавать данные на произвольный сервер в WWW. Поэтому для того, чтобы избежать риска утечки конфиденциальной информации с компьютера пользователя или совершения враждебных действий у апплетов убраны многие возможности, имеющиеся у приложений.
Сервлеты – это приложения Java, запускаемые со стороны сервера. Они имеют возможности доступа к файловой системе и другим ресурсам сервера через набор управляющих конструкций, предопределенных в рамках технологии JSP и пакета javax.servlet. Технология JSP заключается в наличии дополнительных конструкций в HTML-или XML-документах, которые позволяют осуществлять вызовы сценариев ("скриптов"), написанных на языке Java. В результате удается очень просто и удобно осуществлять обработку данных или элементов документа, и внедрять в нужные места документа результаты обработки. Сценарии Java перед первым выполнением автоматически компилируются на стороне сервера, поэтому выполняемый код выполняется достаточно быстро. Но, конечно, требует, чтобы была установлена соответствующая Java-машина. Например, входящая в состав Sun Application Server – программного обеспечения, обеспечивающего поддержку большого количества необходимых серверных возможностей для работы в WWW.
Первоначально Java позиционировался Sun как язык, обеспечивающий развитые графические возможности WWW-документов благодаря включению в них апплетов. Однако в настоящее время основными областями использования Java является прикладное программирование на основе приложений, страниц JSP и сервлетов, а также других видов серверных программ. При этом использование апплетов играет незначительную роль.
Виртуальную Java-машину часто называют исполняющей средой (Java Runtime Environment — JRE).
Существует два основных способа установки Java-машины на клиентский компьютер:
§ JRE из поставки Software Development Kit (SDK) - Комплекта разработки программного обеспечения.
§ Специализированный вариант JRE в составе Интернет-браузера, называющийся Java plugin.
Комплект последних версий SDK можно свободно загружать с сайта Oracle http://www.oracle.com/technetwork/java/javase/downloads/index.html.
Имеется три типа SDK:
§ Java ME – комплект Java Micro Edition, предназначенный для программирования "тонких аппаратных клиентов".
§ Java SE – комплект Java Standard Edition, предназначенный для программирования обычных компьютеров.
§ Java EE – комплект Java Enterprise Edition, предназначенный для написания серверного программного обеспечения.
Фирма SUN Microsystems (на данный момент куплена компанией Oracle) — создатель технологии Java, бесплатно распространяет набор необходимых программных инструментов для полного цикла работы с этим языком программирования: компиляции, интерпретации, отладки, включающий и богатую библиотеку классов, под названием JDK (Java Development Kit). Есть наборы инструментальных программ и других фирм. Например, большой популярностью пользуется JDK фирмы IBM.
Состав JDK(Java Development Kit) и JRE (Java Runtime Environment)
Набор программ и классов JDK (компилятор и библиотеки) включает:
§ компилятор javac из исходного текста в байт-коды; интерпретатор java, содержащий реализацию JVM;
§ облегченный интерпретатор jre (в последних версиях отсутствует);
§ программу просмотра апплетов appietviewer, заменяющую браузер;
§ отладчик jdt;
§ дизассемблер javap;
§ программу архивации и сжатия jar;
§ программу сбора документации javadoc;
§ программу javah генерации заголовочных файлов языка С;
§ программу javakey добавления электронной подписи;
§ программу native2ascii, преобразующую бинарные файлы в текстовые;
§ программы rmic и rmiregistry для работы с удаленными объектами;
§ программу seriaiver, определяющую номер версии класса;
§ библиотеки и заголовочные файлы "родных" методов;
§ библиотеку классов Java API (Application Programming Interface).
Компания Oracle постоянно развивает и обновляет JDK, каждый год появляются новые версии.
Таким образом, Java Virtual Machine (виртуальная Java машина) - это программа для интерпретации и выполнения байт-кода Java.
Исходный код на языке Java содержится в файлах с расширением java.
Программа для трансляции в байт-код называется javac.exe.
Программа для выполнения байт-кода называется java.exe.
Оттранслированная в байт-код программа имеет расширение class.
Для запуска программы нужно вызвать интерпретатор java.exe, указав в параметрах вызова класс выполнения.
Среда JRE (среда выполнения) содержит реализацию виртуальной Java машины для конкретной операционной системы. Хотя JRE входит в состав JDK, фирма Oracle распространяет этот набор и отдельным файлом. JRE содержит все необходимое для выполнения байт-кодов, в том числе интерпретатор java (в прежних версиях облегченнный интерпретатор jre) и библиотеку классов. Это часть JDK, не содержащая компиляторы, отладчики и другие средства разработки. Именно JRE или его аналог других фирм содержится в браузерах, умеющих выполнять программы на Java, операционных системах и системах управления базами данных.
После установки Java-машины (JRE) на клиентский компьютер из поставки Software Development Kit (SDK) вы получите каталог с названием, например, C:\Program Files\Java\jdk1.6.0_32, а в нем подкаталоги:
§ bin, содержащий исполнимые файлы;
§ demo, содержащий примеры программ;
§ docs, содержащий документацию, если вы ее установили;
§ include, содержащий заголовочные файлы "родных" методов;
§ jre, содержащий набор JRE;
§ old-include, для совместимости со старыми версиями;
§ lib, содержащий библиотеки классов и файлы свойств;
§ src, с исходными текстами программ JDK.
В новых версиях вместо каталога имеется упакованный файл src.jar.
Набор JDK (подкаталог src) содержит исходные тексты большинства своих программ, написанные на Java. Это очень удобно. Вы всегда можете в точности узнать, как работает тот или иной метод обработки информации из JDK, посмотрев исходный код данного метода. Это очень полезно и для изучения Java на "живых" работающих примерах.
Дата добавления: 2015-09-11; просмотров: 121 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
Компонент EJB | | | HELLO FROM SAMOJLOVA! |