Лекции от Савостьянока Ю.А.

Java.

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

            Однако более практичен другой путь. Web-приложения можно создавать при помощи Java-сервлетов (Java-servlet). Неологизм servlet происходит от слова server, и под этим термином подразумевается небольшой вспомогательный сервер. При поступлении запроса на выполнение сервлет запускает Java-программу и передает ее результат клиенту. Кроме того, немало серверов приложений используют Java в качестве языка программирования.

         Джеймс ГослингРазработка языка Java началась в 1991 г. Группа программистов (Green Team) из компании Sun Microsystems под руководством Джеймса Гослинга занималась разработкой языка для использования в цифровых бытовых устройствах (Oak). Летом 1992 г. была создана рабочая версия, но группа опередила свое время, так как в тот момент промышленность еще не была готова к использованию этого языка.

В 1993 г. появился web-браузер Mosaic, что привело к распространению Интернета, вышедшего из стен академических лабораторий, по всему миру. Программисты из группы Green Team сразу же осознали, какую роль может сыграть созданный ими язык для расширения возможностей web-браузеров. При помощи браузера Mosaic, в котором использовались адреса URL для навигации в сети и код HTML для отображения web-страниц, пользователь мог отыскивать нужные ему страницы и загружать информацию с удаленных сайтов. Тем не менее оставались нерешенными три проблемы, ограничивающие возможность доступа пользователей к WWW.

1. Скорость передачи на компьютер пользователя в 1993 г. ограничивалась примерно 33 000 бит/с (сейчас она составляет примерно 50 000 бит/с).

2. Если какой-либо сайт был достаточно популярен, то при одновременном обращении к нему большого количества пользователей скорость его работы значительно уменьшалась.

3. Для передачи по сети разных типов web-объектов (текстового документа, графического, аудио- или видеообъекта) требовался отдельный протокол, поддерживаемый каждым web-браузером. Новый формат объектов мог быть использован только после того, как соответствующий протокол был включен во все браузеры.

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

По мнению программистов компании Sun, разработанный ими язык мог бы стать ценным дополнением к web-технологиям. Но для эффективности его использования требовалось выполнение нескольких условий.

1. Независимость от машинной архитектуры. Web-сервер не имеет информации о том, на каком компьютере установлен браузер пользователя. Для решения этой задачи был сконструирован виртуальный компьютер Java, и апплет мог быть скомпилирован в виде последовательности байт-кодов для данного виртуального компьютера. Таким образом, апплеты Java могли выполняться на любом браузере, в который встроена виртуальная машина Java.

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

В 1994 г. компания Sun разработала браузер Hotjava, чтобы продемонстрировать возможности содержащегося в нем виртуального компьютера Java. И наконец, 23 мая 1995 г. Марк Андерсен (Marc Anderssen), один из основателей компании Netscape Communication, которая в то время контролировала 70 % рынка в области web-браузеров, объявил о включении виртуального компьютера Java в браузер Netscape. С этого момента язык Java приобрел значительную популярность. Хотя исходно он был предназначен для выполнения апплетов в web-браузере, область его применения расширилась до того, что он стал одним из наиболее распространенных языков. Он все чаще заменяет С и C++ в качестве первого языка программирования, изучаемого и используемого студентами.

Язык Java похож на С и C++. Их взаимосвязь становится понятной, если проследить историю создания этих языков. Язык С был разработан в 70-х гг. как язык создания операционных систем (в основном системы UNIX). Разработчикам языка хотелось, чтобы он обеспечивал возможность доступа к архитектуре базового аппаратного компьютера. Когда Страуструп (Stroustrup) разрабатывал язык C++, он позаимствовал концепцию класса из языка Simula и концепцию наследования из языка Smalltalk. Тем не менее язык С, ставший основой C++, не был при этом модифицирован и его полезные для системного программирования свойства были перенесены в C++. Когда программисты компании Sun разрабатывали Java, они сохранили основные синтаксические структуры, концепции классов и наследования, имеющиеся в C++, но отказались от некоторых необязательных свойств. В результате язык Java оказался более компактным, чем C++, но с более рациональными синтаксисом и семантикой.

По большей части Java напоминает C++ без тяжелого наследия С, которое обусловливает слабость многих программ на языке C++. Данные в Java строго типизированы; в частности, целочисленный, логический и символьный типы принадлежат к различным типам данных. Также отдельным типом данных являются массивы, а строковый тип данных в Java - это не просто массив символов. Все эти свойства позволяют компилятору Java более полно отслеживать ошибки в программах.

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

В языке Java неявным образом присутствуют указатели, но соответствующий тип данных отсутствует. Это означает, что от пользователя скрыты все проблемы с фрагментацией памяти, ссылками на несуществующие объекты и другие неприятности, связанные с указателями. Распределение памяти для указателей происходит неявным образом во время создания объектов класса и выполнения операции new.
Для создания программы на языке Java в первую очередь создается файл имя_файла.java. Имя файла должно совпадать с именем класса, создаваемого в данной программе. Когда программа написана, вызывается компилятор Java. В результате компиляции получается файл с названием имя_файла.class, содержащий байт-коды. Этот файл можно выполнить с помощью интерпретатора Java (виртуальная машина Java).

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

Перед вами пример простого класса, задача которого - вывод на экран строки "Hello, world":

 

class HelloApp {
public static void main
(String args[]) {
System.out.println ("Hello,
world"); } }

Hosted by uCoz