simple questions between themes
This commit is contained in:
parent
5bbedb6bdc
commit
3c6c82b9fe
BIN
build/j-spec.pdf
BIN
build/j-spec.pdf
Binary file not shown.
69
j-spec.tex
69
j-spec.tex
|
@ -26,8 +26,8 @@
|
|||
\renewcommand{\nomname}{Термины, определения и сокращения}
|
||||
\makeindex
|
||||
\makenomenclature
|
||||
\babelfont{rm}{PT Astra Serif}
|
||||
\babelfont{sf}{PT Astra Serif}
|
||||
\babelfont{rm}{IBM Plex Sans}
|
||||
\babelfont{sf}{IBM Plex Sans}
|
||||
\babelfont{tt}{PT Mono}
|
||||
\graphicspath{{./pics/}}
|
||||
|
||||
|
@ -115,6 +115,16 @@
|
|||
\label{pic:java-in-tiobe}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item Как Вы думаете, почему язык программирования Java стал популярен в такие короткие сроки? (3)
|
||||
\begin{itemize}
|
||||
\item существовавшие на тот момент Pascal и C++ были слишком сложными;
|
||||
\item Java быстрее C++;
|
||||
\item Однажды написанная на Java программа работает везде.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Базовый инструментарий, который понадобится (выбор IDE)}
|
||||
\begin{itemize}
|
||||
\item NetBeans - хороший, добротный инструмент с лёгким ностальгическим оттенком;
|
||||
|
@ -123,6 +133,17 @@
|
|||
\item Android Studio - если заниматься мобильной разработкой.
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item Как Вы думаете, почему среда разработки IntelliJ IDEA стала стандартом де-факто в коммерческой разработке приложений на Java? (4)
|
||||
\begin{itemize}
|
||||
\item NetBeans перестали поддерживать;
|
||||
\item Eclipse слишком медленный и тяжеловесный;
|
||||
\item IDEA оказалась самой дружелюбной к начинающему программисту;
|
||||
\item Все варианты верны.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Что нужно скачать, откуда (как выбрать вендора, версии)}
|
||||
Для разработки понадобится среда разработки (IDE) и инструментарий разработчика (JDK). JDK выпускается несколькими поставщиками, большинство из них бесплатны и полнофункциональны, то есть поддерживают весь функционал языка и платформы.
|
||||
|
||||
|
@ -136,6 +157,13 @@
|
|||
|
||||
Для решения некоторых несложных задач курса мы будем писать простые приложения, не содержащие ООП, сложных взаимосвязей и проверок, в этом случае нам понадобится Jupyter notebook с установленным ядром (kernel) IJava.
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item Чем отличается SDK от JDK? (J это частный случай, больше спец. библиотек)
|
||||
\item Какая версия языка (к сожалению) остаётся самой популярной в разработке на Java? (8, 1.8)
|
||||
\item Какие ещё JVM языки существуют? (Scala, Kotlin, Groovy)
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Из чего всё состоит (JDK, JRE, JVM и их друзья)}
|
||||
TL;DR:
|
||||
\begin{itemize}
|
||||
|
@ -150,7 +178,7 @@ TL;DR:
|
|||
|
||||
JVM для своей работы запрашивает у ОС некоторый сегмент оперативной памяти, в котором хранит данные программы. Это хранение происходит «слоями»:
|
||||
\begin{enumerate}
|
||||
\item Eden Space (heap) – в этой области выделятся память под все создаваемые из программы объекты. Большая часть объектов живёт недолго (итераторы, временные объекты, используемые внутри методов и т.п.), и удаляются при выполнении сборок мусора это области памяти, не перемещаются в другие области памяти. Когда данная область заполняется (т.е. количество выделенной памяти в этой области превышает некоторый заданный процент), сборщик мусора выполняет быструю (minor collection) сборку. По сравнению с полной сборкой, она занимает мало времени, и затрагивает только эту область памяти, а именно, очищает от устаревших объектов Eden Space и перемещает выжившие объекты в следующую область.
|
||||
\item Eden Space (heap) – в этой области выделяется память под все создаваемые из программы объекты. Большая часть объектов живёт недолго (итераторы, временные объекты, используемые внутри методов и т.п.), и удаляются при выполнении сборок мусора это области памяти, не перемещаются в другие области памяти. Когда данная область заполняется (т.е. количество выделенной памяти в этой области превышает некоторый заданный процент), сборщик мусора выполняет быструю (minor collection) сборку. По сравнению с полной сборкой, она занимает мало времени, и затрагивает только эту область памяти, а именно, очищает от устаревших объектов Eden Space и перемещает выжившие объекты в следующую область.
|
||||
\item Survivor Space (heap) – сюда перемещаются объекты из предыдущей области после того, как они пережили хотя бы одну сборку мусора. Время от времени долгоживущие объекты из этой области перемещаются в Tenured Space.
|
||||
\item Tenured (Old) Generation (heap) — Здесь скапливаются долгоживущие объекты (крупные высокоуровневые объекты, синглтоны, менеджеры ресурсов и прочие). Когда заполняется эта область, выполняется полная сборка мусора (full, major collection), которая обрабатывает все созданные JVM объекты.
|
||||
\item Permanent Generation (non-heap) – Здесь хранится метаинформация, используемая JVM (используемые классы, методы и т.п.).
|
||||
|
@ -206,6 +234,18 @@ Java Development Kit является изрядно дополненным сп
|
|||
\caption{Общее представление состава JDK}
|
||||
\end{table}
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item JVM и JRE - это одно и тоже? (нет)
|
||||
\item Что входит в состав JDK, но не входят в состав JRE? (компилятор, средства для доков, отладки, развёртывания)
|
||||
\item Утечки памяти (2)
|
||||
\begin{itemize}
|
||||
\item Невозможны, поскольку работает сборщик мусора;
|
||||
\item Возможны;
|
||||
\item Существуют только в С++ и других языках с открытым менеджментом памяти.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Структура проекта (пакеты, классы, метод main, комментарии)}
|
||||
Проекты могут быть любой сложности. Часто структуру проекта задаёт сборщик проекта, предписывая в каких папках будут храниться исходные коды, исполняемые файлы, ресурсы и документация. Без их использования необходимо задать структуру самостоятельно.
|
||||
|
||||
|
@ -308,6 +348,17 @@ public class OtherClass {
|
|||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item Зачем складывать классы в пакеты? (структурирование, видимость*)
|
||||
\item Может ли существовать класс вне пакета? (да*, нет)
|
||||
\item Комментирование кода(2)
|
||||
\begin{itemize}
|
||||
\item Нужно только если пишется большая подключаемая библиотека;
|
||||
\item Хорошая привычка;
|
||||
\item Захламляет исходники.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Отложим мышки в сторону (CLI: сборка, пакеты, запуск)}
|
||||
Простейший проект возможно скомпилировать и запустить без использования тяжеловесных сред разработки, введя в командной строке ОС две команды:
|
||||
|
@ -356,6 +407,18 @@ Hello, world!
|
|||
Here is your number: 4.
|
||||
\end{lstlisting}
|
||||
|
||||
\subsubsection{Задания для самопроверки}
|
||||
\begin{enumerate}
|
||||
\item Что такое javac? (компилятор)
|
||||
\item Кофе, крошка? (да)
|
||||
\item Где находится класс в папке назначения работы компилятора? (1)
|
||||
\begin{itemize}
|
||||
\item В подпапках, повторяющих структуру пакетов в исходниках
|
||||
\item В корне плоским списком;
|
||||
\item Зависит от ключей компиляции.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Документирование (Javadoc)}
|
||||
Документирование конкретных методов и классов всегда ложится на плечи программиста, потому что никто не знает программу и алгоритмы в ней лучше, чем программист. Утилита Javadoc избавляет программиста от необходимости осваивать инструменты создания веб-страниц и записывать туда свою документацию. Достаточно писать хорошо отформатированные комментарии, а остальное Javadoc возьмёт на себя.
|
||||
\begin{figure}[H]
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue