5.54M
Category: programmingprogramming

Java. Введение. Лекция 1

1.

Java. Лекция 1
Введение

2.

Немного о серьезном

3.

Расположите следующие пункты в порядке их значимости
Избежать повреждения оборудования (инструментов) и материалов
Выполнить работу
Избежать травм
Поддержать хорошие взаимоотношения в коллективе

4.

Мирное время
Избежать травм
Избежать повреждения оборудования (инструментов) и материалов
Выполнить работу
Поддержать хорошие взаимоотношения в коллективе

5.

Военное положение
Выполнить работу
Избежать травм
Избежать повреждения оборудования (инструментов) и материалов
Поддержать хорошие взаимоотношения в коллективе

6.

Для успешного решения поставленной задачи необходимо учесть все
возможные начальные условия, даже те, которые в явном виде не заданы!
Представьте реальный случай:
Два студента читают методичку и истерически смеются:
- ...учащиеся старших групп должны уметь дифференцировать простые линейные формы...
Проходит волна смеха, и заикаясь они пытаются прочитать эту фразу еще раз.
Снова взрыв хохота...
Методичка была посвящена проблемам обучения детишек в детском саду, а фраза означала
умение отличать круг от квадрата.

7.

?
Поддержать хорошие взаимоотношения в коллективе

8.

Пирамида потребностей по Маслоу
ПОТРЕБНОСТЬ В САМОАКТУАЛИЗАЦИИ:
реализация своих
целей, способностей,
развитие собственной
личности
ЭСТЕТИЧЕСКИЕ ПОТРЕБНОСТИ:
гармония, порядок, красота
ПОЗНАВАТЕЛЬНЫЕ ПОТРЕБНОСТИ:
знать, уметь, понимать, исследовать
ПОТРЕБНОСТЬ В УВАЖЕНИИ (ПОЧИТАНИИ):
компетентность, достижение успеха, одобрение, признание
ПОТРЕБНОСТЬ В ПРИНАДЛЕЖНОСТИ И ЛЮБВИ:
принадлежность к общности, быть принятым, любить и быть любимым
ПОТРЕБНОСТЬ В БЕЗОПАСНОСТИ:
чувствовать себя защищённым, избавиться от страха и неудач
ФИЗИОЛОГИЧЕСКИЕ (ОРГАНИЧЕСКИЕ) ПОТРЕБНОСТИ:
голод, жажда, половое влечение и другие

9.

Для успешного решения поставленной задачи необходимо учесть все
возможные начальные условия, даже те, которые в явном виде не заданы!

10.

Взгляд внутрь…

11.

Критерии качества программного обеспечения
Внешние характеристики
?
Внутренние характеристики
?

12.

Критерии качества программного обеспечения
Внешние характеристики
– корректность
– практичность
– эффективность
– надежность
– целостность
– адаптируемость
– …
Внутренние характеристики
– удобство сопровождения
– тестируемость
– удобочитаемость
– гибкость
– портируемость
– …

13.

Основные критерии качества программного обеспечения
Надежность
Возможность точно планировать процесс разработки и сопровождения
Для достижения этих целей программа должна:
– иметь простую структуру
– быть хорошо читаемой
– быть легко модифицируемой

14.

Программа как модель предметной области

15.

Информационные процессы
Информационный процесс – процесс получения, хранения, обработки и
передачи информации с помощью компьютерных и других технических средств
Данные – информация любой природы, зафиксированная тем или иным способом
Алгоритм – это точное описание последовательности действий над входными
данными, выполнение которых исполнителем приводит к получению выходных
данных.
Множество входных
данных X
Алгоритм
Выполнение операций
над элементами X
Множество выходных
данных Y
Исполнитель

16.

Информационные процессы
Модель – формализованное описание предметной области.
Логическая модель отражает взгляд на предметную область со стороны заказчика
Физическая модель отражает взгляд на предметную область со стороны разработчика
Жизненный цикл программы – совокупность взаимосвязанных и следующих во времени этапов,
начиная от разработки требований к программе и заканчивая полным отказом от ее использования
Жизненный цикл программы формально можно рассматривать как переход от логической модели
предметной области к физической модели предметной области через промежуточные модели.
Каждая из моделей отражает точку зрения на разрабатываемую программу определенного
участника процесса разработки.
Предметная
область
Реальный мир
Прагматика
Заказчик
Среда
исполнения
Семантика
Логическая
модель
Физическая
модель
Разработчик

