Java для автоматизаторов
  • Introduction
  • Java. Введение
    • Java как язык и платформа
    • Установка и настройка
  • Язык Java. Основы
    • Hello World
    • Переменные
    • Типы данных
    • Строки
    • Циклы "while" / "do ... while"
    • Циклы "for"
    • Условный оператор "if / if ... else"
    • Условный оператор "switch"
    • Массивы
    • Задания к главе
  • ООП в Java
    • Классы и объекты
    • Методы
    • Свойства
    • Параметры методов
    • Ключевое слово this
    • Конструктор
    • Модификаторы static и final
    • StringBuffer
    • Метод toString()
    • Метод equals()
    • Наследование
    • Пакеты
    • Интерфейсы
    • Модификаторы Public, Private и Protected
    • Полиморфизм
    • Инкапсуляция
    • Использование обобщений
    • Generics and Wildcards
    • Анонимные классы
    • Исключения
    • Множественные исключения
    • Абстрактные классы
    • Вложенные классы
    • Тип Enum
    • Задания к главе
  • Коллекции
    • ArrayList
    • Linked Lists
    • HashMap
    • Sets (Множества)
    • Sorted Maps
    • Задание порядка в множестве ( natural ordering )
    • Очередь (Queue)
    • Использование итераторов
    • Создание объектов, реализующих интерфейс Iterable
    • Задания к главе
  • Стиль написания кода
    • Структура файла
    • Файлы-исходники
    • Открывающие комментарии
    • Сведения о пакете и импорте
    • Объявление классов и интерфейсов
    • Длина строки
    • Переносы строк
    • Переносы в объявлении методов
    • Переносы в операторе if
    • Переносы в тернарных операциях
    • Виды комментариев
    • Блочные комментарии
    • Однострочные комментарии
    • Комментарии в конце строки
    • Объявления (Декларации)
    • Операторы
    • Пропуски
    • Конвенция именования
    • Задания к главе
  • Работа с файлами
    • Работа с текстовыми файлами
    • Работа с XML файлами
    • Работа с JSON файлами
    • Property-файлы
    • Задания к главе
  • Log4j - система логирования сообщений в Java
    • Начало работы
    • Конфигурационные файлы
    • Стандартные аппендеры
    • Задания к главе
  • Юнит тестирование
    • JUnit vs TestNG. Основные аннотации
    • JUnit vs TestNG. Примеры тестов
      • Exception тесты
      • Ignore тесты
      • Тест с таймаутом
      • Тест сьюты
      • Параметризованные тесты
      • Зависимые тесты
      • Многопоточность
    • Asserts
    • Использование "заглушек" (Mocks)
  • Build инструменты
    • Build инструменты
    • Примеры конфигураций
  • Системы контроля версий. Git
    • Системы контроля версий. Git
    • Git. Установка
    • Git. Основы
    • Git. Основные команды
      • Настройка
      • Работа с репозиторием
      • Работа с удаленным сервером
      • Работа с ветками
Powered by GitBook
On this page
  1. Java. Введение

Java как язык и платформа

PreviousJava. ВведениеNextУстановка и настройка

Last updated 6 years ago

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

  • Java как язык программирования является высокоуровневым, статически-типизированным и объектно-ориентированным.

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

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

Java программы выполняются (или интерпретируются) другой программой, называемой JVM (Java Virtual Machine). Она не интерпретирует напрямую исходный Java код, вместо этого java код должен быть скомпилирован в .class файлы (или байт-код), формат которых не является удобным для чтения человеком, но это и не машинный код. Технически байт-код — это промежуточный язык, или Intermediate language.

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

Наиболее важными являются две спецификации:

  • Java Language Specification

  • JVM Specification

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

Возникает логичный вопрос: что же связывает язык Java с JVM. И ответ на этот вопрос - .class файлы, в которые компилируется исходный код Java (и не только этого языка) и который затем интерпретируется JVM.

Строго говоря, получение из исходного кода Java байт-кода не является компиляцией, как она работает, например, для С или C++, а скорее процесс генерации Intermediate language. Тем не менее язык Java можно смело называть и компилируемым и интерпретируемым, поскольку JVM во время работы программы интерпретирует байт-код и компилирует его по требованию в машинный код с помощью JIT (just in time compiler).

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

Вопрос 1. Java компилируемый язык или интерпретируемый?

Вопрос 2. Java статически типизированный язык или динамически?

Diagram