Модуль компиляции
Пакеты и имена пакетов
Иерархия пакетов и папок
Часто используемые пакеты
Типы и модификатор доступа
Приложение “Привет калькулятор!”
Два класса с одинаковым простым именем в разных пакетах
Компиляция и запуск
Компиляция
Пакеты и имена
Импортирование
Одиночное импортирование
Одиночное импортирование
Импортирование по шаблону
Импортирование по шаблону
Импортирование по умолчанию
Простое приложение “Привет калькулятор!”
Компиляция модуля компиляции
Компиляция из другой директории
Перенаправление вывода
Запуск
sourcepath
Простое приложение “Привет калькулятор!”
Использование sourcepath
Перенаправление вывода
Перенаправление вывода
Запуск
classpath
Простое приложение “Привет калькулятор!”
Компиляция с использованием classpath
Запуск
Запуск с использованием classpath
1.28M
Категория: ПрограммированиеПрограммирование

Введение. Компиляция и запуск. (Тема 1.2)

1.

I. Введение
2. Компиляция и запуск
1

2. Модуль компиляции

Модуль компиляции (compilation unit) – текстовый файл с расширением .java,
является единицей входных данных для компилятора. Модуль компиляции состоит
из четырёх частей:
• объявления пакета;
• объявлений импорта;
• объявления public класса или интерфейса верхнего уровня;
• объявлений не public классов и интерфейсов верхнего уровня.
Во время компиляции модуля компиляции для каждого класса и интерфейса
верхнего уровня создаётся отдельный class файл содержащий байт код.
2

3.

Пакеты
3

4. Пакеты и имена пакетов

Пакет – логический контейнер используемый для изоляции имён типов и
ограничения видимости. Пакет может включать другие пакеты и типы. Каждый пакет
имеет своё пространство имён, что позволяет создавать одноимённые классы и
интерфейсы в различных пакетах. Класс или интерфейс может принадлежать
только одному пакету. Одноимённый и даже “такой же” тип в другом пакете это
другой тип.
Объявление пакета содержит полностью квалифицированное имя пакета и
указывает к какому пакету будут принадлежать все объявляемые в модуле
компиляции классы и интерфейсы. Если объявление пакета отсутствует, значит
классы и интерфейсы модуля компиляции принадлежат безымянному пакету
(пакету по умолчанию).
4

5. Иерархия пакетов и папок

Полностью
квалифицированное
имя
пакета
состоит
из
полностью
квалифицированного имени пакета предка и простого имени пакета разделённых
точкой. Если у пакета нет предка полностью квалифицированное имя пакета
совпадает с простым именем пакета.
Имена пакетов образуют иерархию. Каждому пакету на диске соответствует папка,
название папки совпадает с простым именем пакета. В этой папке находятся
модули компиляции пакета и папки подпакетов. Таким образом структура
директорий должна соответствовать иерархии имён пакетов.
5

6. Часто используемые пакеты

Пакет
java.lang
Описание
String, обёртки примитивов, …
java.io
Ввод-вывод
java.util
Коллекции
java.net
Сеть
java.lang.reflect
Рефлексия
javax.sql
JDBC для доступа к БД
javax.xml
Работа с XML
org.xml.sax
Простой API для XML
6

7. Типы и модификатор доступа

Объявление типа (класса или интерфейса) включает модификатор доступа и
простое имя типа. Модификатор доступа к типу определяет область видимости
типа. Модификатор доступа может быть public или отсутствовать. Если
модификатор доступа отсутствует (модификатор доступа по умолчанию) тип можно
использовать только внутри модулей компиляции пакета типа. Если модификатор
доступа public тип доступен из других пакетов. В модуле компиляции может быть
только один тип с модификатором доступа public. В этом случае название модуля
компиляции должно совпадать с простым названием типа.
Полностью квалифицированное имя типа (класса или интерфейса) состоит из
полностью квалифицированного имени пакета и простого имени типа разделённых
точкой. Обращаться к типам из другого пакета можно используя полностью
квалифицированное имя типа.
7

8. Приложение “Привет калькулятор!”