17.

Программист как преобразователь контекста
Контекст Задачи
Контекст Использования
Готовая программа
Заказчики
Документация
Программисты
Техническая поддержка
Техническое задание
Сведения о
предметной области
Предметноориентированные
языки
Аппаратура,
Операционная
система,
Окружение, Языки
программирования
Алгоритмы,
структуры данных
Контекст Программирования
Пользователи

18.

Языки программирования
Язык программирования — формальная знаковая система,
предназначенная для записи компьютерных программ. Язык
программирования
определяет
набор
лексических,
синтаксических и семантических правил, задающих внешний
вид программы и действия, которые выполнит исполнитель
(компьютер) под ее управлением.

19.

Язык программирования
Создатели языков по-разному толкуют понятие язык программирования. К наиболее
распространенным утверждениям, признаваемым большинством разработчиков,
относятся следующие:
– Функция: язык программирования предназначен для написания компьютерных
программ, которые применяются для передачи компьютеру инструкций по
выполнению того или иного вычислительного процесса и организации управления
отдельными устройствами.
– Задача: язык программирования отличается от естественных языков тем, что
предназначен для передачи команд и данных от человека к компьютеру, в то
время как естественные языки используются для общения людей между собой.
– Исполнение: язык программирования может использовать специальные
конструкции для определения и манипулирования структурами данных и
управления процессом вычислений.

20.

Упрощенная структура языка программирования
программа
операторы
выражения
лексемы
символы
a=b; for (int i=0;i<n;++i)
a++ - --b/c
- идентификаторы
- ключевые слова
- константы
- знаки операций
- разделители
a-z, A-Z, 0-9, “, {,},|,/,%,…
примеры

21.

Языки программирования и их популярность
(Sourceforge, 2011)

22.

Языки программирования и их популярность (Objectweb, 2011)

23.

(http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)
TIOBE Programming Community Index for September 2017

24.

(http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)
TIOBE Programming Community Index for September 2017

25.

(http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)
TIOBE Programming Community Index for September 2017

26.

(http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages)
The 2017 Top Programming Languages

27.

28.

Java
Java

объектно-ориентированный
язык
программирования,
разработанный компанией Sun Microsystems (в последующем
приобретенной компанией Oracle). Приложения Java обычно
компилируются в специальный байт-код, поэтому они могут работать
на любой виртуальной Java-машине (JVM) вне зависимости от
компьютерной архитектуры. Дата официального выпуска — 23 мая
1995 года.
Изначально язык назывался «Дубом» (Oak) и разрабатывался
Джеймсом Гослингом для программирования бытовых электронных
устройств. Впоследствии он был переименован в «Джаву» и стал
использоваться для написания клиентских приложений и серверного
программного обеспечения. Назван в честь марки кофе «Ява» (по
имени одноименного острова, где производится этот сорт), поэтому на
официальной эмблеме языка изображена чашка с дымящимся кофе.
Существует и другая версия происхождения названия языка,
связанная с аллюзией на кофе-машину как пример бытового
устройства, для программирования которого изначально язык
создавался.
https://duke.kenai.com/
Sun придумала талисман по
имени Дюк – полупингвина,
полузуб – и использовала для
рекламы Java – гарантии
безопасности в Интернете. Они
даже создали целую книгу
комиксов
о
Дюке
для
разработчиков
программного
обеспечения.
Помните, излишняя серьезность
– это упущенные возможности .
Возьмите, например, инцидент,
произошедший в 2010 году,
когда какой-то шутник залепил
тортом в лицо Биллу Гейтсу,
когда тот собирался произнести
речь. Многие считают, что, если
бы Гейтс отреагировал иначе и
обратил бы все в шутку, рейтинг
Microsoft мог бы значительно
возрасти.

29.

