- •Краткая историческая справка.
- •Преимущества языка Java.
- •Недостатки java:
- •Лекция 2. Этапы разработки java-приложений. Этапы разработки java-приложений.
- •Установка jdk.
- •Инсталляция исходных кодов библиотек
- •Инсталляция пакета документации.
- •Тестирование правильности установки и создание простейшей программы
- •Визуальные среды программирования.
- •Лекция 3. Переменные и типы данных. Переменные и типы данных.
- •Подробности о примитивных типах.
- •Лекция 4. Операторы и функции. Операторы и функции.
- •Операторы ветвлений и циклов.
- •Оператор цикла while.
- •Оператор цикла for.
- •Лекция 5. Объектно ориентированное программирование Объектно ориентированное программирование.
- •Определение объекта.
- •Инкапсуляция.
- •Наследование.
- •Полиморфизм (перегрузка).
- •Пример ооп – программы.
- •Отличие перегрузки функций от переопределения.
- •Отличие классов от интерфейсов.
- •Лекция 6. Массивы и строки. Массивы и строки.
- •Многомерные массивы.
- •Приведение типов и динамические массивы.
- •Строки в java.
- •Лекция 7. Организация ввода-вывода данных Организация ввода-вывода данных.
- •Функции стандартной библиотеки ввода/вывода.
- •Новая библиотека ввода/вывода.
- •Классы потокового ввода/вывода из пакета java.Io.
- •Лекция 8. Обработка исключений. Обработка исключений.
- •Классификация исключений.
- •Перехват исключений блоками try/catch.
- •Самостоятельное выбрасывание исключений.
- •Разработка собственных классов исключений.
- •Лекция 9. Потоки. Потоки.
- •1. Cпециальный класс Thread.
- •2. Реализация интерфейса Runnable.
- •Выбор между использованием класса Thread и интерфейса Runnable.
- •Синхронизация потоков с помощью оператора synchronized.
- •Синхронизация потоков с помощью семафоров.
- •Лекция 10. Подключаемые библиотеки java. Подключаемые библиотеки java.
- •Библиотека awt
- •Внутреннее устройство системы обработки событий awt.
- •Библиотека Swing.
Новая библиотека ввода/вывода.
Преимущества библиотеки nio. Нет булевских флагов, вместо них методы бросают исключения. Более широкий набор возможностей. Методы позволяют работать с расширенными атрибутами файлов, например с правами доступа, или с владельцем файла.
Появилась возможность работы с символическими ссылками, в частности создавать их или узнавать, куда символическая ссылка ведет. И, кроме того, появились корректные, платформенно – независимые методы переименования или перемещения.
В новом API аналогом прежнего класса File является класс java.nio.file.Path.
Аналоги функций, ранее присутствовавших в классе File:
import java.nio.File;
import java.nio.file.Path;
…
Path path = Paths.get(“home/src/java”);
File fromPath = path.toFile();
Path fromFile = fromPath.toPath();
Новые методы:
Path my_path = Paths.get(“/usr/bin/java”);
my_path.isAbsolute(); // true
my_path.getFileName(); // java
my_path.getParent(); // "/usr/bin"
my_path.getNameCount(); // 3
my_path.getName(1); // bin - получение компонента пути по его индексу
my_path.resolveSibling(“javap”); // "/usr/bin/javap"
my_path.startsWith(“/usr”); // true - является ли один путь префиксом другого
Path.get("/usr").relativize(my_path); // "bin/java" – вычисление относительного пути
Для работы с файлами в новом классе так же есть как аналоги прежних функций, так и новые удобные методы:
Path java = Path.get("/usr/bin/java");
Files.exists(java);
Files.isRegularFile(java);
Files.size(java);
Files.getLastModifiedTime(java).toMillis(); // время посл. Модификации в ms.
Files.copy(java, Path.get("/usr/bin/java_copy"), StandardCopyOption.REPLACE_EXISTING);
Files.move( …);
Методы копирования и перемещения позволяют задавать дополнительные опции и не имеют ограничений, связанных с типом платформы.
В новом API cерьезно изменен метод получения содержимого директории:
Path user_bin = Path.get("/usr/bin");
Files.exists(user_bin); // true
Files.isDirectory(user_bin); // true
try (DirectoryStream<Path> dirStream =
Files.newDirectoryStream(user_bin)) {
for(Path child : dirStream) {
System.out.println(child);
}
}
Содержимое директории получают с помощью статического объекта DirectoryStream, в который можно дополнительно передать фильтр (user_bin). Объект DirectoryStream связан с потреблением ресурсов системы, поэтому по завершении работы с ним его ресурс нужно освобождать, для чего служит заключение его в блок try {…}
Объект позволяет обрабатывать содержимое больших директорий в потоковом режиме небольшими порциями.
Для создания директорий используется пара аналогичных методов с тем же смыслом, что и в методах класса File:
Path dir = Path.get("/a/b/c");
Files.createDirectory(dir);
Files.createDirectories(dir);
В новом API появилась возможность поддержки виртуальных файловых систем в том смысле, что можно открыть какой-либо zip – архив и работать с ним совершенно прозрачно, как с обычной директорией с файлами. Так же точно можно реализовать работу с файлами любого другого архиватора, или даже с файловой системой удаленного компьютера.
