|
Эволюция ЯП:
Java
из книги "С.Робинсон и др. С#
для програмистов"
Требования
информационных технологий середины 1990-х гг. отличались от требований 1970-х
гг., когда был создан С. В частности, в 90-х гг. наметилась серьезная тенденция
развития распределенных приложений, в которых различные программные компоненты
существовали на отдельных платформах и связывались друг с другом посредством
локальных сетей и Интернета.
Java
был попыткой
Sun
Microsystems
удовлетворить эти новые требования.
Язык Java
реализовал синтаксис в стиле
C++ в эру Интернета.
Наиболее очевидное свойство Java — платформенная независимость. В отличие от С, C++ и Visual Basic, исходный код на Java компилируется не в машинный код, а в байт-код Java, в котором каждый байт соответствует одному из типов инструкций машинного кода, поддерживаемого большинством микропроцессоров. Поскольку существует уровень абстракции между инструкцией байт-кода и эквивалентом машинного кода, программа на байт-коде могла быть послана по Интернету для выполнения на разных типах компьютеров. Компьютер, получающий байт-код, содержит программу, которая транслирует байт-код в машинные инструкции для их последующего выполнения. Благодаря тому, что соответствие между инструкциями байт-кода и инструкциями машинного кода составляет почти один к одному, процесс трансляции является быстрым, и программы на байт-коде выполняются с приемлемой скоростью. Первоначально Java предназначался для переносных устройств потребительской электроники, например, для пультов дистанционного управления телевизоров, но впоследствии он стал широко применяться для анимации web-страниц. Апплет Java является программой на байт-коде, доступной на web-сайте. Когда пользователь с включенной поддержкой Java в браузере открывает страницу с апплетом, браузер загружает код апплета и выполняет его. Однако с появлением технологий Flash и потоковых данных популярность апплетов Java снизилась. Web-сайты используют апплеты для сборки информации о заказах и для предоставления сведений. В целях предотвращения появления компьютерных вирусов возможности апплетов Java были сильно ограничены. Например, Java- апплет не может писать в файл на машине клиента. В процессе выполнения Java-апплета среда исполнения может динамически запрашивать необходимые компоненты Java из Интернета. По мере поступления байт-кода может осуществляться его проверка для исключения опасного поведения. По мере своего развития Java стал использоваться не только для апплетов, но и для приложений. Были созданы целые приложения иа Java, например браузер Hotjava. Однако реальное развитие приложения Java получили с появлением Java beans, которые были созданы в ответ на компоненты COM. Java beans могут существовать на отдельных машинах в сети и удаленно общаться друг с другом. Кроме того, Java beans можно наделить возможностями по проведению транзакций — очень важное свойство в приложениях клиент-сервер. Java привлекал разработчиков приложений, которые были нацелены на охват нескольких платформ. Например, требуется создать программу обработки текста, способную работать на машинах Windows, Macintosh и Unix. Разве не было бы здорово, если бы можно было написать программу только один раз, откомпилировать ее и затем запускать на любой из этих платформ без изменений? Красивым обещанием Java было "Напишите единожды, запускайте везде". "Напишите единожды, отлаживайте везде",— таков был саркастический ответ разработчиков Java, которые обнаружили, что Java не всегда портируется на другие платформы. Так, пользовательский интерфейс программы на Java мог корректно отображаться на компьютере Macintosh, но некорректно на машине Windows. Другим привлекательным свойством Java была его доступность — Java SDK можно было бесплатно загрузить с сервера Sun. Однако для увеличения продуктивности разработчикам на Java приходилось покупать коммерческие интегрированные среды разработки (IDE), требовавшиеся для написания кода. Visual Cafe, Visual Age и Jbuilder стали теми IDE, которые снискали наибольшую популярность в сообществе разработчиков Java. Синтаксически Java очень похож на C++, однако существуют некоторые отличия: О Java не поддерживает указателей, так как они являются источником слишком большого числа ошибок в C++. В Java объекты всегда доступны только по ссылке. О Java не поддерживает перегрузку операторов, поскольку неуместная перегрузка часто приводит к путанице, особенно в крупных проектах с участием многих разработчиков. О Java является полностью объектно-ориентированным языком. Это значит, что все функции должны определяться в области видимости класса. В связи с тем, что C++ допускает применение глобальных функций, программисты C++ могут использовать процедурное программирование. О Java поставляется в комплекте с обширной иерархией классов, которые могут использоваться для построения оконных, сетевых приложений и для решения других задач. О Java следует практике объявления класса и реализации его методов в одном файле. О Среда исполнения Java предоставляет механизм сборки мусора, который предотвращает утечки памяти. Microsoft последовала за массовым увлечением Java, включив J++ в среду разработки Visual Studio. J++ расширил Java несколькими новыми возможностями, в частности, возможностью автоматической генерации интерфейсов.СОМ для класса Java в процессе компиляции. Из-за того что многие из этих особенностей были специфичны для платформы Windows, Sun провозгласила, что J++ нарушает дух Java, генерируя не чистый код. В Sun считали, что пользователи должны быть vBepeHbi в том, что любой код, носящий имя Java, должен гарантированно выполняться в любой среде исполнения Java, aj++ не мог обеспечить этого из-за платформенно- специфических добавок, произведенных Microsoft. Это философское отличие было источником многочисленных упреков в сторону Рэд-монда и в результате привело к отказу от J++. Java — лаконичный и полезный язык, но для его применения разработчик должен обладать определенными навыками и опытом. В частности, разработка на Java более требовательна, чем, скажем, на Delphi или VB, и, следовательно, нужны более опытные программисты. Труд таких разработчиков и переквалификация сотрудников для перехода в мир Java могут оказаться довольно дорогими. По части архитектуры Java был одним из первых языков, который в основу всего поставил среду исполнения. Среда исполнения Java не только предоставляет полезные функции, но и интерпретирует код, управляет памятью и обеспечивает безопасность. |