• Изучаем Java. Введение в Java

    Прежде, чем перейти к обучению, начнём с введения в java-программирование, разберёмся, что это за такой язык программирования. Немного истории. Язык Java разработан компанией Sun Microsystems, создателем которого был Джеймс Гослинг, и выпущен в 1995 году в качестве основных компонентов компании Sun Microsystems - Java платформ (Java 1.0 ).

    По состоянию на 2017 год последней версией Java Standard Edition является 8 (J2SE). С развитием Java, и её широкой популярностью, несколько конфигураций были построены для различных типов платформ. Например: J2EE - приложения для предприятий, J2ME - для мобильных приложений.

    Sun Microsystems переименовала прежнюю версию J2 и ввела новые: Java SE, Java EE и Java ME. Введение в программирование Java различных версий подтверждало знаменитый слоган компании «».

    История создания языка Java

    История создания языка Java начинается в июне 1991 года, когда Джеймс Гослинг создал проект для использования в одном из своих многочисленных сет-топ проектов. Язык, который рос вне офиса Гослинга, как дуб, Oak - первоначальное название Java до 1995 года, после в дальнейшем история Java продолжалась под именем Green , а позже был переименован как Java.

    Но официальной датой создания языка Java считается 23 мая 1995 года, после выпуска компанией Sun первой реализации Java 1.0. Она гарантировала «Напиши один раз, запускай везде », обеспечивая недорогой стоимостью на популярных платформах.

    13 ноября 2006 года, Sun выпустила большую часть как свободное и открытое программное обеспечение в соответствии с условиями GNU General Public License (GPL).

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

    Преимущества Java как языка программирования

    Объектно-ориентированный : в Java все является объектом. Дополнение может быть легко расширено, так как он основан на объектной модели.

    Платформонезависимый : в отличие от многих других языков, включая C и C++, Java, когда был создан, он не компилировался в платформе конкретной машины, а в независимом от платформы байт-коде. Этот байт код распространяется через интернет и интерпретируется в Java Virtual Machine (JVM), на которой он в настоящее время работает.

    Простой : процессы изучения и введение в язык программирования Java остаются простыми. Если Вы понимаете основные концепции объектно-ориентированного программирования, то он будет прост для Вас в освоении.

    Безопасным : методы проверки подлинности основаны на шифровании с открытым ключом.

    Архитектурно-нейтральным : компилятор генерирует архитектурно-нейтральные объекты формата файла, что делает скомпилированный код исполняемым на многих процессорах, с наличием системе Java Runtime.

    Портативный : архитектурно-нейтральный и не имеющий зависимости от реализации аспектов спецификаций - все это делает Java портативным. Компилятор в Java написан на ANSI C с чистой переносимостью, который является подмножеством POSIX.

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

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

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

    Высокопроизводительный : введение Just-In-Time компилятора, позволило получить высокую производительность.

    Распространенный : предназначен для распределенной среды интернета.

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

    После небольшого введения, обзора преимуществ и истории Java, приступим к нашему обучению.

    Инструменты, которые понадобятся

    Для выполнения примеров, рассмотренных в этом учебнике , Вам нужен компьютер Pentium 200 МГц с минимальной оперативной памятью 64 Мб (рекомендуется оперативная память 128 Мб).

    Вам также понадобится следующее программное обеспечение:

    • Linux 7.1, Windows 95/98/2000/7/8 и выше или другая операционная система.
    • JDK 5 и выше.
    • Notepad или любой другой текстовый редактор.

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

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

    Последним релизом является версия 1.6 , в которой было произведено улучшение системы безопасности, улучшение поддержки скриптового языка Mozilla Rhino (англ.), улучшена интеграция с рабочим столом, добавлены некоторые новые возможности в создании графических интерфейсов.

    Java и Microsoft

    Следующие компании в основном фокусируются на Java (J2EE) технологиях, а не на .NET , хотя имеют дело также и с последними: IBM, Oracle . В частности, СУБД Oracle включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, хранимые процедуры .

    Основные возможности

    Пример программы

    Программа, выводящая «Hello, World!»:

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

    Пример использования шаблонов:

    Import java.util.*; public class Sample { public static void main(String args) { // Создание объекта по шаблону. List strings = new LinkedList() ; strings.add ("Hello" ) ; strings.add ("world" ) ; strings.add ("!" ) ; for (String s: strings) { System .out .print (s) ; System .out .print (" " ) ; } } }

    Основные идеи

    Примитивные типы

    В языке Java только 8 скалярных типов : boolean, byte , char , short, int , long, float , double .

    Классы-обёртки примитивных типов

    Длины и диапазоны значений примитивных типов определяются стандартом , а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode -16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte. Типы float и double могут иметь специальные значения , и «не число» (

    Тип Длина (в байтах) Диапазон или набор значений
    boolean не определено true, false
    byte 1 −128..127
    char 2 0..2 16 -1, или 0..65535
    short 2 −2 15 ..2 15 -1, или −32768..32767
    int 4 −2 31 ..2 31 -1, или −2147483648..2147483647
    long 8 −2 63 ..2 63 -1, или примерно −9.2·10 18 ..9.2·10 18
    float 4 -(2-2 -23)·2 127 ..(2-2 -23)·2 127 , или примерно −3.4·10 38 ..3.4·10 38 , а также , , NaN
    double 8 -(2-2 -52)·2 1023 ..(2-2 -52)·2 1023 , или примерно −1.8·10 308 ..1.8·10 308 , а также , , NaN

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

    Преобразования при математических операциях

    В языке Java действуют следующие правила:

    1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.
    2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
    3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
    4. Иначе оба операнда преобразуется к типу int.

    Последнее правило отличает Java от старых реализаций и C++ и делает код более безопасным. Так, например, в языке Java после выполнения кода

    Short x = 50 , y = 1000 ; int z = x*y;

    переменной z присваивается значение 50000, а не −15536, как в большинстве безнадёжно устаревших реализаций C и C++. В программе, скомпилированной MS VC++ , начиная с версии 7, а также многими другими современными компиляторами (gcc , Intel C++, Borland C++, Comeau и т. д.), значение будет также равно 50000.

    Объектные переменные, объекты, ссылки и указатели

    В языке Java имеются только динамически создаваемые объекты. Причем переменные объектного типа и объекты в Java - совершенно разные сущности. Переменные объектного типа являются ссылками , то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных. Так, в Java нельзя писать:

    Double a[ 10 ] [ 20 ] ; Foo b(30 ) ;

    Double a = new double [ 10 ] [ 20 ] ; Foo b = new Foo(30 ) ;

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

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

    • Нельзя преобразовывать объект типа int или любого другого примитивного типа в указатель или ссылку и наоборот.
    • Над ссылками запрещено выполнять операции ++, −−, +, − или любые другие арифметические операции.
    • Преобразование типов между ссылками жёстко регламентировано. За исключением ссылок на массивы, разрешено преобразовывать ссылки только между наследуемым типом и его наследником, причём преобразование наследуемого типа в наследующий должно быть явно задано и во время выполнения производится проверка его осмысленности. Преобразования ссылок на массивы разрешены лишь тогда, когда разрешены преобразования их базовых типов, а также нет конфликтов размерности.
    • В Java нет операций взятия адреса (&) или взятия объекта по адресу (*). Звёздочка в Java означает умножение, и только. Амперсанд (&) означает всего лишь «побитовое и» (двойной амперсанд - «логическое и»).

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

    Дублирование ссылок и клонирование

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

    Foo foo, bar; … bar = foo;

    то произойдет копирование адреса из переменной foo в переменную bar . То есть foo и bar будут указывать на одну и ту же область памяти, то есть на один и тот же объект; попытка изменить поля объекта, на который ссылается переменная foo , будет менять объект, с которым связана переменная bar , и наоборот. Если же необходимо получить именно ещё одну копию исходного объекта, пользуются или методом (функцией-членом, в терминологии C++) clone() , создающим копию объекта, или же копирующим конструктором .

    Метод clone() требует, чтобы класс реализовывал интерфейс Cloneable (об интерфейсах см. ниже). Если класс реализует интерфейс Cloneable , по умолчанию clone() копирует все поля (мелкая копия ). Если требуется не копировать, а клонировать поля (а также их поля и так далее), надо переопределять метод clone() . Определение и использование метода clone() часто является нетривиальной задачей .

    Сборка мусора

    В языке Java невозможно явное удаление объекта из памяти - вместо этого реализована сборка мусора . Традиционным приёмом, дающим сборщику мусора «намёк» на освобождение памяти, является присваивание переменной пустого значения null . Это, однако, не значит, что объект, заменённый значением null , будет непременно и немедленно удалён. Данный приём всего лишь устраняет ссылку на объект, то есть отвязывает указатель от объекта в памяти. При этом следует учитывать, что объект не будет удален сборщиком мусора, пока на него указывает хотя бы одна ссылка из используемых переменных или объектов. Существуют также методы для инициации принудительной сборки мусора, но не гарантируется, что они будут вызваны исполняющей средой, и их не рекомендуется использовать для обычной работы.

    Классы и функции

    Java не является процедурным языком: любая функция может существовать только внутри класса. Это подчёркивает терминология языка Java, где нет понятий «функция» или «функция-член» (англ. member function ), а только метод . В методы превратились и стандартные функции. Например, в Java нет функции sin() , а есть метод Math.sin() класса Math (содержащего, кроме sin() , методы cos() , exp() , sqrt() , abs() и многие другие).

    Статические методы и поля

    Для того чтобы не надо было создавать объект класса Math (и других аналогичных классов) каждый раз, когда надо вызвать sin() (и другие подобные функции), введено понятие статических методов (англ. static method ; иногда в русском языке они называются статичными). Статический метод (отмечаемый ключевым словом static в описании) можно вызвать, не создавая объекта его класса. Поэтому можно писать

    Double x = Math .sin (1 ) ;

    Math m = new Math () ; double x = m.sin (1 ) ;

    Ограничение, накладываемое на статические методы, заключается в том, что в объекте this они могут обращаться только к статическим полям и методам.

    Статические поля имеют тот же смысл, что и в C++: каждое существует только в единственном экземпляре.

    Финальность

    Ключевое слово final (финальный) означает разные вещи при описании переменной, метода или класса. Финальная переменная (именованная константа) инициализируется при описании и дальше не может быть изменена. Финальный метод не может быть переопределён при наследовании. Финальный класс не может иметь наследников вообще.

    Абстрактность

    В Java методы, не объявленные явно как final или private , являются виртуальными в терминологии C++: при вызове метода, по-разному определённого в базовом и наследующем классах, всегда производится проверка времени выполнения.

    Абстрактным методом (описатель abstract) в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не тело. Абстрактный метод определяется в классах-наследниках. В C++ то же самое называется чисто виртуальной функцией. Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя.

    Интерфейсы

    Высшей степенью абстрактности в Java является интерфейс (interface). Все методы интерфейса абстрактны: описатель abstract даже не требуется. Интерфейс не является классом. Класс может наследовать, или расширять (extends) другой класс или реализовывать (implements) интерфейс. Кроме того, интерфейс может наследовать, или расширять другой интерфейс.

    В Java класс не может наследовать более одного класса , зато может реализовывать сколько угодно интерфейсов.

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

    Маркерные интерфейсы

    В Java есть некоторые интерфейсы, которые не содержат методов для реализации, а специальным образом обрабатываются JVM. Это интерфейсы:

    • java.lang.Cloneable
    • java.io.Serializable
    • java.rmi.Remote

    Шаблоны в Java (generics)

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

    // Объявление обобщённого класса class GenericClass { E getFirst() { ... } void add(E obj) { ... } } // Использование обобщённого класса в коде GenericClass var = new GenericClass() ; var.add ("qwerty" ) ; String p = var.getFirst () ;

    Допускается обобщённое объявление классов, интерфейсов и методов. Кроме того, синтаксис поддерживает ограниченные объявления типов-параметров: указание в объявлении конструкции вида требует, чтобы тип-параметр T реализовывал интерфейсы A, B, C и так далее, а конструкция требует, чтобы тип-параметр T был типом C или одним из его предков.

    В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения - компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет. Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java.

    Проверка принадлежности к классу

    В Java можно явно проверить, к какому классу принадлежит объект. Выражение foo instanceof Foo истинно, если объект foo принадлежит классу Foo или его наследнику, или реализует интерфейс Foo (или, в общем виде, наследует класс, который реализует интерфейс, который наследует Foo).

    Далее, функция getClass() , определённая для всех объектов, выдаёт объект типа Class . Эти объекты можно сравнивать. Так, например, foo.getClass()==bar.getClass() будет истинно, если объекты foo и bar принадлежат в точности к одному классу (но это не означает что это два одинаковых объекта).

    Кроме того, объект типа Class любого типа можно получить так: Integer.class , Object.class .

    Однако прямое сравнение классов не всегда является оптимальным средством проверки на принадлежность к классу. Зачастую вместо него используют функцию isAssignableFrom() . Эта функция определена у объекта типа Class и принимает объект типа Class в качестве параметра. Таким образом, вызов Foo.class.isAssignableFrom(Bar.class) вернёт true в случае, если Foo является предком класса Bar . Так как все объекты являются потомками типа Object , вызов Object.class.isAssignableFrom() всегда вернёт true . В паре с упомянутыми функциями объекта типа Class используются также функции isInstance() (эквивалентно instanceof), а также cast() (преобразует параметр в объект выбранного класса).

    Библиотеки классов

    Средства разработки ПО

    • JDK - помимо набора библиотек для платформ Java SE и Java EE содержит компилятор командной строки javac и набор утилит, также работающих в режиме командной строки.
    • NetBeans IDE - бесплатная интегрированная среда разработки для всех платформ Java - Java ME , Java SE и Java EE . Пропагандируется Sun Microsystems , разработчиком Java, как базовое средство для разработки ПО на языке Java и других языках ( , C++ , Fortran и др.).
    • Java SE и Java EE . Ведутся работы по поддержке в Eclipse платформы Java ME . Пропагандируется C, C++ , Fortran и др.)
    • IntelliJ IDEA - коммерческая среда разработки для платформ Java SE , Java EE и Java ME .

    Примечания

    1. java (англ.) . Merriam-Webster Online Dictionary . Merriam-Webster. - Английская норма произношения слова «Java». Проверено 5 июня 2009.
    2. Robert Tolksdorf. Programming languages for the Java Virtual Machine JVM (англ.) . is-research GmbH. - Онлайн-каталог альтернативных языков и языковых расширений для JVM. Проверено 5 июня 2009.
    3. Microsoft Java Virtual Machine Support (англ.) . Microsoft (2003-09-12). - Официальное заявление Microsoft о программе поддержки MSJVM. Проверено 5 июня 2009.
    4. Todd Hoff Amazon Architecture (англ.) (2007-09-18). - Обсуждение архитектуры Amazon с использованием Java-технологий. Проверено 6 июня 2009.
    5. Amazon Elastic Compute Cloud (Amazon EC2) (англ.) . Amazon Web Services LLC. - Описание технологии и возможностей Amazon EC2 как веб-сервиса. Проверено 6 июня 2009.
    6. Todd Hoff eBay Architecture (англ.) (2008-05-27). - Обсуждение архитектуры eBay на платформе Java. Проверено 6 июня 2009.
    7. Randy Shoup, Dan Pritchett The eBay Architecture (англ.) (PDF). SD Forum 2006 (2006-11-29). - Презентация по истории развития архитектуры eBay. Проверено 6 июня 2009.
    8. Allen Stern Exclusive Interview With Yandex CTO Ilya Segalovich (англ.) . CenterNetworks (2008-01-14). - Интервью с техническим директором Яндекса Ильёй Сегаловичем. Проверено 6 июня 2009.
    9. Анатолий Орлов Архитектура Яндекс.Поиска (рус.) (PowerPoint). Материалы встречи JUG в Екатеринбурге (2008-05-24). Проверено 6 июня 2009.
    10. Brian Guan The LinkedIn Blog. Blog Archive. Grails at LinkedIn. (англ.) . LinkedIn.com (2008-06-11). - История создания системы LinkedIn на основе Java-технологии Grails. Проверено 5 июня 2009.
    11. OracleJVM and Java Stored Procedures (англ.) . Oracle Inc.. - Раздел портала Oracle, посвящённый технологиям Java в составе сервера СУБД Oracle. Проверено 5 июня 2009.
    12. Ссылка на документацию к методу Object.clone() (англ.)

    Литература

    • Монахов Вадим Язык программирования Java и среда NetBeans, 2-е издание . - СПб .: «БХВ-Петербург» , 2009. - С. 720. - ISBN 978-5-9775-0424-9
    • Джошуа Блох. Java. Эффективное программирование = Effective Java. - М .: «Лори», 2002. - С. 224. - ISBN 5-85582-169-2
    • Java 2. Библиотека профессионала, том 1. Основы = Core Java™ 2, Volume I--Fundamentals. - 7-е изд. - М .: «Вильямс» , 2007. - С. 896. - ISBN 0-13-148202-5
    • Кей С. Хорстманн, Гари Корнелл. Java 2. Библиотека профессионала, том 2. Тонкости программирования = Core Java™ 2, Volume II--Advanced Features. - 7-е изд. - М .: «Вильямс» , 2007. - С. 1168. - ISBN 0-13-111826-9
    • Брюс Эккель. Философия Java = Thinking in Java. - 3-е изд.. - СПб .: «Питер» , 2003. - С. 976. - ISBN 5-88782-105-1
    • Герберт Шилдт, Джеймс Холмс. Искусство программирования на Java = The Art of Java. - М .: «Диалектика» , 2005. - С. 336. - ISBN 0-07-222971-3
    • Любош Бруга. Java по-быстрому: Практический экспресс-курс = Luboš Brůha. Java Hotová řešení.. - М .: Наука и техника , 2006. - С. 369. - ISBN 5-94387-282-5

    См. также

    Язык программирования Java является объектно-ориентированным языком программирования, который был создан Джеймсом Гослингом (James Gosling) и другими инженерами в компании Sun Microsystems. Он был разработана в 1991 году, как часть проекта "Green Project", и официально объявлен 23 мая 1995 года, в SunWorld, а выпущен в ноябре. Java была изначально разработана как замена для C++ (хотя набор функций больше похожа на Objective C) и известный как Дуб (в честь дерева за пределами офиса Гослинга). Подробнее об истории Java можно найти в статье о платформе Java, которая включает в себя язык, Java Virtual Machine, и Java API. Java является собственностью компании Sun Microsystems; Java является торговой маркой компании Sun Microsystems.

    Существовали четыре основных цели при создании языка Java:

    • Объектно-ориентированный язык.
    • Независим от целевой платформы (более или менее).
    • Должен содержать объекты и библиотеки для работы в сети.
    • Он предназначен для выполнения кода из удаленных источников надежно.

    Объектная ориентация
    Первая характеристика, объектно-ориентированный подход ("ОО"), относится к методу программирования для чайников и дизайну язык. Основная идея ОО заключается в разработке программного обеспечения все это "вещи" (то есть объекты), которыми можно манипулировать, а не действия, которые нужно выполнять. Это основано на том, что первое (вещи) изменяются реже и радикальнее, чем действия, что делает такие объекты (на самом деле вещи, содержащие данные) более стабильной основу для разработки программного обеспечения. Целью является, делать большие проекты программного обеспечения легко управляемыми, таким образом, можно добиться повышения качества и сокращения числа неудачных проектов программирования для начинающих.

    Независимость от платформы

    Вторая характеристика, независимость от платформы, означает, что программы, написанные на языке Java должны работать аналогично на различном оборудовании. Программист должен быть в состоянии написать программу один раз и запустить её в любом месте. Это достигается путем компиляции Java-кода "наполовину" в байт-код - упрощенные машинные команды, которым соответствуют стандартный набор реальных команд процессору. Этот код затем необходимо запустить на виртуальной машине, то есть программе, написанойя на машинном коде для взаимодействия с аппаратными средствами, которая переводит байт-код Java в пригодный для использования код на конкретном оборудовании. Кроме того, предоставляются стандартизированные библиотеки для обеспечения доступа к особенностям архитектуры конкретной машины (например, графики и сетей) единым способам. Язык Java также включает поддержку для многопоточных программ - жизненно важная необходимость для многих сетевых приложений и основа программирования.

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

    Первый метод - это просто компиляция непосредственно в машинный код, как традиционные компилятор, пропуская этап превращения программы в байт-код целиком. Этим достигается большая производительность, но за счет утраты мобильности и переносимости программ. Другой метод, "В поцессе исполнения" или "JIT", компилирует байт-код Java в машинный код во время выполнения программы. Более сложные виртуальные машины даже использовали динамические перекомпиляции, в которой VJM может анализировать поведение работы программы и выборочно перекомпилировать и оптимизировать критические части программы. Обе эти технологии позволяют программе воспользоваться скоростью машинного код без потери мобильности.

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

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

    Безопасное выполнение удаленного кода

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

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

    Java как правило, более высокого уровня, чем аналогичные языки (такие как C++), что означает, что языку Java не хватает функций, таких как аппаратные или для работы с конкретными типами данных или, например, низкоуровневыме указатели на произвольные ячейки памяти. Хотя этими функциями часто злоупотребляют или используются программистами неправильно, они также являются мощными инструментами. Однако, технология Java включает Java Native Interface (JNI), способ вызова машинного кода из кода на языке Java. С JNI можно использовать эти возможности.

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

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

    Пример программы "привет мир" на языке Java:

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

    Управляющие инструкции:
    Циклы
    while (Boolean expression) { statement(s) } do { statement(s) } while (Boolean expression); for (initialisation ; termination condition ; incrementing expr) { statement(s) }
    Условные уператоры
    if (Boolean expression) { statement(s) } if (Boolean expression) { statement(s) } else { statement(s) }
    Выбор
    if (Boolean expression) { statement(s) } else if (Boolean expression) { statement(s) } else if (Boolean expression) { statement(s) } else { statement(s) } switch (integer expression) { case constant integer expr: statement(s) break; ... default: statement(s) break; }
    Отлов ошибок
    try { statement(s) } catch (exception type) { statement(s) } catch (exception type) { statement(s) } finally { statement(s) }
    Базовые типы данных

    Символы можно хранить в 16-битный Unicode кодировке. Такой символ может содержать все обычные символы, но также включает в себя наборы символов для многих других языков, кроме английского, в том числе греческий, кириллицу, китайский, арабский и т.д. Java-программы могут использовать все эти символы, хотя большинство редакторов не имеют встроенной поддержки для наборов символов, которые отличаются от обычных символов ASCII. Массивы и строки не примитивные типы: они являются объектами.

    Программирование – это написание исходного кода программы на одном из языков программирования. Существует множество различных языков программирования, благодаря которым создаются всевозможные программы, решающие определенный круг задач. Язык программирования – это набор зарезервированных слов, с помощью которых пишется исходный код программы. Компьютерные системы не в силах (пока) понимать человеческий язык и уж тем более, человеческую логику (особенно женскую), поэтому все программы пишутся на языках программирования, которые впоследствии переводятся на язык компьютера или в машинный код. Системы, переводящие исходный код программы в машинный код, очень сложные и их, как правило, создают не один десяток месяцев и не один десяток программистов. Такие системы называются интегрированными средами программирования приложений или инструментальными средствами.

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

    Вы, наверное, не раз слышали термин «программа написана под Windows или под Linux, Unix». Дело в том, что среды программирования при переводе языка программирования в машинный код могут быть двух видов – это компиляторы и интерпретаторы. Компиляция или интерпретация программы задает способ дальнейшего выполнения программы на устройстве. Программы написанные на языке Java всегда работают на основе интерпретации, тогда как программы написанные на С/С++ – компиляции. В чем разница этих двух способов?

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

    Объектно-ориентированное программирование

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

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

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

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

    Классы

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

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

    Методы

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

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

    Например, вы нажимаете клавишу Esc для отмены каких-либо действий и тем самым даете команду методу, закрепленному за этой клавишей который на программном уровне решает эту задачу. Сразу же возникает вопрос о количестве методов объекта Клавиатура, но здесь может быть различная реализация – как от определения методов для каждой из клавиш (что, вообще-то, неразумно), так и до создания одного метода, который будет следить за общим состоянием клавиатуры. То есть, этот метод следит за тем, была ли нажата клавиша, а потом в зависимости от того какая из клавиш задействована, решает, что ему делать.

    06.11.17 9.8K

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

    Что такое язык программирования Java?

    В 1991 году «Зелёная команда », подразделение Sun Microsystems , возглавляемое Джеймсом Гослингом , создала язык для программирования бытовых электронных устройств. На тот момент он назывался Oak («Дуб »). Почему «Дуб »? Просто потому, что за окном рабочего кабинета Гослинга росло это дерево.

    «Зелёная команда » продемонстрировала использование Oak в интерактивном телевизоре. Но для цифрового кабельного телевидения тех лет эта технология была слишком передовой. Одновременно с этим набирал популярность интернет, для которого новый язык программирования подходил лучше всего.

    Через некоторое время новый язык переименовали в Green , и уже после этого - в Java , в честь кофе с острова Ява. Поэтому на логотипе Java изображена кружка с кофе.

    Во время разработки Java были популярны C/С++ , поэтому Гослинг сделал синтаксис языка похожим на C/C++ и реализовал для него принцип «написать один раз - запустить где угодно ». В 1995 году Sun Microsystems выпустили первую официальную версию Java . И одновременно с этим было объявлено, что Java войдёт в состав браузера Netscape Navigator .

    В 2010 году компания Sun Microsystems вместе с языком программирования Java была приобретена корпорацией Oracle .

    История версий Java

    1. Июнь 1991 – старт проекта разработки языка программирования Java .
    2. JDK 1.0 – Январь 1996 года.
    3. JDK 1.1 – Февраль 1997 года.
    4. J2SE 1.2 – Декабрь 1998 года.
    5. J2SE 1.3 – Май 2000 года.
    6. J2SE 1.4 – Февраль 2002 года.
    7. J2SE 5.0 – Сентябрь 2004 года.
    8. Java SE 6 – Декабрь 2006 года.
    9. Java SE 7 – Июль 2011 года.
    10. Java SE 8 – 18 марта 2014 года.
    11. Java SE 9 – 21 сентября 2017 года.

    Функции языка программирования Java

    Java - межплатформенный язык

    Код Java , написанный на одной платформе (то есть операционной системе ), можно запустить без изменений на других платформах.

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

    Объектно-ориентированный язык программирования

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

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

    Java работает быстро

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

    Сегодня Java - один из самых быстрых языков программирования. Хорошо оптимизированный Java-код работает почти так же быстро как низкоуровневые языки программирования, такие как C/C++ и намного быстрее, чем Python , PHP и т.д.

    Java - безопасная платформа

    Java представляет собой :

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

    Обширная базовая библиотека

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

    java.lang – это продвинутые функции для строк, массивов и т.д.

    java.util – библиотека для работы со структурами данных, регулярными выражениями, датой и временем и т.д.

    kava.io - библиотека для ввода/вывода файлов, обработки исключений и т.д.

    Применение платформы Java

    Перед обучением Java программированию с нуля , нужно знать, что на это платформе работает более 3 миллиардов устройств по всему миру. Для чего конкретно можно её применить:

    1. Приложения для Android - для разработки Android-приложений язык программирования Java часто используется в сочетании с Android SDK (от английского software development kit - комплект разработки программного обеспечения ).
    2. Веб-приложения - Java используется для создания сетевых приложений с помощью серверных программ, фреймворка Struts и JSP . Вот некоторые популярные веб-приложения, написанные на Java: Google.com , Facebook.com , eBay.com , LinkedIn.com .

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

    1. Разработка программного обеспечения – на Java написаны такие программы как Eclipse , OpenOffice , Vuze , MATLAB и многие другие.
    2. Обработка Big Data – для обработки «больших данных » можно воспользоваться фреймворком Hadoop , написанным на Java .
    3. Трейдинговые системы – используя платформу Oracle Extreme Java Trading Platform , можно писать программы для трейдинга.
    4. Встраиваемые устройства – на основе технологии Java Embedded от Oracle сегодня работают миллиарды устройств, таких как телевизоры, SIM-карты , проигрыватели Blu-ray и т.д.

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

    Терминология Java, которую следует знать

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

    Язык программирования Java – межплатформенный объектно-ориентированный язык программирования общего назначения, обладающий широкими возможностями.

    Java 9 – последняя на момент написания данной статьи версия Java .

    Java EE , Java Me и Java SE – эти названия обозначают Java Enterprise Edition , Micro Edition и Standard Edition , соответственно.

    Java EE нацелена на приложения, запускаемые на серверах. Java ME создана для ограниченных по мощности устройств, таких как встраиваемые устройства. Java SE - стандартное издание Java для написания обычных программ.

    Если вы новичок в Java-программировании , рекомендуем начать с Java SE .

    JVM — Java Virtual Machine («виртуальная машина Java ») - это программа, позволяющая компьютеру запускать программы, написанные на Java .

    JRE – Java Runtime Environment («среда выполнения Java ») включает в себя JVM , соответствующие библиотеки и другие компоненты, необходимые для запуска программ. Но в JRE нет компилятора, отладчика и других средств разработки.

    JDK – Java Development Kit (комплект Java разработчика ) содержит JRE и другие инструменты разработки, такие как компиляторы, отладчики и т.д.

    Как запустить Java на своей операционной системе

    Как запустить Java на Mac OS

    Вот что нужно сделать для Java программирование с нуля и установки платформы на Mac OS X или macOS :

    1. Скачайте свежую версию Java (JDK ) со страницы загрузки Java SE .
    2. Дважды кликните по скачанному DMG-файлу и следуйте инструкциям программы-установщика.
    3. Для верификации установки откройте терминал и введите следующую команду:

    javac –version

    Если Java установлена верно, на экран будет выведена версия программы (например, javac 1.8.0_60 ).

    Следующим шагом будет установка IDE (интегрированной среды разработки ) для написания и запуска Java-кода . Мы установим бесплатную версию IntelliJ IDEA и запустим на ней Java . Вот что нужно для этого сделать:

    1. Перейдите на страницу загрузки IntelliJ и скачайте бесплатную версию Community Edition .
    1. Откройте скачанный DMG-файл и следуйте инструкциям по установке. Для быстрого доступа можно переместить IntelliJ IDEA в папку «Программы ».
    2. Откройте IntelliJ IDEA . Выберите опцию «Don ’ t import settings » («Не импортировать настройки ») и нажмите «Ok » . После этого примите политику приватности Jetbrains , нажав на кнопку «Accept » .
    3. Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию. Если не уверены, просто пропускайте этот шаг, нажав кнопку «Skip All and Set Defaults » («Пропустить всё и установить настройки по умолчанию »).

    1. Программа покажет вам страницу приветствия. Нажмите на кнопку «Create New Project » («Создать новый проект »).
    2. В следующем окне выберите «Java » в левой панели и нажмите «New » вверху окна программы для выбора «JDK » . Здесь надо выбрать место, куда установили JDK , после чего нажать Next .

    1. У вас будет вариант создать проект из шаблона («Create project from template » ). Игнорируем его и нажимаем кнопку «Next » .
    2. На следующем шаге установки языка программирования Java введите имя проекта и нажмите кнопку «Finish » .
    3. В левой панели вы увидите свой проект. Если панели не видно, перейдите в меню Views > Tool Windows > Project .
    4. Зайдите в Hello > New > Java и задайте имя класса. Мы назвали его First .

    1. Для запуска только что написанной программы, зайдите в Run > Run… Нажмите на First (то есть имя созданного нами файла

    Как запустить Java на Linux

    Для запуска примеров из уроков программирования с нуля Java на Linux понадобится JAVA SE Development Kit (JDK ) и IDE для разработки своих проектов. Следуйте инструкции шаг за шагом, чтобы начать работу с Java .

    Установите Java

    1. Откройте терминал и наберите следующую команду для установки Java:

      sudo add-apt-repository ppa:webupd8team/java sudo apt update; sudo apt install oracle-java8-installer

    1. Примите лицензионное соглашение и условия использования, нажав «OK » и «Yes » , соответственно.
    2. Вы установили Java . Чтобы проверить, что установка прошла без ошибок, введите в терминале следующую команду:

    java –version

    Если выводится текущая версия, установка прошла успешно. Если же нет, сверьтесь со страничкой помощи Oracle .

    Установка IntelliJ IDEA

    1. Перейдите на .

    1. Скачайте бесплатную версию Community Edition , нажав кнопку «Загрузить ».
    2. После скачивания смените в терминале директорию на директорию загрузок и извлеките tar-файл Java в папку /opt следующей командой:

    sudo tar xf .tar.gz -C /opt/

    1. После распаковки поменяйте директорию на папку bin программы IntelliJ IDEA :

      cd /opt//bin

    2. Для запуска IDE вводим следующую команду:
    3. Выбираем «Don ’ t import settings » («Не импортировать настройки ») и нажимаем «OK » . После этого принимаем политику приватности Jetbrains , нажав на кнопку «Accept » .
    4. Теперь для прохождения курсов программирования Java можно настроить интерфейс под себя. Создайте ярлык на рабочем столе для быстрого доступа к программе. После этого для запуска IDE нажимаем «Next » на всех следующих этапах.
    5. Программа покажет страницу приветствия. Нажмите «Create New Project » («Создать новый проект »).
    6. В следующем окне выберите «Java » в левой панели и убедитесь, что в строке Project SDK выбрана Java . Если нет, то выберите местоположение, куда установили JDK: /usr/lib/jvm/java-8-oracle.

    1. Два раза нажимаем «Next » и создаём проект.
    2. На следующем шаге введите имя проекта и нажмите кнопку «Finish » . Теперь в левой панели вы увидите свой проект. Если этой панели не видно, перейдите в меню Views > Tool Windows > Project .
    3. Добавьте новый класс Java . Выберите src на левой панели правой кнопкой и зайдите в New > Java Class . Задайте имя класса. В имени класса не должно быть пробелов.

    1. Напишите Java-код и сохраните проект.
    2. Для запуска программы, зайдите в Run > Run … Нажмите на HelloWorld (название проекта ) - программа скомпилирует файл и запустит его.

    Как запустить Java на Windows (XP, 7, 8 и 10)

    Для освоения Java основ программирования и запуска платформы на Windows потребуется JAVA SE Development Kit (JDK) и IDE для разработки проектов. Следуйте пошаговой инструкции, приведенной ниже:

    Установка Java

    • Перейдите на страницу загрузки Java Standard Edition Development Kit .
    1. В разделе Java SE Development Kit вверху таблицы нажмите «Accept License agreement» («Принять лицензионное соглашение »). Затем кликните по ссылке Windows (x64) , если у вас 64-битная операционная система или Windows (x86) , если у вас 32-битная ОС .

    1. После скачивания запустите установочный файл и следуйте инструкциям, которые будут появляться на экране. Нажмите «Next ». Выберите все функции, нажав «This feature will be installed on local hard drive » и скопируйте место установки (оно выделено жёлтым ) в «Блокнот », после чего снова нажмите «Next ».

    1. В процессе установки появится запрос об установке JRE . Нажмите «Next » , а затем «Finish » для завершения установки.
    2. Теперь необходимо отредактировать переменную PATH . Перейдите в Панель управления > Система и безопасность > Система . В левой панели выберите «Дополнительные параметры системы».

    1. Нажмите «Переменные среды» . В разделе «Системные переменные» найдите переменную PATH и в следующем окне нажмите «Изменить» .

    1. Выберите весь текст в поле «Значение переменной» и скопируйте его в отдельный текстовый файл. Так будет легче его отредактировать и проверить на наличие ошибок. Посмотрите, есть ли в скопированном тексте строка: C : ProgramData Oracle Java javapath ; . Если да, то можно переходить к следующему шагу. Если нет, то вставьте скопированное ранее место установки в начало переменной и добавьте в конце строки bin вот так: C : Program Files (x 86) Java jdk 1.8.0_112 bin ; Обратите внимание, что ваша версия JDK (jdk 1.8.0_112 ) может отличаться. Скопируйте значение переменной и вставьте его в окошко PATH .

    1. Нажмите «ОК », чтобы сохранить внесенные изменения.
    2. Чтобы проверить, правильно ли установлена платформа для введения в программирование Java , откройте командную строку , набрав cmd в строке поиска Windows или через команду «Выполнить… » (Windows — R ). Введите команду java -version . Если отображается текущая версия Java , значит, установка прошла успешно. Если нет, сверьтесь со страничкой помощи Oracle .

    Установка IntelliJ IDEA

    1. Перейдите на страницу загрузки IntelliJ IDEA .
    2. Скачайте бесплатную версию Community Edition , нажав «Загрузить ».

    1. После загрузки запустите файл установки и следуйте инструкциям, которые будут появляться на экране. Затем создайте ярлык на рабочем столе для 64-битной версии и добавьте ассоциации с расширением .java . Нажмите «Next » и продолжайте установку.

    1. После установки откройте IntelliJ IDEA , нажав на значок на рабочем столе.
    2. Выберите «Don ’ t import settings » («Не импортировать настройки ») и нажмите «OK ». После этого принимаем политику приватности Jetbrains, нажав «Accept ».
    3. Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию, нажав кнопку «Skip All and Set Defaults ».
    4. Программа покажет страницу приветствия. Нажмите «Create New Project » («Создать новый проект »).

    1. В следующем окне выберите «Java » в левой панели и нажмите «New » в верхней части окна программы для выбора JDK . Здесь надо выбрать местоположение, куда установили JDK во время установки Java , после чего нажать «Next ».
    2. IntelliJ IDEA найдёт JDK и распознает его. Никакие другие опции отмечать не нужно, просто нажмите «Next » .
    3. На следующем экране введите имя проекта: HelloWorld и нажмите «Finish ». Если программа скажет, что директории не существует, нажмите «ОК ». Если вы не видите левой панели, перейдите в меню Views > Tool Windows > Project .
    4. Чтобы задать имя класса, выберите в левой панели папку src. Кликните по ней правой кнопкой мыши, зайдите в New > Java и задайте имя класса. В имени класса не должно быть пробелов.

    1. Напишите код и сохраните проект Java урока программирования .
    2. Для запуска программы, зайдите в меню Run > Run … Нажмите на HelloWorld - программа скомпилирует файл и запустит его.

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

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

    1. Откройте IntelliJ IDEA .
    2. Перейдите в File > New > Project… > Java (в левой панели навигации ).
    3. Задайте имя проекта (Project Name ) из курса программирования J a va . Мы назовём его Hello World и нажмём «Finish ».
    4. Теперь нужно создать новый класс Java .
    5. Выберите папку src в левой панели, после чего перейдите в меню File > New > Java Class и задайте имя нового класса- HelloWorld .
    6. Скопируйте следующий код в файл HelloWorld.java и сохраните его.

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

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

    Как выучить Java?

    Официальная документация Java

    Oracle , компания, владеющая Java , публикует качественные уроки. Официальная документация освещает все функции Java и регулярно обновляется.

    Примечание: единственный минус - официальная документация Java не всегда написана самым простым языком.

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

    Java: Полное руководство (10-е издание)

    Отличная книга для тех, кто только начинает изучать Java . Последнее издание включает все функции релиза Java 8 .

    В книге описано всё, что нужно знать о программировании на Java , включая синтаксис, ключевые слова и фундаментальные основы программирования, а также библиотеку API Java , апплеты Java и многое другое.

    Философия Java (4-е издание)

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

    Java 8. Карманный справочник: Скорая помощь Java-программистам

    Эта книга содержит понятные ответы на вопросы, возникающие при обучении J ava программированию с нуля . Она кратко рассказывает обо всех основных концепциях Java (включая Java 9 ). Не хотите листать сотни страниц в поисках нужной строчки? Купите эту книгу.

    Вместо заключения

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

    Перед тем, как приступить к изучению Java , воспользуйтесь несколькими советами:

    • Не читайте обучающие статьи и примеры как роман. Единственный способ стать хорошим программистом - писать много кода.
    • Если переходите с другого языка программирования (скажем , C# ), не надо писать код в стиле C# .

      Хорошо Плохо