Java
https://duke.kenai.com/
http://www.dsilakov.ru/papers/oracle2.pdf
Поглощение компании Sun Microsystems корпорацией Oracle в 2009 году стало одним из наиболее
значительных событий в мире ИТ. К моменту поглощения, Sun являлась заметной фигурой на
арене FLOSS; мир свободного ПО был не чужд и Orcale, но судьба многих поддерживавшихся Sun
проектов выглядела неопределенной.
За два года после поглощения ситуация во многом прояснилась, и сейчас уже можно подытожить
изменения, которые претерпели взаимоотношения Oracle и мира FLOSS после слияния компаний.
Видно, что Oracle активно участвует в жизни открытого ПО. Поглощение Sun расширило сферу
взаимодействия корпорации и сообщества, но не внесло существенных изменений в политику
компании, которая не очень-то приветствует «базарный» подход к разработке. Как итог — несмотря
на заметный вклад инженеров Oracle в различные сторонние продукты, привлекать сообщество к
развитию собственных открытых проектов у корпорации получается довольно плохо.

30.

Популярность Java технологий
6 млн. Java разработчиков.
2.5 млн. серверов используют GlassFish.
5 млрд. устройств снабжены Java.
800 млн. настольных систем с установленной JVM.
2.1 млрд. телефонов с поддержкой Java.
11 млн. пользователей используют JavaTV.
Популярность курсов по Java технологиям в ведущих университетах.
>472,000 выданных сертификатов.

31.

Примеры проектов на Java
Java-технологии были применены в марсоходе для обмена данными между
Марсом и Землей.
Java используется в интеллектуальных системах некоторых моделей автомобилей
BMW.
Национальные системы налогообложения и здравоохранения Бразилии
реализованы на Java.
Применение Java в SIM-картах, электронных ключах и смарт-картах.
Nasa World Wind:
– http://worldwind.arc.nasa.gov/
Aviation Digital Data Service:
– http://adds.aviationweather.gov/fpt_application/

32.

Интеграция с другими технологиями
C/C++
Ruby
Python
JavaScript
BeanShell
Groovy
Tcl
PHP
Aspect J

http://www.jcp.org/en/jsr/detail?id=223
http://www.beanshell.org/
http://groovy.codehaus.org/
http://tcljava.sourceforge.net/docs/web
site/index.html

33.

Развитие Java: выпуски
OAK (1992)
1.0 -1.0.2(1995)
1.1-1.1.9
1.2-1.4
1.4.0 Merlin 2002/2/13
1.4.1 Hopper 2002/10/16
1.4.2 Mantis 2003/5/29
5.0 Java SE 5 2004/9/30
Java SE 6 2006/12/15
Java SE 7 2011
Security Releases
Отказ от вспомогательных релизов (5.1,6.1,...)
Выпуск обновлений каждые 8-16 недель
Java SE 8 2014
Java SE 9 ~2017
Java SE 10 ~2018

34.

Скорость работы: клиент

35.

Основные принципы платформы
Аппаратная независимость
Высокая надежность
Автоматическое управление ресурсами
Встроенные средства безопасности

36.

Стандартный жизненный цикл программы

37.

Жизненный цикл программы на Java
“Write once, run anywhere”

38.

Жизненный цикл программы на Java

39.

Путь кода в JAVA
a.java
Compiler
(javac)
b.java
e.other
b. class
Obfuscator
b.java
a.class
b. class
Compiler
(other)
e.class
JAR
(jar)
ZIP
External
Verifier
H.JAR
Manifest.mf
f.png
g.txt
Программные компоненты Java распространяются в
виде набора class-файлов (или их архивов JAR).
Каждый class-файл представляет данные одного класса
или интерфейса.
Class-файлы обладают возможностью позднего
связывания и динамической загрузкой программных
компонентов

40.

Плюсы виртуальных машин
Независимость от аппаратной платформы
Контроль за выполнением программы
Изоляция ошибочного кода

41.

Compilation/Execution

42.

Минусы виртуальных машин
Скорость выполнения ниже по сравнению с компиляцией
– JIT компиляция (при выполнении программы, Just-In-Time компилятор превращает
байт-код в исполняемый код для конкретной платформы, одновременно его
оптимизируя и увеличивая производительность)
– Виртуальная машина HotSpot (основная виртуальная машина Java для
настольных компьютеров и серверов)
Необходимость инсталляции виртуальной машины для выполнения
приложения
Повышенные требования к ресурсам машины

