JAVA (Java Programming Language)

Язык программирования Java.
Язык программирования, основанный на языке C++, который, в свою очередь, основан на языке С. Был разработан компанией Sun Microsystems в начале 90-х годов для контроллеров, встроенных в бытовую электронику, в частности, в микроволновые печи и телевизоры. В конечном итоге он превратился в платформно-независимый, объектно-ориентированный язык, который, как предполагается, заменит язык C++ в основном программировании и найдет применение в среде создания приложений, предназначенных для выполнения в Internet, т.е. приложений, которые при необходимости могут загружаться и автоматически устанавливаться. Следуя примеру компании Netscape по завоеванию рынка и сторонников раскрытия исходных кодов клиентского программного обеспечения, компания Sun бесплатно предоставила в июне 1995 года клиентское программное обеспечение для этого языка через Internet.
Своим происхождением язык Java обязан тому факту, что в 60-е и 70-е годы большие и мини-ЭВМ, в сущности, представляли собой крупные серверы, а их "клиентами" были терминалы с фиксированным набором функций, установленные на столах пользователей. Терминалы не были программируемыми и поэтому не могли извлечь из информации никакой дополнительной пользы. Они не могли изменить способ отображения информации, а также выполнить дополнительную обработку или анализ данных. Административное управление указанными компьютерами (введение программ, определение полномочий новых пользователей, устранений неисправностей) было проще, чем в случае последовавших далее методов, поскольку операционные системы уже были достаточно зрелыми (в них наконец-то была решена проблема введения необходимых программ), а кроме того, компьютеров было не так уж и много. При этом все было сосредоточено вокруг больших и мини-ЭВМ или, как некоторые просто называют, сосредоточено вокруг серверов (server-centric) в том отношении, что программирование этих компьютеров накладывало ограничения на все вычисления в конкретной организации. Пользователям приходилось долго ждать программных изменений, обусловленных изменившимися потребностями в их деятельности.
В 80-е годы и в начале 90-х годов распространение получили файловые серверы. Это были "тонкие серверы" в том смысле, что они обладали весьма незначительными функциональными возможностями, ведь они, по существу, предоставляли все файлы программ и данных. Вся обработка выполнялась "толстыми клиентами", которыми служили ПК, установленные на столах пользователей. При этом дополнительная польза (выполнение программ, отображение и анализ данных) извлекалась из информации на настольном оборудовании. Несмотря на то, что у пользователей была возможность полного управления вычислительной средой, причем они могли писать собственные программы доступа к базам данных и соответствующим образом настраивать свои ПК, затраты на административное управление оказались выше стоимости самих компьютеров. Кроме того, выбор компьютерных платформ, в сущности, был сведен на нет. Большую часть вычислительной деятельности обеспечивали процессор архитектуры Intel и операционная система компании Microsoft.
В качестве следующего этапа развития вычислений было предложено множество серверов и тонких клиентов. При этом клиенты могли выполнять обработку, однако все программы динамически загружались клиентами. Административное управление программами и данными осуществлялось централизованно, однако мощность настольной обработки оставалась на настольном оборудовании. Все клиенты выглядели одинаково в том смысле, что могли выполнять одни и те же программы независимо от своей конкретной операционной системы или аппаратной платформы. Следовательно, в этом есть определенная гибкость и разнообразие, вместе с тем для всех клиентов требуется только одна версия прикладных программ. Подключенный к сети компьютер, на котором выполняется только Web-браузер, иногда еще называется сверхтонким клиентом (ultrathin client) в том смысле, что он может быть использован для отображения и ввода информации, однако мало пригоден для местной обработки информации.
Язык Java, собственно, и призван обеспечить основную поддержку, которая необходима для указанной выше модели вычислений со множеством серверов и тонкими клиентами.