package
package org.cud.hello;
org.cud.hello;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
org.cud.ints.Calculator
intCalculator
org.cud.ints.Calculator intCalculator == new
new org.cud.ints.Calculator();
org.cud.ints.Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ intCalculator.sum(2,
intCalculator.sum(2, 3,
3, 4));
4));
org.cud.strings.Calculator
org.cud.strings.Calculator strCalculator
strCalculator == new
new org.cud.strings.Calculator();
org.cud.strings.Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ strCalculator.sum("2",
strCalculator.sum("2", "" 3",
3", "" 4"));
4"));
8

9. Два класса с одинаковым простым именем в разных пакетах

package
package org.cud.ints;
org.cud.ints;
public
public class
class Calculator
Calculator {{
public
public int
int sum(int...
sum(int... numbers)
numbers) {{
int
int total
total == 0;
0;
for
for (int
(int ii :: numbers)
numbers) {{
total
total +=
+= i;
i;
}}
}}
}}
return
return total;
total;
package
package org.cud.strings;
org.cud.strings;
public
public class
class Calculator
Calculator {{
public
public String
String sum(String...
sum(String... words)
words) {{
String
String total
total == "";
"";
for
for (String
(String ss :: words)
words) {{
total
total +=
+= s;
s;
}}
}}
}}
return
return total;
total;
Если бы модификатор доступа был “по умолчанию”, то было бы нельзя
использовать класс Calculator в другом пакете. В это случае HelloCalc просто бы не
компилировался.
9

10. Компиляция и запуск

I:\src>javac
I:\src>javac org\cud\hello\HelloCalc.java
org\cud\hello\HelloCalc.java
I:\src>java
I:\src>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Calculator
Hello Calculator
2+3+4
2+3+4 == 99
2+3+4
2+3+4 == 22 33 44
I:\src>
I:\src>
Во время компиляции модуля компиляции находятся и компилируются модули от
которых зависит компилируемый модуль. По умолчанию текущая директория
используется как корень иерархии каталогов для поиска модулей компиляции. По
умолчанию class файлы для модуля компиляции помещаются в директорию где
находится модуль компиляции. Во время запуска метода main находятся все
необходимые class файлы. По умолчанию текущая директория используется как
корень иерархии каталогов для поиска class файлов.
10

11. Компиляция

11

12. Пакеты и имена

Пакет не может содержать тип и подпакет с одинаковыми именами. Если
попробовать объявить тип и создать подпакет с одинаковыми именами то
произойдёт ошибка времени компиляции.
Классы и интерфейсы модуля компиляции принадлежат пакету из объявления
пакета, но не принадлежат пакетам включающим этот пакет и пакетам включённым
в этот пакет.
Класс или интерфейс с одним и тем же имененем в другом пакете это другой класс
или интерфейс. Даже если объявления совпадают.
12

13.

Импортирование
13

14. Импортирование

При обращении к типу из текущего пакета можно использовать простое имя типа.
При обращении к типу из другого пакета необходимо использовать полностью
квалифицированное имя если нет объявления импорта.
Объявление импорта разрешает использовать простые имена для обращения к
типу в другом пакете. Существует два вида объявления импорта: одиночное
объявление импорта и объявление импорта по шаблону.
14

15. Одиночное импортирование

Одиночное объявление импорта состоит из ключевого слова import и полного
квалифицированного имени типа, делает тип доступным под простым именем в
объявлениях классов и интерфейсов в текущем модуле компиляции.
Если тип в одиночном объявлении импорта не существует, то происходит ошибка
времени компиляции.
Если два import объявления в одном модуле компиляции пытаются импортировать
разные типы с одним и тем же простым именем, то происходит ошибка времени
компиляции. Если другой тип с тем же самым именем объявлен в текущем модуле
компиляции, то происходит ошибка времени компиляции.
15

16. Одиночное импортирование

