05 - Java. Collections Framework и GenericsRoman Brovko
Обзор стандартных коллекций и их реализации:
* Списки, стеки, очереди.
* Множества.
* Ассоциативные массивы.
Generics:
* Параметризация классов и методов
* Синтаксис и реализация в Java
05 - Java. Collections Framework и GenericsRoman Brovko
Обзор стандартных коллекций и их реализации:
* Списки, стеки, очереди.
* Множества.
* Ассоциативные массивы.
Generics:
* Параметризация классов и методов
* Синтаксис и реализация в Java
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionNikita Lipsky
Говоря о Java, мы подразумеваем как минимум две вещи: JVM (виртуальную Java-машину) и Java-байткод, который исполняется на этой машине.
Внутреннее устройство JVM непростое, но очень важно понимать, из каких частей она состоит, какая часть за что отвечает и как это все вместе работает хотя бы в самых общих чертах. Эти знания помогут вам в понимании того, как работает ваша программа и как можно улучшить ее работу.
В этом докладе мы не будем лезть в кишки какой-то конкретной реализации JVM, однако мы покажем где у JVM кишки расположены, а также где находятся и для чего служат ее печень, сердце, почки, мозг и другие органы.
Java SE 8 has brought lambdas, default methods, type annotations, compact profiles, etc. As a result, the Java SE platform specification was changed to reflect new features.
The session shows how the new Java 8 features have been implemented in Excelsior JET JVM, written from scratch, very different from the Oracle HotSpot JVM, but compatible with the Java SE specification.
As a result, an attendee will refresh his/her memory regarding new Java 8 features, will learn how they affected the JVM specification, how the lambda expressions are translated into Java bytecode and how they can be optimized at the JVM level.
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionNikita Lipsky
Говоря о Java, мы подразумеваем как минимум две вещи: JVM (виртуальную Java-машину) и Java-байткод, который исполняется на этой машине.
Внутреннее устройство JVM непростое, но очень важно понимать, из каких частей она состоит, какая часть за что отвечает и как это все вместе работает хотя бы в самых общих чертах. Эти знания помогут вам в понимании того, как работает ваша программа и как можно улучшить ее работу.
В этом докладе мы не будем лезть в кишки какой-то конкретной реализации JVM, однако мы покажем где у JVM кишки расположены, а также где находятся и для чего служат ее печень, сердце, почки, мозг и другие органы.
Java SE 8 has brought lambdas, default methods, type annotations, compact profiles, etc. As a result, the Java SE platform specification was changed to reflect new features.
The session shows how the new Java 8 features have been implemented in Excelsior JET JVM, written from scratch, very different from the Oracle HotSpot JVM, but compatible with the Java SE specification.
As a result, an attendee will refresh his/her memory regarding new Java 8 features, will learn how they affected the JVM specification, how the lambda expressions are translated into Java bytecode and how they can be optimized at the JVM level.
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
Дмитрий Лукьяненко, QA Automation рассматривает:
- Selenium IDE;
- Selenium WebDriver;
- Page Obgect Pattern;
- Page Factory Pattern;
- локаторы;
- как построить фреймворк и куда его можно дальше развивать.
1. Введение в Java
Алексей Владыкин
8 сентября 2014
Алексей Владыкин Введение в Java 8 сентября 2014 1 / 28
2. 1 Знакомьтесь: Java
2 История и эволюция
3 Особенности
4 Hello World
5 Инструменты разработчика
Алексей Владыкин Введение в Java 8 сентября 2014 2 / 28
4. Знакомьтесь: Java
Почему стоит изучать Java?
Один из самых популярных и востребованных языков
программирования. Много лет в верхних строчках индекса TIOBE
На Java пишут:
высоконагруженные системы (Одноклассники)
корпоративные приложения (Confluence, JIRA)
настольные приложения (Minecraft!)
программы и игры для телефонов, в том числе под Android
апплеты для смарт-карт
интерактивный контент для Blu-ray
Язык развивается и совершенствуется
Алексей Владыкин Введение в Java 8 сентября 2014 4 / 28
5. Знакомьтесь: Java
Java — это не только ценный мех язык программирования, но и. . .
Обширная стандартная библиотека
Сторонние библиотеки и фреймворки
Инструменты разработки (сборка, тестирование)
Методология ООП, паттерны проектирования
Платформа для альтернативных языков
(Clojure, Groovy, JRuby, Jython, Kotlin, Scala)
Алексей Владыкин Введение в Java 8 сентября 2014 5 / 28
6. Знакомьтесь: Java
Что мы будем изучать?
Java Standard Edition (SE)
(а есть еще Micro Edition, Enterprise Edition, JavaCard, Android)
Реализация от Sun/Oracle
(а есть еще Oracle JRockit, IBM J9, Azul Zing, Apache Harmony)
Несколько самых распространенных сторонних библиотек и
инструментов
Алексей Владыкин Введение в Java 8 сентября 2014 6 / 28
8. История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
9. История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
10. История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
11. История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован в Java
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
12. История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован в Java
1996 Java Development Kit 1.0
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
13. История и эволюция
1996 Java Development Kit 1.0
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
14. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
15. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
16. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
17. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
18. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0, изменение нумерации
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
19. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0, изменение нумерации
2006 Java SE 6, уход от понятия «Java 2»
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
20. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0, изменение нумерации
2006 Java SE 6, уход от понятия «Java 2»
2011 Java SE 7
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
21. История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0, изменение нумерации
2006 Java SE 6, уход от понятия «Java 2»
2011 Java SE 7
2014 Java SE 8
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
23. Особенности
Виртуальная машина и байткод
Традиционный подход:
исходный код → машинный код → процессор
программа работает только на той платформе,
под которую она скомпилирована
Алексей Владыкин Введение в Java 8 сентября 2014 11 / 28
24. Особенности
Виртуальная машина и байткод
Традиционный подход:
исходный код → машинный код → процессор
программа работает только на той платформе,
под которую она скомпилирована
Подход Java:
исходный код → байткод виртуальной машины
→ виртуальная машина → процессор
программа работает на любой платформе,
где есть виртуальная машина Java
“Write once, run anywhere!”
Алексей Владыкин Введение в Java 8 сентября 2014 11 / 28
25. Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
26. Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
27. Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
28. Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
29. Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
в результате Java 8 всего в 1.5–2 раза медленнее C,
а в некоторых тестах не хуже или даже быстрее!
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
31. Особенности
Сборка мусора
Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью в руках программиста
Подход Java:
выделил память → поработал → молодец
виртуальная машина считает ссылки на каждый объект
освобождает память, когда ссылок больше нет
Алексей Владыкин Введение в Java 8 сентября 2014 13 / 28
32. Особенности
Безопасность
Верификация байткода
некорректный байткод будет отвергнут перед исполнением
Автоматическое управление памятью
нет арифметики указателей
невозможно испортить память
Встроенный механизм управления правами
можно запустить код в «песочнице» без доступа к файлам, к сети,
без возможности создавать потоки и т. п.
Алексей Владыкин Введение в Java 8 сентября 2014 14 / 28
33. Особенности
Многопоточное и распределенное программирование
Многопоточность
встроенная поддержка потоков
богатая библиотека примитивов синхронизации
Распределенность
встроенные сетевые возможности
пересылка данных и объектов по сети
работа с удаленными объектами (RMI)
Алексей Владыкин Введение в Java 8 сентября 2014 15 / 28
35. Hello World
HelloWorld.java
public class HelloWorld {
public static void main(String [] args) {
System.out.println("Hello world!");
}
}
Java Coding Conventions
Demo
Алексей Владыкин Введение в Java 8 сентября 2014 17 / 28
36. Hello World
Среды разработки
Eclipse
IntelliJ IDEA
NetBeans
Подсветка синтаксиса
Автодополнение, гиперссылки
Рефакторинг
Интерактивный отладчик
Алексей Владыкин Введение в Java 8 сентября 2014 18 / 28
37. Hello World
JRE/JDK
Java Runtime Environment (JRE)
виртуальная машина и стандартная библиотека классов для
запуска скомпилированных программ
Java Development Kit (JDK)
набор инструментов для разработчиков,
включает в себя JRE
Алексей Владыкин Введение в Java 8 сентября 2014 19 / 28
39. Инструменты разработчика
javac
Java Compiler
Компилирует исходный код (*.java) в байткод (*.class)
javac MyClass.java YetAnotherClass.java
javac -d classes MyClass.java
javac -classpath library.jar -d classes MyClass.java
javac -version
Алексей Владыкин Введение в Java 8 сентября 2014 21 / 28
40. Инструменты разработчика
Отступление: о classpath
Все используемые классы должны быть доступны в classpath
По умолчанию содержит текущую директорию «.» и классы
стандартной библиотеки
Задается как список директорий и/или JAR-файлов
Разделитель списка
«:» в Unix/Linux/Mac OS X
«;» в Windows
Алексей Владыкин Введение в Java 8 сентября 2014 22 / 28
41. Инструменты разработчика
jar
Java Archive Tool
Создает и распаковывает JAR-файлы
jar cf library.jar -C classes_dir .
jar cfm library.jar manifest.mf -C classes_dir .
jar cfe library.jar MyMainClass -C classes_dir .
jar tf library.jar
jar xf library.jar
Алексей Владыкин Введение в Java 8 сентября 2014 23 / 28
42. Инструменты разработчика
Отступление: о MANIFEST.MF
Любой JAR-файл содержит META-INF/MANIFEST.MF
Пример:
Manifest -Version: 1.0
Created -By: 1.8.0 _05 (Oracle Corporation)
Main-Class — имя класса с методом main
Class-Path — список необходимых JAR’ов, через пробел
Алексей Владыкин Введение в Java 8 сентября 2014 24 / 28
43. Инструменты разработчика
java
Java Virtual Machine
Исполняет байткод
Главный класс должен иметь метод
public static void main(String[] args)
java MyClass
java -classpath classes_dir;library.jar MyClass
java -jar library_with_main_class.jar
java -version
Алексей Владыкин Введение в Java 8 сентября 2014 25 / 28
44. Инструменты разработчика
Инструменты для сборки
Ant — build.xml
Gradle — build.gradle
Maven — pom.xml
Автоматизация процесса сборки
(компиляция, запуск тестов, генерация документации и т.п.)
Независимость от среды разработки
Возможность сборки в командной строке
Алексей Владыкин Введение в Java 8 сентября 2014 26 / 28
46. Что сегодня узнали
Что такое Java и с чем её едят
В чем особенности Java и отличия от C/C++
Как написать, собрать и запустить программу на Java
Алексей Владыкин Введение в Java 8 сентября 2014 28 / 28