43.

Разделение платформы: редакции

44.

45.

Java Enterprise Edition
Основное назначение – internet серверы
– Средства привязки к базам данных
– Средства сохранения состояния объектов
– Средства распределения нагрузки
– Служба доставки сообщений
GlassFish
Cервер приложений на Java EE с открытым исходным кодом
http://glassfish.dev.java.net/

46.

Java Enterprise Edition
Консоль администрирования сервера приложений GlassFish

47.

Архитектура Java EE приложения

48.

Java Standard Edition
Область применения: рабочие станции и персональные компьютеры
Графические приложения пользователя
Апплет: приложение внутри Интернет браузера
http://java.sun.com/javase/

49.

Пример: апплет и приложение
Апплет
Приложение

50.

Интересный Java SE проект
• Информация со спутников NASA (Земля, Луна и Марс)
http://worldwind.arc.nasa.gov/

51.

Пример: апплет и приложение
Апплет
Приложение

52.

Пример: апплеты в социальных сетях
Апплет для vk.com
Содержимое папки dist:
BrickBreaker.jar — файл со скомпилированными классами приложения
BrickBreaker.jnlp — jnlp-файл
BrickBreaker.html — заготовка веб страницы со встроенным JavaFX-апплетом
папка web-files содержит необходимые для отображения html-страницы файлы и, в частности dtjava.js —
javascript-файл, загружающий JavaFX апплет на страницу
Для добавления приложения в контакт нам потребуются все эти файлы (за исключением jnlp) разместить
на каком-нибудь хостинге, например, на сайте Narod.ru. После загрузки файлов на сервер имеет смысл
проверить, что страница BrickBreaker.html доступна и запускает наше приложение прямо в браузере.
Далее идем в контакт на страницу Разработчикам и нажимаем Создать приложение. Вводим название и
выбираем тип IFrame/Flash приложение.

53.

Интересный Java SE проект
Информация со спутников NASA (Земля, Луна и Марс)
http://worldwind.arc.nasa.gov/

54.

Java Mobile Edition
Мобильные устройства – телефоны, PDA, планшеты
Маленький размер приложения
Небольшое разрешение дисплея
Ограниченность доступных ресурсов
http://java.sun.com/javame/

55.

Java в вашем мобильном?
Большинство игр для мобильных телефонов написано на Java
Java на мобильном телефоне – не только игры

56.

Три платформы – один язык
Java – объектно-ориентированный язык
Встроенные сетевые возможности
Встроенные возможности многопоточного программирования
Большое количество доступных библиотек классов – от обработки звука до
научных вычислений

57.

Основные особенности Java
Объектно-ориентированный язык
Платформо-независимый язык (записано однажды – работает везде)
Облегченное изучение (С++)
Безопасность (нет указателей, не надо очищать память)
Устойчивость (проверка кода при компиляции и выполнения)
Распределенность (встроенные сетевые возможности)
Многопоточность (встроена в язык)
Динамический (информация времени выполнения)
Интерпретируемость (байт-код, виртуальная JAVA-машина)
Большое количество доступных библиотек классов (от обработки звука до
научных вычислений)

58.

Свойства Java 1.0
Основные продукты:
– Java language specification, JLS, спецификация языка Java (описывающая
лексику, типы данных, основные конструкции и т.д.);
– спецификация JVM (для создателей виртуальных машин);
– Java Development Kit, JDK - средство разработчика, состоящее в основном из
утилит, стандартных библиотек классов и демонстрационных примеров.
8 стандартных библиотек:
– java.lang - базовые классы, необходимые для работы любого приложения
(название - сокращение от language);
– java.util - многие полезные вспомогательные классы;
– java.applet - классы для создания апплетов;
– java.awt, java.awt.peer - библиотека для создания графического интерфейса
пользователя, называется Abstract Window Toolkit;
– java.awt.image - дополнительные классы для работы с изображениями;
– java.io - работа с потоками данных (streams) и с файлами;
– java.net - работа с сетью.

59.

