Язык Java в сравнении с другими языками

Сравнение Java с другими языкамиВ предыдущей статье мы постарались вам объяснить что из себя представляет виртуальная машина Java, а в этой статье сравним язык Java с другими языками программирования. В своем выборе свойств язык Java опирается на многолетний опыт программирования на других языках. Следует уделить немного времени сравнению Java на высоком уровне с некоторыми другими языками. Это будет полезно для тех из вас, у кого имеется опыт программирования на других языках, и для новичков, которым необходимо хорошо разобраться в данной теме.

Как минимум три колонны необходимы для поддержки универсального языка программирования сегодня: портативность, скорость и безопасность. Рисунок ниже показывает язык Java в сравнении с несколькими другими языками, которые были популярны, когда он был создан.

Вы, возможно, слышали, что язык Java во многом похож на язык С или С++, но в действительности это только внешнее сходство. Когда вы впервые взглянете на Java-код, вы увидите, что базовый синтаксис похож на С или С++. Но на этом сходство и заканчивается. Язык Java ни в коем случае не является прямым потомком С или следующим поколением С++. Если вы сравните свойства этих языков, вы увидите, что у Java в действительности больше общего с динамическими языками высшей степени, такими как Smalltalk и Lisp. В действительности реализация Java настолько далека от реализации С++, насколько вы можете себе представить.

Сравнение языков программирования
Сравнение языков программирования

Если вы знакомы с современной панорамой языков, вы заметите, что популярный язык С# отсутствует в этом сравнении. С# в целом — это ответ Microsoft на Java, имеющий много преимуществ при поверхностном рассмотрении. При общем дизайне и подходе (например, использование виртуальной машины, байт-код, «песочница» и др.) платформы по существу не отличаются в показателях скорости или характеристиках безопасности. С# теоретически является таким же портативным, как Java, но сегодня он поддерживается на гораздо меньшем количестве платформ. Как и Java, С# много позаимствовал из синтаксиса С, но в действительности является близким родственником динамических языков. Многие разработчики Java считают, что понять С# достаточно легко, и наоборот. Большая часть времени, которое тратится при переходе с одного языка на другой, уходит на изучение стандартной библиотеки.

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

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

В самом начале, еще до динамической и адаптивной компиляции, язык Java был медленнее, чем статически компилируемые языки, и злые языки постоянно повторяли, что он никогда не достигнет достойного уровня. Но, как мы сказали ранее, производительность Java сейчас сравнима с С или С++ в эквивалентных задачах, и эта критика в общем сошла на нет. Движок видеоигры с открытым кодом Quake2, созданной ID Software, был переписан на Java. Если язык Java является достаточно быстрым для военной игры от первого лица, то он определенно достаточно быстр и для бизнес-приложений.

Языки сценариев, такие как Perl, Python, и Ruby, очень популярны. Нет причин, чтобы язык сценариев не подходил для безопасных сетевых приложений. Но многие скриптовые языки программирования плохо подходят для крупномасштабного программирования. Привлекательным в скриптовых языках является то, что они динамические и являются мощным инструментом для быстрой разработки. Некоторые языки сценариев, такие как perl, также предоставляют мощные инструменты для задач по обработке текста, которые многие универсальные языки находят громоздкими. Скриптовые языки также очень портативны, хотя и на уровне исходного кода.

JavaScript не стоит путать с Java, так как это объектно-ориентированный скриптовый язык, изначально разработанный Netscape для веб-браузеров. Он является «постоянным жителем» веб-обозревателем для динамических, интерактивных приложений. Название JavaScript происходит от его интеграции с Java и некоторых общих черт, но сходство в действительности здесь и заканчивается. Хотя приложения на JavaScript вне браузера есть, он так по-настоящему и не привился как скриптовый язык. Для большей информации по JavaScript можете прочитать книгу: «JavaScript и jQuery Дэвида Макфарланда.

Проблема языков сценариев заключается в том, что структура программ и типы данных в них довольно бессистемны. Большинство скриптовых языков (за колеблющимся исключением Python и последних версий Perl) не являются объектно-ориентированными. У них также упрощенные системы типов, и в основном они не предусматривают сложных масштабов переменных и функций. Эти характеристики делают их менее подходящими для создания больших модульных приложений. Скорость — еще одна проблема скриптовых языков; высокоуровневая, зачастую с интерпретацией источника, природа этих языков делает их довольно медленными.

Защитники отдельных скриптовых языков не согласятся с некоторыми из этих обобщений и, без сомнения, будут правы в ряде случаев. Скриптовые языки улучшились за последние годы особенно язык JavaScript, на производительность которого затрачено большое количество ресурсов. Но фундаментальная уступка неоспорима: скриптовые языки появились как свободная, менее структурированная альтернатива системным языкам программирования и в основном неидеальны для больших или сложных проектов по различным причинам, по крайней мере сегодня. Java предлагает некоторые существенные преимущества скриптового языка: он в высшей степени динамичен вместе с добавленными плюсами языков низшего уровня. У Java мощный интерфейс Regular Expression API, который соперничает с языком Perl в работе с текстом и свойствах языка, ускоряющими программирование с помощью библиотек, списков переменных аргументов, статического импорта методов и других синтаксических «плюшек», которые делают его более сжатым.

Инкрементная разработка с объектно-ориентированными компонентами в сочетании с простотой Java делает разработку приложений быстрой, а их изменение — легким. Исследования показали, что разработка на языке Java осуществляется быстрее чем на С или С++, строго основанных на свойствах языка. Java также идет с большой базой стандартных классов ядра для общих задач, таких как разработка GUI и управление сетевыми связями. Но вместе с этими свойствами язык Java имеет масштабируемость и преимущества разработки ПО, присущие более статическим языкам. Он предоставляет безопасную структуру для создания высокоуровневых структур (и даже других языков).
Как мы уже сказали, по конструкции Java похож на Smalltalk и Lisp. Однако эти языки использовались больше для научных исследований, чем для создания крупномасштабных систем. Одной из причин является то, что у этих языков никогда не было стандартных портативных связей с сервисами операционных систем, таких как стандартная библиотека С или центральные классы Java. Smalltalk компилируется в интерпретированный формат байт-кода и может интерпретироваться в собственный код на лету, как Java. Но Java улучшен в конструкции за счет использования верификатора байт-кода для обеспечения корректности скомпилированного java-кода. Этот верификатор дает Java преимущество в производительности перед Smalltalk, поскольку Java-код требует меньших проверок рабочего цикла программы. Верификатор байт-кода Java также помогает с решением проблем безопасности — то, с чем не работает Smalltalk.

В следующей статье мы с вами разберем безопасность и уровни защиты языка программирования Java.

С Уважением, МониторБанк

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *