Java - Описание языка программирования

Поговорив об истории создания Java, перейдём к его "устройству".

Виртуальные машины счастья

Как уже было сказано в заметке об истории - программа на Яве компилируется не в машинный код для данного процессора а в так называемый код виртуальной машины Java (Java Virtual Machine - JVM)

Данный приём не способствует повышению производительности, зато обеспечивает упрощённую реализацию столь желанной переносимости программ (для разработчиков языка, для прикладных же программистов и код является абсолютно универсальным для все платформ).

Также виртуальная машина позволяет контролировать исполняемый код и таким образом обезопасить остальные программы в системе.
Для некоторого увеличения производительности существует компилятор JIT (Just in time - часть JVM), который позволяет "на лету" компилировать фрагменты программы в исполняемый код платформы. При этом компиляция всей программы оказывает нецелесообразной - так как Java выполняет ряд проверок именно во время исполнения.

При использовании JIT безопасность (изолированность) кода программы сохраняется - ибо JVМ "продолжает" следить за ним =))

Обещания

Ява обещает вам некоторые собственные свойства - так это или нет мы узнаем дальше, а пока всё же упомянем о них:

  1. Простота - для кто что-то когда-то программировал изучение Java должно пройти легко и приятно
  2. Безопасность - это мы обсуждали выше и раньше, и возможно вернёмся в дальнейшем.
  3. Переносимость - уже обсуждали - является центральной идеей создания Явы
  4. Объектная ориентированность - одно из немногих свойств Явы, в котором мало кто сомневается =) -хотя тем не менее примитивы остались примитивами (их, к счастью, не сделали объектами) - что положительно сказалось на производительности
  5. Устойчивость - проверка кода явы происходит не только во время компиляции, но и во время выполнения - так что можно сказать, что Ява - это "предсказуемый" язык. Ява сама управляет памятью (это избавляет нас от первого рода проблем) -ну и второй камень преткновения - это процесс обработки исключений, который в яве поставлен "как надо" - и фактически предоставлен удобный механизм поставки под контроль исключительных ситуаций - они могут и должны обрабатываться.
  6. Многопоточность - имеется изящный и вместе с тем - сложный механизм реализации взаимодействия потоков, он позволяет программисту сосредоточиться непосредственно на задаче - без раздумий о том как бы организовать взаимодействие потоков самому.
  7. Архитектурная нейтральность - Г. Шилдт указывает в этом пункте прежде всего на то, что программы "написанные однажды, должны выполняться всегда" - не зависить о ОС и иных особенностей
  8. Интерпретируемость - это правда =) Java - интерпретируемый язык
  9. Высокая производительность - Jit конечно есть, но не всегда помогает
  10. Распределённый характер - как было сказано ранее, Ява - подстраивался под нужды Интернет - в частности были созданы средства "прозрачного" для прикладного программиста обращения к удалённым файлам, и более того - средства удалённого вызова методов (Remote Method Invocation - RMI)
  11. Динамический характер - ява довольно мощно контролирует программу на этапе выполнения, а потому в памяти оказывается куча дополнительной информации - но это оправдано так как проводятся проверки полномочий доступа к объектам во время выполнения ,а также динамическое связывание кода, которое "технически оправдано".

Эволюция Java - развитие во времени.

Именно благодаря собственному оперативному развитию Java занимает сегодня лидирующие позиции среди популярных языков программирования. Разница между версиями 1.0 и 1.1 уже была значительной, а Java 2.0 открывает "современную эру" Явы =)

Концепции

Как было сказано выше, Java является объектно-ориентированным языком, в связи с чем мы временно оставим эту страницу и поговорим об ООП.

Key Words for FKN + antitotal forum (CS VSU):