Similar presentations:
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.
JavaJava
—
объектно-ориентированный
язык
программирования,
разработанный компанией Sun Microsystems (в последующем
приобретенной компанией Oracle). Приложения Java обычно
компилируются в специальный байт-код, поэтому они могут работать
на любой виртуальной Java-машине (JVM) вне зависимости от
компьютерной архитектуры. Дата официального выпуска — 23 мая
1995 года.
Изначально язык назывался «Дубом» (Oak) и разрабатывался
Джеймсом Гослингом для программирования бытовых электронных
устройств. Впоследствии он был переименован в «Джаву» и стал
использоваться для написания клиентских приложений и серверного
программного обеспечения. Назван в честь марки кофе «Ява» (по
имени одноименного острова, где производится этот сорт), поэтому на
официальной эмблеме языка изображена чашка с дымящимся кофе.
Существует и другая версия происхождения названия языка,
связанная с аллюзией на кофе-машину как пример бытового
устройства, для программирования которого изначально язык
создавался.
https://duke.kenai.com/
Sun придумала талисман по
имени Дюк – полупингвина,
полузуб – и использовала для
рекламы Java – гарантии
безопасности в Интернете. Они
даже создали целую книгу
комиксов
о
Дюке
для
разработчиков
программного
обеспечения.
Помните, излишняя серьезность
– это упущенные возможности .
Возьмите, например, инцидент,
произошедший в 2010 году,
когда какой-то шутник залепил
тортом в лицо Биллу Гейтсу,
когда тот собирался произнести
речь. Многие считают, что, если
бы Гейтс отреагировал иначе и
обратил бы все в шутку, рейтинг
Microsoft мог бы значительно
возрасти.
29.
Javahttps://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.
Примеры проектов на JavaJava-технологии были применены в марсоходе для обмена данными между
Марсом и Землей.
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.
Жизненный цикл программы на Java39.
Путь кода в JAVAa.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/Execution42.
Минусы виртуальных машинСкорость выполнения ниже по сравнению с компиляцией
– 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.1Java Beans – программные компоненты
RMI – вызов удаленных методов)
JDBC – связь с базами данных
Сериализация – сохранение и восстановление объектов
JNI- взаимодействие с кодами, написанными на других языках
Reflection – определение методов, свойств объекта во время выполнения
программы
Защита – цифровые подписи, генерация ключей, список управления доступом
Символьные потоки
Измененная обработка событий
Внутренние классы
60.
Свойства Java 2Swing – компоненты графического интерфейса
Коллекции
Гибкая защита ( файлы 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 – программы для химиков (каталоги
реакций и формул с возможностью поиска)