Смекни!
smekni.com

Распределенные системы обработки информации (стр. 1 из 7)

Распределенные системы обработки информации

Недашковский Вячеслав Михайлович

Лекции 2006


Содержание

Литература

1. Язык программирования Java

1.1. История и предпосылки

1.2. Сопоставление с C++

1.3. Архитектура Java

1.4. Синтаксис Java

1.5. Простые типы в Java

1.6. Классы и объекты в Java.

1.7. Переменные, именованные константы, массивы, перечисления в Java.

1.8. Наследование и о классе Class.

1.9. Интерфейсы и обратные вызовы в Java.

1.10. Вложенные классы и интерфейсы.

1.11. Цикл for-each, аргументы переменной длины, настраиваемые типы в Java.

1.12. Многопоточность в Java: создание потоков.

1.13. Многопоточность в Java: синхронизация

1.14. Ввод-вывод в Java: общие сведения.

1.15. Форматированный ввод-вывод в Java (J2SE 1.5)

1.16. О программировании графики в Java.

1.17. Реализация технологии клиент-сервер на Java.

1.18. Апплеты в Java.

1.19. Технология RMI в Java.

1.20. Об интерфейсе JDBC.

1.21. Общие сведения о технологии CORBA.

2. Общие положения теории РСОИ

2.1. Понятие о РСОИ

2.2. Примеры РСОИ.

2.3. Нефункциональные требования к РСОИ

2.4. Прозрачность в РСОИ

2.5. Удаленный вызов процедуры: общие сведения

2.6. Передача параметров при удаленном вызове процедур.

2.7. Организация распределенных объектов

2.8. Передача параметров при обращении к удаленным объектам.

2.9. Серверы объектов.

2.10. Перенос кода в РСОИ

2.11. Модель клиент-сервер

2.12. Общие сведение об именовании объектов и службе именования

2.13. Общие сведения о синхронизации в РСОИ

2.14. Жизненный цикл распределенных объектов

3. Технология J2EE

3.1. Общие сведения

3.2. Архитектура J2EE

3.3. EJB – Enterprise Java Beans


Литература

1. Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. Язык программирования Java, 3-е изд. пер. с. англ. –М: изд. дом «Вильямс», 2002.

2. Таренбаум Э. Распределенные системы. Принципы и парадигмы. –СПб: Питер, 2003 – 877с.

3. Эммерих В. Конструирование распределенных объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/Com и Java/RMI.

4. Изимбал А. А., Анишина М.Л. Технология создания распределенных систем для профессионалов – СПб:

Цель курса: привести основные сведения о языке Java а также общие сведения о РС, и технологиях создания РС; дать первичные навыки программирования на языке Java.


Язык программирования Java

1.1. История и предпосылки

1991г. Группа инжинеров SUN занялась разработкой языка, который можно было бы использовать в бытовых устройствах. Идея – создать язык, который бы не зависил ни от машины, ни от процессора. За основу был взять синтаксис С++. Язык не был востребован. Решили написать браузер с использованием этой технологии. 1 версия языка появилась в 1996 году. 1998 году вышла версия языка Java 1.2 – полноценный язык. Язык платформенно независим. Недостаток – быстродействие. Программы выполняются под виртуальной машиной. Компиляция программ происходит в т.н. байткод, которые потом интерпретируется средой исполнения. В среде исполнения, в свою очередь, присутствует менеджер безопасности. Оcобености:

1. Мобильный код – одна программа, много вычислительных платформ.

2. Безопасный код – встроенная в язык защита от несанкционированного доступа к ресурсам компьютера.

3. Устойчивый код - обнаружение ошибок возможно на ранних стадиях проектирования. Больше нет ошибок управления памятью.

Java написан на основе C++ – синтаксис очень похож.

1.2. Сопоставление с C++

C++

Java

Разедление на объявления и определения

нет

Const

нет, есть final

>> - нет разницы между логическим и арифметическим сдвигом

>> - арифметический

>>> - логический

0, 1

false, true

строки как таковые отсутствуют

ReadOnly, в памяти под новую строку формируется место, старая исчезает из области видимости

goto

нет goto, зато есть break <метка>


1.2 Архитектура Java

