Your SlideShare is downloading. ×
0
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
2013 09 12_java_lecture_01
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

2013 09 12_java_lecture_01

3,464

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,464
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Введение в Java Алексей Владыкин 12 сентября 2013 Алексей Владыкин Введение в Java 12 сентября 2013 1 / 35
  • 2. 1 Оргвопросы 2 Знакомьтесь: Java 3 История и эволюция 4 Особенности 5 Синтаксис языка 6 Стандартный инструментарий Алексей Владыкин Введение в Java 12 сентября 2013 2 / 35
  • 3. Оргвопросы Алексей Владыкин Введение в Java 12 сентября 2013 3 / 35
  • 4. Оргвопросы О курсе Лекции, практические сессии, домашние задания Доступны материалы прошлого года (презентации и видео): http://compscicenter.ru/program/course/java2012 Алексей Владыкин Введение в Java 12 сентября 2013 4 / 35
  • 5. Оргвопросы Источники Bruce Eckel Thinking in Java Joshua Bloch Effective Java The Java Language Specification http://docs.oracle.com/javase/specs/jls/se7/html/index.html The Java Virtual Machine Specification http://docs.oracle.com/javase/specs/jvms/se7/html/index.html Алексей Владыкин Введение в Java 12 сентября 2013 5 / 35
  • 6. Знакомьтесь: Java Алексей Владыкин Введение в Java 12 сентября 2013 6 / 35
  • 7. Знакомьтесь: Java Один из самых популярных языков программирования По индексу TIOBE на сентябрь 2013 — самый популярный Используется в смарт-картах (в том числе SIM-картах), в мобильных устройствах, на настольных компьютерах, на серверах Алексей Владыкин Введение в Java 12 сентября 2013 7 / 35
  • 8. Знакомьтесь: Java Java — это не только ценный мех язык программирования, но и. . . Обширная стандартная библиотека Сторонние библиотеки и фреймворки Инструменты разработки (сборка, тестирование) Методология ООП, паттерны проектирования Платформа для альтернативных языков (Clojure, Groovy, JRuby, Jython, Kotlin, Scala) Алексей Владыкин Введение в Java 12 сентября 2013 8 / 35
  • 9. Знакомьтесь: Java Редакции Java Standard Edition (SE) Micro Edition (ME) подмножество SE + специфические библиотеки Enterprise Edition (EE) SE + дополнительные библиотеки и возможности Java Card сильно урезанная версия SE, изменения в виртуальной машине JavaFX инструментарий для создания интерактивных графических приложений Android Алексей Владыкин Введение в Java 12 сентября 2013 9 / 35
  • 10. Знакомьтесь: Java JRE/JDK Java Runtime Environment (JRE) виртуальная машина и стандартная библиотека классов для запуска скомпилированных программ Java Development Kit (JDK) набор инструментов для разработчиков (компилятор), включает в себя JRE Алексей Владыкин Введение в Java 12 сентября 2013 10 / 35
  • 11. Знакомьтесь: Java Реализации Java Oracle Java http://java.oracle.com/ OpenJDK http://openjdk.java.net/ IBM J9 Azul Zing Apache Harmony (retired) еще несколько десятков Алексей Владыкин Введение в Java 12 сентября 2013 11 / 35
  • 12. История и эволюция James Gosling Алексей Владыкин Введение в Java 12 сентября 2013 12 / 35
  • 13. История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы для разработки встраиваемых систем — Green Project; вместо C++ решили создать новый язык, названный Oak Алексей Владыкин Введение в Java 12 сентября 2013 13 / 35
  • 14. История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы для разработки встраиваемых систем — Green Project; вместо C++ решили создать новый язык, названный Oak 1992 первое демонстрационное устройство на новой платформе — PDA Star7 Алексей Владыкин Введение в Java 12 сентября 2013 13 / 35
  • 15. История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы для разработки встраиваемых систем — Green Project; вместо C++ решили создать новый язык, названный Oak 1992 первое демонстрационное устройство на новой платформе — PDA Star7 1993 попытка занять нишу ТВ-приставок для кабельного телевидения Алексей Владыкин Введение в Java 12 сентября 2013 13 / 35
  • 16. История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы для разработки встраиваемых систем — Green Project; вместо C++ решили создать новый язык, названный Oak 1992 первое демонстрационное устройство на новой платформе — PDA Star7 1993 попытка занять нишу ТВ-приставок для кабельного телевидения 1994 фокус на разработке интерактивных приложений (апплетов) для веб-страниц; язык переименован в Java Алексей Владыкин Введение в Java 12 сентября 2013 13 / 35
  • 17. История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы для разработки встраиваемых систем — Green Project; вместо C++ решили создать новый язык, названный Oak 1992 первое демонстрационное устройство на новой платформе — PDA Star7 1993 попытка занять нишу ТВ-приставок для кабельного телевидения 1994 фокус на разработке интерактивных приложений (апплетов) для веб-страниц; язык переименован в Java 1996 Java Development Kit 1.0 Алексей Владыкин Введение в Java 12 сентября 2013 13 / 35
  • 18. История и эволюция 1996 Java Development Kit 1.0 Алексей Владыкин Введение в Java 12 сентября 2013 14 / 35
  • 19. История и эволюция 1996 Java Development Kit 1.0 1997 JDK 1.1, JIT-компиляция Алексей Владыкин Введение в Java 12 сентября 2013 14 / 35
  • 20. История и эволюция 1996 Java Development Kit 1.0 1997 JDK 1.1, JIT-компиляция 1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE Алексей Владыкин Введение в Java 12 сентября 2013 14 / 35
  • 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 Алексей Владыкин Введение в Java 12 сентября 2013 14 / 35
  • 22. История и эволюция 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 12 сентября 2013 14 / 35
  • 23. История и эволюция 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 12 сентября 2013 14 / 35
  • 24. История и эволюция 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 12 сентября 2013 14 / 35
  • 25. История и эволюция 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 12 сентября 2013 14 / 35
  • 26. История и эволюция 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 12 сентября 2013 14 / 35
  • 27. Особенности Алексей Владыкин Введение в Java 12 сентября 2013 15 / 35
  • 28. Особенности Виртуальная машина и байткод Подход C/C++: исходный код → машинный код → процессор программа работает только на той платформе, под которую она скомпилирована Алексей Владыкин Введение в Java 12 сентября 2013 16 / 35
  • 29. Особенности Виртуальная машина и байткод Подход C/C++: исходный код → машинный код → процессор программа работает только на той платформе, под которую она скомпилирована Подход Java: исходный код → байткод виртуальной машины → виртуальная машина → процессор программа работает на любой платформе, где есть виртуальная машина Java “Write once, run anywhere!” Алексей Владыкин Введение в Java 12 сентября 2013 16 / 35
  • 30. Особенности Виртуальная машина и байткод Как быстро работает виртуальная машина? Алексей Владыкин Введение в Java 12 сентября 2013 17 / 35
  • 31. Особенности Виртуальная машина и байткод Как быстро работает виртуальная машина? Интерпретация байткода на порядок (10–20 раз) медленнее исполнения аналогичного машинного кода. . . Алексей Владыкин Введение в Java 12 сентября 2013 17 / 35
  • 32. Особенности Виртуальная машина и байткод Как быстро работает виртуальная машина? Интерпретация байткода на порядок (10–20 раз) медленнее исполнения аналогичного машинного кода. . . но есть Just-In-Time компиляция виртуальная машина компилирует байткод в машинный код используется с JDK 1.1 Алексей Владыкин Введение в Java 12 сентября 2013 17 / 35
  • 33. Особенности Виртуальная машина и байткод Как быстро работает виртуальная машина? Интерпретация байткода на порядок (10–20 раз) медленнее исполнения аналогичного машинного кода. . . но есть Just-In-Time компиляция виртуальная машина компилирует байткод в машинный код используется с JDK 1.1 а также HotSpot адаптивный оптимизирующий JIT-компилятор используется с JDK 1.3 Алексей Владыкин Введение в Java 12 сентября 2013 17 / 35
  • 34. Особенности Виртуальная машина и байткод Как быстро работает виртуальная машина? Интерпретация байткода на порядок (10–20 раз) медленнее исполнения аналогичного машинного кода. . . но есть Just-In-Time компиляция виртуальная машина компилирует байткод в машинный код используется с JDK 1.1 а также HotSpot адаптивный оптимизирующий JIT-компилятор используется с JDK 1.3 в результате Java 7 всего в 1.5–2 раза медленнее C, а в некоторых тестах не хуже или даже быстрее! Алексей Владыкин Введение в Java 12 сентября 2013 17 / 35
  • 35. Особенности Сборка мусора Подход C/C++: выделил память → поработал → освободил память всё управление памятью в руках программиста Алексей Владыкин Введение в Java 12 сентября 2013 18 / 35
  • 36. Особенности Сборка мусора Подход C/C++: выделил память → поработал → освободил память всё управление памятью в руках программиста Подход Java: выделил память → поработал → молодец виртуальная машина считает ссылки на каждый объект освобождает память, когда ссылок больше нет Алексей Владыкин Введение в Java 12 сентября 2013 18 / 35
  • 37. Особенности Безопасность Верификация байткода некорректный байткод будет отвергнут перед исполнением Автоматическое управление памятью нет арифметики указателей невозможно испортить память Встроенный механизм управления правами можно запустить код в «песочнице» без доступа к файлам, к сети, без возможности создавать потоки и т. п. Алексей Владыкин Введение в Java 12 сентября 2013 19 / 35
  • 38. Особенности Многопоточное и распределенное программирование Многопоточность встроенная поддержка потоков богатая библиотека примитивов синхронизации Распределенность встроенные сетевые возможности пересылка данных и объектов по сети работа с удаленными объектами (RMI) Алексей Владыкин Введение в Java 12 сентября 2013 20 / 35
  • 39. Синтаксис языка Алексей Владыкин Введение в Java 12 сентября 2013 21 / 35
  • 40. Синтаксис языка HelloWorld.java public class HelloWorld { public static void main(String [] args) { System.out.println("Hello world!"); } } Java Coding Conventions http://www.oracle.com/technetwork/java/codeconv-138413.html Алексей Владыкин Введение в Java 12 сентября 2013 22 / 35
  • 41. Синтаксис языка HelloWorldWithComments.java /** * Prints "Hello world !" and terminates. * @author Alexey Vladykin */ public class HelloWorldWithComments { /* Canonical example program since 1978, many thanks to K&R :) */ public static void main(String [] args) { // todo: i18n System.out.println("Hello world!"); } } Алексей Владыкин Введение в Java 12 сентября 2013 23 / 35
  • 42. Синтаксис языка PrintArguments.java public class PrintArguments { public static void main(String [] args) { for (int i = 0; i < args.length; ++i) { System.out.println("args["+i+"] = "+args[i]); } } } Алексей Владыкин Введение в Java 12 сентября 2013 24 / 35
  • 43. Синтаксис языка BottlesOfBeer.java public class BottlesOfBeer { public static void main(String args []) { int k = 99; while (k > 0) { System.out.printf( "%d bottle%s of beer on the wall ,n" + "%d bottle%s of beer ,n" + "take one down , pass it around ,n" + "%d bottle%s of beer on the wall .nn", k, ((k != 1) ? "s" : ""), k, ((k != 1) ? "s" : ""), --k, ((k != 1) ? "s" : "") ); } System.out.println("No more bottles of beer on the wall!"); } } Алексей Владыкин Введение в Java 12 сентября 2013 25 / 35
  • 44. Стандартный инструментарий Алексей Владыкин Введение в Java 12 сентября 2013 26 / 35
  • 45. Стандартный инструментарий 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 12 сентября 2013 27 / 35
  • 46. Стандартный инструментарий Отступление: о classpath Все используемые классы должны быть доступны в classpath Всегда содержит классы стандартной библиотеки (jre/lib/rt.jar) По умолчанию содержит текущую директорию «.» Задается как список директорий и/или JAR-файлов Разделитель списка «:» в Unix/Linux/Mac OS X «;» в Windows Алексей Владыкин Введение в Java 12 сентября 2013 28 / 35
  • 47. Стандартный инструментарий 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 12 сентября 2013 29 / 35
  • 48. Стандартный инструментарий Отступление: о MANIFEST.MF Любой JAR-файл содержит META-INF/MANIFEST.MF Пример: Manifest -Version: 1.0 Created -By: 1.6.0 _35 (Sun Microsystems Inc.) Main-Class — имя класса с методом main Class-Path — список необходимых JAR’ов, через пробел Алексей Владыкин Введение в Java 12 сентября 2013 30 / 35
  • 49. Стандартный инструментарий 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 12 сентября 2013 31 / 35
  • 50. Стандартный инструментарий javap Java Disassembler Выводит class-файлы в читабельном виде javap MyClass javap -c MyClass javap -v MyClass Алексей Владыкин Введение в Java 12 сентября 2013 32 / 35
  • 51. Стандартный инструментарий Среды разработки Eclipse IntelliJ IDEA NetBeans Подсветка синтаксиса Автодополнение, гиперссылки Рефакторинг Интерактивный отладчик Алексей Владыкин Введение в Java 12 сентября 2013 33 / 35
  • 52. Стандартный инструментарий Инструменты для сборки Ant Gradle Maven Гибкость Независимость от IDE Возможность сборки в командной строке Алексей Владыкин Введение в Java 12 сентября 2013 34 / 35
  • 53. Что сегодня узнали Что такое Java и с чем её едят В чем особенности Java и отличия от C/C++ Как выглядят программы на Java Как собрать программу на Java Как запустить программу на Java Алексей Владыкин Введение в Java 12 сентября 2013 35 / 35

×