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

  1. Кроссплатформенность (“Write once, run everywhere”) достигнута за счет использования виртуальной машины (JVM).
    JVM - программа исполняемая в операционной системе, которая предоставляет Java-приложениям необходимые ресурсы.
    Параметры JVM специфицированы - для каждой операционной системы реализована своя JVM.
    Java - язык компилируемым и интерпретируемым.
    Исходный код любой программы на языке Java - текстовые файлы с расширением .java, которые при помощи Java-компилятора (javac) транслируются в Java байт-код. Откомпилированные файлы сохраняются в бинарных файлах с расширением .class. Java-приложение, состоящее из таких файлов, подается на вход JVM, которая начинает их исполнять (интерпретировать).
  2. Объектно-ориентированный подход (ООП) - методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса.
    Любой Java-проект - набор классов, объедененные по смыслу в пакеты, на базе которых реализуются экземпляры объектов, взаимодействующих между собой.
  3. Строгая типизация - любая переменная (выражение) имеет тип, известный уже на момент компиляции.
    В Java существует всего 8 типов данных, которые не являются объектами, которые называют простыми, или примитивными (primitive):
    • целочисленные: byte, short, int, long;
    • символьный char;
    • дробные: float и double;
    • булевский: boolean.
      Все остальные типы - объектные или ссылочные (reference).
  4. Синтаксис Java создан на основе синтаксиса языков C/C++.
  5. Автоматическая сборка мусора (garbage collector).
    Сборщик мусора - работает в фоновом режиме. Из программы нельзя повлиять на работу garbage collector, можно только явно инициировать его очередной проход с помощью стандартной функции. JVM подсчитывает количество ссылок на каждый объект, и если оно становится равным нулю, то такой объект помечается для удаления garbage collector.
  6. Безопасность.
    Правила работы с памятью (очистка памяти производится автоматически). Резервирование определяется JVM, а не компилятором или явным образом из программы. Разработчик может лишь указать, что он хочет создать еще один новый объект. Указатели по физическим адресам отсутствуют принципиально.
    Наличие JVM значительно облегчает отсечение опасного кода на каждом этапе работы. Сначала байт-код загружается в систему, как правило, в виде class-файлов. JVM тщательно проверяет, все ли они соответствуют общим правилам безопасности Java и не созданы ли злоумышленниками с помощью каких-то других средств и не искажены ли при передаче.
    Во время исполнения программы, интерпретатор легко может проверить каждое действие на допустимость. Возможности классов, которые были загружены с локального диска или по сети, существенно различаются (пользователь легко может назначать или отменять конкретные права). Например, апплеты по умолчанию никогда не получат доступ к локальной файловой системе. Такие встроенные ограничения есть во всех стандартных библиотеках Java.
    Существует механизм подписания апплетов и других приложений, загружаемых по сети. Специальный сертификат гарантирует, что пользователь получил код именно в том виде, в каком его выпустил производитель.
  7. Динамичность, легкость развития и добавления новых возможностей.