Промежуточный код – байт код – виртуальной машины Java. Управляемый код не может содержать указателей. Обязательно должен присутствовать сборщик мусора.

1.3. Синтаксис Java

Простейшая программа:

class Hello { public static void main(String[] args) {

System.out.println(“Hello world!”); }}

Модификаторы и функция main нужны, чтобы класс был приложением. String[] – массив. Так как в метод main не передается адрес объекта, то он объявлен с модификатором static, а адрес объекта не передается, так как до вызова никакого объекта не создавалось, то передавать нечего.

class Fib {/** Вывод на экран последовательности чисел Фибоначчи, меньших 50 */ public static void main(String[] args) { int l = 1, ni = 1; System.out.println(l); while (ni < l) { System.out.println(ni); ni = l+ni; // новое значение ni l = ni-l; /* новое значение l */ } }} Простые типы в Java

Обозначение типа

Размер (bit)

Примечание

byte

8

знаковый

short

16

знаковый

int

32

знаковый

long

64

знаковый

float

32

знаковый

double

64

знаковый

char

16

Unicode

1.4. Классы и объекты в Java.

Программа на языке Java – совокупность классов. Объявление класса:

{public, final|abstract} class ClassName

{

[constructors]

[variables]

[methods]

public static void main(String[] args) { … }

}

public – класс виден всем остальным классам (если не указан, класс виден только в своем пакете), final – от класса нельзя породить потомков, abstract – нельзя создать экземпляр класса. Функция main не обязательна, это точка входа в программу.

Классы организуются в пакеты (аналог пространств имен). В одном файле может быть только один public-класс.

Создание объекта:

new ClassName(параметры конструктора). Возвращает ссылку на объект.

Класс может содержать объявления конструкторов:

public ClassName(параметры...) { ... }

Если ни один конструктор не определен, неявно определяется конструктор без параметров, которые устанавливает все поля в значения по умолчанию (числа – в нуль, логические – в ложь, ссылки – в null).

В первой строке конструктора можно вызвать другой конструктор:

public MyClass(String a) { … }

public MyClass() { this(“default”); … }

Определение методов:

{public|private|protected} {тип возвр. значения | void} ИмяМетода(параметры метода) { тело метода }

public – метод доступен всем классам, private – только данному классу, protected – только данному классу и его наследникам, без указания спецификатора – метод доступен в пределах пакета.

Определение поля:

{public|private|protected} тип имя [= значение];

Инициализационный блок используется для установки начальных значений:

[static] { операторы присваивания... }

Статический инициализационный блок может инициализировать только статические переменные.

Порядок инициализации объекта:

1. Все поля инициализируются значениями по умолчанию.

2. Срабатывают инициализаторы полей и инициализационные блоки в порядке их следования в коде.

3. Если в первой строке конструктора вызывается другой конструктор, он выполняется.

4. Выполняется конструктор.

5. В классе можно определить метод finalize(), который будет выполняться при сборке мусора.


1.5 Переменные, именованные константы, массивы, перечисления в Java

Переменные – простых типов и ссылочные. Простые непосредственно содержат значение, ссылочные – ссылку на объект. Ссылочным переменным можно присвоить null.

Простые типы: int, short, long, byte, float, double, char, boolean. Беззнаковых типов нет. Размерность типов не зависит от платформы. Char всегда 2 байта.

Для простых типов есть их объектные аналоги: Integer, Character и т.п.

Константы обозначаются ключевым словом final (например, final double MAX = 5; - требуется явная инициализация при объявлении).

Массив – объект, содержащий ссылки на другие объекты.

MyType[] array = new MyType[5];

array[3] = new MyType();

int size = array.length; // 5

int[] iarr = { 1, 2, 3 };

Изначально всем элементам массива присваиваются значения по умолчанию.

Класс java.util.Arrays содержит статические методы для работы с массивами: сравнение, сортировка, поиск и т.п.

Перечисление – тип объекта, который может принимать ограниченное множество значений. Раньше для этого использовались классы, унаследованные от интерфейса Enumeration (методы hasMoreElements() и nextElement()). В Java 5 появился enum, как в C++.

public enum MyEnum { FIRST, SECOND, THIRD };

Enum – это полноценный класс, его значения – экземпляры класса. Каждому значению можно сопоставить параметры конструктора: