Реклама
http://www.vashclimate.ru/ срочная установка кондиционеров.
Спонсорские ссылки
-
Статья
Версия для печати
Обсудить на форуме
Язык программирования Ява (Java). Часть 2.



5. Что нужно для создания программ на Яве и где все это взять.
Исходя из того, о чем мы с вами говорили на прошлом занятии, вы можете ответить на первый вопрос сами: нужны компилятор Явы и интерпретатор байткодов. Кстати, интерпретатор байткодов обычно называется JVM (сокращение от Java Virtual Machine -  виртуальная машина Явы). К этому еще можно добавить редактор текстов, чтобы было на чем писать программу. Это - необходимый минимум. Можно, конечно, добавить еще много всего для облегчения жизни программиста, но речь сейчас не об этом.

Теперь, где все это взять? Зайдите на официальный сайт языка Ява по адресу http://java.sun.com/ Там вы найдете море разнообразной информации, относящейся к самому языку, технологиям, построенным на базе языка, а также все необходимое, для того, чтобы писать программы на Яве. Очень рекомендую постоянно возвращаться на этот сайт при работе на Яве.

Сайт, естественно, англоязычный. Что же делать, если с английским у вас проблемы? Учить английский - это будет самый правильный ответ. Ну, а если все-таки не учить? Тогда попробуйте зайти на сайт http://www.sun.ru/java Там вы найдете некоторое количество русской и смешанной русско-английской информации и множество ссылок на основную страницу языка Ява.

Однако, вернемся на официальную страницу. Что нам нужно в первую очередь? То, что мы ищем (средства для создания программ на Яве) называется J2SE (сокращение от Java 2 Standard Edition - Ява 2, стандартная редакция). На цифру 2 в названии не обращайте внимание - это был, на мой взгляд, не очень хороший маркетинговый ход, вызвавший достаточно путаницы. Все равно, никакого другого языка - ни Ява 1, ни Ява 3 на сегодняшний день не существует.

На той же странице вы найдете такие сокращения, как J2EE (Java 2 Enterprise Edition) и J2ME (Java 2 Micro Edition) - ни то ни другое для изучения языка не нужно.

Указанная страница изменяется довольно часто, так что детально описывать шаг за шагом поиск того, что вам нужно, не имеет смысла. Ваша цель - загрузить J2SE SDK (сокращение от Software Development Kit - средства для разработчика). SDK включает компилятор, интерпретатор, все необходимые библиотеки и некоторые полезные утилиты, которые мы обсудим в дальнейшем. Последняя версия SDK на момент написания этого текста - 1.4.2, но на самом деле с момента версии 1.2 существенных изменений в языке не было, так что вас устроит любая версия начиная с 1.2 и до 1.4.х. Летом 2004 года должна быть выпущена версия 1.5 с существенными изменениями - вот тогда о ней и поговорим.

SDK поставляется в виде самораспаковывающегося файла размером (в зависимости от версии) от 30 до 50 мегабайт. SDK существует для различных платформ, так что при загрузке вы можете выбрать платформу, на которой собираетесь работать. SDK не является интегрированной средой для разработчика. Если вы непременно хотите работать в интегрированной среде, у вас есть много вариантов от разных поставщиков:

  • NetBeans - Sun
  • Forte - Sun
  • JBuilder - Borland
  • Visual Age - IBM
  • WebSphere Application Developer - IBM
  • Visual Cafe - Symantec
  • JDeveloper - Oracle
  • и другие.

Первые два из приведенных вариантов - бесплатны, остальные являются платными коммерческими продуктами.

Как я и обещал, в нашем курсе мы не будем заниматься этими средами. Будем считать, что вы загрузили и установили SDK. Работать с SDK надо в режиме консоли или командной строки. Вам понадобятся, в первую очередь, две программы из состава SDK: javac - компилятор с языка Ява в байткоды и java - интерпретатор байткодов.

У вас может возникнуть вопрос: "Ну хорошо, но ведь для того, чтобы программу компилировать, ее прежде надо набрать. Как это сделать?" Для этого нужен редактор текстов, который не входит в состав SDK. Используйте любой редактор текстов, с которым можно работать в вашей системе. Например, для Windows это может быть notepad, а для UNIX - vi. Могут быть и другие редакторы, но главное, что вы должны помнить: результатом работы редактора должен быть текст. Чистый текст, без всякой дополнительной информации, только в этом случае компилятор сможет его обработать. 

Примечание: Если вы не очень хорошо представляете себе, что такое текстовый файл и как определить, является данный файл текстовым, или нет, эта информация вам должна помочь.

Текстовый файл - это файл, содержащий только коды символов и никакой другой информации. Например, стандартный файл, создаваемый редактором Word под Windows текстовым не является, потому, что, помимо собственно текста этот редактор позволяет задавать виды и размеры шрифта, цвет и т.д., а, значит, в создаваемом файле будут находиться не только коды символов, но еще и всякая дополнительная информация.

Проверить, является ли файл текстовым обычно очень просто. Если вы работаете под Windows, вызовите консоль MS DOS и наберите команду:

type filename
    где filename - название интересующего вас файла.

Если в результате вы увидите содержимое файла без всякого мусора, значит файл текстовый. Если появятся всякие странные значки, или звук начнет раздаваться, значит файл не текстовый. В любой версииUNIX (LINUX) вместо вышеуказанной команды надо набрать такую:

cat filename
   с теми же результатами.

6. Наконец-то первая программа!
Теперь, когда нам (надеюсь!) ясно, что нужно для создания программ на Яве и где все это взять, давайте попробуем написать, откомпилировать и исполнить нашу первую программу на этом языке. С легкой руки Кернигана и Ричи наша программа, как и большинство первых программ в различных языках программирования будет выводить текст "Hello world!".
Код:
/* This is my first program */
class MyFirst
{
public static void main(String ar[])
{
System.out.println("Hello world!");
}
}
Вот и все!

Теперь давайте эту программу наберем, скомпилируем и попробуем запустить. Для этого проделаем следующее:

1. Заведем отдельную директорию для нашей первой программы.
2. Наберем указанный выше код в текстовом редакторе и запомним его в заведенной нами директории под именем  MyFirst.java
   Примечания:
   а. Язык Ява различает заглавные и маленькие буквы, так что внимательно следите за тем, чтобы набранный вами текст полностью соответствовал написанному выше.
   б. Обратите внимание на то, что основная часть имени файла (MyFirst) соответствует слову, стоящему в тексте программы после слова "class". Это не случайно. В дальнейшем мы обсудим, когда и для чего это нужно, а когда без этого можно обойтись.


3. В режиме командной строки сделайте ту директорию, куда вы поместили файл MyFirst.java текущей. После этого наберите команду:

javac MyFirst.java

Если вы все сделали правильно, никаких сообщений не должно появиться. Теперь можно проверить, что сделал компилятор. Оказывается, он создал в той же директории файл MyFirst.class - это и есть байткод для нашей первой программы.
4. Наберите команду:

java MyFirst

и, если вы сделали все правильно, на экране появится текст "Hello world!"
Примечание: Поскольку язык Ява различает заглавные и маленькие буквы, надо внимательно следить за тем, что вы набрали! В слове MyFirst заглавными должны быть буквы "M" и "F".[/b]

7. Структура нашей первой программы.
Если программа отработала правильно, давайте разберемся в том, что же мы все-таки написали. Если нет - все равно, давайте разберемся, может это нам поможет найти ошибки.

На примере этой программы мы можем увидеть основные составные части любой программы на Яве. Давайте посмотрим, что означает каждая строка программы.

7.1.
/* This is my first program */

(англ. - "Это моя первая программа").

Когда ваша программа состоит из нескольких строчек, как в нашем примере, прочитать ее и понять, что она делает, очень просто. Однако, представим себе настоящие серьезные программы. В них могут быть многие тысячи строк. В такой ситуации очень трудно понять, что программа делает, просто читая ее код. Нужны пояснения, и чем больше программа - тем больше пояснений нужно. Но, с другой стороны, все, что мы напишем в программе, в том числе и наши пояснения для человека, будут восприниматься компилятором как часть кода. Естественно, пояснения для человека будут компилятору непонятны, а значит, вызовут сообщения об ошибках. Для решения этой проблемы в языках программирования есть стандартное средство - комментарий.

Комментарий - это часть текста программы, игнорируемая компилятором и как следствие, никак не влияющая на работу программы.

В языке Ява есть три вида комментария. Два из них унаследованы из языков С и С++ (как вы помните, Ява унаследовала очень много синтаксических элементов из этих языков).

1. Текст, начинающийся комбинацией символов "/*" и заканчивающийся комбинацией символов "*/". Это так называемый текстовый комментарий. Он может занимать часть строки, целую строку, или даже несколько строк. В любом случае, текст, находящийся между комбинацией косая черта-звездочка и обратной комбинацией компилятором восприниматься не будет.
   Примечание: Комбинацию двух символов "/*"(как и "*/", а также  и любые другие комбинации из двух и более символов, обозначающие совместно какой нибудь элемент синтаксиса) надо воспринимать как "слово" и не допускать внутри нее никаких других символов, в том числе и пробелов.

2. Текст, начинающийся комбинацией символов "//" (две косые черты), и продолжающийся до конца строки называется строковым комментарием. Люди, которым приходилось писать серьезные программы, знают, что для программы надо создавать документацию, чтобы узнать, что делает программа и как она устроена, можно было без чтения кода. Как легко догадаться, эта документация частично дублирует комментарии в программе. Для того, чтобы избежать такого дублирования, разработчики языка Ява предусмотрели специальное средство для автоматической генерации документации - программу javadoc, которая наряду с компилятором и интерпретатором входит в SDK. При создании документации эта программа использует специальный вид комментария - так называемый комментарий для документирования.

3. Текст, начинающийся комбинацией символов "/**" и заканчивающийся комбинацией символов "*/" называется комментарием для документирования. Он устроен точно так же, как и обычный текстовый комментарий, за исключением добавления еще одной звездочки в комбинацию символов, обозначающих начало комментария.