Свойства Java 1.1
Java Beans – программные компоненты
RMI – вызов удаленных методов)
JDBC – связь с базами данных
Сериализация – сохранение и восстановление объектов
JNI- взаимодействие с кодами, написанными на других языках
Reflection – определение методов, свойств объекта во время выполнения
программы
Защита – цифровые подписи, генерация ключей, список управления доступом
Символьные потоки
Измененная обработка событий
Внутренние классы

60.

Свойства Java 2
Swing – компоненты графического интерфейса
Коллекции
Гибкая защита ( файлы policy)
Интернационализация
CORBA (ORB-посредник запросов, idl2java)
Улучшение эффективности
– JIT-компилятор,
– HotSpot-интерпретатор,
– Native-компиляторы

61.

Средства разработки ПО
JDK — помимо набора библиотек для платформ Java SE и Java EE содержит
компилятор командной строки javac и набор утилит, также работающих в режиме
командной строки.
NetBeans IDE — свободная интегрированная среда разработки для всех платформ
Java — Java ME, Java SE и Java EE. Пропагандируется Sun Microsystems,
разработчиком Java, как базовое средство для разработки ПО на языке Java и
других языках (C, C++, PHP, Fortran и др.).
Eclipse IDE — свободная интегрированная среда разработки для Java SE, Java EE
и Java ME. Пропагандируется IBM, одним из важнейших разработчиков
корпоративного ПО, как базовое средство для разработки ПО на языке Java и
других языках (C, C++, Ruby, Fortran и др.)
IntelliJ IDEA — среда разработки для платформ Java SE, Java EE и Java ME.
Разработчик — компания JetBrains. Распространяется в двух версиях: свободной
бесплатной (Community Edition) и коммерческой проприетарной (Ultimate Edition).
JDeveloper — среда разработки для платформ Java SE, Java EE и Java ME.
Разработчик — компания Oracle.
BlueJ — Среда разработки программного обеспечения на языке Java, созданная в
основном для использования в обучении, но также подходящая для разработки
небольших программ.

62.

Изучаем Java самостоятельно
http://www.bluej.org/
http://www.greenfoot.org/

63.

Дальнейшее развитие платформы
Real-Time Java
– Новая модель многозадачности
– Новые схемы распределения памяти
– Сверхточные таймеры (точность до наносекунды)
– Асинхронная обработка событий
• Результат – новая платформа, применимая для обработки событий в реальном
времени
http://java.sun.com/javase/technologies/realtime/

64.

Дальнейшее развитие платформы
Java TV API – возвращение к плану
Базируется на Java ME
Является частью стандарта Blu-ray
Blu-ray победил
http://java.sun.com/javame/technology/javatv/

65.

Пример «Hello world», написанном на
графическом эзотерическом* языке Piet
Пример «Hello world» с графическим
интерфейсом на GTK+. На заднем плане
gedit с исходным кодом на Perl
Первая программа
The Hello World Collection:
http://www.roesler-ac.de/wolfram/hello.htm
Hello World!
* Эзотерические языки программирования —
вид
языков
программирования,
не
предназначенных
для
практического
применения. Образец компьютерного юмора.

66.

Первая программа
С помощью текстового редактора создадим файл «HelloWorld.java»:
public class HelloWorld
{
public static void main(String argv[])
{
System.out.println(“Hello World!”);
}
}
Выполним компиляцию программы:
javac HelloWorld.java
Транслятор создаст файл HelloWorld.class,
с независимым от процессора байт-кодом
Выполнение программы:
java HelloWorld
Hello World!

67.

Первая программа
>javac HelloWorld.java
>java HelloWorld
Hello World!
>
Оказывается, процесс создания данной программы практически не занял много
времени, что нельзя сказать об аналогичной программе, написанной на
эзотерическом языке программирования Malbolge. Код первой программы,
выводящей «HEllO WORld», сгенерировала другая программа на языке Lisp,
использовавшая поиск в множестве всех возможных программ, через два года
после появления самого языка Malbolge:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

68.

Полезные ссылки
Java по-русски:
• http://ru.sun.com/java/
• http://developers.sun.ru/
Интересные Java проекты:
• http://www.opensourcephysics.org/ - интерактивные демонстраци физических
эффектов
• http://www.chemaxon.com/products.html – программы для химиков (каталоги
реакций и формул с возможностью поиска)
English     Русский Rules