Язык Java является полностью объектно-ориентированным. Это означает, что любая программа, написанная на языке Java, должна поддерживать парадигму объектно- ориентированного программирования (сокращенно ООП). В отличие от традици- онного процедурного программирования, объектно-ориентированные программы подразумевают описание классов и, как правило, создание объектов. На сегод- няшний день существует несколько наиболее популярных языков программиро- вания, поддерживающих концепцию ООП. В первую очередь это C++, С# и Java. Исторически первым появился язык C++, ставший существенно усовершенство- ванной версией языка C. Усовершенствования касались главным образом под- держки парадигмы ООП. Именно С++ стал в известном смысле родительским для языков С# и Java. В этом несложно убедиться, если сравнить синтаксисы языков — они очень схожи. Язык C++ в известном смысле является «переход- ным», поскольку позволяет писать программы как с использованием классов, так и без них. В то же время такие языки, как Java и C#, для составления даже самой простой программы требуют использовать концепцию классов.
Язык Java является продуктом компании Sun Microsystems (теперь эта компания поглощена корпорацией Oracle), язык C# поддерживается компанией Microsoft. Языки программирования Java и C# можно рассматривать как попытку «усовер- шенствовать» и «адаптировать» используемые в C++ подходы для эффективного создания программных кодов, ориентированных на Интернет. В данном случае задачи и проблемы, которые решали создатели языка C#, нас интересовать не будут, а вот об особенностях языка Java хочется сказать несколько слов.
«Написано однажды — работает везде!» — эти слова можно назвать главным принципом, положенным в основу технологии Java. Именно на создание универ- сальной технологии программирования были направлены усилия разработчиков компании Sun Microsystems, в результате чего и появился язык программирова- ния Java. Периодом создания языка принято считать годы с 1991 по 1995. К тому времени остро встала проблема составления эффективных программ для работы в Интернете. В этом случае важное место занимают вопросы совместимости программного обеспечения, поскольку особенностью интернет-среды является принципиальное разнообразие используемых операционных систем и аппарат- ного обеспечения. Другими словами, задача состояла в том, чтобы эффектив- ность и корректность написанных на Java программ не зависела (или почти не зависела) от типа процессора или операционной системы.
Решение задачи было найдено в рамках концепции виртуальной Java-машины. Так, если обычно при компиляции программы (например, написанной на C++) на выходе мы получаем исполнительный машинный код, то в результате ком- пиляции Java-программы получают промежуточный байт-код, который выпол- няется не операционной системой, а виртуальной Java-машиной ( Java Virtual Machine, JVM). Разумеется, предварительно виртуальная Java-машина должна быть установлена на компьютер пользователя. С одной стороны, это позволяет создавать достаточно универсальные программы (в том смысле, что они могут
Различия между Java и С++11
использоваться с разными операционными системами). Однако, с другой сто- роны, платой за такую «универсальность» является снижение скорости выпол- нения программ.
Кроме того, следует четко понимать, что язык Java создавался для написания больших и сложных программ. Писать на Java консольные программы, которые выводят сообщения вроде «Hello, world!» — это все равно, что на крейсере от- правиться на ловлю карасей. Тем не менее Java позволяет решать и такие задачи (имеются в виду программы, а не караси). Хотя большинство примеров в кни- ге представляют собой как раз простые программные коды, в данном случае это оправдано, поскольку в учебе хороши любые приемы — главное, чтобы они были эффективными.