Java зачем нужна на компьютере

Введение в Swing

Swing — это набор классов для создания графического интерфейса пользователя (GUI) в Java-программах. В сравнении с ранее использовавшейся библиотекой AWT, у библиотеки Swing есть ряд преимуществ:

  • богатый набор интерфейсных примитивов;
  • настраивающийся внешний вид на различных платформах (look and feel);
  • раздельная архитектура «модель-вид» (model-view);
  • встроенная поддержка HTML.

Изучение Swing начинается с написания пустого окна на основании класса JFrame. Затем изучается назначение JPanel, JLabel, JButton и других элементов библиотеки java.awt, размещение элементов с помощью BorderLayout и других компоновщиков, обработка кликов по кнопке и кликов мыши по элементу, а также рисование на JPanel.

Материал по разделу можно найти в книгах:

  • «Java. Библиотека профессионала. Том 1. Основы» — главы 10, 11, 12;
  • «Java 8. Полное руководство» — главы 31, 32, 33.

Зачем нужен единый стиль кода

Java Code Style — это рекомендации и соглашения о стиле кода, собранные вместе. Например:

  • как использовать отступы;
  • когда и как ставить скобки всех видов;
  • как оформлять комментарии;
  • в каком стиле давать названия классам, переменным, константам;
  • какой должна быть максимальная длина строки кода.

Регламентируется множество вещей, связанных с оформлением исходного текста программ, и приводятся требования, которые необходимо учитывать. Почему возникли эти стандарты?

Причины, по которым разработчики пришли к таким соглашениям, логичны и просты:

  • 70 — 80% расходов при создании ПО приходится на поддержку и развитие кода.
  • Над кодом обычно работают команды программистов, а не один человек. Состав команд меняется со временем, и единый стиль позволяет легче вводить новых разработчиков в проект.
  • Код больше читают, чем пишут. Прежде чем внести изменение, которое может состоять из пары новых строк, приходится изучить сотни, а иногда и тысячи старых.
  • Правильное оформление кода облегчает чтение. Даже если текст программы пишут разные команды, он будет понятен каждому разработчику, а скорость восприятия будет высокой.
  • Гораздо проще поддерживать программы и сравнивать версии кода, когда у файлов согласованный стиль.

Переменные в Java

Теперь пришло время рассказать о некоторых более важных вещах, лежащих в основе Java. Мало что может быть более фундаментальным в программировании, чем обучение использованию переменных!

Переменная по сути является «контейнером» для некоторых данных. Это означает, что вы выберете слово, которое будет представлять какое-то значение. Нам также необходимо определить переменные, основанные на типе данных, на которые они будут ссылаться.

Вот три основных типа переменных, которые мы собираемся ввести в этом руководстве по Java:

Как только мы определяем переменную, мы можем вставить ее в наш код, чтобы изменить выходные данные. Например:

Теперь мы печатаем на экране, как и раньше, но на этот раз заменяем «Hello world!» на «Hello + имя». Этот код показывает строку «Hello», за которой следует любое значение, содержащееся в следующей строковой переменной!

Есть ли у Java альтернатива?

Может показаться, что Java — абсолютный лидер и у неё нет соперников, но на самом деле всё совсем наоборот. Её часто сравнивают с С# и Python, и это только главные «противники». Давайте посмотрим на них внимательнее.

Java против Python

Java и Python соревнуются не первый год: в рейтингах они раз за разом занимают места рядом друг с другом (вот рейтинг 2019 года). Сравнивают их не просто так, у них действительно есть общие черты: оба языка очень популярные, объектно-ориентированные и работают вне зависимости от платформы.

Давайте посмотрим, что у них различается.

Типизация

У Java статическая типизация вы должны прописывать тип данных, когда вводите новую переменную.

У Python динамическая типизация: это значит, что типы данных не надо прописывать, они определяются автоматически. Ещё одно отличие типизации: в Python разные типы переменных можно смешивать. Но и тут есть свои границы: например, вы можете сделать массив со строками и числами, но прибавить строку к числу уже нельзя.

Python даст вам больше гибкости и лёгкости в написании, зато Java предупредит ошибки.

Читаемость

Этот пункт связан с предыдущим, потому что то же указание типов влияет на конечный вид кода. Хотя у Java достаточно простой синтаксис по сравнению с другими языками, здесь Python выигрывает. Гораздо лучше слов эту разницу покажет пример.

Вот так может выглядеть код в Python:

То же самое, написанное в Java:

В целом у синтаксиса в Python простая ясная структура, он хорошо читается, его можно даже назвать интуитивным. Он хорошо подойдёт новичкам.

В Java код более комплексный, со множеством слов и знаков: на английском такой синтаксис называют словом «verbose», то есть «говорливый» код, многословный. Он хуже читается и может быть сложноват для новичков, хотя многие разработчики чувствуют себя комфортнее со строгим синтаксисом.

Методы класса

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

Метод класса — это блок кода, состоящий из ряда инструкций, который можно вызывать по его имени. Он обязательно содержит возвращаемый тип, название, аргументы и тело метода.

Синтаксис метода в Java:

Строка возвращаемыйТип показывает, какого типа данные вернёт метод. Например, если в качестве возвращаемого типа мы поставим тип String, то метод должен будет вернуть строку, а если int — целое число.

Чтобы вернуть значение из метода, используется специальное слово return. Если мы хотим, чтобы метод ничего не возвращал, то вместо возвращаемого типа нужно использовать специальное слово void.

Аргументы — то, что нужно передать в метод при его вызове. Мы можем указать сколько угодно параметров через запятую либо не указывать ни одного.

Для примера напишем простейший метод с именем sum (пока что не в нашем классе Pet), который складывает два переданных числа и возвращает их результат:

Возвращаемый тип метода int, он указан перед именем sum. Далее идут два аргумента a и b, у обоих также указан тип int

Важно помнить, что возвращаемый тип и тип переменных не обязательно должны совпадать

Аргументы метода работают как обычные переменные — за пределами метода к ним никак нельзя получить доступ. Внутри метода мы складываем значения из переменных a и b, записываем полученное значение в переменную c. После этого мы возвращаем значение переменной c — только оно доступно вне метода.

Вот пример:

Мы передали в метод sum два значения 1 и 2, а на выходе получили результат их сложения 3. Также можно создать метод, который принимает значение типа String, а возвращает длину этой строки:

В этом случае у нас возвращаемый типа int, а параметр str — типа String.

Попробуем использовать этот метод:

Также мы можем создать метод, который ничего не возвращает, а просто печатает переданное слово в консоль:

Либо метод, который ничего не принимает на вход, а просто печатает «Привет!»:

В методах, которые ничего не возвращают, слово return можно опустить.

Обратите внимание, что return полностью прекращает выполнение метода:

Теперь попробуем вызвать этот метод, передав в него число 3:

В этом случае мы ничего не увидим в консоли, так как 3 меньше 5, а значит, отработает блок if и произойдёт выход из метода с помощью слова return.

Но если передадим 6, увидим нашу надпись «Привет!»:

Java или C ++: что общего

Поскольку на Java сильно повлиял C ++, вполне естественно, что эти языки имеют много общего. Причём синтаксис является наиболее очевидным. Оба они были основаны на одном и том же языке C, и команда Java выбрала это сознательно. Чтобы синтаксис нового языка казался знакомым разработчикам, которые в то время в основном работали с C ++. Вы заметите, что многие ключевые слова на самом деле одинаковы (общедоступные, частные, статические, break, continue, char и т.д.), а также некоторые группы операторов (арифметические и реляционные).