package
package org.cud.hello;
org.cud.hello;
import
import org.cud.ints.Calculator;
org.cud.ints.Calculator;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
Calculator
Calculator intCalculator
intCalculator == new
new Calculator();
Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ intCalculator.sum(2,
intCalculator.sum(2, 3,
3, 4));
4));
org.cud.strings.Calculator
org.cud.strings.Calculator strCalculator
strCalculator == new
new org.cud.strings.Calculator();
org.cud.strings.Calculator();
System.out.println("2+3+4
=
"
+
strCalculator.sum("2",
System.out.println("2+3+4 = " + strCalculator.sum("2", "" 3",
3", "" 4"));
4"));
I:\src>javac
I:\src>javac org\cud\hello\HelloCalc.java
org\cud\hello\HelloCalc.java
I:\src>java
I:\src>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Calculator
Hello Calculator
2+3+4
2+3+4 == 99
2+3+4
2+3+4 == 22 33 44
I:\src>
I:\src>
16

17. Импортирование по шаблону

Объявление импорта типа по шаблону – включает .* после полностью
квалифицированного имени пакета и позволяет всем public типам, объявленным в
указанном пакете быть автоматически импортируемыми, если это необходимо.
17

18. Импортирование по шаблону

package
package org.cud.hello;
org.cud.hello;
import
import org.cud.ints.*;
org.cud.ints.*;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
Calculator
Calculator intCalculator
intCalculator == new
new Calculator();
Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ intCalculator.sum(2,
intCalculator.sum(2, 3,
3, 4));
4));
org.cud.strings.Calculator
org.cud.strings.Calculator strCalculator
strCalculator == new
new org.cud.strings.Calculator();
org.cud.strings.Calculator();
System.out.println("2+3+4
=
"
+
strCalculator.sum("2",
System.out.println("2+3+4 = " + strCalculator.sum("2", "" 3",
3", "" 4"));
4"));
I:\src>javac
I:\src>javac org\cud\hello\HelloCalc.java
org\cud\hello\HelloCalc.java
I:\src>java
I:\src>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Calculator
Hello Calculator
2+3+4
2+3+4 == 99
2+3+4
2+3+4 == 22 33 44
I:\src>
I:\src>
18

19. Импортирование по умолчанию

AbstractMethodError
ArithmeticException
ArrayStoreException
Boolean
Character
Class
ClassCastException
ClassCircularityError
ClassFormatError
ClassLoader
ClassNotFoundException
CloneNotSupportedException
Cloneable
Compiler
Double
Error
Exception
ExceptionInInitializerError
Float
IllegalAccessError
IllegalAccessException
IllegalArgumentException
IllegalMonitorStateException
IllegalThreadStateException
IncompatibleClassChangeError
IndexOutOfBoundsException
InstantiationError
InstantiationException
Integer
InternalError
InterruptedException
LinkageError
Long
Math
NegativeArraySizeException
NoClassDefFoundError
NoSuchFieldError
NoSuchMethodError
NullPointerException
Number
NumberFormatException
Object
OutOfMemoryError
Process
Runnable
Runtime
RuntimeException
SecurityException
SecurityManager
StackOverflowError
String
StringBuffer
System
Thread
ThreadDeath
ThreadGroup
Throwable
UnknownError
UnsatisfiedLinkError
VerifyError
VirtualMachineError
Импорт по умолчанию - каждый модуль компиляции автоматически импортирует
каждое имя public-типа, объявленное в пакете java.lang, если это необходимо, как
будто в начале каждого модуля компиляции помещено объявление: import
java.lang.*; сразу же после объявления пакета.
19

20.

Перенаправление вывода
20

21. Простое приложение “Привет калькулятор!”

package
package org.cud.hello;
org.cud.hello;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
Calculator
calculator
=
new
Calculator calculator = new Calculator();
Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ calculator.sum(2,
calculator.sum(2, 3,
3, 4));
4));
class
class Calculator
Calculator {{
public
public int
int sum(int...
sum(int... numbers)
numbers) {{
int
int total
total == 0;
0;
}}
}}
for
for (int
(int ii :: numbers)
numbers) {{
total
total +=
+= i;
i;
}}
return
return total;
total;
21

22. Компиляция модуля компиляции

