Основы платформы Java "Как можно определить место технологии Java в отрасли и на рынке - она везде" Relex 2007.

Презентация:



Advertisements
Похожие презентации
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
Advertisements

Платформа Java SE: введение Андрей Дмитриев
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Java : массивы и коллекции. Массивы Массивы простых типов: int []a = new int[10]; int []b = new int[]{ 0, 1, 2, 3, 4, 5 }; Массивы ссылочных типов (reference.
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
1 Java 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ. 2 ООП Базовый способ борьбы со сложностью программных продуктов. Методология программирования, основанная на представлении.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Обработка исключений.
Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Содержание Перечисления Метаданные Другие возможности.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
1 Java. Введение JDK, JRE, JVM, IDE Ерофеева Елена Анатольевна ассистент кафедры МПУ.
Транксрипт:

Основы платформы Java "Как можно определить место технологии Java в отрасли и на рынке - она везде" Relex 2007

Стандарты Java JSE – Java Platform, Standard Edition Стандарт платформы для разработки Desktop и серверных приложений JEE – Java Platform, Enterprise Edition Стандарт платформы для работки приложений уровня предприятия Расширяет JSE JME – Java Platform, Mobile Edition Стандарт платформы для мобильных устройств Содержит малую часть JSE и ряд специфичных классов для взаимодействия с аппаратной частью мобильных устройств Наименее стандартизованная область Java

Какие бывают Java приложения Приложение (application) Сервлет (servlet) - не только HTML Апплет (applet) Плагин (plugin) Мидлет (midlet)

Версии Java SE JDK 1.0 (January 23, 1996) Исходная точка JDK 1.1 (February 19, 1997) AWT, inner classes, JavaBeans, JDBC, RMI J2SE 1.2 (December 8, 1998) Playground reflection, Swing, JIT, CORBA, Collections J2SE 1.3 (May 8, 2000) Kestrel HotSpot, RMI via CORBA, JavaSound, JNDI, JPDA J2SE 1.4 (February 6, 2002) Merlin assert, RegExp, non-blocking NIO, loggin, exception chaining XML, XSLT | JCE, JSSE, JAAS | Java Web Start J2SE 5.0 (September 30, 2004) Tiger Generics, annotations, Autoboxing, Enumerations, synth, Varargs, for loop Java SE 6 (December 11, 2006) Mustang Scripting, JDBC 4.0, DBMS included, GUI improvements Java SE 7 Dolphin

Язык Java Simple Object-oriented Network-savvy Robust Secure Architecture neutral Portable Interpreted High-performance Multithreaded Dynamic language Internationalization supp. JavaDoc Простой Объектно ориентированный Сетевой Надёжный Безопасный архитектурно нейтральный Портируемый Интерпретируемый Высокопроизводительный Многопоточный Динамический Строки в Unicode и др. Документация из исходного кода html

Чего нет в Java Нет: structs, unions, typedefs перегрузки операторов (operator +=) ссылочной арифметики (&(*(++p)->v[1])) Препроцессора (portable) Функций не членов классов (полностью ОО) особенностей зависящих от реализации (размер int) inline, register, const, friend (деловые отношения классов) множественного наследования классов Необходимости в ручную освобождать память или пересобирать приложение для запуска под другой платформой

Примитивные типы данных Парные классы: Boolean Character Byte Short Integer Long Float Double Типы: boolean char 16-bit Unicode byte 8-bit integer short 16-bit integer int 32-bit integer long 64-bit integer float 32-bit floating point double 64-bit floating point Примитивные типы данных: хранятся в стеке либо как поля класса передаются по значению знаковые (signed) имеют парные объектные типы

java.lang.Object Создание и деиницаилизация: Конструктор Object() protected void finalize() //вместо деструктора но не то же самое Создание копии: protected Object clone() Метаинформация: Class getClass() //то же можно получить через Object.class Сравнение: boolean equals(Object obj) int hashCode() Поддержка многопоточности: void notify() void notifyAll() void wait() Представление: String toString() Java API Docs

Создание экземпляра класса Все объекты хранятся в heap Object obj = new Object(); //новы экземпляр Object obj2 = obj; //ссылка на тот же объект obj = null; //obj не ссылается на объект

java.lang.String public final class String implements java.io.Serializable, Comparable, CharSequence Unicode UTF-16 Значение String не изменяемое, любое изменение порождает копию Для конкатенации большого количества строк следует использовать: StringBuilder - fast StringBuffer - thread-safe Java API Docs

Структура String int length() //Количество символов int indexOf(int ch) int lastIndexOf(int ch) boolean matches(String regex) boolean contains(CharSequence s) boolean startsWith(String prefix) boolean endsWith(String suffix) int compareTo(String anotherString) boolean equalsIgnoreCase(String str) Java API Docs

Данные String char charAt(int index) String substring(int beginIndex, int endIndex) byte[] getBytes(String charsetName) static String format(String format, Object... args) //то же что printf static String valueOf(...) String toLowerCase() String toUpperCase() String trim() String[] split(String regex) String replace(char oldChar, char newChar) String replaceAll(String regex, String replacement) replaceFirst(...) Java API Docs

Преобразование строки в значение Boolean: //true только если s='true' static boolean parseBoolean(String s) static Boolean valueOf(String s) Integer: static int parseInt(String s) static int parseInt(String s, int radix) static Integer valueOf(String s) Double: static double parseDouble(String s) static Double valueOf(String s) Java API Docs

Массивы Массивы объекты доступ к элементу arr[ index ] элементы массива нумеруются с 0 (Zero bazed index) производится проверка диапазона значения индекса (Range check) arr.length количество элементов массива массивы одномерны (матрица массив массивов) Пример: int[] arr = new int[]{1,2,3}; int[] arr = new int[3]; Object[] arr = new Object[N]; float[][] matrix = new float[3][];

Пакеты и видимость классов Для организации структуры классов в Java существует понятие пакета пакеты имеют иерархическую структуру (каталоги) пакеты задают уникальные пространства имён для типов, который они содержат классы одного пакета имеют доступ к protected и package полям друг друга в остальном, не имеет значение в каких пакетах расположены классы, они смогут найти друг друга пакет может содержать определения следующих типов: Classes Interfaces Enumerated types Annotations пакеты принято именовать начиная с перевёрнутого доменного имени: package ru.relex.megaproject; Для получения доступа к классу используется директива import: import java.awt.event.*; import java.awt.event.ActionEvent; Пакет java.lang.* является видимым по умолчанию для всех классов l e

Пакеты и JAR Приложение может состояить из тысяч java классов Для компактности java поддерживает хранение классов в специальном zip архиве Архив должен иметь расширение jar Должен содержать корневой каталог META-INF содержащий мета информацию о классах Один JAR файл может содержать произвольное количество java пакетов и классов, а так же других ресурсов – произвольных файлы к которым классы могут получить доступ

Java ООП Классы: Пользовательские классы могут быть использованы так же, как и встроенные классы Все классы наследуются от Obejct Все методы являются виртуальными Всё является объектом (autoboxing) Не поддерживается множественное наследование final запрещает перекрытие метода/класса в наследнике Generic (настраиваемые) классы (templates C++) Можно определять абстрактные классы и методы Все объекты выделяются в куче Тип любого объекта можно получить в runtime null != 0 Интерфейсы: Есть множественное наследование интерфейсов Возможно определение абстрактного интерфейса

Три кита ООП Инкапсуляция – сокрытие реализации: public – виден всем protected – внутри пакета и дочерним классам – без модификатора, внутри пакета private – видимость только внутри класса getters/setters методы – доступ к полям через методы Наследование – преемственность функциональности: class A extends B Полиморфизм – отделение интерфейса и реализации: interface все методы виртуальные позднее связывание для всех методов кроме final

Классы Java public class файл может содержать только 1 public class имя класса и имя файла должны совпадать class - видимость внутри пакета/файла static class может содержать только статические поля и методы abstract class нельзя создать экземпляр может содержать нереализованные методы inner class (внутренний класс) класс определённый внутри другого класса имеет доступ к полям внешнего класса, как к своим inline class (анонимный класс) определения класса внутри метода имеет доступ и к final локальным переменным метода final class атрибут final запрещает наследоваться от класса

Интерфейсы Java Определение интерфейса может содержать только: абстрактные методы static final поля (константы) интерфейсы поддерживают множественное наследование интерфейс может быть abstract

Модель исключений Java и Throwable Содержание ошибки String getMessage() Throwable getCause() Пример: java.io.FileNotFoundException: test.txt (Не удается найти указанный файл) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream. (Unknown Source) at ru.Test2.missingFile(Test.java:33) at ru.Test.main(Test.java:18) Место возникновения ошибки StackTraceElement[] getStackTrace() void printStackTrace() void printStackTrace(PrintStream s) Java API Docs

Иерархия исключений Throwable Error NoClassDefFoundError Exception (checked) IOException RuntimeExceptin (unchecked) NullPointerException Java/J2EE Job Interview Companion

Обработка исключения try { //здесь может вылететь исключение throw new... } catch(IOException ex){ //Обработка исключения IOException //и всех его наследников } catch(Exception ex){ //Здесь будут пойманы все исключения //включая runtime исключения } catch(Error er){ //Здесь будут пойманы //действительно серьёзные ошибки исполнения } catch(Throwable th){ //Здесь будет поймано вообще любое //исключение } finally { //Код выполняется вне зависимости от того //было в блоке try исключение или нет //Обычно используется для освобождения ресурсов }

Основы структур данных Java Object – единый базовый класс equals(Object o) hashCode() Comparable int compareTo(T o) Comparator int compare(T o1, T o2) boolean equals(Object obj) Iterable Iterator iterator() Iterator boolean hasNext() E next() void remove()

Структуры данных – Интерфейсы Группы List Queue Set SortedSet Collection Алгоритмы Collections Arrays Отображения Map SortedMap Dictionary

Реализации java.util.Set HashSet LinkedHashSet - сохраняет порядок добавления TreeSet - поддерживает порядок элементов BitSet EnumSet >

java.util.List ArrayList - быстрый доступ по индексу LinkedList - быстрая вставка в середину Не рекомендуется использовать медленные: Stack Vector

java.util.Map HashMap LinkedHashMap TreeMap ConcurrentHashMap Не рекомендуется использовать медленные: Hashtable

Алгоритмы Arrays asList(arr) binarySearch(arr,val) sort(arr) equals(arr1,arr2) fill(arr,val) Collections addAll(col,arr) binarySearch(list,val) max(col) min(col) reverse(list) shuffle(list) sort(list) synchronizedList/Map/Set unmodifiableList/Map/Set

Пример приложения на Java package ru.relex; import java.util.Date; public class Hello { /** * Возможная точка входа в программу. args аргументы командной строки */ public static void main(String[] args) { System.out.println("Halloa, today is "+new Date()); } > Halloa, today is Sat Dec 01 20:38:33 MSK 2007

Для запуска Java приложения нужно установить Java Runtime Environment Среда исполнения, набор стандартных библиотек Для разработки – Java Development Kit JRE, компилятор, вспомогательные утилиты Что нужно что бы запустить Java приложение

Как запустить Java приложение / /ru /relex Hello.java Hello.class compile.bat javac -classpath. ru/relex/Hello.java run.bat java -classpath. ru.relex.Hello

HotSpot -client быстрая загрузка приемлемая производительность -server медленный запуск высокая производительность

Другие способы запустить Java JAR/META-INF/MANIFEST.MF Main-Class: run.bat java.exe javaw.exe Есть утилиты позволяющие генерировать EXE Jnlp Java Web Start – ссылка на web ресурс с приложением

Компиляция Для сборки Java проектов часто используют ANT ANT это аналог make XML синтаксис скриптов сборки Реализован на Java

Стек технологий Java