Что такое программа java
Перейти к содержимому

Что такое программа java

  • автор:

Java

Java (первоначально Oak – «Дуб») – объектно-ориентированный язык программирования. Был разработан Джемсом Гослингом. Права на него принадлежали первоначально компании Sun Microsystems, а затем Oracle. Первоначально язык Java использовался для написания программ, управлявших работой различных бытовых электронных приборов. И только потом стал применяться для разработки клиентских приложения.

Считается, что название Java происходит от марки кофе Java, вот почему эмблемой языка является дымящаяся чашка кофе. Другая версия утверждает, что эмблема намекает на раннее применение Java (программа для управления кофе-машиной). Первая версия (Java 1.0) официально вышла в августе 1996 г, хотя разработка языка началась шестью годами ранее.

JAVA.png

Современный логотип Java

В марте 2014 г. Oracle объявила о выходе восьмой версии – Java 8.0. Особенностью работы приложений на Java является кроссплатформенность, так как для работы программ требуется наличие виртуальной машины Java (JVM, которая работает в качестве интерпретатора и передает обработанный байтовый код оборудованию. JVM может быть установлена на любом компьютере с любой операционной системой.

Java – один из самых популярных языков программирования. Это объясняется сферой его применения. Java используют для разработки больших веб-приложений, банковских десктоп-приложений, мобильных разработок для Android, написания игр и др. В целом, Java – это один из самых востребованных языков программирования. Причем речь идет не только о персональных компьютерах и Интернете, но и различных периферийных устройствах, бытовых электроприборах, смартфонах и даже спутниках.

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

Устройство Java-программы

Сегодня вы узнаете немного о том, как устроена типичная программа на Java. И главная новость: каждая программа на Java состоит из классов и объектов.

Что такое классы, вы уже знаете, а что такое объекты?

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

В программировании на Java все точно так же.

Чертежи

Программист — он как проектировщик. Только проектировщик рисует чертежи, а Java-программист пишет классы. Затем на основе чертежей создаются детали, а на основе классов — объекты.

Сначала мы пишем классы (делаем чертежи), а потом, во время исполнения программы, на основе этих классов Java-машина создает объекты. Точно так же, как корабли создаются на основе чертежей.

Чертёж один, но кораблей может быть много. Корабли разные, у них разные имена, они возят разные грузы. Но они очень похожие: они все — корабли с идентичной конструкцией, и могут выполнять аналогичные задачи.

Или вот еще аналогия.

Муравейник

Муравейник — это хороший пример взаимодействия объектов. В простейшем муравейнике есть три класса муравьёв: королева, воины и рабочие муравьи.

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

Это просто идеальный пример. В типичной программе все точно так же. Есть главный объект, который создаёт объекты всех остальных классов. Объекты начинают взаимодействовать друг с другом и «внешним миром» программы. Внутри этих объектов жёстко запрограммировано их поведение.

Два этих пояснения — это две стороны одной медали. Истина посередине. Первый пример (про чертеж и корабли) показывает связь между классом и объектами этого класса. Аналогия очень сильная. Второй пример (про муравейник) показывает связь между объектами, которые существуют во время работы программы, и написанными классами.

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

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

Документация

А как узнать, какие данные передавать в методы? Тут все уже придумано до вас.

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

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

Давайте посмотрим на код — копирование файла:

package com.javarush.lesson2; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy < public static void main(String[] args) throws IOException < FileInputStream fileInputStream = new FileInputStream("c:\\data.txt"); FileOutputStream fileOutputStream = new FileOutputStream("c:\\result.txt"); while (fileInputStream.available() >0) < int data = fileInputStream.read(); fileOutputStream.write(data); >fileInputStream.close(); fileOutputStream.close(); > >

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

2. Проектирование программы

Проектирование программы — это целое искусство. Это и просто, и сложно одновременно. Просто, потому что никаких жестких законов нет: все, что не запрещено — разрешено. Ну а сложно тоже по этой причине: очень много способов что-то сделать и непросто найти самый лучший.

Проектировать программу — это как писать книгу. С одной стороны, вы просто пишете буквы, слова, предложения. А с другой – важен сюжет, характеры героев, внутренние противоречия, конфликты, стиль повествования, интрига и т.п.

Главное — понимать, для кого вы пишете код. А код вы пишете для других программистов.

Разработка любого продукта — это внесение изменений: добавили здесь, удалили там, переделали тут. И так маленькими итерациями рождаются большие, огромные и гигантские проекты.

Главное требование к коду — он должен быть понятен другим программистам. Неправильный, но понятный код можно исправить. Правильный и непонятный код улучшать не получится. Его останется только выбросить.

Так как же писать хороший и понятный код?

Для этого нужно делать три вещи:

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

Что же стоит за этими понятиями?

Писать хороший код внутри методов

Если у вас хотя бы начальный уровень английского, возможно, вы обратили внимание, как легко иногда читается код: как предложения на английском языке:

  • class Cat extends Pet – класс Кот расширяет класс ДомашнееЖивотное
  • while(stream.ready()) – пока поток готов .
  • if (a

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

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

В Java принято писать легко читаемый код. Желательно, чтобы каждый метод целиком помещался на экран (длина метода — 20-30 строк). Это норма для всего Java-комьюнити. Если код можно улучшить, его нужно улучшить.

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

И помните, что в тот момент, когда вы себе скажете «и так сойдет», ваше развитие остановится.

Решать, какие сущности должны быть в программе

Вам нужно писать код, понятный для других программистов. Если 9 из 10 программистов при проектировании программы сделают в ней классы A, B и С, то и вам тоже нужно сделать в вашей программе классы A, B, и C. Вы должны писать код, понятный для других.

Отличный, работающий, быстрый, нестандартный код — это плохой код.

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

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

Разбирайте классы и структуры классов. Думайте, почему одни методы сделаны статическими, а другие — нет. Почему у методов именно такие параметры, а не другие. Почему именно такие методы, почему классы называются именно так и находятся именно в таких пакетах.

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

Однако хочу предостеречь вас от разбора кода в методах Java SDK. Код многих методов был переписан с целью максимизации скорости работы — его читабельность под большим вопросом.

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

Любую программу обычно разбивают на части или модули. Каждая часть отвечает за свой аспект программы.

Вот у компьютера есть системный блок, монитор, клавиатуры, и это все отдельные, малозависимые части. Более того, их взаимодействие стандартизировано: USB, HDMI и т.п. Зато если вы прольете кофе на клавиатуру, вы можете просто помыть ее под краном, просушить и пользоваться дальше.

А вот ноутбук — это пример монолитной архитектуры: логические части вроде и есть, но интегрированы гораздо сильнее. У MacBookPro, чтобы почистить клавиатуру, нужно разобрать половину ноутбука. А пролитый на ноутбук кофе — повод заказать новый. Только не кофе.

3. Создание своих классов

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

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

Список сущностей

Если вы не знаете, с чего начать, начните с начала.

В самом начале проектирования программы вы можете просто выписать на листик список сущностей (объектов), которые должны быть в программе. А потом запрограммировать их по такому принципу: каждая сущность — отдельный класс.

Пример

Допустим, вы хотите написать игру в шахматы. Вам понадобятся такие сущности: шахматная доска и 6 типов фигур. Фигуры ходят по-разному, имеют разную ценность — логично, что это отдельные классы. И вообще, в самом начале, чем больше классов — тем лучше.

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

Шахматы

Допустим, мы решили писать классы для шахмат: как бы эти классы выглядели?

Шахматная доска — это просто массив 8 на 8? Лучше сделайте для нее отдельный класс, который внутри хранит ссылку на массив. Тогда в класс «шахматная доска» вы сможете добавить много полезных методов, которые, например, проверяют, что клетка пустая или занята

В общем, в начале всегда можно руководствоваться принципом: Программа имеет разные Сущности, а у Сущности есть тип. Вот этот тип — это и есть класс.

4. Статические переменные и методы

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

Чтобы постоянно не передавать ссылки на объекты, которые «существуют всегда», их обычно делают статическими переменными, и к ним можно обратиться из любого места программы.

public class ChessBoard < public static ChessBoard board = new ChessBoard(); public ChessItem[][] cells = new ChessItem[8][8]; . > public class Game < public static void main(String[] args) < var board = ChessBoard.board; board.cells[0][3] = new King(Color.WHITE); board.cells[0][4] = new Queen(Color.WHITE); . > >

Ссылка на единственный объект типа ChessBoard .
Двумерный массив 8×8, не статическая переменная.

Ну или вместо статической переменной можно сделать метод, который возвращает единственный объект. Например, так:

public class ChessBoard < private static ChessBoard board = new ChessBoard(); public static ChessBoard getBoard() < return board; > public ChessItem[][] cells = new ChessItem[8][8]; . > public class Game < public static void main(String[] args) < var board = ChessBoard.getBoard(); board.cells[0][3] = new King(Color.WHITE); board.cells[0][4] = new Queen(Color.WHITE); . > >

Простейшая программа

— Меня недавно профессор хвалил – радовался, что я быстро прогрессирую благодаря его лекциям.

— Ты прогрессируешь именно благодаря лекциям профессора. Да-да! Ему самому не смешно?!

— Ладно, проехали. Сегодня у меня для тебя есть кое-что интересное. Я расскажу тебе, как написать простейшую программу. Все очень просто. Минимальная программа состоит из одного класса и содержит один метод – main(). Вот как это выглядит.

Простейшая программа

public class MainClass < public static void main(String[] args) < System.out.println("Поцелуй мой блестящий металлический зад!"); >>

— Это я уже раньше видел, так что — понятно.

— Но простейшие программы никому не нужны. Чем более сложную задачу решает программа, тем она круче. Поэтому программы, состоящие из тысяч классов – это норма.

— Средняя программа – это та, которую пишет команда из 10 человек 2-3 года.

— А какая же программа – большая?

— Ну, например, которую пишет лет 5 команда от 100 человек.

— 500 с лишним человеко-лет? Ничего себе!

— А то! И Java — это один из лучших языков программирования для написания больших и очень больших задач.

— Мне даже страшно спрашивать, что такое очень большая задача.

— Молодец, быстро схватываешь.

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

— Т.е. программисты придумали программу для написания программ?

— Да, а чему ты удивляешься? Программа – это в первую очередь инструмент, созданный для автоматизации каких-то рутинных операций. А если ты пишешь код несколько лет, то таких операций у тебя очень много.

— Программы для разработки программ называются IDE: Integrated Development Environment – Интегрированная Среда Разработки.

— Сегодня ты познакомишься с одной из них.

— Нет, не так – сегодня ты познакомишься с лучшей из них! Ее имя — Intellij IDEA, она станет тебе другом на многие годы. Она как старший товарищ, который всегда подскажет и поможет.

— Ты меня заинтриговал!

— Ну, если ты не собираешься писать программы в Word’е, тогда тебе нужна шикарная среда разработки, так ведь? Мы — роботы, предпочитаем Intellij IDEA Community Edition (бесплатная версия). Скачай и установи её последнюю версию.

Подсказка 2

Бесплатная версия называется IntelliJ IDEA Community Edition. Ее полностью хватает для обучения на JavaRush.

Подсказка 3

— Так же тебе нужно будет установить JDK (java development kit). JDK – это «Набор Java Разработчика» от, собственно, разработчиков платформы Java. В состав JDK входит Java-машина, компилятор Java-классов и еще много всего, что может понадобиться опытному Java-разработчику.

— А чем плох нынешний метод написания программ – через сайт?

— Для маленьких программ он удобен, но большие лучше писать в Intellij IDEA. Мы же из тебя готовим профессионального программиста, так что, чем раньше ты освоишь такие крутые инструменты, тем лучше. Да не пугайся ты так – это программа создана для того, чтобы облегчить тебе жизнь, а не усложнить. Ты быстро к ней привыкнешь и потом тебя за уши не оттащишь.

— Чтобы научиться писать программы — нужно писать программы. Для этого тебе нужно установить Intellij IDEA и JDK на свой компьютер. Скачай в интернете Open JDK 14.

Если ты загрузил Open JDK 14 в видео-инструкции по установке IntelliJ IDEA, то пропускай этот шаг.

Подсказка 1
Для начала, зайди на сайт https://jdk.java.net/14/

Выглядеть он будет примерно так:

В разделе Builds кликни на версию JDK для своей ОС, чтобы началась загрузка.

Скачанную папку нужно разархивировать. Желательно переместить ее в надежное место, чтобы случайно не удалить. Путь к папке c JDK нужно указать в IDEA в разделе Project SDK. File -> Project Structure -> Project SDK -> Add Jdk

Подсказка 2

Если у вас Linux — вы знаете, что делать.

— Закрепим теорию практическим заданием.

Возникли проблемы с установкой? Напиши в поддержку: support@javarush.com или виджет в нижнем правом углу страницы. Описание проблемы, скриншоты и версия ОС помогут с решением проблемы.

Java/Программы

Программу можно писать по разному. Я рекомендую пользоваться хорошим редактором ориентированным на Java. В таком случае придется меньше уделять внимания синтаксису, а полностью переключиться к логике самой программы. В данный момент на рынке существует 3 основных редактора :

  1. Eclipse. Этот редактор обладает практически всеми необходимыми функциями для быстрого и удобного создания собственных приложений.
  2. IntelliJ IDEA. Тоже вполне неплохой редактор.
  3. NetBeans IDE. Этот редактор ( помимо всех основных функций ) позволяет создавать свой графический интерфейс прямо в программе.

Каждый редактор обладает своими плюсами и минусами которых нет у других. Новичкам я советую выбрать Eclipse.

Добавить комментарий

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