И Java, и C ++ поддерживают очень похожие примитивные типы. Есть небольшие несоответствия (например, один и тот же тип называется boolean в Java и bool в C ++), но это всё. Даже комментарии написаны одинаково — вы либо начинаете с двух косых черт (//), либо используете одну косую черту со звёздочкой (начинаются с / * и заканчиваются * /).

Когда мы сравниваем Java и C ++, нет различий в типизации: оба они статически типизированы. При программировании на подобных языках разработчик должен явно объявлять имя каждой переменной, что означает привязку её к определённому типу данных. В отличие от языка с динамической типизацией, если в качестве значения присваивается объект другого типа, система выдаёт исключение типа. Они оба обычно также компилируются, что означает, что вам нужно использовать компилятор, а не интерпретатор. Компилятор преобразует исходный код, написанный вами на Java или C ++, в машиночитаемые инструкции. Затем машина может их выполнить.

Хотя C ++ был лидером принципа объектно-ориентированного программирования, его поддерживают как Java, так и C ++. Однако есть одно различие, которое мы должны отметить при обсуждении Java и C ++. Хотя он нечасто используется, C ++ также имеет то преимущество, что поддерживает процедурное программирование. Эта модель программирования основана на вызовах процедур. Система структурирует каждый оператор в функции, также известные как процедуры. Это делает C ++ языком программирования с несколькими парадигмами.

Пример 5: Унарный оператор

class UnaryOperator {
    public static void main(String[] args) {

        double number = 5.2;

        System.out.println(number++);
        System.out.println(number);

        System.out.println(++number);
        System.out.println(number);
    }
}

Когда вы запустите программу, на экран выведется:

5.2
6.2
7.2
7.2

Когда выполняется выражение System.out.println(number++), первым вычисляется изначальное значение. Переменная number увеличивается только после этого. Поэтому вы получите на выходе 5.2. Далее, когда выполняется System.out.println(number), показывается значение 6.2.

Тем не менее, когда выполняется System.out.println(++number), number увеличивается на 1 перед тем, как будет выведено на экран. Так же обстоят дела и с оператором Java декремента.

Data structures and algorithms

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

Алгоритмы…

  • сортировки

  • поиска

  • рекурсия

Структуры данных…

  • массив

  • список

  • дерево

  • хеш-таблица

  • стек

  • очередь

  • куча

  • граф

Дистрибутивы Java

Существует множество сайтов, предлагающих загрузку Java (читай: JDK), и неясно, «кто что предлагает и с каким лицензированием». Этот раздел проливает свет на это.

Проект OpenJDK

Однако это всего лишь исходный код, а не распространяемая сборка (представьте: ваш файл .zip со скомпилированной командой java для вашей конкретной операционной системы). Теоретически вы и я могли бы создать сборку из этого исходного кода, назвать ее, скажем, MarcoJDK, и начать ее дистрибуцию. Но наш дистрибутив не будет сертифицирован, чтобы можно было называть этот дистрибутив совместимым с Java SE.

И хотя поставщики не могут, скажем, удалить метод из класса String перед созданием новой сборки Java, они могут добавить брэндинг (вay!) или добавить некоторые другие утилиты (например, CLI), которые они считают полезными. Но в остальном исходный код одинаков для всех дистрибутивов Java.

Сборки OpenJDK (от Oracle) и OracleJDK

Один из поставщиков, который создает Java из исходного кода, — это Oracle. Это приводит к двум разным дистрибутивам Java, что поначалу может казаться очень запутанными.

Впрочем все сводится к тому, требуется ли вам коммерческая поддержка (номер телефона) для используемой версии Java.

Полный обзор дистрибутива OpenJDK

Рафаэль Винтерхальтер (Rafael Winterhalter) собрал большой список всех доступных сборок OpenJDK, включая их описания: ОС, архитектуру, окна лицензирования, поддержки и обслуживания.

Ваша первая программа на Java

Чтобы познакомить пользователей с новым языком программирования, используют программу Hello World («Привет, мир!»). Это простая программа, которая выводит на экран слова Hello, World! В этом разделе мы расскажем вам как создается данная программа на Java, используя при этом IntelliJ IDEA.

  • Откройте IntelliJ IDEA.
  • Перейдите в File > New > Project… > Java (в левой панели навигации).
  • Задайте имя проекта (Project Name) из курса программирования Java. Мы назовём его Hello World и нажмём «Finish
  • Теперь нужно создать новый класс Java.
  • Выберите папку src в левой панели, после чего перейдите в меню File > New > Java Class и задайте имя нового класса- HelloWorld.
  • Скопируйте следующий код в файл HelloWorld.java и сохраните его.
public class HelloWorld {
public static void main(String[] args) {
 // prints "Hello, World!"
 System.out.println("Hello, World!");
 }
 }

Нажмите кнопку запуска (Run). Если всё в порядке, вы увидите на экране надпись Hello, World!

Где можно запускать Java-код

Поэтому запускать код на Java можно везде, для чего уже была разработана JVM, то есть виртуальная машина Java. Например:

  • ультрамощные серверы,
  • компьютеры,
  • смартфоны,
  • кнопочные телефоны,
  • роботы и микроконтроллеры типа Arduino, Raspberry Pi и многих других,
  • фитнес-браслеты,
  • GPS-трекеры,
  • умные часы,
  • умные телевизоры, холодильники, микроволновки, чайники и прочие домашние гаджеты,
  • смарт-карты для доступа в помещения.

Представьте такую ситуацию: вы написали Java-программу, которая следит за свободным местом на диске, и как только его становится меньше 20% — выводит сообщение, мол, удали ненужные файлы. Теперь вы можете запустить эту программу везде, где есть JVM. Она сама разберётся с кодом, поймёт, для какого процессора она это делает, и запустит вашу программу. В результате один и тот же код будет следить за свободным местом на компьютере, кнопочном телефоне, смартфоне, планшете, умной микроволновке или домашней сигнализации.

Добавляем необязательные элементы

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

Вот как это делается:

В качестве дефолтного значения может использоваться только константное НЕ null-значение. То есть вот такие объявления компилятор не пропустит:

Зато пустую строку в качестве значения по умолчанию использовать можно, вот так:

Как использовать:

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

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

Кроме элементов со значениями по умолчанию, в аннотациях можно использовать константы. Они, как и в интерфейсах, неявно public, static и final. Вот, к примеру, аннотация для описания времени на чтение каналов, в которой заданы константы для минимального и максимального тайминга:

Hello, world!

При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.

class HelloWorld {
    public static void main(String args) {
        System.out.println("Hello, world!");
    }
}

Код начинается с ключевого слова class.Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.

После имени в фигурных скобках записывается тело класса. Оно может содержать поля, методы и другие классы. Поля хранят данные. Они подобны переменным, однако в Java это несколько иная сущность. Методы содержат набор команд или код. Имена методов (как и полей, переменных) принято писать в стиле camelCase, со строчной буквы.

В нашем классе только один метод — main(). Он особенный, его часто называют стартовым. Когда виртуальная машина Java получает класс для исполнения, она ищет в нём метод main. Если находит — выполняет код, который содержит метод. Если нет — выдаёт сообщение об ошибке

Важно, чтобы метод main() имел строго определённую сигнатуру: был публичным (public), статическим (static), не возвращающим никакого значения (void), с параметром в виде массива строк (String[] args). В противном случае виртуальная машина его просто не найдёт

Наш метод main() содержит лишь одну строку, которая выводит в консоль текст «Hello, world!».

Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).

