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