Java LanguageНачало работы с Java Language

Download Java Language for free

замечания

Язык программирования Java ...

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

  • Class-based : его структура объектов определена в классах. У экземпляров классов всегда есть те поля и методы, которые указаны в их определениях классов (см. Классы и объекты ). Это противоречит неклассическим языкам, таким как JavaScript.

  • Статически типизированный : компилятор проверяет во время компиляции, что типы переменных соблюдаются. Например, если метод ожидает аргумент типа String , этот аргумент на самом деле должен быть строкой при вызове метода.

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

  • Portable : он может быть скомпилирован на любой платформе с помощью javac и полученные файлы классов могут запускаться на любой платформе с JVM.

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

Java-код скомпилирован в байт-код ( .class ), которые, в свою очередь, интерпретируются виртуальной машиной Java (JVM). Теоретически байт-код, созданный одним компилятором Java, должен работать одинаково на любом JVM, даже на другом компьютере. JVM может (и в реальных программах) выбирать для компиляции в собственные машинные команды части байт-кода, которые выполняются часто. Это называется компиляцией «точно в срок» (JIT) ».

Java-версии и версии

Существует три «издания» Java, определенные Sun / Oracle:

  • Java Standard Edition (SE) - это издание, предназначенное для общего использования.
  • Java Enterprise Edition (EE) добавляет ряд возможностей для создания сервисов уровня предприятия на Java. Java EE рассматривается отдельно .
  • Java Micro Edition (ME) основана на подмножестве Java SE и предназначена для использования на небольших устройствах с ограниченными ресурсами.

Существует отдельная тема для выпусков Java SE / EE / ME .

Каждое издание имеет несколько версий. Ниже перечислены версии Java SE.

Установка Java

Существует отдельная тема по установке Java (стандартная версия) .

Компиляция и запуск Java-программ

Существуют отдельные темы:

Что дальше?

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

тестирование

Хотя Java не имеет поддержки для тестирования в стандартной библиотеке, существуют сторонние библиотеки, которые предназначены для поддержки тестирования. Две наиболее популярные библиотеки для тестирования модулей:

Другой

  • Шаблоны проектирования для Java описаны в шаблонах проектирования .
  • Программирование для Android распространяется на Android .
  • Технологии Java Enterprise Edition описаны в Java EE .
  • Технологии Oracle JavaFX рассматриваются в JavaFX .

1. В разделе « Версии » дата окончания срока службы (бесплатно) заключается в том, что Oracle перестанет публиковать дальнейшие обновления Java SE на своих общедоступных сайтах загрузки. Клиенты, которым требуется постоянный доступ к критическим исправлениям ошибок и исправлениям безопасности, а также общее обслуживание Java SE, могут получить долгосрочную поддержку через поддержку Oracle Java SE .

Версии

Версия Java SE Кодовое имя Окончание срока службы (бесплатно 1 ) Дата выхода
Java SE 9 (ранний доступ) Никто будущее 2017-07-27
Java SE 8 паук будущее 2014-03-18
Java SE 7 дельфин 2015-04-14 2011-07-28
Java SE 6 мустанг 2013-04-16 2006-12-23
Java SE 5 тигр 2009-11-04 2004-10-04
Java SE 1.4 Мерлин до 2009-11-04 2002-02-06
Java SE 1.3 Пустельга до 2009-11-04 2000-05-08
Java SE 1.2 Детская площадка до 2009-11-04 1998-12-08
Java SE 1.1 Никто до 2009-11-04 1997-02-19
Java SE 1.0 дуб до 2009-11-04 1996-01-21

Создание первой программы Java

Создайте новый файл в текстовом редакторе или в IDE с именем HelloWorld.java . Затем вставьте этот блок кода в файл и сохраните:

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

Запуск в прямом эфире на Ideone

Примечание. Если Java распознает это как public class (а не выдает ошибку времени компиляции ), имя файла должно совпадать с именем класса ( HelloWorld в этом примере) с расширением .java . Перед этим также должен быть модификатор public доступа.