C:\Users\User>javac HelloWorld.java
C:\Users\User>java HelloWorld
Hello, world!

После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.

Пример 4: Унарный оператор

class UnaryOperator {
    public static void main(String[] args) {

        double number = 5.2, resultNumber;
        boolean flag = false;

        System.out.println("+number = " + +number);
        // number равен здесь 5.2.

        System.out.println("-number = " + -number);
        // number равен здесь 5.2

        // ++number is Эквивалент number = number + 1
        System.out.println("number = " + ++number);
        // number равен здесь 6.2

        // -- number is Эквивалент number = number - 1
        System.out.println("number = " + --number);
        // number равен здесь 5.2

        System.out.println("!flag = " + !flag);
        // Флаг все еще ложный.
    }
}

Когда вы запустите программу, на экран выведется:

+number = 5.2
-number = -5.2
number = 6.2
number = 5.2
!flag = true

В Java можно использовать операторы «++» и «—» в качестве префикса и постфикса. Оператор «++» увеличивает значение на 1, а «—» уменьшает значение на 1.

int myInt = 5;
++myInt   // myInt принимает значение 6
myInt++   // myInt принимает значение 7
--myInt   // myInt принимает значение 6
myInt--   // myInt принимает значение 5

Есть большая разница в использовании операторов Java инкремента и декремента в префиксе и в постфиксе. Рассмотрим следующий пример.

Минусы программирования на Java

Рассмотрим недостатки Java-программирования.

— Платное коммерческое использование

Недавно Oracle объявила, что с 2019 года компания начнет взимать плату за использование Java Standard Edition 8 в «коммерческих целях». За все новые обновления и исправления ошибок придется заплатить. Плата зависит от количества пользователей или компьютеров.

Текущая версия Java бесплатна для простого использования. Таким образом, каждая использующая Java компания должна оценить, насколько эффективно она использует Java. Компания должна понять, что выгоднее: искать альтернативное решение или продолжать пользоваться Java.

— Низкая производительность

У любого языка высокого уровня довольно низкая производительность из-за компиляции и абстракции с помощью виртуальной машины. Однако это не единственная причина низкой скорости Java. Например, приложение очистки памяти: это полезная функция, которая, к сожалению, приводит к значительным проблемам с производительностью, если требует больше 20 процентов времени процессора. Плохая настройка кэширования может вызвать чрезмерное использование памяти. Существует также взаимная блокировка потоков: так происходит, когда несколько потоков пытаются получить доступ к одному и тому же ресурсу. В этом случае происходит кошмар каждого Java-разработчика — ошибка из-за нехватки памяти. Тем не менее умелое планирование может решить все эти проблемы.

— Отсутствие нативного дизайна

Для создания графического интерфейса пользователя (GUI) разработчики используют различные инструменты, ориентированные для конкретного языка. Для Android-приложений есть Android Studio, которая помогает создавать приложения с нативным дизайном. Однако, когда дело доходит до пользовательского интерфейса на ПК, Java-инструмента для создания нативного дизайна нет.

Есть несколько инструментов для разработки GUI для Java: самые популярные из них — Swing, SWT, JavaFX, JSF. Библиотека Swing — это старый, но надежный кросс-платформенный инструмент, интегрированный в различные Java-IDE, в том числе Eclipse и NetBeans. Однако, если вы не используете шаблоны, вы заметите несоответствия интерфейса. SWT использует собственные компоненты, но не подходит для сложного интерфейса. JavaFX — лаконичный и современный, но слишком новый. В целом, перед созданием GUI на Java нужно подробнее изучить инструменты.

— Многословный и сложный код

Многословность кода может показаться преимуществом, которое поможет при изучении языка. Однако, длинные, чрезмерно сложные предложения затрудняют чтение и просмотр кода. Как и естественные языки, многие языки программирования высокого уровня содержат лишнюю информацию. Java — это более легкая версия неприступного C ++, которая вынуждает программистов прописывать свои действия словами из английского языка. Это делает язык более понятным для неспециалистов, но менее компактным.

Сравним Java и Python и увидим, в чем преимущество лаконичного кода Python. В Python не используются точка с запятой, круглые и фигурные скобки. Вместо «и», «или» и «нет» в качестве операторов используются «&&», «||» и «!».

Сравнение Java и Python 

Язык Java

Невысокий порог вхождения. Изучать Java проще, чем большинство языков с Си-подобным синтаксисом.

Объектно-ориентированность. Программы в Java строятся на основании объектов и их взаимодействии, что позволяет задействовать все преимущества ООП.

Переносимость. Благодаря использованию интерпретатора — виртуальной машины Java, — программы переносятся на различные платформы и устройства.

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

Развитая многопоточность. Средства Java позволяют управлять выполнением нескольких потоков, что позволяет создавать многопоточные приложения.

Безопасность. Благодаря встроенной в JVM верификации байт-кода, отсутствии в Java ручного управления памятью, слежением за переполнением стека, а также наличию различных API, которые позволяют контролировать безопасность, на этом языке можно создавать действительно безопасные приложения.

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

Интерпретируемость. Java-интерпретатор может выполнять байт-коды Java на любой машине, на которой имеется JVM и JRE.

Распределенность. У Java есть инструменты для создания распределенных приложений.

Производительность. Использование JIT (Just-in-time)-компилятора обеспечивает высокую скорость работу приложений, сопоставимую по скорости с языками С и С++.

Создаём каркас аннотации

Аннотации похожи на интерфейсы. Если вы пока не очень ориентируетесь в интерфейсах, освежите свои знания о них в этой статье, перед тем как мы продолжим.

Они не просто похожи на интерфейсы: под капотом JVM (виртуальная машина Java) преобразует элементы аннотации в методы интерфейса, а саму аннотацию — в имплементацию (реализацию) этого интерфейса.

Вот как выглядит объявление простейшей аннотации для отметки особо интересных каналов:

Здесь, кроме заголовка, нет ничего полезного. Такие аннотации ещё называют маркерными — они действительно просто маркируют, обозначают какой-то признак.

Как использовать:

Или так:

При использовании маркерных аннотаций можно опускать круглые скобки после названия.

В аннотациях могут быть:

  • обязательные элементы,
  • необязательные элементы,
  • константы.

Сложно ли выучить Java?

Сложно, но вполне реально даже для новичков. По сложности освоения Java находится где-то посередине между Python и C++, считает Владислав Мацкевич: «‎Начать изучение Java, как и любого другого языка программирования, лучше всего с Java Core — фундаментальных основ языка. А лучший способ закрепить навыки — самостоятельно написать какой-нибудь проект»‎.

Курс 

Профессия Java-разработчик

Освойте с нуля за 14 месяцев программирование, бэкенд-разработку и DevOps на самом востребованном языке. Скидка 5% по промокоду BLOG.

Узнать больше 

Артур Куприянов тоже считает, что важно самостоятельно начать писать проект: «‎Джуну, как и любому Java-программисту, следует знать основные принципы ООП — это поможет понять саму философию Java. Также нужно знать синтаксис, основные конструкции, паттерны, управление зависимостями и немного о фреймворке или библиотеке, с которым ему предстоит работать

Практика — лучший способ обучения. Гораздо лучше, если удастся написать небольшой коммерческий проект. Это будет огромным плюсом при рассмотрении вашего резюме»‎.

Все эксперты сходятся во мнении, что лучшей средой разработки на Java является IntelliJ IDEA от JetBrains — у нее есть встроенные фишки, которые значительно упрощают разработку. Хотя она платная, для студентов и новичков есть возможность получить бесплатную лицензию. Более слабой, но популярной бесплатной альтернативой является Eclipse.

Насколько легко научиться программированию на Java?

Если вы новичок в разработке на Java, то ваши опасения вполне понятны. Так насколько же легко изучить Java?

Этот вопрос имеет несколько субъективную природу, но лично я бы отнес Java к языкам, не самым простым для изучения. Хотя он проще, чем C++, и часто описывается как более удобный для пользователя, но он, безусловно, не столь прост, как такие его конкуренты, как Python или BASIC, которые больше подходят для изучения начинающим программистам.

C# также немного проще по сравнению с Java, хотя они очень похожи.

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

У языка Java есть свои особенности, но его, безусловно, можно изучить, и как только вы его освоите, вам откроется множество возможностей. А поскольку Java имеет много общего с C и C#, вы сможете перейти на эти языки без особых усилий.

Что такое Java

Java — строго типизированный объектно-ориентированный язык программирования общего назначения, который был разработан еще в начале 1990-х компанией Sun Microsystems. Позже эту компанию купила Oracle.

Плюсы:

  • Хорошо реализована мультипоточность (процесс в операционной системе состоит из нескольких потоков, которые выполняются параллельно);

  • Многоплатформенность (ваша программа работает на всех операционных системах);

  • Большое и активное Java-сообщество — все ошибки уже кем-то совершены и описаны, на все вопросы можно найти решение;

  • Большое разнообразие библиотек и фреймворков буквально на все случаи жизни;

Из минусов можно выделить несколько моментов:

  • Объектно-ориентированный подход реализован не совсем по канонам;

  • Код довольно многословный;

  • Не предназначен крупных игровых проектов (MineCraft не в счет — это скорее феномен, чем данность).

Одно из преимуществ Java — кроссплатформенность. Например, вы написали код для одной платформы, а воспроизвести его можно уже на любой другой, даже на старых телефонах-«звонилках». Этот принцип называют «пишем один раз, запускаем где угодно». Звучит просто, но на практике молодому специалисту этому еще предстоит обучиться.

Java — консервативный язык. Во многих языках программирования те или иные решения выполнены намного проще и эффективнее, по сравнению с размеренным и подробным описанием в Java.

Однако Java по-прежнему остается одним из самых надежных, удобных и простых в освоении языков, который с каждым обновлением становится только лучше. Тот самый случай, когда года только красят.

Пишем первую программу на Java. Структура программ на Java

