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

373 lines
9.0 KiB
TeX
Raw Normal View History

2022-08-13 02:31:01 +03:00
\documentclass[russian]{beamer}
\usepackage{multicol}
\usepackage{babel}
\usepackage{fontspec}
\input{../fancy-listings-preamble}
2022-08-16 17:00:26 +03:00
\usepackage{forest}
2022-08-13 02:31:01 +03:00
\makeatletter
\def\beamer@framenotesbegin{% at beginning of slide
\usebeamercolor[fg]{normal text}
\gdef\beamer@noteitems{}%
\gdef\beamer@notes{}%
}
\makeatother
2022-08-16 17:00:26 +03:00
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
2022-08-13 02:31:01 +03:00
% \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}
2022-08-13 02:31:01 +03:00
\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{...}
2022-08-17 15:57:35 +03:00
\begin{frame}
\frametitle{О курсе}
и об уркое
\end{frame}
\note{...}
2022-08-13 02:31:01 +03:00
\begin{frame}
\frametitle{Краткая история}
\includegraphics[width=12cm]{../pics/jc-01-tiobe.png}
\end{frame}
\note{...}
2022-08-14 16:46:20 +03:00
\begin{frame}
\frametitle{Почему Java?}
Написано однажды, работает везде.
\end{frame}
\note{...}
2022-08-13 02:31:01 +03:00
\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}
2022-08-14 16:46:20 +03:00
\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}
2022-08-13 02:31:01 +03:00
\end{enumerate}
\end{frame}
\note{...}
2022-08-14 16:46:20 +03:00
\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{...}
2022-08-18 12:39:04 +03:00
\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{...}
2022-08-14 16:46:20 +03:00
\begin{frame}
\frametitle{JDK и его друзья}
2022-08-15 00:57:28 +03:00
TL;DR:
\begin{itemize}
\item JDK = JRE + инструменты разработчика;
\item JRE = JVM + библиотеки классов;
\item JVM = Native API + механизм исполнения + управление памятью.
\end{itemize}
2022-08-14 16:46:20 +03:00
\end{frame}
\note{...}
\begin{frame}
\frametitle{JVM и что в нём происходит}
2022-08-15 00:57:28 +03:00
рис 1.2 (стр 4) конспекта
2022-08-14 16:46:20 +03:00
\end{frame}
\note{...}
2022-08-13 02:31:01 +03:00
\begin{frame}
2022-08-15 00:57:28 +03:00
\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}
2022-08-13 02:31:01 +03:00
\end{frame}
\note{...}
2022-08-16 17:00:26 +03:00
\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{...}
2022-08-22 00:28:10 +03:00
\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{...}
2022-08-15 00:57:28 +03:00
\begin{frame}
2022-08-17 15:57:35 +03:00
\frametitle{итоги}
что изучили и домашка
2022-08-15 00:57:28 +03:00
\end{frame}
\note{...}
2022-08-14 16:46:20 +03:00
2022-08-13 02:31:01 +03:00
\end{document}