Соглашения об именах рекомендуют, чтобы классы Java начинались с символа верхнего регистра и находились в формате case camel (в котором первая буква каждого слова заглавная). Эти соглашения рекомендуются против знаков подчеркивания ( _ ) и доллара ( $ ).

Чтобы скомпилировать, откройте окно терминала и перейдите в каталог HelloWorld.java :

cd /path/to/containing/folder/
 

Примечание: cd - это команда терминала для изменения каталога.

Введите javac а затем имя файла и расширение следующим образом:

$ javac HelloWorld.java
 

Общеизвестно, что ошибка 'javac' is not recognized as an internal or external command, operable program or batch file. даже если вы установили JDK и сможете запускать программу из IDE ex. eclipse и т. д. Так как путь по умолчанию не добавляется в среду.

В случае, если вы получите это на окнах, чтобы решить проблему, сначала попробуйте перейти на ваш путь javac.exe , скорее всего, это ваш C:\Program Files\Java\jdk(version number)\bin . Затем попробуйте запустить его ниже.

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
 

Раньше, когда мы javac он был таким же, как и команда выше. Только в этом случае ваша OS знала, где находится javac . Итак, давайте расскажем об этом сейчас, поэтому вам не нужно вводить весь путь каждый раз. Нам нужно добавить это к нашей PATH

Чтобы изменить PATH среды PATH в Windows XP / Vista / 7/8/10:

  • Панель управления ⇒ Система ⇒ Расширенные настройки системы
  • Переключиться на вкладку «Дополнительно» ⇒ Переменные среды
  • В «Системные переменные» прокрутите вниз, чтобы выбрать «ПУТЬ» ⇒ Изменить

Вы не можете отменить это, поэтому будьте осторожны. Сначала скопируйте существующий путь в блокнот. Затем, чтобы получить точную PATH для вашего javac просмотрите вручную папку, в которой находится javac и щелкните по адресной строке, а затем скопируйте ее. Он должен выглядеть примерно так c:\Program Files\Java\jdk1.8.0_xx\bin

В поле «Variable value» вставьте этот IN FRONT из всех существующих каталогов, за которым следует точка с запятой (;). НЕ УДАЛЯЙТЕ любые существующие записи.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
 

Теперь это должно решить.

Для Linux-систем попробуйте здесь .

Примечание. Команда javac вызывает компилятор Java.

Затем компилятор сгенерирует файл байт-кода HelloWorld.class который может быть запущен на виртуальной машине Java (JVM) . Компилятор языка программирования Java, javac , читает исходные файлы, написанные на языке программирования Java, и компилирует их в файлы классов bytecode . При желании компилятор также может обрабатывать аннотации, найденные в исходных и классных файлах, с помощью API Pluggable Annotation Processing. Компилятор является инструментом командной строки, но также может быть вызван с использованием Java Compiler API.

Чтобы запустить вашу программу, введите java а затем имя класса, которое содержит main метод ( HelloWorld в нашем примере). Обратите внимание, что .class опущен:

$ java HelloWorld
 

Примечание. Команда java запускает приложение Java.

Это будет выводиться на консоль:

Привет, мир!

Вы успешно закодировали и создали свою первую Java-программу!

Примечание. Чтобы распознавать Java-команды ( java , javac и т. Д.), Вам необходимо убедиться:

  • Установлен JDK (например, Oracle , OpenJDK и другие источники)
  • Ваши переменные среды правильно настроены

Вам нужно будет использовать компилятор ( javac ) и исполнитель ( java ), предоставленный вашей JVM. Чтобы узнать, какие версии вы установили, введите java -version и javac -version в командной строке. Номер версии вашей программы будет напечатан в терминале (например, 1.8.0_73 ).


Более пристальный взгляд на программу Hello World