Ниже перечислены некоторые особенности и преимущества языка Java:
  • Это объектно-ориентированный язык. Данное обстоятельство имеет важное значение для всех видов программирования, поскольку оно позволяет поддерживать хорошие практические методы программирования, в частности, повторное использование проведенного кода и обособление определения глобальной информации от ее использования;
  • Исходная программа Java компилируется в байт-код (byte code) как часть процесса разработки программного обеспечения. Именно этот переносимый формат файла в виде байтового кода распространяется по компьютерам пользователей, причем на всех компьютерах используется абсолютно тот же байт-код. Программы Java могут быть автономными, т.е. выполняемыми самостоятельно, либо встроенными в страницу HTML, благодаря чему они автоматически выполняются при просмотре страницы с помощью Java-совместимого WWW-браузера, в частности, браузера Navigator компании Netscape или Explorer компании Microsoft;
  • При выполнении программы Java байтовый код интерпретируется (interpreted), a это означает, что во время выполнения он преобразуется в команды конкретного локального процессора. Интерпретаторы имели широкое распространение в течение многих лет (примером тому служит язык BASIC), причем подобные программы выполняются медленнее, чем программа, предварительно скомпилированная для конкретного процессора, каковым и является большинство прикладных программ. Следовательно, интерпретируемая программа не зависит от конкретного процессора, поскольку может выполняться на любом компьютере, который поддерживает язык Java, благодаря тому, что программное обеспечение конкретного процессора и операционной системы образует виртуальную машину Java (virtual Java machine - VM), поддерживающую стандартную систему команд языка Java, одинаковую для всех операционных систем и аппаратных платформ. Тем не менее опыт показал, что для обеспечения работоспособности виртуальной машины требуется ее проверка на каждой платформе;
  • Вместо интерпретации кода во время его выполнения некоторые поставщики в настоящее время поддерживают заблаговременную компиляцию (just-in-time -JIT), при которой байт-код сначала компилируется в собственный код данного конкретного процессора. Это поначалу несколько задерживает выполнение кода, однако затем код выполняется намного быстрее, т.е. так же, как и любой скомпилированный код;
  • Программы просмотра и другие виды программ поддержки, которые требуются для использования полученных данных, в частности, оцифрованного звука или изображения, закодированного каким-либо новым способом, автоматически получаются наряду с данными;
  • При передаче программ Java для опознавания источника программы используется шифрование открытым ключом (public key encoding). Рассматриваемый язык был создан с учетом требований защиты, например, для того, чтобы проблемы, связанные с одной программой, не оказывали неблагоприятного влияния на другие программы;
  • Поддержка Unicode, благодаря чему возможно использование и однотипное отображение повсюду специальных знаков, подобных ®, и отличных от английского языков с такими символами, как "ė" и др.
Программы, создаваемые компилятором языка Java, называются аплетами (applets), поскольку они обычно представляют собой небольшие прикладные (application) программы.
Несмотря на то, что клиентское программное обеспечение является бесплатным, тем не менее на разработку инструментальных средств Java и программного обеспечения сервера требуется лицензия от компании Sun, за которую придется заплатить по меньшей мере $125000 из расчета на одну компанию.
Язык Java некоторое время назывался Oak (дуб) по названию дерева, стоявшего за окнами кабинета Джеймса Гослинга (James Gosling), который приступил к написанию этого языка в 1990 году (именно он создал эффективный текстовый редактор EMACS для платформ UNIX). Впоследствии оказалось, что название "Oak" слишком часто используется в торговых марках. Этот язык предназначался в качестве основного для программирования взаимодействия бытовой электронной аппаратуры (телевизоров, видеомагнитофонов и т.д.). Первоначально предполагалось, что он будет использоваться в микроволновых печах, а затем и в телевизионных приставках, затем в видеоиграх и далее на CD-ROM.
Поскольку Java является Web-ориентированным языком, ему посвящено множество Web-узлов, например: www.javasoft.com.
См. ENCRYPTION, INTERNET2, NC, SUN, UNICODE и X WINDOW SYSTEM.
(М. Шниер, с. 357 - 359)