Язык Java

Содержание

Введение
...................................................................................................................4

Глава
1. Процесс создания
работающей
Java-программы
.............................6



1.1. Типы Java
программ
................................................................................6



1.2.
Этапы подготовки
исполняемой
программы.
Безопасность
...............7


Глава
2. Введение в
Java
......................................................................................12



2.1. Версии языка
Java. Средства
разработки
.............................................12



2.2. Примеры
создания автономного
Java приложения
и апплета
...........12



2.2.1. Создание
Java-приложения
“HelloJava” ........................................12



2.2.2. Создание
Java-апплета
“HelloJava”
...............................................15


Глава
3. Лексические
основы языка
.................................................................17



Глава 4.
Типы данных
и операторы
языка
......................................................20



4.1. Простые
типы
.........................................................................................20



4.2. Операторы
...............................................................................................22


Глава
5. Управление
выполнением
программы
.............................................24
Глава 6. Java,
как объектно-ориентированный
язык ....................................28
6.1.Основные
требования
к объектно-ориентированной
системе ............28


6.2. Базовая система
классов Java
................................................................29


6.3. Объектная
модель Java
..........................................................................30

Заключение
............................................................................................................36


Список
литературы
..............................................................................................37


Приложение

Введение


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



Сегодня
создание программного
обеспечения
представляет
собой чрезвычайно
тяжелое занятие.
Трудности
связаны с
разнообразием
архитектур
машин, операционных
систем, графических
оболочек и т.
д. Стремительный
рост технологий,
связанных с
сетью Internet,
дополнительно
усложняет эту
задачу. К сети
Internet подключены
компьютеры
самых разных
типов - IBM
PC, Macintosh, рабочие
станции Sun и другие.
Даже в рамках
IBM-совместимых
компьютеров,
существует
несколько
платформ, например,
MS
Windows
9x/Me/XP/NT/2000,
OS/2, Solaris, различные
разновидности
операционной
системы UNIX с
графической
оболочкой
X­Windows и т. д. Все эти
системы образуют
единую сеть,
которая должна
работать как
одно целое,
обеспечивая
при этом высокий
уровень безопасности
информации.
Под влиянием
указанных
факторов резко
возрастает
уровень требований,
предъявляемый
к программному
обеспечению,
[1].



Современные
приложения
должны быть
безопасны,
высокопроизводительны,
работать в
распределенной
среде, быть
нейтральны
к архитектуре.
Все эти факторы
привели к
необходимости
нового взгляда
на сам процесс
создания и
распределения
приложений
на множестве
машин различной
архитектуры.
Требования
к переносимости
заставили
отказаться
от традиционного
способа создания
и доставки
бинарных файлов,
содержащих
машинные коды
и, следовательно,
привязанных
к определенной
платформе.
Созданная
компанией Sun
Microsystems
система разработки
Java удовлетворяет
всем этим
требованиям.
Java
– объектно-ориентированный
язык, удобный
и надёжный в
эксплуатации
благодаря таким
своим достоинствам,
как многозадачность,
поддержка
протоколов
Internet
и многоплатформенность.
Java
– это интерпретируемый
язык, и каждая
Java-программа
компилируется
для гипотетической
машины, называемой
Виртуальная
Машина Java.
Результатом
такой компиляции
является байт-код
Java,
который в свою
очередь может
выполняться
на любой операционной
системе при
условии наличия
там системы
времени выполнения
Java,
которая интерпретирует
байт-код в реальный
машинный код
конкретной
системы.



Однако, такая
универсальность
данной технологии
рождает недостаток
– требовательность
к ресурсам
компьютера.
Так как Java-программы
не содержат
машинного кода
и при их запуске
включается
в работу система
времени выполнения
Java, их производительность
заметно ниже,
чем у обычных
программ,
составленных,
например, на
языке программирования
C++. Данный недостаток
становится
с течением
времени всё
менее ощутим,
в следствии
роста вычислительной
мощности компьютерных
систем.



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



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


Глава 1. Процесс
создания работающей
Java-программы


1.1. Типы
Java
программ.



Программы,
разработанные
на языке программирования
Java, можно разделить
по своему назначению
и функциональности
на две большие
группы:



Самостоятельные
программы
(назовём их
приложения
Java), работающие
независимо
на локальном
компьютере.



Апплеты (applets),
работающие
в Internet. [2]



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



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



Каждый апплет
— это небольшая
программа,
динамически
загружаемая
по сети с Web
сервера при
открытии в
браузере HTML
страницы, в
которой имеется
ссылка на апплет
— точно так же,
как картинка,
звуковой файл
или элемент
мультипликации.
Главная особенность
апплетов заключается
в том, что они
являются настоящими
программами,
а не очередным
форматом файлов
для хранения
мультфильмов
или какой-либо
другой информации.
Апплет не просто
проигрывает
один и тот же
сценарий, а
реагирует на
действия пользователя
и может динамически
менять свое
поведение. С
помощью апплетов
вы можете сделать
страницы сервера
Web динамичными
и интерактивными.
Апплеты позволяют
выполнять
сложную локальную
обработку
данных, полученных
от сервера Web
или введенных
пользователем
с клавиатуры.
Для повышения
производительности
апплетов в
браузерах
используется
компиляция
"на лету"- Just-In-Time
compilation (JIT). При первой
загрузке аплета
его код транслируется
в обычную исполнимую
программу,
которая сохраняется
на диске и
запускается.
В результате
общая скорость
выполнения
аплета Java увеличивается
в несколько
раз. Из соображений
безопасности
апплеты (в отличие
от обычных
приложений
Java) не имеют никакого
доступа к файловой
системе локального
компьютера.
Все данные для
обработки они
могут получить
только от сервера
Web.


1.2. Этапы
подготовки
исполняемой
программы.



Безопасность.


Исходный
файл на языке
Java - это текстовый
файл, содержащий
в себе одно или
несколько
описаний классов.
Транслятор
Java предполагает,
что исходные
тексты программ
хранятся в
файлах с расширениями
java.
Получаемый
в процессе
трансляции
байт-код для
каждого класса
записывается
в отдельном
выходном файле,
с именем совпадающем
с именем класса,
и расширением
class. Именно сlass-файлы,
содержащие
байт-код, интерпретируются
системой времени
выполнения
Java
в машинный код
конкретной
системы. Прежде
всего байт-код
Java
загружается
в систему времени
выполнения
загрузчиком
классов. Загрузчик
классов отвечает
за то, чтобы
были загружены
все классы,
необходимые
для выполнения
приложения.
Затем байт-код
проверяется
верификатором
байт-кода на
отсутствие
операций, которые
могли бы нарушить
безопасность
системы или
вызвать в ней
аварийную
ситуацию. Важно
отметить, что
загрузчик
классов и верификатор
байт-кодов не
делают никаких
предположений
относительно
происхождения
кодов 
получены они
с локальной
файловой системы
или с другого
континента.
Верификатор
гарантирует,
что любой код,
прошедший
проверку, может
быть использован
интерпретатором
без риска повредить
его (интерпретатор),
а именно:



не может
произойти
переполнение
или "исчерпание"
стека



параметры
для инструкций
байт-машины
имеют нужный
тип



доступ к
полям и методам
объектов не
нарушает объявленных
в классе правил
(public, private, protected)



После такой
проверки на
безопасность
байт-код интерпретируется
в машинный код
и запускается
на выполнение
интерпретатором.
Причём классы,
полученные
локально
(заслуживающие
безусловного
доверия), и классы,
присланные
по сети из остального
мира (и потенциально
враждебные),
находятся в
разных пространствах
имён. При разрешении
ссылки на какой-либо
класс он ищется
прежде всего
в локальном
пространстве.
Это не позволяет
"внешним" кодам
подменить один
из базовых
классов в системе.
Также в процессе
интерпретации
происходит
подключение
необходимых
библиотек
(файлы с расширением
jar).
Весь описанный
процесс исполнения
Java
программ изображён
на рис. 1.




Рис. 1. Процесс
создания работающего
Java-приложения


Как уже
было сказано
выше, технология
Java
предполагает
лёгкую переносимость
программных
продуктов с
одной платформы
на другую. Такую
степень лёгкости
переноса не
обеспечивает
ни какой язык
программирования.
На рис. 2 показвно,
как приложение,
изначально
разработанное
на языка С для
Windows NT, переносится
на платформу
Apple Macintosh.


Платформа
Windows
NT
Платформа
Apple
Macintosh



Изменение
исходного



текста
программы

Программа
на С


Программа
на С






Компилятор
и редактор
связей


Компилятор
и редактор
связей





Загрузочный
модуль


Загрузочный
модуль


Рис.
2. Перенос
приложения
с платформы
Windows NT


на
платформу
Macintosh


Вначале программист
готовит исходные
тексты приложения
для платформы
Windows NT и отлаживает
их там. Для получения
загрузочного
модуля исходные
тексты компилируются
и редактируются.
Полученный
в результате
загрузочный
модуль может
работать на
процессоре
фирмы Intel в среде
операционной
системы Windows NT.



Для того чтобы
перенести
приложение
в среду операционной
системы компьютера
Macintosh, программист
вносит необходимые
изменения в
исходные тексты
приложения.
Эти изменения
необходимы
из-за различий
в программном
интерфейсе
операционной
системы Windows NT и
операционной
системы, установленной
в Macintosh. Далее эти
исходные тексты
транслируются
и редактируются,
в результате
чего получается
загрузочный
модуль, способный
работать в
среде Macintosh, но не
способный
работать в
среде Windows NT.



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



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


Сказанное
иллюстрируется
на рис. 3.


Платформа
Windows
NT
Платформа
Apple
Macintosh



Приложение
Java


Виртуальный
процессор Java









Транслятор






Платформа
Sun
Solaris



Виртуальный
процессор Java






Байт-код


Рис. 3.
Подготовка
приложения
Java для работы
на разных платформах


Таким образом,
приложение
Java компилируется
и отлаживается
только один
раз, что уже
значительно
лучше. Остается,
правда, вопрос
- как быть с
программным
интерфейсом
операционной
системы, который
отличается
для разных
платформ?



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



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



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



