Первая программа на Java
Динамичность
Поддержка потоков
Использование интерпретатора
Переносимость
В отличие от языков С и C++, ни один из элементов спецификации Jаvа не зависит от реализации. И размер основных типов данных, и арифметические операции над ними строго определены. Библиотеки, представляющие собой часть системы, предоставляют интерфейс, обеспечивающий переносимость программ. Например, в языке предусмотрен абстрактный класс Window и его реализации для операционных систем Unix, Windows и Macintosh.
Java-программа может выполняться на любой машине, для которой реализован интерпретатор. Поскольку редактирование связей – относительно легкий процесс, разработка программ может стать намного быстрее и эффективнее.
Хотя обычно интерпретируемые байтовые коды имеют достаточную производительность, бывают ситуации, когда требуется еще более высокая эффективность. Байтовые коды можно транслировать во время выполнения программы в машинные команды для процессора, на котором выполняется данное приложение.
Наличие нескольких потоков обеспечивает лучшую интерактивность и возможность выполнения программ в реальном масштабе времени.
Потоки в языке Java могут использовать преимущества многопроцессорных систем, если операционная система позволяет это сделать. Именно простота организации многопотоковых вычислений делает язык Java таким привлекательным для разработки программного обеспечения серверов.
Во многих отношениях язык Java является более динамичным, чем языки С и C++. Он был разработан так, чтобы легко адаптироваться к постоянно изменяющейся среде. В библиотеки можно свободно включать новые методы и объекты, никак не затрагивая этим приложения, пользующиеся библиотеками. Язык Java позволяет легко получать информацию о ходе выполнения программы.
Изучение любого языка программирования удобно начинать с программы вывода обычного сообщения:
// пример # 1 : простое приложение: First.java public class First { public static void main (String[] args) { System.out.println("Первая программа на Java!"); } } | |
Здесь класс First используется для того, чтобы определить метод main(), который запускается автоматически интерпретатором Java. Метод main() содержит аргументы–параметры командной строки String[] args в виде массива строк и является открытым (public) членом класса. Это означает, что метод main() виден и доступен любому классу. Ключевое слово static объявляет методы и переменные класса, используемые для работы с классом в целом, а не только с объектом класса. Символы верхнего и нижнего регистров здесь различаются, как и в C++. Вывод строки "Первая программа на Java!" в примере осуществляет метод println() (ln – переход к новой строке после вывода) объект out класса System.
Фигурные скобки отмечают начало и конец тела метода или класса. Каждый оператор должен заканчиваться точкой с запятой.
Каждое приложения написанное на Java должно иметь метод main().
Необходимо заметить, что для вызова метода некоторого объекта используется точка (селектор). В общем случае:
Объект.метод(параметры)
Приведенную программу необходимо поместить в файл с расширением .java, имя которого совпадает с именем класса. Простейший способ компиляции – вызов строчного компилятора:
javac First.java
При успешной компиляции создается файл First.class. Выполнить этот виртуальный код можно с помощью интерпретатора Java:
java First
// пример # 2: ввод строки с консоли : InputStr.java | |
import java.io.*;//подключение пакета классов | |
public class InputStr | |
{ | |
public static void main(String[] args) | |
{ | |
/*байтовый поток ввода System.in передается конструктору | |
при создании объекта класса InputStreamReader */ | |
InputStreamReader is = new InputStreamReader(System.in); | |
/*производится буферизация данных, исключающая необходимость | |
обращения к источнику данных при выполнении | |
операции чтения */ | |
BufferedReader bis = new BufferedReader(is); | |
try { | |
System.out.println("Введите Ваше имя и нажмите <Enter>:"); | |
/*чтение строки из буфера; метод readLine() требует | |
обработки возможной ошибки при вводе c консоли в блоке try */ | |
String name = bis.readLine(); | |
System.out.println("Привет, " + name); | |
} | |
catch (IOException e) | |
{System.out.print("ошибка ввода " + e); | |
} | |
} | |
} |
Обработка исключительной ситуации IOException, которая возникает в операциях ввода/вывода, осуществляется в методе main() с помощью реализации блока try–catch.
В результате запуска приложение предложит пользователю ввести имя и нажать ввод, после этого на консоль будет выведен текст приветствия. В этом примере использованы конструкторы и методы классов InputStreamReader и BufferedReader из библиотеки java.io, в частности, метод readLine() для чтения строки из буфера, связанного с потоком ввода System.in.
В языке Java используются однострочные и блочные комментарии // и /* */, аналогичные комментариям, применяемым в C++. Введен также новый вид комментария /** */, который может содержать дескрипторы вида:
@author – задает сведения об авторе;
@exception – задает имя класса исключения;
@param – описывает параметры, передаваемые методу;
@return – описывает тип, возвращаемый методом;
@throws – описывает исключение, генерируемое методом.
Из java–файла, содержащего такие комментарии, соответствующая утилита javadoc.exe может извлекать информацию для документирования классов и сохранения ее в виде HTML–документа. Коментарии в Java игнорируются.