G:\src\org\cud\hello>dir
G:\src\org\cud\hello>dir
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
04:36
<DIR>
..
04:36 PM
PM
<DIR>
04:36
<DIR>
..
04:36 PM
PM
<DIR>
..
04:33
PM
418
HelloCalc.java
04:33 PM
418 HelloCalc.java
11 File(s)
418
File(s)
418 bytes
bytes
22 Dir(s)
Dir(s) 42,080,186,368
42,080,186,368 bytes
bytes free
free
G:\src\org\cud\hello>javac
G:\src\org\cud\hello>javac HelloCalc.java
HelloCalc.java
G:\src\org\cud\hello>dir
G:\src\org\cud\hello>dir
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
04:46
<DIR>
..
04:46 PM
PM
<DIR>
04:46
<DIR>
..
04:46 PM
PM
<DIR>
..
04:46
369
04:46 PM
PM
369 Calculator.class
Calculator.class
04:46
PM
760
HelloCalc.class
04:46 PM
760 HelloCalc.class
04:33
PM
418
04:33 PM
418 HelloCalc.java
HelloCalc.java
33 File(s)
1,547
File(s)
1,547 bytes
bytes
22 Dir(s)
Dir(s) 42,080,182,272
42,080,182,272 bytes
bytes free
free
G:\src\org\cud\hello>
G:\src\org\cud\hello>
22

23. Компиляция из другой директории

G:\src>dir
G:\src>dir org\cud\hello
org\cud\hello
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
04:34
<DIR>
..
04:34 PM
PM
<DIR>
04:34
<DIR>
..
04:34 PM
PM
<DIR>
..
04:33
PM
418
HelloCalc.java
04:33 PM
418 HelloCalc.java
11 File(s)
418
File(s)
418 bytes
bytes
22 Dir(s)
Dir(s) 42,080,190,464
42,080,190,464 bytes
bytes free
free
G:\src>javac
G:\src>javac org\cud\hello\HelloCalc.java
org\cud\hello\HelloCalc.java
G:\src>dir
G:\src>dir org\cud\hello
org\cud\hello
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
04:35
<DIR>
..
04:35 PM
PM
<DIR>
04:35
<DIR>
..
04:35 PM
PM
<DIR>
..
04:35
369
04:35 PM
PM
369 Calculator.class
Calculator.class
04:35
PM
760
HelloCalc.class
04:35 PM
760 HelloCalc.class
04:33
PM
418
04:33 PM
418 HelloCalc.java
HelloCalc.java
33 File(s)
1,547
File(s)
1,547 bytes
bytes
22 Dir(s)
Dir(s) 42,080,186,368
42,080,186,368 bytes
bytes free
free
G:\src>
G:\src>
23

24. Перенаправление вывода

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
src\org\cud\hello
src\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:02
<DIR>
..
05:02 PM
PM
<DIR>
05:02
<DIR>
..
05:02 PM
PM
<DIR>
..
05:17
PM
420
HelloCalc.java
05:17 PM
420 HelloCalc.java
11 File(s)
420
File(s)
420 bytes
bytes
22 Dir(s)
Dir(s) 42,080,108,544
42,080,108,544 bytes
bytes free
free
G:\>javac
G:\>javac -d
-d bin
bin src\org\cud\hello\HelloCalc.java
src\org\cud\hello\HelloCalc.java
G:\>dir
G:\>dir bin\org\cud\hello
bin\org\cud\hello
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:18
<DIR>
..
05:18 PM
PM
<DIR>
05:18
<DIR>
..
05:18 PM
PM
<DIR>
..
05:20
369
05:20 PM
PM
369 Calculator.class
Calculator.class
05:20
PM
760
HelloCalc.class
05:20 PM
760 HelloCalc.class
22 File(s)
1,129
File(s)
1,129 bytes
bytes
22 Dir(s)
Dir(s) 42,080,108,544
42,080,108,544 bytes
bytes free
free
G:\>
G:\>
24

25. Запуск

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
bin\org\cud\hello
bin\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
06:35
<DIR>
..
06:35 PM
PM
<DIR>
06:35
<DIR>
..
06:35 PM
PM
<DIR>
..
06:38
PM
369
Calculator.class
06:38 PM
369 Calculator.class
06:38
760
06:38 PM
PM
760 HelloCalc.class
HelloCalc.class
22 File(s)
1,129
File(s)
1,129 bytes
bytes
22 Dir(s)
Dir(s) 42,080,022,528
42,080,022,528 bytes
bytes free
free
G:\>cd
G:\>cd bin
bin
G:\bin>java
G:\bin>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Hello Calculator
Calculator
2+3+4
2+3+4 == 99
G:\bin>
G:\bin>
25

26.

sourcepath
26

27. sourcepath

sourcepath – набор каталогов начиная с которых компилятор будет вести поиск
исходных файлов модулей зависимостей. По умолчанию sourcepath включает
текущую директорию. Для задания sourcepath при компиляции используется ключ –
sourcepath. Если не задать перенаправление вывода после компиляции модулей
компиляции зависимостей class файлы будут помещены в папку с исходными
модулями компиляции.
27

28. Простое приложение “Привет калькулятор!”

package
package org.cud.hello;
org.cud.hello;
import
import org.cud.calc.Calculator;
org.cud.calc.Calculator;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
Calculator
Calculator calculator
calculator == new
new Calculator();
Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ calculator.sum(2,
calculator.sum(2, 3,
3, 4));
4));
package
package org.cud.calc;
org.cud.calc;
public
public class
class Calculator
Calculator {{
public
public int
int sum(int...
sum(int... numbers)
numbers) {{
int
int total
total == 0;
0;
}}
}}
for
for (int
(int ii :: numbers)
numbers) {{
total
total +=
+= i;
i;
}}
return
return total;
total;
28

29. Использование sourcepath

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
src\org\cud\calc
src\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\calc
G:\src\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:10
<DIR>
..
05:10 PM
PM
<DIR>
05:10
<DIR>
..
05:10 PM
PM
<DIR>
..
05:10
PM
191
Calculator.java
05:10 PM
191 Calculator.java
11 File(s)
191
File(s)
191 bytes
bytes
22 Dir(s)
Dir(s) 42,080,108,544
42,080,108,544 bytes
bytes free
free
G:\>javac
G:\>javac -sourcepath
-sourcepath src
src src\org\cud\hello\HelloCalc.java
src\org\cud\hello\HelloCalc.java
G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
src\org\cud\calc
src\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Number
is
3400-744D
Serial Number is 3400-744D
Directory
Directory of
of G:\src\org\cud\calc
G:\src\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:28
<DIR>
..
05:28 PM
PM
<DIR>
05:28
<DIR>
..
05:28 PM
PM
<DIR>
..
05:28
PM
369
Calculator.class
05:28 PM
369 Calculator.class
05:10
191
05:10 PM
PM
191 Calculator.java
Calculator.java
22 File(s)
560
File(s)
560 bytes
bytes
22 Dir(s)
Dir(s) 42,080,104,448
42,080,104,448 bytes
bytes free
free
G:\>
G:\>
29

30. Перенаправление вывода

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
src\org\cud\calc
src\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\calc
G:\src\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:31
<DIR>
..
05:31 PM
PM
<DIR>
05:31
<DIR>
..
05:31 PM
PM
<DIR>
..
05:10
PM
191
Calculator.java
05:10 PM
191 Calculator.java
11 File(s)
191
File(s)
191 bytes
bytes
22 Dir(s)
Dir(s) 42,080,104,448
42,080,104,448 bytes
bytes free
free
G:\>javac
G:\>javac -d
-d bin
bin -sourcepath
-sourcepath src
src src\org\cud\hello\HelloCalc.java
src\org\cud\hello\HelloCalc.java
G:\>dir
G:\>dir bin\org\cud\calc
bin\org\cud\calc
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\calc
G:\bin\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
05:12
<DIR>
..
05:12 PM
PM
<DIR>
05:12
<DIR>
..
05:12 PM
PM
<DIR>
..
05:32
369
05:32 PM
PM
369 Calculator.class
Calculator.class
11 File(s)
369
File(s)
369 bytes
bytes
22 Dir(s)
42,080,104,448
bytes
Dir(s) 42,080,104,448 bytes free
free
G:\>
G:\>
30

31. Перенаправление вывода

31

32. Запуск

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
bin\org\cud\hello
bin\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
PM
759
HelloCalc.class
05:12 PM
759 HelloCalc.class
11 File(s)
759
File(s)
759 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
bin\org\cud\calc
bin\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\calc
G:\bin\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
369
05:12 PM
PM
369 Calculator.class
Calculator.class
11 File(s)
369
File(s)
369 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
G:\>cd
G:\>cd bin
bin
G:\bin>java
G:\bin>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Hello Calculator
Calculator
2+3+4
=
2+3+4 = 99
G:\bin>
G:\bin>
32

33.

classpath
33

34. classpath

