Содержание
Глоссарий
access modifier
модификатор доступа
autoboxing
автоупаковка
compilation unit
единица компиляции
generic
параметризуемый класс/тип; полиморфный класс/тип
enumeration
перечисление; перечень; перечислимый тип
enumerator
перечислитель
persistent object
перманентный (постоянно хранимый) объект
retention
удерживание
runtime
время исполнения
wrapper
упаковщик
volatile (variable)
изменчивая (переменная)
Стандартные инструменты
javac
Компилятор программы, написанной на языке Java, в байт-код виртуальной машины Java (JVM)
java
Программа запуска java-приложения (Java application launcher)
jdb
Отладчик програм на Java’е
javap
Декомпилятор программы, представленной в виде байт-кода виртуальной машины Java, в текстовый вид, удобный для анализа
Перечень команд
javac -X
вывести перечень дополнительных опций
javac -Xdiags:verbose <file>
вывести более подробное диагностическое сообщение при наличии ошибок компиляции
Типы требований
требование выразительности
соглашение
техническое требование
требование производительности
Многопоточность
Глоссарий
context switch
переключение контекста
deadlock
взаимная блокировка
monitor
диспетчер, контролёр
to enter a monitor on an object
зарегистрировать диспетчера/контролера для объекта;
назначить диспетчера/контролера на объект;
установить диспетчера/контролера на объект
preemption
вытеснение
race
конкуренция
race condition
состояние гонки
scheduler
планировщик
spawn
порождать
Перечень состояний треда
blocked (заблокирован)
interrupted (прерван)
ready to run (готов к запуску)
resumed (возобновлен)
running (запущен)
suspended (приостановлен)
terminated (завершен)
Перечень методов
currentThread
java.lang.Thread
getPriority
java.lang.Thread
isAlive
java.lang.Thread
join
java.lang.Thread
notify
java.lang.Object
setPriority
java.lang.Thread
wait
java.lang.Object
Ввод и вывод
Перечень объектов
InputStream
java.io.InputStream
Объект-обёртка для различных источников данных.
InputStreamReader
java.io.InputStreamReader
Объект, предоставляющий возможность извлекать данные из источника.
BufferedReader
java.io.BufferedReader
Объект, предоставляющий возможность помещать извлекаемые из источника данные во временное хранилище (буфер).
OutputStream
java.io.OutputStream
Объект-обёртка для различны приёмников данных.
PrintStream
java.io.PrintStream
Объект, предоставляющий возможность передавать бинарные данные различным приёмникам.
PrintWriter
java.io.PrintWriter
Объект, предоставляющий возможность передавать текстовые данные различным преёмникам.
FileInputStream
java.io.FileInputStream
Объект-обёртка для файлового источника данных.
FilOutputStream
java.io.FileOutputStream
Объект-обёртка для файлового приёмника данных.
Перечень методов
read
java.io.BufferedReader#read
Возвратить байт из буфера и конвертировать его в символ на основе текущей/заданной кодировки.
read
java.io.FileInputStream#read
Возвратить байт из файла-источника, представив его как целое число. Возвратить -1, при достижении конца файла.
readLine
java.io.BufferedReader#readLine
Возвратить последовательность байтов из буфера и конвертировать каждый байт в строчный символ на основе текущей/заданной кодировки. (Символы завершения строки возвращены не будут.)
write(int)
java.io.PrintStream#write
Передать приёмнику один байт данных не очищая буфер.
write(int)
java.io.FileOutputStream#write
Передать файлу-приёмнику один байт данных.
write(byte[], int, int)
java.io.PrintStream#write
Передать приёмнику диапазон байтов из заданного массива и автоматически очистить буфер по окончанию передачи.
flush
java.io.PrintStream#flush
Очистить буфер от данных.
close
java.io.FileInputStream#close
Освободить системный ресурс, связанный с данным файлом-источником. Данный метод должен быть вызван по завершению работы с файлом в соответствии с теребованием производительности. При попытке чтения из закрытого файла-источника будет вызвано исключение java.io.IOException: Stream Closed
.
close
java.io.FileOutputStream#close
Освободить системный ресурс, связанный с данным файлом-приёмником. Данный метод должен быть вызван по завершению работы с файлом в соответствии с теребованием производительности. При попытке записи в закрытый файл-приёмник будет вызвано исключение java.io.IOException: Stream Closed
.
Параметризуемые классы
Способы определения
class Sample<T>
определить параметризуемый класс
class Sample<T1, T2>
определить параметризуемый класс с двумя параметрами
class Sample<T extends SomeClass>
определить параметризуемый класс с параметром, тип которого ограничен множеством подклассов указанного класса
class Sample<T extends SomeClass & FirstInterface & SecondInterface>
определить параметризуемый класс с параметром, тип которого расширяет указанный класс и реализует оба указанных интерфейса
Указание типа для переменной, содержащей значение параметризуемого класса
GenericClass<ConcreteClass> variable
GenericClass<?> variable
GenericClass<? extends UpperBound> variable // One → (UpperBound → Two → Three)
GenericClass<? super LowerBound> variable // (One → Two → LowerBound) → Three
Указание переменного типа в декларации метода
<T> T doSomething(T arg);
определить параметризуемый метод с одним агрументом
<T1, T2> T1 doSomething(T1 arg1, T2 arg2);
определить параметризуемый метод с двумя аргументами
<T extends SomeClass> T doSomething();
определить параметризуемый метод, тип которого расширяет указанный класс
<T extends SomeInterface> T doSomething();
определить параметризуемый метод, тип которого реализует указанный интерфейс
someObject.<First>doSomething(first);
вызвать параметризуемый метод (объявление типа не обязательно, но может быть включено для улучшения выразительности)
Анонимные функции
Перечень элементов
functional interface
lambda expression
method reference
Примеры
Adding two integers by the means of a method reference
An Elementary Console Text Editor
Declaring a parameterized constructor
Declaring a parameterized interface
Declaring a parameterized method inside a non-generic class
Eliminating the need to cast types by using generics
Extracting a string from a container object by the means of an instance method reference
Finding matches in a collection of values by the means of a static and an instance method reference
Setting type bounds for a generic type parameter
Setting type bounds for a generic type parameter as a set of interfaces
Specifying a type for a variable, which contains a value of a parameterized type
Using a wildcard to specify any allowed type for an argument