gb-java-devel/scenarios/jc-1-b.tex

373 lines
9.0 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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}