Еще одна проблема,
возникающая
при переносе
программ,
составленных
на языке программирования
С, заключается
в том, что размер
области памяти,
занимаемой
переменными
стандартных
типов, различный
на разных платформах.
Например, в
среде операционной
системы Windows версии
3.1 переменная
типа int в программе,
составленной
на С, занимает
16 бит. В среде
Windows NT этот размер
составляет
32 бита.



Очевидно, что
трудно составлять
программу, не
зная точно,
сколько имеется
бит в слове или
в байте. При
переносе программ
на платформы
с иной разрядностью
могут возникать
ошибки, которые
трудно обнаружить.



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

Глава
2. Введение в
Java


2.1 Версии
языка Java.
Средства разработки.



Язык Java
с момента создания
находится в
постоянном
развитии. В
реализации
Java 1.1.6 находилось
23 пакета (в Java 1.0.2 их
было 8), а количество
классов – 503 (211).
Последняя
версия языка
2.0. Что касается
средств разработки
приложений
и аплетов Java, то
первоначально
они были созданы
фирмой Sun Microsystems и
до сих пор пользуются
популярностью.
Базовой стандартной
средой разработки
является пакет
JDK
(Java
Development Kit) фирмы Sun.
Последняя
версия этого
пакета на сегодняшний
день 1.4.0. Средства
JDK
не имеют графического
интерфейса
и запускаются
из командной
строки. Существует
также множество
других визуальных
средств, таких
как JBuilder, Symantec
Cafe, VisualJ, Java WorkShop, Java Studio и другие.
При написании
программ в
данной курсовой
работе мной
использовался
стандартный
набор JDK
v.
1.4.0.


2.2. Примеры
создания автономного
Java
приложения
и



апплета.


В этой главе
будет создана
каноническая
программа
“HelloJava”. Эта
программа будет
создана в виде
обычного Java
приложения
и в виде апплета.


2.2.1. Создание
Java-приложения
“HelloJava”.



Для создания
программы можно
использовать
любой текстовый
редактор, например
Блокнот. Создаётся
в Блокноте
текстовый
документ с
расширением
java и именем
HelloJava и набирается
следующий
текст:


public
class HelloJava


{


public
static void main(String args[])


{



System.out.println("Hello,
Java!");


}
}



Язык Java требует,
чтобы весь
программный
код был заключен
внутри поименованных
классов. Приведенный
выше текст
примера надо
записать в файл
HelloJava.java. Обязательно
соответствие
прописных букв
в имени файла
тому же в названии
содержащегося
в нем класса.
Для того, чтобы
оттранслировать
этот пример
необходимо
запустить
транслятор
Java — javac, указав в
качестве параметра
имя файла с
исходным текстом:


С:
> javac HelloJava.Java


Транслятор
создаст файл
HelloJava.class с независимым
от процессора
байт-кодом
примера. Для
того, чтобы
исполнить
полученный
код, необходимо
иметь среду
времени выполнения
языка Java (программа
java), в которую надо
загрузить новый
класс для исполнения.
Важно то, что
в качестве
параметра
указывается
имя класса, а
не имя файла,
в котором этот
класс содержится,
т.е. расширение
class не указывается.



С: >
java HelloJava



Если всё
прошло успешно,
т.е. если ни
транслятор,
ни интерпретатор
не выдал сообщения
об ошибке, то
на экране появится
строка Hello,
Java!



Конечно,
HelloJava
— это тривиальный
пример. Однако
даже такая
простая программа
знакомит с
массой понятий
и деталей синтаксиса
языка.


Строка
1


public class
HelloJava



В этой строке
определен один
класс типа
public с именем HelloJava.
Полное описание
класса располагается
между открывающей
фигурной скобкой
во второй строке
и парной ей
закрывающей
фигурной скобкой
в строке 7.Заметим,
что исходный
файл приложения
Java может содержать
только один
класс public, причем
имя файла должно
в точности
совпадать с
именем такого
класса. В данном
случае исходный
файл называется
HelloJava.java. Если назвать
файл helloJava.java, транслятор
выдаст сообщение
об ошибке. И
ещё если класс
типа public с именем,
совпадающем
с именем файла,
содержит определение
метода main, то такой
метод служит
точкой входа
автономного
приложения
Java. В этом он напоминает
функцию main обычной
программы,
составленной
на языке программирования
C.


Строка
3


public static
void main(String args [])



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



public



Это — модификатор
доступа,
который позволяет
программисту
управлять
видимостью
любого метода
и любой переменной.
В данном случае
модификатор
доступа public означает,
что метод main виден
и доступен
любому классу.



static



Следующее
ключевое слово
— static. С помощью
этого слова
объявляются
методы и переменные
класса, используемые
для работы с
классом в целом.
Методы, в объявлении
которых использовано
ключевое слово
static, могут непосредственно
работать только
с локальными
и статическими
переменными.



void



Нужно просто
вывести на
экран строку,
а возвращать
значение из
метода main не
требуется.
Именно поэтому
и был использован
модификатор
void.



main



Все существующие
реализации
Java-интерпретаторов,
получив команду
интерпретировать
класс, начинают
свою работу
с вызова метода
main.
Java-транслятор
может оттранслировать
класс, в котором
нет метода
main. А вот Java-интерпретатор
запускать
классы без
метода main не умеет.



Все параметры,
которые нужно
передать методу,
указываются
внутри пары
круглых скобок
в виде списка
элементов,
разделенных
символами ";"
(точка с запятой).
Каждый элемент
списка параметров
состоит из
разделенных
пробелом типа
и идентификатора.
Даже если у
метода нет
параметров,
после его имени
все равно нужно
поставить пару
круглых скобок.
В данном примере
у метода main только
один параметр.
Элемент String args[]
объявляет
параметр с
именем args, который
является массивом
объектов —
представителей
класса String. Квадратные
скобки говорят
о том, что мы
имеем дело с
массивом, а не
с одиночным
элементом
указанного
типа. Тип String —
это класс.


Строка
5


System.out.println("Hello,
Java!");



В этой строке
выполняется
метод println объекта
out. Объект out объявлен
в классе OutputStream и
статически
инициализируется
в классе System.
Закрывающей
фигурной скобкой
в строке 6 заканчивается
объявление
метода main, а такая
же скобка в
строке 7 завершает
объявление
класса HelloJava.


2.2.2. Создание
Java-апплета
“HelloJava”.


Java апплеты,
как и Java
приложения
создаются в
виде текстового
файла с расширением
java. Создаём
файл HelloJava.java:


import
java.awt.*;


import
java.applet.*;


public
class HelloJavaApplet extends Applet


{
public void paint(Graphics g)


{g.drawString("Hello,
Java!", 20, 20);



}



}



Апплет
начинается
двумя строками,
которые подключают
оператором
import
все классы
иерархий java.applet
и java.awt. библиотека
java.applet содержит
классы, необходимые
для создания
апплетов, а с
помощью библиотеки
java.awt апплет может
выполнять в
своем окне
рисование
различных
изображений
или текста.
Далее в исходном
тексте апплета
определяется
класс типа
public с именем
HelloJavaApplet.
Это имя должно
обязательно
совпадать с
именем файла,
содержащего
исходный текст
этого класса.



Определенный
класс HelloJavaApplet
с помощью ключевого
слова extends наследуется
от класса Applet. При
этом методам
класса HelloApplet становятся
доступными
все методы и
данные класса,
за исключением
определенных
как private. Класс
Applet определен
в библиотеке
классов java.applet,
которую мы
подключили
оператором
import.



Дальше
присутствует
метод paint, замещающий
одноименный
метод класса
Applet. При вызове
этого метода
ему передается
аргумент, содержащий
ссылку на объект
класса Graphics. Последний
используется
для прорисовки
нашего апплета.
С помощью метода
drawString, вызываемого
с этим объектом
типа Graphics, в позиции
экрана (20,20) выводится
строка “Hello, Java!”.



Далее, как
и в случае Java
приложения
транслируем
содержимое
файла HelloJavaApplet.java
транслятором
javac.exe,
получая тем
самым байт-код
апплета в файле
HelloJavaApplet.class.
Следующим
этапом требуется
встроить апплет
в HTML
документ, который
будет в последствии
загружен в
браузер. Встраивание
апплетов происходит
с использованием
тегов
и .
Нужно создать
файл HelloJavaApplet.html
со следующим
минимальным
содержимым:





CODE — обязательный
атрибут, задающий
имя файла, в
котором содержится
оттранслированный
код апплета.



WIDTH и HEIGHT — обязательные
атрибуты, задающие
начальный
размер видимой
области апплета.


Далее
следует поместить
файлы HelloJavaApplet.html
и HelloJavaApplet.class
в один каталог
и открыть первый
в любом браузере,
в который встроена
Виртуальная
Машина Java на любой
платформе. При
открытии произойдёт
так называемая
компиляция
"на лету" и
апплет будет
запущен.

Глава
3. Лексические
основы языка.


Целью этой
главы является
рассмотрение
общих аспектов
синтаксиса
языка. Программы
на Java — это набор
пробелов,
комментариев,
ключевых слов,
идентификаторов
констант и
переменных,
операторов
и разделителей.



Пробелы



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


Комментарии


Хотя комментарии
никак не влияют
на исполняемый
код программы,
при правильном
использовании
они оказываются
весьма существенной
частью исходного
текста. Самые
популярные
это комментарии
в одной строке
и комментарии
в нескольких
строках. Комментарии,
занимающие
одну строку,
начинаются
с символов // и
заканчиваются
в конце строки.
Такой стиль
комментирования
полезен для
размещения
кратких пояснений
к отдельным
строкам кода:



а = 42; // если
42 - ответ, то каков
же был вопрос?



Для более подробных
пояснений можно
воспользоваться
комментариями,
размещенными
на нескольких
строках, начав
текст комментариев
символами /* и
закончив символами
*/. При этом весь
текст между
этими парами
символов будет
расценен как
комментарий
и транслятор
его проигнорирует.


/*


*
Этот код несколько
замысловат...


*
Попробую объяснить:


*/



Зарезервированные
ключевые слова



Зарезервированные
ключевые слова
— это специальные
идентификаторы,
которые в языке
Java используются
для того, чтобы
идентифицировать
встроенные
типы, модификаторы
и средства
управления
выполнением
программы. На
сегодняшний
день в языке
Java имеется 59
зарезервированных
слов. Эти ключевые
слова совместно
с синтаксисом
операторов
и разделителей
входят в описание
языка Java. Они могут
применяться
только по назначению,
их нельзя
использовать
в качестве
идентификаторов
для имен переменных,
классов или
методов.


Зарезервированные
слова Java




















































































abstract boolean break byte byvalue
case cast catch char class
const continue default do double
else extends false final finally
float for future generic goto
if implements import inner instanceof
int

interface


long native new
null operator outer package private
protected public rest return short
static super switch syncronized this
throw throws transient true try
var void volatile while


Слова byvalue, cast,
const, future, generic, goto, inner, operator, outer, rest, var
зарезервированы
в Java, но
пока не
используются.
Кроме этого,
в Java есть
зарезервированные
имена
методов.
Эти методы
наследуются
каждым классом,
их нельзя
использовать,
за исключением
случаев явного
переопределения
методов класса
Object.


Зарезервированные
имена методов
Java














clone equals finalize getClass hashCode
notify notifyAll toString wait


Идентификаторы



Идентификаторы
используются
для именования
классов, методов
и переменных.
В качестве
идентификатора
может использоваться
любая последовательность
строчных и
прописных букв,
цифр и символов
_ (подчеркивание)
и $ (доллар).
Идентификаторы
не должны начинаться
с цифры, чтобы
транслятор
не перепутал
их с числовыми
литеральными
константами,
которые будут
описаны ниже.
Java — язык, чувствительный
к регистру
букв. Это означает,
что, к примеру,
Value и VALUE — различные
идентификаторы,[1].



Переменные



Переменная
— это основной
элемент хранения
информации
в Java-программе.
Переменная
характеризуется
комбинацией
идентификатора,
типа и области
действия. В
зависимости
от того, где вы
объявили переменную,
она может быть
локальной,
например, для
кода внутри
цикла for, либо
это может быть
переменная
экземпляра
класса, доступная
всем методам
данного класса.
Локальные
области действия
объявляются
с помощью фигурных
скобок.

Глава
4. Типы данных
и операторы
языка


4.1 Простые
типы



Простые типы
в Java не являются
объектно-ориентированными,
они аналогичны
простым типам
большинства
традиционных
языков программирования.
В Java имеется
восемь
простых
типов: —
byte, short, int, long, char, float, double и
boolean. Их можно
разделить на
четыре группы:



Целые. К
ним относятся
типы byte, short, int и long. Эти
типы предназначены
для целых чисел
со знаком.


Типы
с плавающей
точкой — float и
double. Они служат
для представления
чисел, имеющих
дробную часть.


Символьный
тип char. Этот тип
предназначен
для представления
элементов из
таблицы символов,
например, букв
или цифр.


Логический
тип boolean. Это специальный
тип, используемый
для представления
логических
величин.



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



Целые числа



Ниже приведена
таблица разрядностей
и допустимых
диапазонов
для различных
типов целых
чисел.



























Имя Разрядность Диапазон
long 64

-9,
223, 372, 036, 854, 775, 808.. 9, 223, 372, 036, 854, 775, 807


Int 32 -2, 147, 483, 648.. 2, 147, 483,
647
Short 16 -32, 768.. 32, 767
byte 8 -128.. 127


Числа с плавающей
точкой


Характеристики
этих типов
приведены в
таблице.

















Имя Разрядность Диапазон
double 64

1.
7е-308..
1. 7е+
308


float 32

3.
4е-038..
3. 4е+
038



Символы



Поскольку в
Java для представления
символов в
строках используется
кодировка
Unicode, разрядность
типа char в этом
языке — 16 бит.
В нем можно
хранить десятки
тысяч символов
интернационального
набора символов
Unicode. Диапазон
типа char — 0..65536. Unicode —
это объединение
десятков кодировок
символов, он
включает в себя
латинский,
греческий,
арабский алфавиты,
кириллицу и
многие другие
наборы символов.


Хотя
величины типа
char и не используются,
как целые числа,
можно оперировать
с ними так, как
если бы они
были целыми.
Это дает возможность
сложить два
символа вместе,
или инкрементировать
значение символьной
переменной.



Тип boolean



В языке Java имеется
простой тип
boolean, используемый
для хранения
логических
значений. Переменные
этого типа
могут принимать
всего два значения
— true (истина) и
false (ложь). Значения
типа boolean возвращаются
в качестве
результата
всеми операторами
сравнения,
например (а <
b).



Объявление
переменной



Основная форма
объявления
переменной
такова:



тип идентификатор
[ = значение];



Тип —
это либо один
из встроенных
типов, то есть,
byte, short, int, long, char, float, double, boolean, либо
имя класса или
интерфейса.
Ниже приведено
несколько
примеров объявления
переменных
различных
типов. Некоторые
примеры включают
в себя инициализацию
начального
значения. Переменные,
для которых
начальные
значения не
указаны, автоматически
инициализируются
нулем.























int
a, b, с;


Объявляет
три целых
переменных
а, b, с.
int d = 3, e, f = 5; Объявляет
ещё целые
переменные,
инициализирует
d и f.
byte z
= 22;
Инициализирует
z.
double
pi = 3. 14159;
Объявляет
число пи.
char x = 'x'; Переменная
х получает
значение 'х'.


4.2. Операторы



В Java имеется
44 встроенных
оператора. Их
можно разбить
на 4 класса -
арифметические,
битовые, операторы
сравнения и
логические.



Арифметические
операторы



Арифметические
операторы
используются
для вычислений
так же как в
алгебре (см.
таблицу со
сводкой арифметических
операторов
ниже). Допустимые
операнды должны
иметь числовые
типы. Например,
использовать
эти операторы
для работы с
логическими
типами нельзя,
а для работы
с типом char можно,
поскольку в
Java тип char — это
подмножество
типа int.












































Оператор Результат Оператор Результат
+ Сложение + =

Сложение
с присваиванием


- вычитание
(также унарный
минус)
-=

Вычитание
с присваиванием


* Умножение * =

Умножение
с присваиванием


/ Деление /=

Деление
с присваиванием



%


деление
по модулю
%=

Деление
по модулю с
присваиванием


++ Инкремент -- декремент


Операторы
отношения



Для того,
чтобы можно
было сравнивать
два значения,
в Java имеется набор
операторов,
описывающих
отношение и
равенство.
Список таких
операторов
приведен в
таблице.























Оператор Результат
== равно
!= не
равно
> больше

/TD
td меньше/td
/TR
TR
td >=

больше
или равно

java IfElse


April
is in the Spring.


switch


Оператор switch
обеспечивает
ясный способ
переключения
между различными
частями программного
кода в зависимости
от значения
одной переменной
или выражения.
Общая форма
этого оператора
такова:



switch ( выражение
) { case значение1:


break;



case
значение2:


break;



case значением:



break;



default:



}



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

Циклы


Любой цикл
можно разделить
на 4 части —
инициализацию,
тело, итерацию
и условие завершения.
В Java есть три
циклические
конструкции:
while (с пред-условием),
do-while (с постусловием)
и for (с параметровм).



while



Этот цикл многократно
выполняется
до тех пор, пока
значение логического
выражения равно
true. Ниже приведена
общая форма
оператора
while:



[ инициализация;
]



while ( завершение
) {



тело;



[итерация;]
}



Инициализация
и итерация
необязательны.
Ниже приведен
пример цикла
while для печати
десяти строк
«tick».


class
WhileDemo {


public
static void main(String args[]) {


int
n = 10;


while
(n > 0) {


System.out.println("tick
" + n);



n--;



}



} }



do-while



Иногда возникает
потребность
выполнить тело
цикла по крайней
мере один раз
— даже в том
случае, когда
логическое
выражение с
самого на­чала
принимает
значение false. Для
таких случаев
в Java используется
циклическая
конструкция
do-while. Ее общая форма
записи такова:



[ инициализация;
] do { тело; [итерация;]
} while ( завершение
);



В следующем
примере тело
цикла выполняется
до первой проверки
условия завершения.
Это позволяет
совместить
код итерации
с условием
завершения:


class
DoWhile {


public
static void main(String args[]) {


int
n = 10;


do
{



System.out.println("tick
" + n);



} while (--n > 0);



} }



for



В этом операторе
предусмотрены
места для всех
четырех частей
цикла. Ниже
приведена общая
форма оператора
записи for.



for ( инициализация;
завершение;
итерация ) тело;



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


class
ForDemo {


public
static void main(String args[]) {


for
(int i = 1; i 0; n--)


System.out.println("tick
" + n);



} }


continue



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


class
ContinueDemo {



public
static void main(String args[]) {


for
(int i=0; i < 10; i++) {


System.out.print(i
+ " ");


if
(i % 2 == 0) continue;


System.out.println("");



}



}}



Если индекс
четный, цикл
продолжается
без вывода
символа новой
строки.



Результат
выполнения
этой программы
таков:



С:
> java ContinueDemo


0
1



2 3



4 5



5 7



8 9

Глава
6. Java,
как объектно-ориентированный
язык.


Система Java создавалась
объектно-ориентированной
с самого начала.
Объектно-ориентированная
парадигма
наиболее удобна
при создании
программного
обеспечения
типа клиент-сервер,
а также для
организации
распределенных
вычислений.
Одна из черт,
присущих объектам,
заключается
в том, что объекты
обычно переживают
процедуру, их
создающую. Они
затем могут
перемещаться
по сети, храниться
в базах данных
и т.д. Идейными
наследниками
Java являются такие
языки, как C++,
Eiffel, Smalltalk и Objective C. За исключением
примитивных
типов данных,
практически
все в этом языке
является объектом.



Опыт показывает,
что отсутствие
стандартных
базовых библиотек
для языка С++
чрезвычайно
затрудняет
работу с ним.
В силу того,
что любое
нетривиальное
приложение
требует наличия
некоторого
набора базовых
классов, разработчикам
приходится
пользоваться
различными
несовместимыми
между собой
библиотеками
или писать свой
собственный
вариант такого
набора. Все это
затрудняет
как разработку,
так и дальнейшую
поддержку
приложений,
затрудняет
стыковку приложений,
написанных
разными людьми.

6.1.Основные
требования
к объектно-ориентированной
системе


инкапсуляция
-- сокрытие
реализации
за абстрактным
интерфейсом



полиморфизм
-- одно и то же
сообщение,
посланное
различным
объектам, приводит
к выполнению
разных операций



наследование
-- новые классы
могут наследовать
данные и функциональность
уже существующих
классов



динамическое
связывание
-- новые классы
могут появляться
в системе откуда
угодно, в том
числе и из сети.
Необходимо
иметь возможность
динамически
включать их
в систему.



6.2. Базовая
система классов
Java



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



java.lang -- базовый
набор типов,
отраженных
в самом языке.
Этот пакет
обязательно
входит в состав
любого приложения.
Содержит описания
классов Object и
Class, а также поддержку
многопотоковости,
исключительных
ситуаций, оболочку
для базовых
типов, а также
некоторые
фундаментальные
классы.



java.io -- потоки
и файлы произвольного
доступа. Аналог
библиотеки
стандартного
ввода-вывода
системы UNIX. В
библиотеке
классов java.io собраны
классы, имеющие
отношение к
вводу и выводу
данных через
потоки. С использованием
этих классов
можно работать
не только с
потоками байт,
но также и с
потоками данных
других типов,
например числами
int или текстовыми
строками.



java.net -- поддержка
сетевого доступа
(sockets, telnet, URL). Язык
программирования
Java разрабатывался
в предположении,
что им будут
пользоваться
для создания
сетевых приложений.
Поэтому было
бы странно,
если бы в составе
среды разработки
приложений
Java не поставлялась
библиотека
классов для
работы в сети.
Библиотека
классов java.net
предназначена
как раз для
этого. Она содержит
классы, с помощью
которых можно
работать с
универсальными
сетевыми адресами
URL, передавать
данные с использованием
сокетов TCP и UDP,
выполнять
различные
операции с
адресами IP. Эта
библиотека
содержит также
классы для
выполнения
преобразований
двоичных данных
в текстовый
формат, что
часто бывает
необходимо.



java.util -- классы-контейнеры
(Dictionary, HashTable, Stack) и некоторые
другие утилиты.
Кодирование
и декодирование.
Классы Date и Time.
Библиотека
классов java.util очень
полезна при
составлении
приложений,
потому что в
ней имеются
классы для
создания таких
структур, как
динамические
массивы, стеки
и словари. Есть
классы для
работы с генератором
псевдослучайных
чисел, для разбора
строк на составляющие
элементы (токены),
для работы с
календарной
датой и временем.



java.awt -- AWT - это
сокращение
от Abstract Window Toolkit (инструментарий
для работы с
абстрактными
окнами). Содержит
базовые компоненты
интерфейса,
такие как события,
цвета, фонты.
Для создания
пользовательского
интерфейса
аплеты Java могут
и должны использовать
библиотеку
классов java.awt. Классы,
входящие в
состав библиотеки
java.awt, предоставляют
возможность
создания
пользовательского
интерфейса
способом, не
зависящим от
платформы, на
которой выполняется
апплет Java. Можно
создавать
обычные окна
и диалоговые
панели, кнопки,
переключатели,
списки, меню,
полосы просмотра,
однострочные
и многострочные
поля для ввода
текстовой
информации.



java.applet
-- библиотека
классов java.applet
инкапсулирует
поведение
апплетов Java. При
создании апплетов,
требуется
класс Applet, расположенный
в этой библиотеке
классов. Дополнительно
в библиотеке
классов java.applet
определены
интерфейсы
для подключения
апплетов к
содержащим
их документам
и классы для
проигрывания
звуковых фрагментов.


6.3.
Объектная
модель Java


Классы



Класс есть
языковая конструкция,
определяющая
поля данных
объектов данного
класса (instance variables) и
их поведение
(methods). Практически
класс в Java сам
по себе не является
объектом. Это
лишь шаблон,
который определяет,
из каких частей
будет состоять
объект, созданный
с помощью этого
класса, и как
он будет себя
вести.


Простейший
пример описания
класса

class
Point extends Object {


public
double x;


public
double y;


}



Создание
объекта определенного
класса


Создать
объект описанного
выше класса
можно декларацией

Point
myPoint; // объявление
переменной
типа Point


myPoint
= new Point(); // инициализация,



а обратиться
к полям данных
следующим
образом


myPoint.x
= 10.0;


myPoint.y
= 25.7;


Конструкторы



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


class
Point extends Object {


Point()
{


x
= 0.0;


y
= 0.0;


}


Point(double
x, double y) {


this.x
= x;


this.y
= y;


}


public
double x;


public
double y;


}



а использованы
они могут быть
следующим
образом


Point
a;


Point
b;


a
= new Point();


b
= new Point(1.0, 2.0);



Имя this в определении
конструктора
с аргументами
используется
для обозначения
самого объекта,
в методе которого
мы находимся,
в тех случаях,
когда ссылка
на этот объект
не подразумевается
неявно.



Методы и
посылка сообщений



Если один объект
в программе
заставляет
другой выполнить
какую-то операцию,
то принято
говорить, что
он посылает
сообщение
другому объекту.
Например, можно
переопределить
класс следующим
образом:


Pclass
Point extends Object {


private
double x;


private
double y;


public
void setX(double x) {


this.x
= x;


}


public
void setY(double y) {


this.y
= y;


}


...


}



Поля x и y теперь
недоступны
извне класса,
но для изменения
их состояния
предусмотреys
специальные
методы setX и setY.


Финализаторы



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

protected
void finalize() {


try
{


file.close();


}
catch (Exception e) {


}


}


Производные
классы



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



Например,
можно описать
новый класс,
соответствующий
координатам
точки в трехмерном
пространстве,
на основе уже
описанного
класса для
точки на плоскости.


class
ThreePoint extends Point {


protected
double z;


ThreePoint()
{


super();


z
= 0.0;


}


ThreePoint(double
x, double y, double z) {


super(x,
y);


this.z
= z;


}


}



Здесь была
добавлена новая
координату
z, а поля x и y (и методы
доступа к ним)
унаследовали
от класса Point.


Контроль
доступа



Контроль
доступа к данным
и методам объекта
в Java несколько
отличается
от С++. Помимо
трех уровней
доступа, имеющихся
в С++ (public, private, protected) имеется
четвертый,
находящийся
где-то между
уровнями public и
protected. Он не имеет
имени и используется
по умолчанию,
когда явно не
указан другой
уровень. Поля
этого типа
доступны внутри
только одного
программного
пакета. Пакет
представляет
группу классов,
объединенных
в одну логическую
группу. Например,
классы, описывающие
точку и прямоугольник
в графическом
пакете, могут
иметь прямой
доступ к полям
данных друг
друга, запрещенный
обычно для
остального
мира.



Также следует
отметить, что
контроль доступа
в C++ помогает
программисту
лишь при построении
программы.
Различия между
полями, помеченными
public и private, отсутствуют
в выполняемом
модуле, созданном
с использованием
этого языка.
В Java контроль
доступа реален,
т.к. он осуществляется
не только при
компиляции,
но и непосредственно
перед запуском
кодов на выполнение
виртуальной
машиной.


Переменные
и методы класса



Как и С++
язык Java позволяет
использовать
переменные
и методы, принадлежащие
классу целиком.
Для определения
их используется
ключевое слово
static. Естественно,
что методы
самого класса
не могут оперировать
данными и методами
объекта класса,
т.к. они не относятся
ни к какому
определенному
объекту. Например,
версия реализации
класса Rectangle может
быть задана
следующим
образом:


class
Rectangle extends Object {


static
final int version = 2 ;


static
final int revision = 0 ;


}



Ключевое
слово final означает,
что значение
поля окончательное
и изменению
не подлежит
(это константа).


Абстрактные
методы



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



Например:abstract
class Graphical extends Object


{


protected
Point lowerLeft;


protected
Point upperRight;


...


public
void setPosition(Point ll, Point ur)


{
lowerLeft = ll;


upperRight
= ur;


}


abstract
void drawMyself();


}


class
Rectangle extends Graphical


{
void drawMyself()


{
....


}


}



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



Класс,
содержащий
хотя бы один
абстрактный
метод, должен
быть объявлен
как абстрактный.
Создание экземпляров
такого класса
невозможно.


Заключение


В процессе
написания
данной работы
были выяснены
следующие
свойства языка
Java:



язык
программирования
объектно-ориентирован,
оснащён богатой
библиотекой
классов и в то
же время довольно
прост для освоения



цикл разработки
приложений
сокращен за
счет того, что
система построена
на основе
интерпретатора



приложение
получается
автоматически
переносимым
между множеством
платформ и
операционных
систем



за счет встроенной
системы сборки
мусора программист
освобождается
от необходимости
явного управления
памятью



приложение
легко сопровождается
и модифицируется,
т.к. модули могут
быть загружены
с сети



в приложения
встроена система
безопасности,
не допускающая
незаконного
доступа и
проникновения
вирусов



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


Список литературы



Джон Родли
Создание
Java-апплетов
.- The
Coriolis
Group,Inc.,1996,
Издательство
НИПФ "ДиаСофт
Лтд.",1996



Майкл Эферган
Java: справочник
.- QUE Corporation, 1997, Издательство
"Питер Ком",
1998



П. Киммел
Borland
C++5.
– СПб.: BHV-
Санкт-Петербург,
1999.



Материалы
интернет-сайтов:



www.javable.com



www.sun.ru



www.sun.com



www.infocity.kiev.ua

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Язык Java

Слов:7320
Символов:71100
Размер:138.87 Кб.