373 lines
9.0 KiB
TeX
373 lines
9.0 KiB
TeX
\documentclass[russian]{beamer}
|
||
|
||
\usepackage{multicol}
|
||
\usepackage{babel}
|
||
\usepackage{fontspec}
|
||
\input{../fancy-listings-preamble}
|
||
\usepackage{forest}
|
||
|
||
\makeatletter
|
||
\def\beamer@framenotesbegin{% at beginning of slide
|
||
\usebeamercolor[fg]{normal text}
|
||
\gdef\beamer@noteitems{}%
|
||
\gdef\beamer@notes{}%
|
||
}
|
||
\makeatother
|
||
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
|
||
|
||
% \setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}
|
||
% \setbeameroption{show notes on second screen=right}
|
||
|
||
\usetheme{Madrid}
|
||
\usecolortheme{seahorse}
|
||
\setmainfont{PT Astra Sans}
|
||
\setsansfont{PT Astra Sans}
|
||
|
||
\title{Платформа: история и окружение}
|
||
\author{Иван Игоревич Овчинников}
|
||
\institute[GB: Java]{GeekBrains. Java Core.}
|
||
\date{2022}
|
||
|
||
\begin{document}
|
||
\setbeamertemplate{enumerate items}[circle]
|
||
|
||
\frame{\titlepage}
|
||
\note{...}
|
||
|
||
|
||
\begin{frame}
|
||
\frametitle{Введение и знакомство (о себе)}
|
||
Иван Овчинников. НПО ИТ, РКС, GB.
|
||
\begin{block}{Используемые технологии}
|
||
Много и с удовольствием C, C++, Java, Verilog. C\# и Python даже не считаем.
|
||
\end{block}
|
||
Для GB более 20 потоков по разным направлениям, более двух тысяч студентов.
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{О курсе}
|
||
и об уркое
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Краткая история}
|
||
\includegraphics[width=12cm]{../pics/jc-01-tiobe.png}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Почему Java?}
|
||
Написано однажды, работает везде.
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Базовый инструментарий}
|
||
\begin{enumerate}
|
||
\item Eclipse
|
||
\item NetBeans
|
||
\item IntelliJ IDEA
|
||
\item BlueJ
|
||
\item Oracle JDeveloper
|
||
\item MyEclipse
|
||
\item Greenfoot
|
||
\item jGRASP
|
||
\item JCreator
|
||
\item DrJava
|
||
\end{enumerate}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Что нужно скачать}
|
||
\begin{enumerate}
|
||
\item ждк
|
||
\item среду
|
||
\end{enumerate}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Что нужно скачать}
|
||
\begin{enumerate}
|
||
\item Oracle JDK
|
||
\item OpenJDK by Oracle
|
||
\item Liberica JDK
|
||
\item экзотические
|
||
\begin{itemize}
|
||
\item GOST Java
|
||
\item AdoptOpenJDK
|
||
\item Red Hat OpenJDK
|
||
\item Azul Zulu
|
||
\item Amazon Corretto
|
||
\end{itemize}
|
||
\end{enumerate}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Кто делает для нас JDK}
|
||
\includegraphics[width=12cm]{../pics/jc-01-jdk-contrib.png}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Когда нужно по-быстрому}
|
||
\includegraphics[width=12cm]{../pics/jc-01-jupyter-logo.png}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Переменные среды}
|
||
\begin{itemize}
|
||
\item \code{PATH}
|
||
\item \code{JAVA_HOME}
|
||
\item \code{JRE_HOME}
|
||
\item \code{J2SDKDIR}
|
||
\item \code{J2REDIR}
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{JDK и его друзья}
|
||
TL;DR:
|
||
\begin{itemize}
|
||
\item JDK = JRE + инструменты разработчика;
|
||
\item JRE = JVM + библиотеки классов;
|
||
\item JVM = Native API + механизм исполнения + управление памятью.
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{JVM и что в нём происходит}
|
||
рис 1.2 (стр 4) конспекта
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Структура проекта}
|
||
\begin{itemize}
|
||
\item простейшие (один файл)
|
||
\item обычные (несколько пакетов)
|
||
\item шаблонные (формируются сборщиками)
|
||
\item скриптовые (jupyter notebook)
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Простейший проект}
|
||
Думаю, тут надо вживую покодить, благо немного
|
||
\begin{multicols}{2}
|
||
public class Main
|
||
|
||
public static void main(String[] args)
|
||
|
||
System.out.println("Hello, world!");
|
||
|
||
\columnbreak
|
||
|
||
ivan@gb src > javac Main.java
|
||
|
||
ivan@gb src > java Main
|
||
|
||
Hello, world!
|
||
\end{multicols}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Jupyter Notebook}
|
||
также вживую открыть юпитер ноутбук, показать, что возможно запускать код в скриптовом формате
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Проект на Java}
|
||
\begin{itemize}
|
||
\item пакеты,
|
||
\item классы,
|
||
\item метод main,
|
||
\item комментарии
|
||
\item ресурсы
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Пакеты}
|
||
разделить на два слайда
|
||
сначала пакет с пакетами потом
|
||
стоящие стройными рядами коробки или контейнеры
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Классы}
|
||
разделить на два слайда
|
||
сначала фото пустого школьного класса, потом
|
||
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{метод мейн}
|
||
разделить на два слайда
|
||
псвм
|
||
показать точку входа как вход в пещеру
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{комментарии}
|
||
разделить на два слайда
|
||
можно как в редакции «комменты и лайки туда»
|
||
и слайд с типами комментариев
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Структура простого проекта}
|
||
\begin{forest}
|
||
for tree={
|
||
font=\ttfamily, grow'=0, child anchor=west,
|
||
parent anchor=south, anchor=west, calign=first,
|
||
edge path={
|
||
\noexpand\path [draw, \forestoption{edge}]
|
||
(!u.south west) +(7.5pt,0) |- node[fill,inner sep=1.25pt]
|
||
{} (.child anchor)\forestoption{edge label};
|
||
}, before typesetting nodes={
|
||
if n=1 {insert before={[,phantom]}} {} },
|
||
fit=band, before computing xy={l=15pt},
|
||
}
|
||
[Sample
|
||
[src
|
||
[ru
|
||
[gb
|
||
[jcore
|
||
[regular
|
||
[OtherClass.java]
|
||
]
|
||
[sample
|
||
[Main.java]
|
||
]
|
||
]
|
||
]
|
||
]
|
||
]
|
||
[out
|
||
]
|
||
[README.md]
|
||
]
|
||
\end{forest}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Терминал}
|
||
показать папку с простейшим проектом из одного файла, скомпилировать, запустить.
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Терминал}
|
||
тут, скорее всего, без лайв кода не обойтись, нужно открыть терминал и показать папку проекта, структуру проекта и содержимое файлов
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Javadoc}
|
||
Пример автоматически сгенерированной документации
|
||
\includegraphics[width=12cm]{../pics/jc-01-javadoc.png}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{утилита javadoc}
|
||
основные ключи и аргументы
|
||
\begin{itemize}
|
||
\item \code{-d docs}
|
||
\item \code{-sourcepath src}
|
||
\item \code{-cp out}
|
||
\item \code{-subpackages}
|
||
\item \code{ru}
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{куда же без особенностей работы с Windows?}
|
||
\begin{itemize}
|
||
\item \code{-locale ru_RU}
|
||
\item \code{-encoding utf-8}
|
||
\item \code{-docencoding cp1251}
|
||
\end{itemize}
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Автоматизация сборки в CLI}
|
||
makefile
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Автоматизация сборки в CLI}
|
||
SRCDIR := src
|
||
OUTDIR := out
|
||
|
||
JC := javac
|
||
JCFLAGS := -sourcepath .(SRCDIR)/ -d (OUTDIR)
|
||
MAINSOURCE := ru/gb/dj/Main
|
||
MAINCLASS := ru.gb.dj.Main
|
||
|
||
all:
|
||
(JC) (JCFLAGS) {SRCDIR}/{MAINSOURCE}.java
|
||
|
||
clean:
|
||
rm -R (OUTDIR)
|
||
|
||
run:
|
||
cd out \&\& java {MAINCLASS}
|
||
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Автоматизация сборки в CLI, контейнеризация}
|
||
docker
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\begin{frame}
|
||
\frametitle{Автоматизация сборки в CLI, контейнеризация}
|
||
\# syntax=docker/dockerfile:1
|
||
|
||
FROM bellsoft/liberica-openjdk-alpine:11.0.16.1-1
|
||
|
||
\# from where (related to Dockerfile) to where
|
||
COPY ./src ./src
|
||
|
||
\# remember that you are root and in / directory
|
||
RUN mkdir ./out
|
||
|
||
\# be sure to use relative paths
|
||
RUN javac -sourcepath ./src -d out ./src/ru/gb/dj/Main.java
|
||
|
||
\# what will we do on a container start
|
||
CMD java -classpath ./out ru.gb.dj.Main
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
|
||
\begin{frame}
|
||
\frametitle{итоги}
|
||
что изучили и домашка
|
||
\end{frame}
|
||
\note{...}
|
||
|
||
\end{document} |