Одно из главных преимуществ языка Java - его независимость от
платформы, на которой выполняются программы. Таким образом, один и тот
же код можно запускать под управлением операционных систем Windows,
Linux, FreeBSD, Solaris, Apple Mac и др. Это становится очень важным,
когда программы загружаются посредством глобальной сети интернет и
используются на различных платформах.
Другим, не менее важным преимуществом Java, является большая
схожесть с языком программирования C++. Поэтому тем программистам,
которые знакомы с синтаксисом С и С++ будет просто освоить Java.
Кроме того, Java - полностью объектно-ориентированный язык,
даже в большей степени, чем С++. Все сущности в языке Java являются
объектами, за исключением немногих основных типов (primitive types),
например чисел. В свое время объектно-ориентированное программирование
(ООП) заменило структурное программирование.
Важно и то, что разрабатывать на Java программы, которые не содержат ошибок, значительно легче, чем на С++.
Все дело в том, что разработчиками языка Java из компании Sun
был проведен фундаментальный анализ программ на языке С++.
Анализировались "узкие места" исходного кода, которые и приводят к
появлению трудновыявимых ошибок. Поэтому было принято решение
проектировать язык Java с учетом возможности создавать программы, в
которых были бы скрыты наиболее распространенные ошибки.
Для этого было сделано следующее:
разработчики исключили возможность явного выделения и освобождения памяти.
К примеру, память в Java освобождается автоматически с помощью
механизма сбора мусора. Получается, что программист застрахован от
ошибок, которые возникают от неправильного использования памяти.
введение истинных массивов и запрещение указателей.
Теперь программисты не могут стереть данные из памяти по причине неправильного использования указателей.
была исключена возможность перепутать оператор присваивания с
оператором сравнения на равенство. Как правило, проблема со знаком "="
очень часто приводит в С и С++ к логическим ошибкам, которые не так
просто обнаружить. Особенно в крупных программах.
полностью исключено множественное наследование. Оно было
заменено новым понятием - интерфейсом, идея которого была
позаимствована из языка Objective C.
Интерфейс дает программисту практически все, что тот может
получить от множественного наследования, избегая при этом сложностей,
которые возникают при управлении иерархиями классов.