classpath – набор каталогов относительно которых компилятор или виртуальная
машина будет искать необходимые class файлы согласно иерархии папок. По
умолчанию classpath включает текущую директорию. Для задания classpath при
компиляции и запуске используется ключ –cp или –classpath. Также можно
использовать переменную среды CLASSPATH.
34

35. Простое приложение “Привет калькулятор!”

package
package org.cud.hello;
org.cud.hello;
import
import org.cud.calc.Calculator;
org.cud.calc.Calculator;
public
public class
class HelloCalc
HelloCalc {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
}}
}}
System.out.println("Hello
System.out.println("Hello Calculator");
Calculator");
Calculator
Calculator calculator
calculator == new
new Calculator();
Calculator();
System.out.println("2+3+4
System.out.println("2+3+4 == "" ++ calculator.sum(2,
calculator.sum(2, 3,
3, 4));
4));
35

36. Компиляция с использованием classpath

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
src\org\cud\hello
src\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\src\org\cud\hello
G:\src\org\cud\hello
02/18/2013
02/18/2013
02/18/2013
02/18/2013
11/13/2012
11/13/2012
12:39
<DIR>
..
12:39 PM
PM
<DIR>
12:39
<DIR>
..
12:39 PM
PM
<DIR>
..
05:24
PM
294
HelloCalc.java
05:24 PM
294 HelloCalc.java
11 File(s)
294
File(s)
294 bytes
bytes
22 Dir(s)
Dir(s) 42,011,156,480
42,011,156,480 bytes
bytes free
free
G:\>javac
G:\>javac -d
-d bin
bin -classpath
-classpath bin
bin src\org\cud\hello\HelloCalc.java
src\org\cud\hello\HelloCalc.java
G:\>dir
G:\>dir bin\org\cud\hello
bin\org\cud\hello
Volume
Volume in
in drive
drive GG has
has no
no label.
label.
Volume
Volume Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
02/18/2013
02/18/2013
02/18/2013
02/18/2013
02/18/2013
02/18/2013
12:34
<DIR>
..
12:34 PM
PM
<DIR>
12:34
<DIR>
..
12:34 PM
PM
<DIR>
..
12:40
759
12:40 PM
PM
759 HelloCalc.class
HelloCalc.class
11 File(s)
759
File(s)
759 bytes
bytes
22 Dir(s)
42,011,156,480
bytes
Dir(s) 42,011,156,480 bytes free
free
G:\>
G:\>
36

37. Запуск

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
bin\org\cud\hello
bin\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
PM
759
HelloCalc.class
05:12 PM
759 HelloCalc.class
11 File(s)
759
File(s)
759 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
bin\org\cud\calc
bin\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\calc
G:\bin\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
369
05:12 PM
PM
369 Calculator.class
Calculator.class
11 File(s)
369
File(s)
369 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
G:\>cd
G:\>cd bin
bin
G:\bin>java
G:\bin>java org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Hello Calculator
Calculator
2+3+4
=
2+3+4 = 99
G:\bin>
G:\bin>
37

38. Запуск с использованием classpath

G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
bin\org\cud\hello
bin\org\cud\hello
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\hello
G:\bin\org\cud\hello
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
G:\>dir
G:\>dir
Volume
Volume
Volume
Volume
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
PM
759
HelloCalc.class
05:12 PM
759 HelloCalc.class
11 File(s)
759
File(s)
759 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
bin\org\cud\calc
bin\org\cud\calc
in
in drive
drive GG has
has no
no label.
label.
Serial
Serial Number
Number is
is 3400-744D
3400-744D
Directory
Directory of
of G:\bin\org\cud\calc
G:\bin\org\cud\calc
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
11/13/2012
06:46
<DIR>
..
06:46 PM
PM
<DIR>
06:46
<DIR>
..
06:46 PM
PM
<DIR>
..
05:12
369
05:12 PM
PM
369 Calculator.class
Calculator.class
11 File(s)
369
File(s)
369 bytes
bytes
22 Dir(s)
Dir(s) 42,079,985,664
42,079,985,664 bytes
bytes free
free
G:\>java
G:\>java -classpath
-classpath bin
bin org.cud.hello.HelloCalc
org.cud.hello.HelloCalc
Hello
Hello Calculator
Calculator
2+3+4
2+3+4 == 99
G:\>
G:\>
38
English     Русский Правила