Объектно-ориентированный
Язык Java по своей сути является объектно-ориентированным. Несмотря на то что многие объектно-ориентированные языки начинались строго как процедурные, язык Java с самого начала проектировался как объектно-ориентированный. Объектно-ориентированное программирование (ООП) — популярный подход к программированию, заменяющий традиционную парадигму процедурного программирования.
Одна из центральных проблем в разработке программного обеспечения заключается в том, как многократно использовать код. Объектно-ориентированное программирование обеспечивает большую гибкость, модульность, ясность и многократное использование кода за счет инкапсуляции, наследования и полиморфизма.
Распределенный
Распределенные вычисления включают несколько компьютеров, совместно работающих в сети. Язык Java разработан для упрощения распределенных вычислений. Поскольку в Java встроены сетевые возможности, написание таких программ похоже на отправку и получение данных из файлов.
Интерпретируемый
Для запуска Java-программ необходим интерпретатор. Программы компилируются в код виртуальной машины Java (Java Virtual Machine — JVM), который называется байт-кодом. Байт-код является машинно-независимым и может выполняться на любом компьютере, имеющем Java-интерпретатор, который является частью JVM.
Надежный
Java-компиляторы могут обнаружить множество проблем, которые в других языках возникают только во время выполнения программы.
В Java устранены некоторые типы конструкций программирования, подверженные ошибкам, которые были найдены в других языках.
В Java имеется функциональная возможность обработки исключений во время выполнения программы для обеспечения поддержки программирования.
Кросс-платформенный
«Один раз напишите, везде запустите»
С помощью JVM можно написать программу, которая будет запускаться на любой платформе без повторной компиляции.
Высокопроизводительный
Производительность Java иногда подвергается критике. Выполнение байт-кода никогда не происходит так же быстро, как в случае с компилируемым языком, например, таким, как C++. Поскольку язык Java — интерпретируемый, байт-код непосредственно выполняется не системой, а через интерпретатор. Однако его скорость более чем достаточная для большинства интерактивных приложений, где центральный процессор зачастую простаивает, ожидая входных данных с клавиатуры или из других источников.
Многопоточный
Многопоточное программирование плавно интегрировано в Java, тогда как в других языках для обеспечения многопоточности необходимо вызывать процедуры, специфичные для операционной системы.
Динамичный
Язык Java был разработан для адаптации к развивающемуся окружению. Новый код можно загрузить «на лету» без повторной компиляции. Разработчикам нет необходимости создавать, а пользователям устанавливать новые версии программного обеспечения. При необходимости новые функциональные возможности Java могут прозрачно встраиваться.
Java — это полнофункциональный язык программирования общего назначения, который можно использовать для разработки надежных критически важных приложений. Сегодня он используется не только для веб-программирования, но и для разработки автономных приложений на различных платформах для серверов, настольных компьютеров и мобильных устройств. Язык Java использовался при разработке кода для связи и управления роботизированным марсоходом. Многие компании, которые когда-то считали Java более «хайповым», чем полезным, теперь используют его для создания распределенных приложений, доступных клиентам и партнерам через Интернет. Для каждого разрабатываемого сегодня нового проекта компании задают вопрос, как они могут использовать в нем Java для упрощения своей работы.
World Wide Web (WWW, букв. Всемирная паутина, веб) — это электронное хранилище информации, к которому можно получить доступ в Интернете из любой точки мира. Интернет (веб-инфраструктура) существует уже более 40 лет. Красочная Всемирная паутина и сложно устроенные веб-браузеры являются главной причиной популярности Интернета.
Язык Java изначально стал привлекательным, поскольку Java-программы могли запускаться из веб-браузера. Такие программы назывались апплетами. Сегодня апплеты больше не могут запускаться из веб-браузера из-за проблем с безопасностью в последних версиях Java. Однако язык Java сейчас очень популярен для разработки веб-серверных приложений. Эти приложения обрабатывают данные, выполняют вычисления и создают динамические веб-страницы. Бэкэнд многих коммерческих веб-сайтов, в том числе официального сайта ПАО «Сбербанк», разрабатывается с использованием Java.
Java-программа выполняется в классе, начиная с метода main().
*Что такое консоль?
Консоль — это старый компьютерный термин, который относится к устройству ввода/вывода текста, обеспечивающего взаимодействие человека с компьютером. Консольный ввод позволяет получить входные данные с клавиатуры, а консольный вывод — отобразить выходные данные на мониторе.
public class Welcome {
public static void main(String[ ] args) {
// Отображает в консоли сообщение Добро пожаловать в Java!
System.out.println("Добро пожаловать в Java!");
}
}
В строчке №1 определяется класс. Так как язык Java является объектно-ориентированным, каждая Java-программа должна иметь хотя бы один класс. У каждого класса есть имя, с которым должно совпадать имя программы (по крайней мере в этом курсе). По традиции имена классов начинаются с прописной буквы. В этом примере именем класса является Welcome. Подробное о классах и объектно-ориентированном программировании вы узнаете в следующих курсах. В этом курсе термины класс и программа пока будут использоваться как синонимы.
В строчке №2 определяется метод main(). Программа выполняется, начиная с метода main(). Класс может содержать несколько методов. Метод main() является точкой входа, откуда программа начинает свое выполнение. Метод — это конструкция, содержащая предложения. Метод main() в этой программе содержит предложение System.out.println(). Это предложение отображает в консоли строку Добро пожаловать в Java! (строчка №4). Строка (String) — термин в программировании, означающий последовательность символов. Строка должна быть заключена в двойные кавычки. Каждое предложение в Java заканчивается точкой с запятой (;).
Зарезервированные (или ключевые) слова имеют особое значение для компилятора и не могут использоваться в программе для других целей. Например, когда компилятор видит слово class, он понимает, что слово после class является именем класса. Другими зарезервированными словами в этой программе также являются public, static и void.
Строчка №3 является комментарием, который документирует, что это за программа и как она построена. Комментарии помогают программистам общаться друг с другом и понимать программу. Они не являются Java-предложениями и, таким образом, игнорируются компилятором. В Java, комментарию на одной строчке предшествует два прямых слеша (//), и такой комментарий называется однострочным. Комментарий на одной или нескольких строчках заключается между /* и */ и называется блочным комментарием. Когда компилятор видит //, он игнорирует весь текст после // до конца этой строчки. Когда он видит /*, он далее ищет */ и игнорирует весь текст между /* и */.
Примеры комментариев:
// Эта программа отображает «Добро пожаловать в Java!»
/* Эта программа отображает «Добро пожаловать в Java!» */
/* Эта программа отображает
«Добро пожаловать в Java!» */
Пара фигурных скобок в программе образует блок, который группирует компоненты программы. В Java каждый блок начинается с открывающей фигурной скобки ({), а заканчивается закрывающей фигурной скобкой (}). Каждый класс имеет блок класса, который группирует данные и методы класса. Аналогично каждый метод имеет блок метода, который группирует предложения в методе. Блоки могут быть вложенными, что означает, что один блок может быть помещен в другой, как показано в следующей программе:
public class Welcome {//<------------------------------------------------------
public static void main(String[ ] args) {//<------------------- |
System.out.println("Добро пожаловать в Java!");// блок метода| блок класса|
}//<----------------------------------------------------------- |
}
Исходный код Java-программы чувствителен к регистру. Было бы некорректно, например, заменить в программе main на Main.
Вы видели в программе несколько специальных символов (например, { }, //, ;). Они используются практически в каждой программе. Далее в таблице приводится краткая информация об их применении.
Символ | Имя | Описание |
{ } | Открывающая и закрывающая фигурные скобки | Обозначают блок, заключающий предложения |
( ) | Открывающая и закрывающая круглые скобки | Используются в методах |
[ ] | Открывающая и закрывающая квадратные скобки | Обозначают массив |
// | Двойной прямой слэш | Предшествуют однострочному комментарию |
" " | Открывающая и закрывающая двойные кавычки | Заключают строку (т.е. последовательность символов) |
; | Точка с запятой | Помечает конец предложения |
Наиболее распространенные ошибки в программировании — синтаксические. Как и любой другой язык программирования, Java имеет свой собственный синтаксис, и нужно писать код, соответствующий правилам синтаксиса. Если программа нарушает правило, например, пропущена точка с запятой, скобка, кавычка или слово написано с ошибкой, то компилятор Java сообщит о синтаксических ошибках. Попробуйте скомпилировать программу с этими ошибками и посмотреть, что сообщает компилятор.
Стиль программирования и документирования
Хороший стиль программирования и надлежащая документация облегчают чтение программы и помогают программистам предотвратить ошибки.
Стиль программирования связан с тем, как выглядят программы. Программа может должным образом компилироваться и запускаться, даже если она написана в одну строчку, но писать всю программу на одной строчке было бы плохим стилем программирования, потому что она будет трудной для прочтения. Документация является сводом пояснительных замечаний и комментариев, относящихся к программе. Стиль программирования и документирования так же важны, как и кодирование. Хороший стиль программирования и соответствующая документация уменьшают вероятность ошибок и облегчают чтение программ. В этом подразделе курса приводится несколько рекомендаций.
Подходящие комментарии и стили комментариев
В начало программы включайте резюме, объясняющее, что делает программа, ее ключевые функциональные возможности и все уникальные технические приемы, которые в ней используются. В длинную программу также следует включать комментарии, которые предваряют каждый важный шаг и объясняют все, что трудно прочитать. Важно сделать комментарии лаконичными, чтобы они не перегружали программу и не затрудняли ее прочтение.
В дополнение к однострочным комментариям (начинающимся с //) и блочным комментариям (начинающимся с /*) Java поддерживает комментарии специального типа, которые называются комментариями javadoc. Комментарии javadoc начинаются с /** и заканчиваются */. Их можно извлечь в HTML-файл с помощью JDK-команды javadoc.
Комментарии javadoc (/** ... */) используются для комментирования целого класса или целого метода. Эти комментарии должны предшествовать классу или заголовку метода для извлечения их в HTML-файл javadoc. Для комментирования шагов внутри метода используйте однострочные комментарии (//).
Правильные отступы и пробелы
Согласованный стиль отступов делает программы понятными и простыми для чтения, отладки и сопровождения. Отступы используются для иллюстрации структурных связей между компонентами или предложениями программы. Java может прочитать программу, даже если все предложения находятся на одной-единственной длинной строчке, но людям легче читать и поддерживать правильно выровненный код. Сделайте отступ для каждого подкомпонента или предложения хотя бы на два пробела больше, чем для конструкции, в которую он вложен.
С обеих сторон бинарных операторов должны быть добавлены единичные пробелы, как показано далее в коде слева, в отличие от кода справа.
System.out.println(3 + 4 * 4); | System.out.println(3+4*4); |
Хороший стиль | Плохой стиль |
Стили блоков
Блок — это группа предложений, заключенная в фигурные скобки. Существует два популярных стиля: стиль следующей строчки и стиль конца строчки, как показано далее.
Стиль следующей строчки:
public class Test
{
public static void main(String[] args)
{
System.out.println("Стили блока");
}
}
Стиль конца строчки:
public class Test {
public static void main(String[] args) {
System.out.println("Стили блока ");
}
}
Стиль следующей строчки выравнивает фигурные скобки по вертикали и облегчает чтение программ, в то время как стиль конца строчки экономит место и может помочь избежать некоторых ошибок программирования. Оба стиля являются приемлемыми стилями блоков. Выбор зависит от личных или корпоративных предпочтений. Стиль блоков следует использовать последовательно — смешивать стили не рекомендуется. В этом курсе используется стиль конца строчки, соответствующий исходному коду Java API.
Ошибки программирования
Ошибки программирования можно разделить на три типа: синтаксические, ошибки во время выполнения и логические.
Синтаксические ошибки
Ошибки, которые обнаруживает компилятор, называются синтаксическими ошибками или ошибками компиляции. Синтаксические ошибки являются результатом ошибок в написании кода, таких как опечатки в зарезервированных (ключевых) словах, пропуск необходимых знаков препинания или использование открывающей скобки без соответствующей ей закрывающей скобки. Эти ошибки обычно легко обнаружить, поскольку компилятор сообщает, где они находятся и что их вызвало.
Сообщается о четырех синтаксических ошибках, но программа имеет на самом деле две таких ошибки:
- Ключевое слово void отсутствует перед словом main в строчке №2.
- Строка Добро пожаловать в Java! должна быть закончена закрывающей двойной кавычкой в строчке №3.
Поскольку одна и та же ошибка часто отображается в нескольких строчках ошибок компиляции, рекомендуется исправлять ошибки, начав с верхней строчки и двигаясь по ним вниз. Исправление ошибок, возникших в программе в начале процесса компиляции, может также исправить дополнительные ошибки, возникшие позже.
Подсказка
Если вы не знаете, как исправить ошибки, сопоставьте вашу программу посимвольно с аналогичными примерами по тексту курса. В начале этого курса вы, вероятно, потратите много времени на исправление синтаксических ошибок. Вскоре вы познакомитесь с синтаксисом Java и научитесь быстро исправлять синтаксические ошибки.
Ошибки во время выполнения
Ошибки во время выполнения (программы) — это ошибки, которые приводят к аварийному завершению программы. Они возникают во время выполнения программы, если среда обнаруживает операцию, которую невозможно выполнить. Ошибки во входных данных обычно приводят к ошибкам во время выполнения. Ошибка во входных данных возникает, когда программа ожидает ввода значения пользователем, а пользователь вводит значение, которое программа не может обработать. Например, если программа ожидает ввод числа, а вместо этого пользователь вводит строку, то это приведет к возникновению в программе ошибок с типами данных.
Еще одним примером ошибок во время выполнения является деление на ноль. Это происходит, когда делитель равен нулю при делении целых чисел.
Логические ошибки
Логические ошибки возникают, когда программа не работает так, как предполагалось изначально. Ошибки такого рода возникают по разным причинам. Например, предположим, что вы написали программу ShowLogicErrors для преобразования 35 градусов по шкале Цельсия в градусы по шкале Фаренгейта.
Вы получите 67 градусов по шкале Фаренгейта, что неправильно. Должно быть 95.0. В Java результатом деления целых чисел является целая часть частного, так как дробная часть усекается, поэтому в Java 9 / 5 равняется 1. Для получения правильного результата необходимо использовать 9.0 / 5, что приведет к 1.8.
Итак, синтаксические ошибки легко найти и легко исправить, потому что компилятор дает указания на то, где появились ошибки и в чем они заключаются. Ошибки во время выполнения также несложно найти, так как причины и местоположение ошибок отображаются в консоли, когда программа прерывается. Поиск же логических ошибок, в отличие от остальных, может быть очень трудным. В следующих разделах вы узнаете методики трассировки программ и поиска логических ошибок.
Распространенная ошибка №1: отсутствие скобки
Фигурные скобки используются для обозначения блока в программе. Каждая открывающая скобка должна соответствовать закрывающей. Отсутствие закрывающей скобки является распространенной ошибкой. Чтобы избежать этой ошибки, набирайте закрывающую скобку при каждом наборе открывающей скобки, как показано в следующем примере:
public class Welcome {
} // <- cразу же наберите }, чтобы она соответствовала {
Распространенная ошибка №2: отсутствие точки с запятой
Каждое предложение заканчивается символом точки с запятой (;). Часто начинающий программист забывает поместить этот символ для последнего предложения в блоке, как показано в следующем примере:
public static void main(String[] args) {
System.out.println("Programming is fun!");
System.out.println("Fundamentals First");
System.out.println("Problem Driven") // <- отсутствует ;
}
Распространенная ошибка №3: отсутствие двойной кавычки
Строка должна быть помещена в двойные кавычки. Часто начинающий программист забывает поместить двойную кавычку в конце строки, как показано в следующем примере:
System.out.println("Problem Driven); // <- отсутствует "
Распространенная ошибка №4: опечатка в имени
Язык Java чувствителен к регистру. Опечатки в именах являются распространенной ошибкой для начинающих программистов. Например, слово main будет написано с ошибкой как Main, а String — как string в следующем коде:
No comments:
Post a Comment