Java — общее название объектно-ориентированного языка программирования Java и платформы Java, выпущенных Sun Microsystems в мае 1995 года. Он был совместно разработан Джеймсом Гослингом и его коллегами и официально запущен в 1995 году.
Java делится на три системы:
В июне 2005 года прошла конференция JavaOne, и SUN выпустила Java SE 6. К этому времени различные версии Java были переименованы, чтобы убрать цифру «2»: J2EE был переименован в Java EE, J2SE был переименован в Java SE, а J2ME был переименован в Java ME.
В 2009 году Sun была приобретена Oracle.
В 2018 году организация с открытым исходным кодом Eclipse Foundation объявила, что JavaEE (Enterprise Edition) будет переименована в JakartaEE (Джакарта).
Синтаксис языка Java очень близок к языкам C и C++, что упрощает его изучение и использование большинством программистов. С другой стороны, Java отказывается от тех функций C++, которые редко используются, сложны для понимания и запутанны, например перегрузка операторов, множественное наследование и автоматическое приведение типов. В частности, язык Java использует не указатели, а ссылки. Он также обеспечивает механизм автоматического управления перезапуском памяти, поэтому программистам не нужно беспокоиться об управлении памятью.
Язык Java предоставляет такие примитивы, как классы, интерфейсы и наследование. Для простоты он поддерживает только одиночное наследование между классами, но поддерживает множественное наследование между интерфейсами и поддерживает механизм реализации между классами и интерфейсами (ключевое слово — реализует). Язык Java полностью поддерживает динамическое связывание, тогда как язык C++ использует динамическое связывание только для виртуальных функций. Короче говоря, язык Java — это чистый объектно-ориентированный язык программирования.
Язык Java поддерживает разработку интернет-приложений. Среди основных интерфейсов программирования приложений Java существует интерфейс программирования сетевых приложений (java net), который предоставляет библиотеки классов для программирования сетевых приложений, включая URL, URLConnection, Socket, ServerSocket и т. д. Механизм Java RMI (удаленная активация метода) также является важным средством разработки распределенных приложений.
Механизм строгой типизации Java, обработка исключений, автоматическая сборка мусора и т. д. являются важными гарантиями надежности программ Java. Отказ от указателей — разумный выбор для Java. Механизм проверки безопасности Java делает Java более надежным.
Java обычно используется в сетевых средах. По этой причине Java предоставляет механизм безопасности для предотвращения атак со стороны вредоносного кода. В дополнение ко многим функциям безопасности языка Java, Java имеет механизм предотвращения безопасности (класс ClassLoader) для классов, загружаемых через сеть, например, выделение разных пространств имен для предотвращения замены локальных классов с тем же именем, проверка байт-кода, и обеспечение механизма управления безопасностью (класс SecurityManager) позволяет приложениям Java устанавливать датчики безопасности.
Программы Java (файлы с суффиксом java) компилируются в нейтральный по архитектуре формат байт-кода (файлы с суффиксом класса) на платформе Java и затем могут быть запущены в любой системе, реализующей эту платформу Java. Этот подход подходит для гетерогенных сетевых сред и распространения программного обеспечения.
Эта переносимость обусловлена нейтральностью архитектуры. Кроме того, Java также строго регулирует длину каждого базового типа данных. Сама система Java также обладает высокой переносимостью. Компилятор Java реализован на языке Java, а среда выполнения Java — на языке ANSI C.
Как упоминалось ранее, программы Java компилируются в формат байт-кода на платформе Java и затем могут быть запущены в любой системе, реализующей эту платформу Java. Во время выполнения интерпретатор Java на платформе Java интерпретирует и выполняет эти байт-коды, а классы, необходимые во время выполнения, загружаются в рабочую среду на этапе подключения.
По сравнению с интерпретируемыми языками сценариев высокого уровня Java действительно обладает высокой производительностью. Фактически, скорость работы Java становится все ближе и ближе к скорости C++ с развитием технологии компилятора JIT (Just-In-Time).
В языке Java поток — это специальный объект, который должен быть создан классом Thread или его потомками (внуками). Обычно существует два способа создания потока: во-первых, использовать конструктор типа Thread(Runnable), чтобы обернуть объект, реализующий интерфейс Runnable, в поток, во-вторых, получить подкласс из класса Thread и переопределить метод run, объект; созданный с использованием этого подкласса, является потоком. Стоит отметить, что класс Thread реализовал интерфейс Runnable, поэтому любой поток имеет свой метод запуска, а метод запуска содержит код, который будет запускаться потоком. Активность потока контролируется набором методов. Язык Java поддерживает одновременное выполнение нескольких потоков и обеспечивает механизм синхронизации между несколькими потоками (ключевое слово синхронизировано).
Одной из целей разработки языка Java является адаптация к динамически изменяющейся среде. Классы, необходимые программам Java, могут быть динамически загружены в рабочую среду или необходимые классы могут быть загружены через сеть. Это также облегчает обновление программного обеспечения. Кроме того, классы в Java имеют представление во время выполнения и могут выполнять проверку типов во время выполнения.
Язык Java пытается гарантировать, что объем системной памяти превышает 1 ГБ. Другие инструменты:
После установки вышеуказанных инструментов мы можем вывести первую программу Java «Hello World!»
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); } }
В следующей главе мы покажем, как настроить среду разработки Java.