Программа Hello World содержит один файл, который состоит из определения класса HelloWorld , main метода и оператора внутри main метода.

public class HelloWorld {
 

Ключевое слово class начинает определение класса для класса с именем HelloWorld . Каждое приложение Java содержит хотя бы одно определение класса ( дополнительная информация о классах ).

    public static void main(String[] args)  {
 

Это метод точки входа (определяемый его именем и сигнатурой public static void main(String[]) ), из которого JVM может запускать вашу программу. Каждая программа Java должна иметь один. Это:

  • public : это означает, что метод может быть вызван из любой точки мира извне программы. См. « Видимость» для получения дополнительной информации об этом.
  • static : означает, что он существует и может выполняться сам по себе (на уровне класса без создания объекта).
  • void : означает, что он не возвращает значение. Примечание. Это не похоже на C и C ++, где ожидается код возврата, такой как int (путь Java - System.exit() ).

Этот основной метод позволяет:

Почти все это требуется для метода точки входа Java.

Необязательные детали:

  • Имя args - это имя переменной, поэтому его можно назвать чем угодно, хотя обычно его называют args .
  • Является ли его тип параметра массивом ( String[] args ) или Varargs ( String... args ), не имеет значения, потому что массивы могут быть переданы в varargs.

Примечание. В одном приложении может быть несколько классов, содержащих метод точки входа ( main ). Точка входа приложения определяется именем класса, переданным в качестве аргумента в команду java .

Внутри основного метода мы видим следующее утверждение:

        System.out.println("Hello, World!");
 

Давайте разберем эту инструкцию по элементам:

Элемент Цель
System это означает, что последующее выражение вызовет класс System из пакета java.lang .
. это «точечный оператор». Операторы точек предоставляют вам доступ к членам классов 1 ; т.е. его поля (переменные) и его методы. В этом случае этот оператор точки позволяет ссылаться на out статического поля в System класса.
out это имя статического поля типа PrintStream внутри класса System содержащего стандартные функции вывода.
. это еще один оператор точки. Этот оператор точки обеспечивает доступ к методу println в переменной out .
println это имя метода в классе PrintStream. Этот метод, в частности, печатает содержимое параметров в консоли и вставляет новую строку после.
( эта скобка указывает, что к способу обращается (а не к полю) и начинает параметры передаются в метод println .
"Hello, World!" это строковый литерал, который передается как параметр, в метод println . Двойные кавычки на каждом конце ограничивают текст как String.
) эта скобка означает закрытие параметров, передаваемых в метод println .
; эта точка с запятой знаменует конец утверждения.

Примечание. Каждый оператор в Java должен заканчиваться точкой с запятой ( ; ).

Тело метода и тело класса затем закрываются.

    }  // end of main function scope
}      // end of class HelloWorld scope 
 

Вот еще один пример, демонстрирующий парадигму ОО. Давайте моделируем футбольную команду с одним (да, одним!) Участником. Их может быть больше, но мы обсудим это, когда мы перейдем к массивам.

Сначала давайте определим наш класс Team :

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}
 

Теперь давайте определим наш Member класса:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}
 

Почему мы здесь используем private ? Ну, если кто-то хочет узнать ваше имя, они должны попросить вас прямо, вместо того, чтобы влезть в карман и вытащить карту социального страхования. Это private делает что-то вроде этого: оно предотвращает доступ внешних объектов к вашим переменным. Вы можете возвращать только private членов через функции getter (показано ниже).

Положив все это вместе и добавив геттеры и основной метод, как обсуждалось ранее, мы имеем:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}
 

Выход:

Aurieel
light
10
1
 

Запуск на идеон

Еще раз, main метод внутри класса Test является точкой входа в нашу программу. Без main метода мы не можем сообщить виртуальной машине Java (JVM), откуда начать выполнение программы.


1 - Поскольку класс HelloWorld мало HelloWorld классом System , он может получать доступ только к public данным.

2D-графика в Java