Итак, у вас установлено и настроено всё, что необходимо для работы с Java: JDK, JRE и IDE. Что дальше? Конечно же, надо написать первую программу, чтобы удостовериться, что всё в порядке, код работает, а вы готовы изучать язык. Кроме того, это позволит вам познакомиться с базовой структурой Java-кода (тут стоит учесть, что перед началом изучения Java будет нелишним ознакомиться и с основными принципами ООП (объектно-ориентированного программирования).
Что касается структуры программ на Java, то её можно представить следующим образом:

Файл с исходным кодом включает несколько классов — это части программы на Java, имеющие определённые функции. Считается хорошей практикой разбивать программы на несколько файлов с кодом, причём каждый со своим назначением. Что касается классов, то в них содержатся методы — это, по сути, действия, которые могут выполнять объекты данного класса. Метод содержит команды, позволяющие получать необходимый результат.

Перед написанием первой программы, нужно создать проект, а в проекте — файл, где будет содержаться код. Вот, как это выглядит на IDE Eclipse (в других IDE процесс не сильно отличается):
— сверху выбираем «File», наводим курсор на «New», в появившемся меню выбираем «Java Project»;
— появится окно, где вводим имя проекта и прочие необходимые настройки (в первый раз можно оставить как есть), нажимаем «Next». Проект создан!
— создаём в проекте класс, где будем писать первую программу. Для этого щёлкаем правой кнопкой мыши по своему проекту (он должен появиться справа), выбираем «New» → «Class» и присваиваем новому классу имя (в нашем примере – это First). Останется лишь нажать «Finish».

Вот мы и добрались до момента написания первой программы на Java. Не будем ломать традицию и напишем программу, выводящую на экран «Hello, world!».

 public class First{
     public static void main(String args[])
     {
         System.out.println("Hello, world!");
     }
 }

Давайте теперь разберём, что написали:
1) public – модификатор доступа, который определяет, из какой части программы можно использовать наш класс. В нашем случае — это весь код;
2) class – ключевое слово, которое показывает, что вы объявляете класс, а не что-нибудь другое;
3) First – имя класса в Java;
4) public static void main(String args[]) – таким образом объявляется публичный статический метод (метод, который можно вызвать, не прибегая с созданию объекта класса). В нашем примере метод ничего не возвращает, принимая в качестве аргументов массив строк. Также у нас есть println — единственная команда в методе, выводящая в консоль сообщение «Hello, world!». Кстати, вместо println вы можете написать и print (разница в том, что println дополнительно обеспечивает перенос строки).

Что же, первая программа на Java написана, а значит, пора её запустить. Я думаю, найти кнопку «Run» труда не составит. Нажав её, вы увидите консоль с сообщением “Hello, world”.

Поздравляем, вы написали первую программу на Java, поэтому готовы к тому, чтобы начать погружаться в увлекательный мир Java-программирования! И делать это лучше с OTUS.

Что такое Java: объясняем для новичков

Рассказываем о языке Java: для чего он используется, какие у него плюcы и минусы. А ещё сравниваем Java с C# и Python.

Даже если вы никогда не интересовались программированием, скорее всего, вы слышали название Java — и не просто так. Это один из самых популярных в мире языков программирования: он был создан в 1995 году, быстро набрал популярность и уже много лет её не теряет. В рейтинге TIOBE за ноябрь 2019 года Java заняла первое место, а по статистике GitHub — третье: второе место занял Python, а первое — JavaScript.

Java используют везде: вы найдёте её почти во всех больших компаниях, в том числе в Netflix, AliExpress, Google, Intel, eBay, TripAdvisor и многих других.

Кстати, назвали этот язык в честь одного из сортов кофе.

В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.

Плюсы и минусы Java

У всех качеств Java, будь то строгая типизация или объектная ориентированность, есть свои плюсы и минусы, а ещё они есть у самой Java как у языка.

Плюсы

  • Независимость — ваш код будет работать на любой платформе, которая поддерживает Java.
  • Надёжность — в немалой мере достигается благодаря строгой статической типизации.
  • Мультифункциональность.
  • Сравнительно простой синтаксис.
  • Java — основной язык для Android-разработки.
  • Объектно-ориентированное программирование (ООП) тоже приносит много выгод:
  1. параллельная разработка;
  2. гибкость;
  3. одни и те же классы можно использовать много раз;
  4. код хорошо организован, и его легче поддерживать.

Минусы

  • Низкая скорость (по сравнению с С и С++).
  • Требует много памяти.
  • Нет поддержки низкоуровневого программирования (Java — высокоуровневый язык). Например, у неё нет указателей.
  • С 2019 года обновления для бизнеса и коммерческого использования стали платными.
  • Для ООП нужен опыт, а планирование новой программы занимает много времени.

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!

Другие статьи из серии «Быстрый старт с Java»:

  • «Быстрый старт с Java: крестики-нолики»
  • «Быстрый старт с Java: «лопни шарик»

Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:

  • Приключения бравого джависта в поисках пропитания. Как начать карьеру программиста Java, если в твоём городе пять вакансий и везде требуют опыт от года
  • «Иногда за сутки я спал один час в метро перед работой». Из белорусской типографии — в московские тимлиды.
  • Первая работа в IT с переездом в Москву: как это бывает. Опыт собеседований, тестовых заданий, учебных проектов и трудоустройства в международную компанию.
  • Взгляд изнутри: как работается в «Альфа-Банке». Рассказывает Михаил Степнов, выпускник GeekUniversity и программист банка.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector