SlideShare a Scribd company logo
Введение в Java
Алексей Владыкин
8 сентября 2014
Алексей Владыкин Введение в Java 8 сентября 2014 1 / 28
1 Знакомьтесь: Java
2 История и эволюция
3 Особенности
4 Hello World
5 Инструменты разработчика
Алексей Владыкин Введение в Java 8 сентября 2014 2 / 28
Знакомьтесь: Java
Алексей Владыкин Введение в Java 8 сентября 2014 3 / 28
Знакомьтесь: Java
Почему стоит изучать Java?
Один из самых популярных и востребованных языков
программирования. Много лет в верхних строчках индекса TIOBE
На Java пишут:
высоконагруженные системы (Одноклассники)
корпоративные приложения (Confluence, JIRA)
настольные приложения (Minecraft!)
программы и игры для телефонов, в том числе под Android
апплеты для смарт-карт
интерактивный контент для Blu-ray
Язык развивается и совершенствуется
Алексей Владыкин Введение в Java 8 сентября 2014 4 / 28
Знакомьтесь: Java
Java — это не только ценный мех язык программирования, но и. . .
Обширная стандартная библиотека
Сторонние библиотеки и фреймворки
Инструменты разработки (сборка, тестирование)
Методология ООП, паттерны проектирования
Платформа для альтернативных языков
(Clojure, Groovy, JRuby, Jython, Kotlin, Scala)
Алексей Владыкин Введение в Java 8 сентября 2014 5 / 28
Знакомьтесь: 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
История и эволюция
James Gosling
Алексей Владыкин Введение в Java 8 сентября 2014 7 / 28
История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован в Java
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
История и эволюция
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован в Java
1996 Java Development Kit 1.0
Алексей Владыкин Введение в Java 8 сентября 2014 8 / 28
История и эволюция
1996 Java Development Kit 1.0
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
История и эволюция
1996 Java Development Kit 1.0
1997 JDK 1.1, JIT-компиляция
Алексей Владыкин Введение в Java 8 сентября 2014 9 / 28
История и эволюция
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
История и эволюция
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
История и эволюция
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
История и эволюция
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
История и эволюция
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
История и эволюция
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
История и эволюция
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
Особенности
Алексей Владыкин Введение в Java 8 сентября 2014 10 / 28
Особенности
Виртуальная машина и байткод
Традиционный подход:
исходный код → машинный код → процессор
программа работает только на той платформе,
под которую она скомпилирована
Алексей Владыкин Введение в Java 8 сентября 2014 11 / 28
Особенности
Виртуальная машина и байткод
Традиционный подход:
исходный код → машинный код → процессор
программа работает только на той платформе,
под которую она скомпилирована
Подход Java:
исходный код → байткод виртуальной машины
→ виртуальная машина → процессор
программа работает на любой платформе,
где есть виртуальная машина Java
“Write once, run anywhere!”
Алексей Владыкин Введение в Java 8 сентября 2014 11 / 28
Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
Особенности
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
в результате Java 8 всего в 1.5–2 раза медленнее C,
а в некоторых тестах не хуже или даже быстрее!
Алексей Владыкин Введение в Java 8 сентября 2014 12 / 28
Особенности
Сборка мусора
Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью в руках программиста
Алексей Владыкин Введение в Java 8 сентября 2014 13 / 28
Особенности
Сборка мусора
Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью в руках программиста
Подход Java:
выделил память → поработал → молодец
виртуальная машина считает ссылки на каждый объект
освобождает память, когда ссылок больше нет
Алексей Владыкин Введение в Java 8 сентября 2014 13 / 28
Особенности
Безопасность
Верификация байткода
некорректный байткод будет отвергнут перед исполнением
Автоматическое управление памятью
нет арифметики указателей
невозможно испортить память
Встроенный механизм управления правами
можно запустить код в «песочнице» без доступа к файлам, к сети,
без возможности создавать потоки и т. п.
Алексей Владыкин Введение в Java 8 сентября 2014 14 / 28
Особенности
Многопоточное и распределенное программирование
Многопоточность
встроенная поддержка потоков
богатая библиотека примитивов синхронизации
Распределенность
встроенные сетевые возможности
пересылка данных и объектов по сети
работа с удаленными объектами (RMI)
Алексей Владыкин Введение в Java 8 сентября 2014 15 / 28
Hello World
Алексей Владыкин Введение в Java 8 сентября 2014 16 / 28
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
Hello World
Среды разработки
Eclipse
IntelliJ IDEA
NetBeans
Подсветка синтаксиса
Автодополнение, гиперссылки
Рефакторинг
Интерактивный отладчик
Алексей Владыкин Введение в Java 8 сентября 2014 18 / 28
Hello World
JRE/JDK
Java Runtime Environment (JRE)
виртуальная машина и стандартная библиотека классов для
запуска скомпилированных программ
Java Development Kit (JDK)
набор инструментов для разработчиков,
включает в себя JRE
Алексей Владыкин Введение в Java 8 сентября 2014 19 / 28
Инструменты разработчика
Алексей Владыкин Введение в Java 8 сентября 2014 20 / 28
Инструменты разработчика
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
Инструменты разработчика
Отступление: о classpath
Все используемые классы должны быть доступны в classpath
По умолчанию содержит текущую директорию «.» и классы
стандартной библиотеки
Задается как список директорий и/или JAR-файлов
Разделитель списка
«:» в Unix/Linux/Mac OS X
«;» в Windows
Алексей Владыкин Введение в Java 8 сентября 2014 22 / 28
Инструменты разработчика
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
Инструменты разработчика
Отступление: о 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
Инструменты разработчика
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
Инструменты разработчика
Инструменты для сборки
Ant — build.xml
Gradle — build.gradle
Maven — pom.xml
Автоматизация процесса сборки
(компиляция, запуск тестов, генерация документации и т.п.)
Независимость от среды разработки
Возможность сборки в командной строке
Алексей Владыкин Введение в Java 8 сентября 2014 26 / 28
Инструменты разработчика
Maven
<?xml version="1.0" encoding="UTF -8"?>
<project xmlns="http: // maven.apache.org/POM /4.0.0"
xmlns:xsi="http: // www.w3.org /2001/ XMLSchema -instance"
xsi:schemaLocation ="http: // maven.apache.org/POM /4.0.0
http: // maven.apache.org/xsd/maven -4.0.0. xsd">
<modelVersion >4.0.0 </ modelVersion >
<groupId >ru. compscicenter .java2014 </groupId >
<artifactId >hello -world </artifactId >
<version >1.0 </version >
</project >
mvn clean install
Demo
Алексей Владыкин Введение в Java 8 сентября 2014 27 / 28
Что сегодня узнали
Что такое Java и с чем её едят
В чем особенности Java и отличия от C/C++
Как написать, собрать и запустить программу на Java
Алексей Владыкин Введение в Java 8 сентября 2014 28 / 28

More Related Content

What's hot

07 - Java. Элементы функционального программирования в Java
07 - Java. Элементы функционального программирования в Java07 - Java. Элементы функционального программирования в Java
07 - Java. Элементы функционального программирования в Java
Roman Brovko
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
Igor Shkulipa
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
Igor Shkulipa
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
Igor Shkulipa
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
Igor Shkulipa
 
объектно ориентированная платформа для построения
объектно ориентированная платформа для построенияобъектно ориентированная платформа для построения
объектно ориентированная платформа для построения
Gennady Zavyalov
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
Nikita Lipsky
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
Igor Shkulipa
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
muqaddas_m
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
Igor Shkulipa
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
Igor Shkulipa
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
Igor Shkulipa
 
Java 8 Support at the JVM Level
Java 8 Support at the JVM LevelJava 8 Support at the JVM Level
Java 8 Support at the JVM Level
Nikita Lipsky
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
 
. Kotlin для Автоматизации тестирования – первые впечатления
. Kotlin для Автоматизации тестирования – первые впечатления. Kotlin для Автоматизации тестирования – первые впечатления
. Kotlin для Автоматизации тестирования – первые впечатления
COMAQA.BY
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
Igor Shkulipa
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
Igor Shkulipa
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
Unguryan Vitaliy
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
Technopark
 

What's hot (20)

07 - Java. Элементы функционального программирования в Java
07 - Java. Элементы функционального программирования в Java07 - Java. Элементы функционального программирования в Java
07 - Java. Элементы функционального программирования в Java
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
объектно ориентированная платформа для построения
объектно ориентированная платформа для построенияобъектно ориентированная платформа для построения
объектно ориентированная платформа для построения
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
Java 8 Support at the JVM Level
Java 8 Support at the JVM LevelJava 8 Support at the JVM Level
Java 8 Support at the JVM Level
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
. Kotlin для Автоматизации тестирования – первые впечатления
. Kotlin для Автоматизации тестирования – первые впечатления. Kotlin для Автоматизации тестирования – первые впечатления
. Kotlin для Автоматизации тестирования – первые впечатления
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 

Similar to 01 - Java. Введение в Java

0. hello java world
0. hello java world0. hello java world
0. hello java world
Oleksandr Zahoruiko
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbitjskonst
 
Lesson 01
Lesson 01Lesson 01
Lesson 01
Stormdjent
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
Леонид Ставила
 
Полезное покрытие кода
Полезное покрытие кодаПолезное покрытие кода
Полезное покрытие кода
SQALab
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Mikhail Shcherbakov
 
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0beloslab
 
SAI
SAISAI
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Ruby Meditation
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
Alexander Syrotenko
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Badoo Development
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
ITCrowd Almaty
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
DataArt
 
1. Введение в Java
1. Введение в Java1. Введение в Java
1. Введение в Java
DEVTYPE
 

Similar to 01 - Java. Введение в Java (20)

0. hello java world
0. hello java world0. hello java world
0. hello java world
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbit
 
Lesson 01
Lesson 01Lesson 01
Lesson 01
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
V1
V1V1
V1
 
V1
V1V1
V1
 
Полезное покрытие кода
Полезное покрытие кодаПолезное покрытие кода
Полезное покрытие кода
 
Использование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектахИспользование Visual Studio Tools for Apache Cordova в реальных проектах
Использование Visual Studio Tools for Apache Cordova в реальных проектах
 
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
 
SAI
SAISAI
SAI
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
Доклад Виталия Котова на конференции LoveQA. "Selenium тесты. От RC и одного ...
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
1. Введение в Java
1. Введение в Java1. Введение в Java
1. Введение в Java
 
Intro
IntroIntro
Intro
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 

More from Roman Brovko

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
Roman Brovko
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
Roman Brovko
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
Roman Brovko
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
Roman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
Roman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
Roman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
Roman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
Roman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
Roman Brovko
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
Roman Brovko
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
Roman Brovko
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
Roman Brovko
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
Roman Brovko
 

More from Roman Brovko (20)

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 

01 - Java. Введение в Java

  • 1. Введение в Java Алексей Владыкин 8 сентября 2014 Алексей Владыкин Введение в Java 8 сентября 2014 1 / 28
  • 2. 1 Знакомьтесь: Java 2 История и эволюция 3 Особенности 4 Hello World 5 Инструменты разработчика Алексей Владыкин Введение в Java 8 сентября 2014 2 / 28
  • 3. Знакомьтесь: Java Алексей Владыкин Введение в Java 8 сентября 2014 3 / 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
  • 7. История и эволюция James Gosling Алексей Владыкин Введение в Java 8 сентября 2014 7 / 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
  • 30. Особенности Сборка мусора Подход C/C++: выделил память → поработал → освободил память всё управление памятью в руках программиста Алексей Владыкин Введение в Java 8 сентября 2014 13 / 28
  • 31. Особенности Сборка мусора Подход C/C++: выделил память → поработал → освободил память всё управление памятью в руках программиста Подход Java: выделил память → поработал → молодец виртуальная машина считает ссылки на каждый объект освобождает память, когда ссылок больше нет Алексей Владыкин Введение в Java 8 сентября 2014 13 / 28
  • 32. Особенности Безопасность Верификация байткода некорректный байткод будет отвергнут перед исполнением Автоматическое управление памятью нет арифметики указателей невозможно испортить память Встроенный механизм управления правами можно запустить код в «песочнице» без доступа к файлам, к сети, без возможности создавать потоки и т. п. Алексей Владыкин Введение в Java 8 сентября 2014 14 / 28
  • 33. Особенности Многопоточное и распределенное программирование Многопоточность встроенная поддержка потоков богатая библиотека примитивов синхронизации Распределенность встроенные сетевые возможности пересылка данных и объектов по сети работа с удаленными объектами (RMI) Алексей Владыкин Введение в Java 8 сентября 2014 15 / 28
  • 34. Hello World Алексей Владыкин Введение в Java 8 сентября 2014 16 / 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
  • 38. Инструменты разработчика Алексей Владыкин Введение в Java 8 сентября 2014 20 / 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
  • 45. Инструменты разработчика Maven <?xml version="1.0" encoding="UTF -8"?> <project xmlns="http: // maven.apache.org/POM /4.0.0" xmlns:xsi="http: // www.w3.org /2001/ XMLSchema -instance" xsi:schemaLocation ="http: // maven.apache.org/POM /4.0.0 http: // maven.apache.org/xsd/maven -4.0.0. xsd"> <modelVersion >4.0.0 </ modelVersion > <groupId >ru. compscicenter .java2014 </groupId > <artifactId >hello -world </artifactId > <version >1.0 </version > </project > mvn clean install Demo Алексей Владыкин Введение в Java 8 сентября 2014 27 / 28
  • 46. Что сегодня узнали Что такое Java и с чем её едят В чем особенности Java и отличия от C/C++ Как написать, собрать и запустить программу на Java Алексей Владыкин Введение в Java 8 сентября 2014 28 / 28