Таким образом, первая строчка нашей программы - это просто текстовый комментарий.

Программа может включать сколько угодно комментариев любых видов.

7.2.
Код:
class MyFirst
{
  .  .  .
}

Любая программа на языке Ява состоит из одного или нескольких классов. В дальнейшем мы подробно разберем, что такое классы и для чего они нужны. Сейчас же для нас классы - это блоки, кирпичи из которых строится программа. Описание класса выглядит следующим образом:
Код:
class Name
{
 .  .  .
}

где   class - ключевое слово, обозначающее, что мы создаем именно класс.
   Name - название класса. Названием класса может быть любая последовательность букв, цифр, символов подчеркивания и знаков $. Эта последовательность не может начинаться с цифры. Маленькие и заглавные буквы различаются, так что MyFirst, myfirst и MYFIRST - это разные имена.

После названия класса идет так называемое тело класса. Тело класса - это часть программы, полностью описывающая все относящееся к этому классу, все, что входит в этот класс. Тело класса всегда заключено в фигурные скобки.
В соответствии с приведенным описанием наша программа состоит из одного класса, который называется MyFirst.

7.3.
Код:
public static void main(String ar[])
{
.  .  .
}

Что может входить в класс? Из чего он состоит?

Чтобы ответить на этот вопрос, необходимо вспомнить, из чего состоит любая программа. А любая программа состоит, как мы помним, из исполняемого кода и данных. Точно также и класс состоит из исполняемого кода и данных.

Исполняемый код в Яве записывается в виде так называемых  методов или функций. На самом деле оба эти слова используются в литературе для обозначения одного и того же. Синтаксически, метод (функция) в Яве записывается следующим образом:
Код:
modifiers return_type name (parameters)
{
.  .  .
}

где
  • modifiers - модификаторы. Это необязательная часть описания функции.
  • return_type - тип возвращаемого значения.
  • name - название функции. Оно строится по тем же правилам, что и название класса. И вообще любое название, или, как иногда говорят, имя, строится в языке Ява по одним и тем же законам.
  • parameters - необязательные параметры, передаваемые функции при запуске.

Так же, как и в классе, в конце идет тело функции, обрамленное фигурными скобками. В теле функции описывается все, что эта функция делает. Тело функции состоит из набора операций описывающих, что именно функция должна делать. Описание каждой операции завершается точкой с запятой ";".

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

7.4.
Код:
System.out.println("Hello world!");
Исходя из написанного выше, ясно, что это единственная операция в единственной функции единственного класса нашей программы. Зная, что, в результате работы нашей программы на экран будет выведен текст Hello world!, мы можем вполне логично предположить, что System.out.println(". . ."); - это команда, выводящая на экран текст, помещенный внутри кавычек. Так оно на самом деле и есть.

8. Дополнительные замечания о синтаксисе.
1. В приведенной программе, как вы могли обратить внимание, используются все виды скобок - и круглые, и квадратные, и фигурные. У каждого из видов скобок - свое собственное использование. Все скобки используются в синтаксисе языка только парами - открывающая и соответствующая ей закрывающая.

2. Ява - язык со свободным синтаксисом. Это означает, что синтаксические элементы не привязаны к каким-либо определенным позициям в строке. Более того, за исключением строкового комментария, к строке они тоже не привязаны, т.е. переход на новую строку и пробелы могут встречаться в программе более не менее свободно. Например, нашу первую программу можно было бы записать так:


/* This is my first program */ class MyFirst {  public static void main(String ar[])  {    System.out.println("Hello world!");  }}


Эта запись не только абсолютно правильная, но и абсолютно идентична нашей первоначальной записи. Для компилятора все равно, обрабатывать первый вариант нашей программы, или второй: результат будет тот же.

Можно еще записать и так:
Код:
/* This is my first program */
class MyFirst {
public static void main(String ar[])  {
System.out.println("Hello world!");
}
}
Опять получилось то же самое с точки зрения компилятора.

А теперь сравните эти три варианта с точки зрения человека: какой удобнее читать? Безусловно, первый! Конечно, для такой короткой программы это не очень заметно, но представьте себе, что в программе несколько сотен строчек...

Парадоксально, но еще в начале 90-х годов прошлого века с подачи некоторых авторов учебников программирования широко распространился стиль записи программы, использованный в последнем варианте (это, правда, относилось не к Яве, а к С, но, в связи со сходством синтаксиса, такой стиль перекочевал и в Яву). Чтобы понять недостатки такой формы записи, обратите внимание на то, что в ней хорошо видны закрывающие фигурные скобки, но, в отличие от нашей с вами первой формы записи, абсолютно не бросаются в глаза открывающие. А теперь представьте себе, что в вашей программе оказалось несколько сот строчек и 99 открывающих и 100 закрывающих фигурных скобок. Легко ли будет искать недостающую скобку?

Задания.
1. Напишите программу, выводящую какой-нибудь другой текст, не Hello World!
2. Напишите программу, выводящую два текста, а не один.



Автор: Sashok Sam
Версия для печати
Обсудить на форуме