
*** 6.12.04
Лекция 22 Введение в языки javAи с#
22.1 Понятие о языке Java
Основные идеи языка Java (Джава) являются сплавом достижений языков
Simula, SmallTalk, C, C++. Разработан он на фирме Sun небольшой группой
сотрудников в 1990 - 1995 гг. Языки Си и Си++ являются мощными
профессиональными языками. Зачем же нужен еще один язык - Java?
Ответ на этот вопрос можно сформулировать очень кратко: для защищенности
и переносимости программ в Интернете. Рассмотрим эти свойства.
ПК пользователя и сервер в Интернете обмениваются данными и программами.
Загружаемые с сервера программы опасны из-за возможных диверсий, и эта
опасность остается даже после проверки программы на вирус перед
исполнением. В среде Java - совместимого браузера риск умышленного
искажения программ или заражения системы вирусом устраняется полностью.
Теперь о переносимости, т.е. мобильности, программ. В Интернете работают
ПК Мicrosoft, Макинтош и рабочие станции с ОС Unix в пропорции
примерно 60 : 25 : 15. У каждой из этих платформ имеются свои средства для
работы и, кроме того, велико разнообразие ОС и моделей ПК. Обычно ситуация
такова, что при изменении платформы или даже ПК программа перестает работать.
Поэтому возникают серьезные проблемы с динамической загрузкой программ по
Интернету. Создатели Java ввели в язык и среду выполнения жесткие требования,
которые позволяют запускать программу в любых условиях, т.е.
на любых ПК с любыми ОС. Другими словами, о переносимости программ
заботится сама Java.
Java является интерпретируемым языком. Это значит, что получаемый
после компиляции код программы (байт-код) передается для исполнения
интерпретатору Java конкретного ПК. Хотя реализации системы выполнения
Java для разных платформ могут иметь различия, но все они интерпретируют
один и тот же байт-код Java. В настоящее время ведутся работы по замене
интерпретатора Java на компилятор, что ускорит работу программ. Язык Java
столь же важен для Интернета, как язык Си++ для системного
программирования. Оба языка используют аналогичный синтаксис и
поддерживают объектно-ориентированное программирование.
Переходить с Си++ на язык Java легко, но различия существенные есть.
Java не разрешает выполнять операции с указателями, в нём отсутствуют
команды препроцессора, оператор goto, глобальные переменные,
автоматическое преобразование типов, структуры (struct),
не поддерживается полиморфизм, т.е. перегрузка операций и функций,
нет множественного наследования. Есть и другие упрощения, но есть и
дополнения, например, можно создавать пакеты классов.
Отметим, что тип char в Java описывает 16-битные символы Unicode.
Кратко рассмотрим кодировку Unicode. Она является объединением нескольких
десятков различных кодировок и позволяет использовать, кроме латинских,
символы других языков, например, кириллицы, а также греческие, арабские
буквы. Эта возможность обусловлена тем, что два байта позволяют хранить
коды 65537 символов. Используя кодировку Unicode, можно создавать
приложения с текстами на различных языках , что важно для будущего. Для
сравнения напомним, что 7-битная кодировка ASCII включает только 128 символов,
а ее 8-битное расширение - кодировка ISO - состоит из 256 символов.
Любая Java-программа состоит из последовательности классов, т.е.
первым словом любой программы будет слово class. Класс - это
базовый элемент объектно-ориентированного программирования (ООП).
Классов в программе может быть любое количество и каждый является
как бы вспомогательной "программой на С++".
Класс может содержать любое количество функций и описаний данных.
В терминах ООП это соответствует инкапсуляции. Как и отдельная функция,
класс имеет имя и все его операторы после заголовка заключаются в фигурные
скобки, см. рис. 22.1.
При записи большинства операторов используются правила языка Си++.
class A { . . . . . . .}
class B { . . . . есть
main. . .. . . }
class
C { . . . . . . .}
Рис. 22.1 Java-программа - это система классов
Основная функция main также находится внутри одного из классов.
Может присутствовать даже несколько классов с функцией main
в каждом, но тогда главная из всех main должна быть указана при запуске интерпретатора. Как уже неоднократно указывалось, в ООП функции классов называют методами.
Рассмотрим пример программы, состоящей из двух классов. Первый класс
объявляет координаты точки, второй класс содержит только метод main для
работы с точками.
/ / / / / ***** Файл Tchk2.java * * * * Java- программа 1
class Tchk { int x, y; } / / это первый класс
class Tchk2 { / / начало второго класса
public static void main (String args[ ] ) {
Tchk p1 = new Tchk( ); Tchk p2 = new Tchk( );
p1. x = 5; p1. y = 9 ; p2. x = 91; p2. y = 99 ;
System.out. println ( " x1 =" + p1.x + " y1 =" + p1.y);
System.out. println ( " x2 =" + p2.x + " y2 =" + p2.y); }
} / / конец второго класса
Ради простоты программы первый класс содержит только данные, а второй
состоит из одного метода main. Скобки после имени класса в операторе new нужны
для параметров. В отличие от языка С++, где оператор new работает с указателями,
в операторе new языка Java имена p1, p2 называются ссылками. Здесь использован простейший вывод на экран. Имя System.out - это имя класса с функциями вывода,
и в нём находится метод println.