Начало работы с платформой Eclipse (документация). Разработка простого Eclipse RCP приложения

Электроника 11.07.2019
Электроника

IDE (Integrated Development Environment) или же по-русски интегрированная среда разработки, это инструмент, предназначенный для разработки программного обеспечения. В мы писали код программы в текстовом редакторе, потом компилировали и запускали программу через командную строку, что не совсем удобно. IDE же позволяет в единой среде писать, компилировать, запускать и отлаживать программу.

Наиболее популярными бесплатными IDE для Java программистов являются: Eclipse , NetBeans и IntelliJ IDEA . В интернете существует много споров о том, какая же IDE лучше, однако, однозначного ответа на этот вопрос не существует, все зависит от круга задач, которые необходимо решать. Также, каждый программист обычно выбирает ту, которая ему удобнее и к которой он привык. На начальном этапе можете выбрать любую, это не имеет значения.

Также, существует много сторонников теории, что несколько первых месяцев следует работать исключительно с блокнотом и командной строкой, поскольку только так можно понять, как все работает изнутри, и правда в этом есть. Но, после нескольких неудачных попыток компиляции и ручного исправления синтаксических ошибок в коде, может просто пропасть желание заниматься этим дальше, поэтому я сторонник того, чтобы сразу переходить к IDE.
В любом случае, выбор за вами.

В этом уроке мы рассмотрим, как начать работу с Eclipse IDE.

  • Установим Eclipse IDE на компьютер
  • Создадим в ней программу Hello World.

Установка и запуск Eclipse IDE

  1. Переходим по ссылке http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/keplerr и скачиваем Eclipse, соответствующую операционной системе.
    Далее будет рассмотрена установка для Windows.
  2. Распаковываем скаченный.zip архив в директорию C:\Program Files\
  3. На этом установка завершена!
  4. Чтобы запустить Eclipse IDE, нужно открыть файл eclipse.exe , находящийся в папке C:\Program Files\eclipse\ .
  5. При запуске откроется окно, предлагающее выбрать рабочую область (Workspace), где будут храниться программные файлы проекта. Указываем удобную для нас директорию (рис. 3.1.) и нажимаем OK .

6. Закрываем приветственное сообщение (рис. 3.2.), тем самым перейдя в рабочую среду.

Начало работы с Eclipse IDE

Теперь создадим новый проект. Для этого выберем меню File->New->Project..

В открывшемся окне выберем Java Project (рис. 3.3.) и нажмем Next .

В следующем окне введем имя нашего проекта (рис. 3.4.) и нажмем Finish .

Проект отобразится в левой части экрана и должен в себе содержать элемент JRE System Library (рис. 3.5.)

Если этого элемента нет, то его необходимо добавить вручную! Для этого выберем Windows -> Preferences , в открывшемся окне Preferences слева выберем Java -> Installed JREs , нажмем кнопку Add… справа (рис 3.6.). В открывшемся окне выберем Standard VM и нажмем кнопку Next.

В открывшемся окне Add JRE , укажем директорию, в которой установлена Java (рис 3.7.) и нажмем Finish .

Первым делом необходимо создать класс. Нажмем правой кнопкой на папке с проектом и выберем из контекстного меню New -> Class (рис 2.7.).

В открывшемся окне New Java Class введем имя класса проекта HelloWorld и установим флажок для метода public static void main(String args) (рис 2.8.). Нажмем Finish .

В итоге, Eclipse создаст новый класс Hello World

Откроем созданный класс и завершим нашу программу. Добавим в метод main следующий код (рис 2.9.).

System.out.println("Hello World");

Сохраним изменения с при помощи клавиш Ctrl+S или специального значка вверху на панели инструментов. Готово!

В открывшемся окне в левой части 2 раза кликнем на Java Application после чего, будет создан новый под элемент с именем New_configuration , которое впоследствии в правой части можем изменить. В правой части также заполним поля Project и Main Class . Project должен содержать имя проекта, Main Class — имя главного класса, в нашем случае — HelloWorld (рис. 3.10). После чего нажмем Apply и Run .

В результате, в консоле будут напечатаны слова Hello World (рис. 3.11).

Для запуска программы в дальнейшем, достаточно нажимать специальный значок на панели инструментов, выбрав Hello World (рис. 3.12.).

На этом закончим данный урок.

Подробные инструкции по работе с Eclipse, правда на английском языке, можно найти по ссылке: http://www.vogella.com/articles/Eclipse/article.html

Java является высокоуровневым языком программирования, который был разработан компанией Sun Microsystems ещё в 1995 году. На сегодняшний день развитием данной технологии занимается компания JCP (Java Community Process ). Одной из главных особенностей языка является компиляция, выполняющаяся непосредственно при сборке программы.

Код превращается в байт-код, после чего выполняется в виртуальной машине Java. JVM выступает транслятором, связывающим язык программирования с необходимыми компонентами компьютера. Такой принцип позволяет программам работать на любых системах, где установлена виртуальная машина.

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

Объекто-ориентированный и типизированный язык Java обладает множеством полезных для разработчиков особенностей. Среди них можно выделить следующее:

  • Простота в изучении. Основных знаний об объектно-ориентированном программировании будет достаточно для комфортного освоения языка.
  • Объектно-ориентированная методология. Программы состоят из объектов, которые можно легко расширять и адаптировать для достижения поставленных целей.
  • Безопасность. Шифрование с открытым ключом обеспечивает наилучшие методы проверки подлинности.
  • Платформо-независимость. Программы, написанные на языке, компилируются в байт-код, который способен работать на абсолютно любых платформах современных операционных систем.
  • Портативность. Язык программирования никак не зависит от реализуемых аспектов спецификаций.
  • Прочность. Java-машина способна справиться со многими ошибками, благодаря ориентации и упору компании-разработчика на постоянную проверку и уменьшение временных затрат, возникающих при компиляции.

Кроме того, данный язык весьма распространен, так как характеризуется как многопоточный, высокопроизводительный, интерпретированный и динамический.

Особенности программных платформ Java

Существует несколько реализаций данной платформы, среди которых особое место занимает Eclipse. Среда разработки модульных кроссплатформенных приложений обладает рядом обязательных возможностей, присутствующих и в других подобных продуктах. Среди них можно выделить:

  • Общепринятые технологии развёртывания программ в пользовательской среде.
  • Инструментарии для создания графических интерфейсов любой сложности.
  • Библиотеки для удалённого управления объектами и программного доступа к данным.
  • Инструменты для запуска, отладки, компиляции, мониторинга и других действий с приложениями.

Что такое Eclipse?

Eclipse - среда разработки, в настоящее время контролируемая компанией Eclipse Foundation. Она предоставляет открытый исходный код, что обеспечивает новые возможности для разработчиков. Написана она на Java и предназначена для улучшения процесса создания программного обеспечения.

Данный проект - это инфраструктура, предоставляющая важные для разработчиков базовые сервисы. Имеющиеся инструменты позволяют создавать новые технологии в Eclipse. Среда разработки является не просто собранием API - она может справиться с полноценными задачами.

Огромное количество плагинов с открытым исходным кодом дарит неограниченные возможности для разработчиков инструментариев. В программу могут быть добавлены любые дополнения, что в итоге позволит настроить и адаптировать её под любую задачу.

Особенности платформы

Среда программирования обладает следующими особенностями:

  • Широкая сборка API для добавления новых модулей, а также фреймворк для программирования любых расширений.
  • Поддержка всех популярных операционных систем.
  • Программирование в большинстве известных языков позволяет именно Eclipse - среда разработки. Си шарп (C#), Java, PHP, C, Python, C++ и многие другие языки поддерживаются данной программой.
  • Доступна технология RCP, возможностей которой будет достаточно для разработки клиентского ПО любой сложности и масштаба.
  • Модульность программы обеспечивает невероятное удобство и гибкость в работе.

Проект Eclipse продолжает развиваться во многих направлениях. Программа постоянно улучшается, расширяется её функционал путём добавления новых плагинов.

Архитектура платформы

Среда программирования состоит из нескольких основных элементов. Во-первых, это Eclipse Runtime, отвечающая за работу модулей и плагинов. К данной исполняющей среде относится базовый функционал. Это подразумевает управление обновлениями, взаимодействие с системой, настройку плагинов, поддержку работоспособности раздела помощи.

Во-вторых, это сама IDE, отвечающая за управление проектами, ведущими элементами программы, а также за отладку, командную разработку и поиск среди файлов.

Такие плагины, как PDE и Java Development Tools, также включены в Eclipse. Среда разработки Java-программ и новых дополнений с использованием этих плагинов становится в разы функциональнее.

Примеры других специализированных сборок

Вышеуказанная Eclipse SDK является одной из версий платформы. Доступно ещё несколько сборок IDE с уникальными особенностями, а именно:

  • For Java EE Developers. Версия предназначена для программирования корпоративных или веб-приложений с применением Java EE.
  • For JavaScript Web Developers. Сборка для создания веб-продуктов с использованием CSS, XML, HTML и JavaScript.
  • For Java Developers. Версия для программирования на Java.
  • For C/C++ Developers. Сборка для программирования на языках C++ и C.

Каждая версия обладает уникальными особенностями, но базовый функционал для новичков в полной мере предоставляет именно стандартная Eclipse (среда разработки). Уроки по ней бесплатно доступны в сети, что значительно упростит изучение программы.

Конкурирующие продукты

У данной среды разработки есть немало конкурентов, но окончательно выбрать лучшего представителя невозможно. Eclipse можно уверенно считать наиболее популярной. Ею пользовались почти все разработчики, благодаря ряду неоспоримых преимуществ.

При разработке мобильных приложений часто используется Eclipse (среда разработки). Android-платформа стремительно развивается, и поддержка Java-языка в данной IDE привлекает разработчиков. Однако стоит заметить, что её возможности намного больше.

Главным конкурентом рассматриваемой программы является продукт NetBeans, и он полностью бесплатен. За лицензию Eclipse же придётся заплатить, и некоторых это отпугивает. Среди остальных конкурирующих продуктов можно выделить также IntelliJ IDEA, JDeveloper, Android Studio, DrJava и MyEclipse. Но лучшей многие считают именно Eclipse. Среда разработки радует пользователей уже много лет и не прекращает это делать!

Если вы когда-нибудь пристально следили за событиями, происходящими в мире open-source или Java-технологий, то вы просто не могли никогда не слышать всего этого шума, развернутого вокруг Eclipse. Eclipse – это расширяемая, open-source интегрированная среда разработки (IDE, Integrated Development Environment). Этот проект был запущен в ноябре 2001 года, когда IBM выделили исходный код из Websphere Studio Workbench, ценой в 40 миллионов долларов, и сформировали Eclipse Consortium для управления разработкой этого инструмента.

Первоначальная цель заключалась в том, чтобы "разработать стабильную, полнофункциональную, промышленную платформу, качества коммерческого продукта, для разработки интегрируемых инструментов". На настоящий момент Eclipse Consortium фокусируется на следующих проектах:

  1. The Eclipse Project (http://www.eclipse.org/eclipse/index.html) – ответственен за разработку непосредственно Eclipse IDE (платформу для сборки прочих инструментов Eclipse), Java Development Tools (JDT) и Plug-In Development Environment (PDE), используемую для предоставления возможности расширения самой платформы.
  2. The Eclipse Tools Project (http://www.eclipse.org/tools/index.html) – занимается созданием оптимальных инструментальных средств для платформы Eclipse. В текущие подпроекты входят: Cobol IDE, C/C++ IDE, а также инструмент моделирования EMF.
  3. The Eclipse Technology Project (http://www.eclipse.org/technology/index.html) – занимается технологическими исследованиями, инкубацией и образованием по части использования платформы Eclipse.

Совместно с JDT, платформа Eclipse предоставляют множество различных возможностей, которые вы могли наблюдать в коммерческих IDE: подсветка синтаксиса в редакторе, компиляция кода, отладчик уровня исходного кода с поддержкой "нитей" (threads), навигатор по классам, файловый менеджер и менеджер проектов, интерфейсы для стандартных контролирующих систем исходного кода, таких как, например, CVS и ClearCase.

Помимо этого Eclipse содержит ряд уникальных возможностей, например, рефакторинг кода (http://www.refactoring.com/), автоматическое обновление и сборка кода (посредством Update Manager), список задач, поддержка возможности тестирования модулей с помощью JUnit (http://www.junit.org/), а также интеграция с инструментом сборки приложений Jakarta Ant (http://jakarta.apache.org/ant/index.html).

Несмотря на большое количество стандартного набора возможностей, Eclipse отличается от традиционных IDE по нескольким фундаментальным особенностям. Может быть, самая интересная возможность Eclipse – это абсолютная нейтральность относительно платформы и языка программирования. Вдобавок к эклектичному набору языков программирования, которые поддерживаются Eclipse Consortium (Java, C/C++, Cobol), существует множество сторонних проектов, с помощью которых вы можете обеспечить поддержку интересующего вас языка программирования в Eclipse. На сегодняшний день существуют реализации следующих популярных языков программирования: Python, Eiffel, PHP, Ruby, и C#.

Платформа Eclipse предоставляется, благодаря Eclipse Consortium, в виде заранее скомпилированных исполняемых файлов для Windows, Linux, Solaris, HP-UX, AIX, QNX, и Mac OS X. Очень много внимания концентрируется вокруг архитектурной системы plug-in"ов этой платформы, а также "богатых" API (Application Programming Interface), поставляемых с Plug-in Development Environment для расширения Eclipse. Добавить поддержку нового типа редактора, просмотрщика (панели) или языка программирования до безобразия просто, благодаря хорошо спроектированным API и строительным блокам, которые предоставляет Eclipse.

Имея приблизительно сотню проектов, по разработке plug-in"ов, имея ресурсы, предоставляемые такими промышленными гигантами, как IBM, HP и Rational (которая недавно была куплена IBM), и дизайн Erich Gamma, который помогает быстро разобраться в процессе разработки – будущему Eclipse предстоит быть весьма ярким, интересным и перспективным.

Установка

Бьюсь об заклад, что вы сейчас только и думаете о том, где бы достать копию этого самого Eclipse для вашей платформы и как бы это его установить? :) Первое, о чем вам для начала нужно позаботиться – это убедиться в наличии подходящей, рабочей JRE (Java Runtime Evironment). Хотя Eclipse и создавался в расчете на возможность компиляции кода как для JVM (Java Virtual Machine) версии 1.3, так и для версии 1.4, однако текущие версии Eclipse были спроектированы таким образом, чтобы запускаться на JVM версии 1.3. Если вы не уверены, где можно достать "виртуальную" Java-машину (JVM) для вашей платформы, вы можете найти подробные инструкции и дополнительную информацию об этом на сайте

Как только вы убедились в наличии JVM или установили подходящую ее версию, вы готовы к установке Eclipse. Для этого посетите download-раздел сайта проекта Eclipse (http://www.eclipse.org/downloads/) и скачайте оттуда последний релиз, собранный специально под используемую вами платформу. Все дистрибутивы представляют собой.zip-архивы. Распакуйте скачанный архив в подходящую директорию и потратьте немного времени на изучение всех файлов, содержащихся в директории readme.

Хотите - верьте, хотите – нет, но на этом инсталляция завершена. Если вы правильно установили JVM и корректно распаковали архив с Eclipse – вы можете приступать к процессу первого запуска этой IDE. Все дистрибутивы, содержащие скомпилированную версию платформы, предоставляют программы для запуска, которые располагаются в основной директории: eclipse. Имя этой программы запуска изменяется в зависимости от платформы, под которую вы скачали дистрибутив: eclipse.exe под Windows, eclipse под Solaris, и так далее. При первом запуске приложение Eclipse выполнит некоторые оставшиеся задачи по установке (например, создание workspace-директории для хранения файлов проектов) до того, как приложение окончательно будет готово к работе.

Интерфейс

Итак, когда у вас уже есть установленный и запущенный Eclipse, самое время начать им пользоваться. После того как вы запустили Eclipse, вы должны увидеть приблизительно следующее:

Рисунок 1

Как вы можете заметить, Eclipse IDE имеет вполне стандартное содержание меню:

Рисунок 2

Помимо меню, здесь ярко видно сходство панели инструментов и системы закладок с такими же в других средах разработки приложений.

Пример приложения

Панели File Navigator , Code Outline и Task List отображены, но на данный момент не содержат никаких данных. Чтобы продолжить знакомство с Eclipse мы создадим простое Swing-приложение программу-калькулятор. Распишем действия по шагам:

1. Выберите пункт меню File->New->Project..., чтобы начать создание вашего первого Java-проекта. В окне "мастера" выберите Java среди предложенных типов проектов из левого списка и Java Project в правом списке, после чего нажмите кнопку Next .


Рисунок 3

2. В качестве имени проекта введите Calculator и продолжите создание проекта, нажав кнопку Next .


Рисунок 4

3. И, наконец, на завершающем этапе "мастер" создания нового проекта дает вам возможность определить директории, где будут храниться файлы исходного кода и class-файлы, определить подпроекты, которые могут быть использованы создаваемым нами, текущим проектом, а также любые библиотеки, которые мы предполагаем использовать в своем приложении. Установите переключатель на значение Use source folder contained in the project , после чего нажмите кнопку Create New Folder... . В качестве имени новой директории для хранения исходного кода введите src. Нажмите Yes , когда Eclipse спросит вас о том, изменить ли директорию с собираемым приложением на Calculator/bin .


Рисунок 5

4. Нажмите кнопку Finish , чтобы дать возможность Eclipse завершить создание нового проекта.

Как только вы создали новый проект, вы можете заметить, что внешний вид Eclipse несколько изменился (этого и следовало ожидать): панель Outline переместила в другую часть окна, панель Navigator была заменена панелью Package Explorer и т.д.

Вот какой вид приняло окно Eclipse после того, как мы создали новый проект:


Рисунок 6

Такая планировка называется Java Perspective . "Ракурс", в понятии Eclipse, определяет какой-либо сохраненный порядок расположения любого количества различных панелей редактора и просмотрщиков. Eclipse поставляется с рядом "ракурсов" определенных по умолчанию (Resource , Java , Debug и другие), которые могут быть изменены в соответствии с вашими нуждами, или же вы можете создавать свои собственные ракурсы. Ракурсы управляются при помощью элементов меню Window или специальной панели инструментов, которая обычно располагается вдоль левой границы окна Eclipse.

Рисунок 7

Следующим шагом в создании нашего Java-проекта нужно создать директории, которые будут содержать весь наш исходный код. Для этого переключитесь в ракурс Resource , используя пункт меню Window->Open Perspective->Resource . В панели Navigator разверните узлы дерева структуры папок таким образом, чтобы вы могли видеть узел-папку src. Выделите этот узел, и после выполните пункт меню File->New->Folder . В появившемся диалоговом окне, убедитесь, что директория src выбрана и затем введите в качестве имени новой, в поле Folder Name , имя com .

Создавать большое количество папок с помощью диалога New Folder было бы не очень удобно и утомительно. К счастью, Eclipse может предоставить вам возможность самим создавать нужные директории с помощью вашего любимого файлового менеджера: командной строки, Windows Explorer и прочих. Используя один из предложенных методов, создайте в папке com папку devious , а в ней папку calculator . Как только вы создали эти папки, выберите любую папку-узел в панели Navigator и, с помощью элемента меню File->Refresh , обновите содержимое этой панели. Таким образом, Eclipse произведет просмотр файловой системы и обновит панель проекта в соответствии с теми изменениями, что вы внесли (создали новые директории). На этом этапе ваше окно Eclipse должно иметь примерно следующий вид:


Рисунок 8

И еще одно замечание по поводу создания файлов: на ранних этапах создания проекта, вы, скорее всего, достаточно часто будете запускать свое приложений, создавать новые файлы и папки, добавлять новый код, компилировать, и тестировать свой код снова. Важно помнить, что расположение меню в Eclipse зависит от используемого ракурса. Так, если вы переключаетесь в ракурс Resource , чтобы создать новый файл или папку в панели Navigator , вы обнаружите, что меню Run , например, в корне отличается от меню Run в ракурсе Java . Одно из решений этой часто встречающейся проблемы – это использование меню Windows->Show View с тем, чтобы отобразить панель Navigator в ракурсе Java . Если вас полностью устроит полученный ракурс то, воспользовавшись элементом меню Window->Save Perspective As... , вы сможете сохранить ваши изменения в новом ракурсе, либо переписать существующий ракурс Java .

Добавление кода

Теперь, когда у нас есть созданная структура директорий, мы можем начинать добавление исходного кода в наш проект. Мы разделим нашу программу-калькулятор на три класса (файла): CalcModel.java , CalcPanel.jav a, и Calculator.java . Скачайте.zip-архив с исходным кодом этой программы отсюда http://www.onjava.com/onjava/2002/12/11/examples/calculator.zip . После этого распакуйте этот архив и поместите три упомянутых выше файла в директорию com/devious/calculator . Снова воспользуемся пунктом меню File->Refresh , чтобы обновить содержимое панели Project Manager. Вот, что вы должны увидеть после выполнения этих действий:


Рисунок 9

CalcPanel.java представляет основу интерфейса пользователя нашего калькулятора. Calculator.java выполняет подготовительные инициализационные функции и запускает GUI (графический интерфейс пользователя). Самая же важная часть нашей программы находится в файле CalcModel.java , который занимается непосредственно реализацией фактической математики нашего калькулятора: реагирование на события, выполнение математических вычислений, обновление отображаемой информации, и т.д. Самый простой способ просмотреть исходный код – это переключиться из ракурса Java в Java Browsing . Для этого используйте Open Perspetive из меню Window или кликните на кнопке Open , которая находится на панели инструментов для работы с ракурсами.

В то время как вы перемещаетесь по исходному коду на панели Package Explorer , вы можете заметить, что панель Outline становится ненужной вам на данном этапе. Ее можно на время убрать с экрана, кликнув по крестику в правом углу этой панели. Когда она вам понадобится, вы можете воспользоваться пунктом меню Window->Show View->Outline , чтобы отобразить ее вновь.


Рисунок 10

Запуск и отладка кода

Итак, вы скачали и установили Eclipse, создали новый Java-проект и добавили необходимые файлы и папки для своего простого приложения. Настало время проверить это приложение в деле, запустив его. Для этого вам нужно установить ракурс Java , чтобы выполнить шаги, которые необходимы для запуска приложения:

1. Из основного меню Run выберите элемент Run...

2. В появившемся диалоге "мастера" запуска, выберите "Java Application" из списка Launch Configurations и нажмите кнопку New


Рисунок 11

3. В качестве имени новой конфигурации введите Calculator

4. Нажмите кнопку Search... и выберите основным классом класс Calculator в поле Main class , или просто введите в поле ввода полное имя класса: com.devious.calculator.Calculator .


Рисунок 12


Рисунок 13

Создав однажды конфигурацию запуска своего приложения, вы можете запускать его вновь с помощью меню Run->Run History или кнопки Run на панели инструментов. Если вы потратите достаточно времени, "играя" с этим калькулятором, вы обнаружите, что он работает в основном правильно, но только с одном "но": он не хочет правильно выполнять операцию вычитания! Время пустить в ход отладчик исходного кода Eclipse и обнаружить эту злосчастную ошибку. Если вы следовали всем инструкциям, приведенным выше в этой статье, то вы можете запустить это приложение с отладчиком с той же конфигурацией, которую мы определили для обычного запуска. Для этого выберите в меню пункт Run->Debug History->Calculator .

Когда вы запускаете свое приложение вместе с отладчиком, Eclipse автоматически переключается в ракурс Debug :


Рисунок 14

Поскольку, обнаруженная нами, проблема сконцентрирована вокруг функции вычитания, мы установим точку прерывания (breakpoint) в обработчик события для кнопок "-" и "=". Для начала, нам нужно переключиться в закладку редактора класса CalcPanel . (Если у вас нет закладки с исходным кодом этого класса, вам нужно открыть файл с именем CalcPanel.java , предварительно переключившись в ракурс Java или Resource и потом вернуться обратно в ракурс Debug ).

Воспользуйтесь панелью Outline , чтобы определить местонахождение метода actionPerformed . Переместитесь немного ниже, пока не обнаружите выражение case для знака "-" (строка 126). Если вы выполните двойной клик на левой границе этой строки, Eclipse автоматически установит точку прерывания в ней. Переместитесь немного ниже и установите еще одну точку прерывания на вызове метода model.calculate() в обработчике события кнопки "=" (строка 138).


Рисунок 15

Теперь переключитесь в окно калькулятора и нажмите несколько кнопок. Например, "2", "4", "6" и "-". Как только отладчик натыкается на точку прерывания, вы можете видеть появившиеся кнопки на панели инструментов Debug , которые служат для пошагового прохождения по исходному коду, причем можно делать шаги по коду и, не заходя внутрь методов, выполнять их автоматически, или же, заходя внутрь, проходиться и по их исходному коду.

Рисунок 16

Если мы зайдем внутрь метода setOperation() , станет понятно, что он выполняют достаточно тривиальную функцию: сохраняет код операции в поле pendingOp . Теперь нажмите кнопку Resume на панели инструментов Debug , чтобы продолжить выполнение программы.

Замечание: Основная ошибка новых пользователей Eclipse в том, что они иногда нажимают кнопки Debug или Run на основной панели инструментов (что приводит к запуску еще одной копии приложения) вместо того, чтобы нажать Resume .

Теперь нажмите еще пару кнопок (например, "1", "2", "3") и после этого кнопку "=". Таким образом, мы оказываемся внутри метода calculate() , проблема оказалась очевидна: кто-то скопировал код из варианта OP_ADD, но забыл заменить знак + на -. Проблема решена! :)

Исправление ошибки методом HotSwap

Если для запуска приложения вы использовали JVM версии 1.4, то нам остался всего один завершающий шаг на пути к исправлению этой ошибки в нашем примере. Вместо того, чтобы выходить из программы-калькулятора, вносить изменения в исходный код, компилировать заново весь проект, и только потом запускать новую сессию отладчика, мы можем изменить все "налету". В то время как отладчик все еще запущен, измените в исходном коде строку с:

SetDisplay(previousValue + currentValue); // на: setDisplay(previousValue - currentValue);

Сохраните этот файл, после чего нажмите кнопку Resume , чтобы "отпустить" приложение и продолжить работу с ним. Используя кнопку C , чтобы сбросить его, и повторите действия, которые мы проделали ранее. Теперь все работает, как положено!

То, что мы сейчас продемонстрировали – это поддержка Eclipse"ом новой возможности (которая носит название HotSwap) JVM версии 1.4. Теперь Java Platform Debugger Architecture (JPDA) поддерживает возможность замены исходного кода у выполняющегося приложения. Это особенно полезно, когда запуск приложения или нахождение места, где оно "рушится", отнимает много времени.

Интересные возможности в ближайших версиях Eclipse

Одна весьма интересная особенность Eclipse – это скорость, с которой отлавливаются ошибки, и с которой разработчики реагируют на различные нужды и пожелания пользователей. Eclipse Consortium ежемесячно выпускают последние релизы, которые включают в себя стабильные версии различных возможностей, которыми интересуются пользователи (такие релизы содержит в названии идентификаторы M1, M2, M3 и т.д.) Среди возможностей, включенных в релиз 2.1 M3 можно выделить следующие, наиболее значимые:

  • - настраиваемые связи "горячих" комбинаций клавиш, включая набор связей, схожий с тем, что есть в Emacs;
  • - возможность автоматической вставки TODO , FIXME и других тэговых комментариев в Java-код, в различные элементы и списки задач;
  • - улучшенная поддержка CVS, включая возможность определять "working sets", которые ограничивают количество отображаемых проектов на панели CVS Repositories ;
  • - новые заготовки в Java-редакторе, которые могут использоваться для показа исходного кода, Javadoc, детальных сообщений об ошибках для каждой строки кода или выражения в "выпадающем" (tooltip) окне;
  • - поддержка нескольких новых рефакторингов;
  • - новая панель Threads and Monitors в отладчике, которые позволяют определить какие из "нитей" (потоков) блокируют ресурсы, какие из них находятся в ожидании, и прочую полезную информацию для отладки мультипотоковых приложений;
  • - более тесная интеграция с инструментом сборки Jakarta Ant;

Эта последняя особенность и делает Eclipse хорошо скомпонованной средой разработки Java-приложений и, в частности, разработки Web-приложений. Eclipse объединяет в себе все инструменты, которые необходимы разработчику чтобы успешно разрабатывать Web-приложения: расширяемую IDE, стандартный компилятор, возможность удаленной отладки, поддержка Ant, тестирование с помощью JUnit, plug-in"ы для взаимодействия, практически, со всеми серверами приложений, а также EJB-контейнер.

Ресурсы

  • eclipse.org (http://www.eclipse.org/)
  • Eclipse Project FAQ (http://www.eclipse.org/eclipse/faq/eclipse-faq.html)
  • Eclipse Platform Technical Overview (

Eclipse – фрэймворк, позволяющий разрабатывать кроссплатформенные модульные приложения. Eclipse среда разработки, которая чаще всего используется для создания различных приложений для рабочего стола. Архитектура платформы несложная – ядро для загрузки фрэймворка, среда для поставки динамических компонентов, текстовые редакторы и файловые буферы, рабочая среда для написания, компиляции и запуска кода.

Фрэймворк подразумевает создание программного обеспечения с открытым кодом, поэтому лицензия свободная и можно Eclipse скачать бесплатно. Платформа, благодаря подключению разных модулей, позволяет разрабатывать практически любое клиентское приложения на всех популярных языках программирования - Java, C++, Python и т.д. Можно подключить отдельный модуль для работы с графическими интерфейсами. Созданные приложения работают под разными операционными системами – они подойдут для Windows, Linux и Mac OS, также поддерживается Android. Программы, созданные на Eclipse, представляют собой отдельные модули, которые подключают к основному приложению. Некоторые приложения, объединенные в библиотеки, для Эклипс скачать можно в открытом доступе, что значительно упростит работу над собственной программой.

Eclipse является независимым от платформ семейства Виндовс фрэймворком, за исключением стандартной библиотеки Swing для Java, замененной SWT, которая создается для всех известных и используемых платформ для программирования. Библиотека базируется на операционной системе, поэтому используются графические элементы ОС. Такая особенность может привести к тому, что приложение будет несовместимым с другими операционными системами. Можно Eclipse скачать на русском языке, что значительно упростит работу с приложениями под разные ОС. К тому же, в Интернете достаточно много справочной информации и форумов, посвященных фрэймворку.

Преимущества среды разработки Eclipse:

  • поддержка всех популярных языков программирования;
  • разработка приложений под разные операционные системы;
  • возможность бесплатно скачать нужные модули;
  • подключаемые модули обеспечивают гибкость фрэймворка;
  • свободная лицензия и открытый исходный код.

) были выбраны спецификации сервисной платформы OSGi , как архитектура среды исполнения. С версии 3.0 Eclipse перестал быть монолитной IDE, поддерживающей расширения, а сам стал набором расширений. В основе лежат фреймворк OSGi и SWT /JFace , на основе которых разработан следующий слой - RCP (Rich Client Platform , платформа для разработки полноценных клиентских приложений). RCP служит основой не только для Eclipse, но и для других RCP-приложений, например, Azureus и File Arranger . Следующий слой - сам Eclipse, представляющий собой набор расширений RCP - редакторы, панели, перспективы, модуль CVS и модуль Java Development Tools (JDT) .

С 2006 года фонд Eclipse координирует ежегодный общий релиз (Simultaneous Release), который происходит в июне. Каждый выпуск включает в себя платформу Eclipse, а также ряд других проектов Eclipse.

Релиз Дата Версия платформы Проект
Neon 22 июня 2016 4.6
Mars 25 июня 2015 4.5
Luna 6 июня 2014 4.4
Kepler 26 июня 2013 4.3
Juno 27 июня 2012 3.8 и 4.2
Indigo 22 июня 2011 3.7
Helios 23 июня 2010 3.6
Galileo 24 июня 2009 3.5
Ganymede 25 июня 2008 3.4
Europa 29 июня 2007 3.3
Callisto 30 июня 2006 3.2
Eclipse 3.1 28 июня 2005 3.1
Eclipse 3.0 28 июня 2004 3.0

Преимущества

Eclipse служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP, X10 (X10DT) и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse диспетчерами для работы с базами данных, серверами приложений и др.

Eclipse JDT (Java Development Tools) - наиболее известный модуль, нацеленный на групповую разработку: среда интегрирована с системами управления версиями - CVS , GIT в основной поставке, для других систем (например, Subversion , ) существуют плагины. Также предлагает поддержку связи между IDE и системой управления задачами (ошибками). В основной поставке включена поддержка трекера ошибок Bugzilla , также имеется множество расширений для поддержки других трекеров (Trac , Jira и др.). В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений.

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

Архитектура

Основой Eclipse является платформа расширенного клиента (RCP - от англ. rich client platform ). Её составляют следующие компоненты:

  • OSGi (стандартная среда поставки комплектов (англ. bundles ));
  • SWT (портируемый инструментарий виджетов);
  • JFace (файловые буферы, работа с текстом , текстовые редакторы);
  • Рабочая среда Eclipse (панели, редакторы, проекции, мастеры).
    • Aperi (от лат. открывать ) - open source система управления системами сетевого хранения данных .
    • BIRT (Business Intelligence and Reporting Tools) - Web- и PDF -отчёты.
    • DTP (Data Tools Platform) - разработка систем, управляемых данными (data-centric systems), в частности, данными в реляционных базах; управление программами с большим числом коннекторов .
    • GEF (Graphical Editing Framework) - фреймворк для построения встроенных графических редакторов.
    • Jazz - клиент-серверная платформа для взаимодействия разработчиков в процессе разработки проекта (включает чат, журнал событий и др.), строящаяся поверх Eclipse (входит в линейку продуктов IBM Rational).
    • Modeling .
    • Tools .
    • TPTP (Test & Performance Tools Platform) - разработка инструментов тестирования, - отладчики , профайлеры и т. п.
    • VE (Visual Editor Project) - разработка инструментов GUI .
    • WTP (Web Tools Platform Project) - инструменты разработки веб-приложений J2EE :
      • редакторы HTML , JavaScript , CSS , JSP , SQL , XML , DTD , XSD и WSDL ;
      • графические редакторы для XSD и WSDL;
      • мастеры и проводник веб-служб , инструменты тестирования WS-I ;
      • инструменты для доступа и построения запросов и моделей баз данных .
    • Коммуникационная среда Eclipse (ECF) нацелена на создание коммуникационных приложений на платформе Eclipse.
    • Проект разработки программного обеспечения для устройств (DSDP).
    • Платформа параллельных инструментов (PTP) обеспечивает портируемую, масштабируемую , основанную на стандартах платформу параллельных инструментов, которая позволит облегчить интеграцию инструментов, специфических для параллельных компьютерных архитектур.
    • Платформа встроенного расширенного клиента (eRCP) - предназначена для расширения RCP на встраиваемые устройства. В eRCP входит набор компонентов, которые являются подмножеством компонентов RCP. Она позволит перенести модель приложения, используемого на настольных компьютерах, на другие устройства.
    • DLTK (Dynamic Languages Toolkit) - интегрированная среда разработчика для динамических языков программирования .
    • Swordfish - платформа для построения распределённых корпоративных информационных систем.

    Последние версии

    Eclipse 3.3.2 (Europa Winter)

    Количество новых подпроектов (как управляемых Eclipse Foundation , так и сторонних) быстро увеличивается. Приходится координировать усилия огромного количества разработчиков и предлагать общие правила - «Eclipse Development Process ».

    Последняя версия релиза включает в себя 21 подпроект.

    Eclipse 3.4 (Ganymede)

    Релиз Ganymede (06.2008) включает в себя 23 подпроекта:

    • Eclipse Project 3.4
    • Equinox 3.4
    • Eclipse Communication Framework Project 2.0.0
    • Eclipse Model Framework Technology
    • Eclipse Modeling Framework 2.4.0
    • Eclipse Packaging Project 1.0.0
    • Eclipse Web Tools Platform Project 3.0.0
    • Graphical Editor Framework 3.4.0
    • Graphical Modeling Framework 2.1
    • Model Development Tools. 1.1
    • Data Tools Platform (DTP) 1.6
    • Device Software Development Platform Project Device Debugging 1.0
    • Device Software Development Platform Project Target Management 3.0
    • Buckminster Component Assembly 1.1
    • BIRT 2.3.0
    • C/C++ Development Tool (CDT) 5.0.0
    • Dynamic Languages Toolkit 0.95
    • Model to Text (M2T) 0.9.0
    • Model-to-Model Transformation (M2M)
    • Mylyn 3.0 (task-focused UI)
    • Rich Ajax Platform (RAP) 1.1
    • SOA Tools (STP) 1.0
    • Subversive - SVN Team Provider
    • Target Management 3.0
    • Test and Performance Tools Platform Project 4.5.0

    Eclipse 3.5 (Galileo)

    Последний релиз Galileo, представленный публике 24 июня 2009 года , включает в себя 33 подпроекта:

    • Eclipse Platform 3.5
    • Eclipse Project 3.5.0
    • Eclipse Modeling Framework (EMF) 2.5.0
    • Eclipse Packaging Project 1.1.0
    • Eclipse Web Tools Platform Project WTP 3.1.0 (Galileo)
    • EclipseLink Project 1.1.2
    • Accessibility Tools Framework 0.7.0
    • Business Intelligence and Reporting Tools (BIRT)
    • C/C++ Development Tooling (CDT) 6.0
    • Dali Java Persistence Tools 2.2
    • Data Tools Platform 1.7 (Galileo)
    • Dynamic Languages Toolkit 1.0
    • Equinox 3.5
    • GEF - Graphical Editor Framework 3.5.0
    • Graphical Modeling Framework 2.2.0
    • Java Workflow Tooling JWT 0.6
    • JDT - Java development tools
    • M2T JET (Java Emitter Templates) - aka JET2 M2T JET 1.0.0 (Galileo)
    • Memory Analyzer 0.8.0
    • Mobile Tools for Java
    • Model To Text (M2T) 1.0.0
    • Model-to-Model Transformation (M2M) Galileo Simultaneous Release
    • Monitoring Tools 4.6
    • Mylyn 3.2
    • PHP Development Tools 2.1.0
    • Rich Ajax Platform 1.2
    • Riena Platform Project 1.1.0.
    • SCA Tools 2.0.0
    • SOA Tools 2.0
    • Source Editing 3.1.0 (Galileo)
    • Swordfish 0.9.0
    • Target Management 3.1
    • Test and Performance Tools Platform Project 4.5.3
    • Testing Tools TPTP v4.6
    • Textual Modeling Framework org.eclipse.xtext
    • Tools for mobile Linux 0.3
    • TPTP Platform TPTP v4.6
    • Tracing & Profiling Tools TPTP v4.6

    Локализация

    Начиная с версии 3.1.1, выпущен языковой пакет для русификации Eclipse. Переведены на русский язык как графический интерфейс, так и документация.

    Модули

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

    Язык Модуль
    /С++ CDT
    Fortran Photran
    Perl EPIC
    PHP PDT
    JavaScript JSEclipse
    Python PyDev (Eclipse) (англ. )
    Ruby RDT
    1C V8 1C:Enterprise DT

    Для разработки и получения отчётов и разработки аналитических BI-приложений в Eclipse имеется BIRT Project (англ. ).

    В Eclipse встроена функция установки и обновления модулей через Интернет .

    Популярные приложения на базе SWT и RCP

    Поддерживаемые архитектуры и системы

    • HP-UX (HP9000 /Motif)
    • Linux (x86, x86-64 , PPC, IA-64 /GTK 2)
    • Linux (x86/Motif)
    • Solaris 8 (SPARC /GTK 2, Motif)
    • QNX (x86/Photon)
    • Microsoft Windows (Win32 , Win64)
    • Android (ARM)

    Напишите отзыв о статье "Eclipse (среда разработки)"

    Примечания

    1. Darryl K. Taft. (англ.) . ??? (20 мая 2005). Проверено 3 сентября 2009. .
    2. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    3. (англ.) . Проверено 3 сентября 2009. .
    4. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    5. (англ.) . Eclipse documentation . Официальный сайт. Проверено 3 сентября 2009. .
    6. (англ.) . Eclipse documentation . Официальный сайт. Проверено 3 сентября 2009. .
    7. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    8. Сергей Голубев. . ??? (15 ноября 2005). Проверено 3 сентября 2009. .
    9. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    10. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    11. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    12. (англ.) . Проверено 3 сентября 2009. .
    13. Владимир Парамонов. . Компьюлента (31 января 2007). Проверено 3 сентября 2009.
    14. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    15. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    16. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    17. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    18. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    19. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    20. . Официальный сайт. .
    21. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    22. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    23. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    24. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    25. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    26. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    27. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    28. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    29. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    30. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    31. (англ.) . Официальный сайт (июнь 2007). Проверено 3 сентября 2009. .
    32. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    33. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    34. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    35. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    36. (англ.) . Официальный сайт. Проверено 24 марта 2011. .
    37. (англ.) . . Проверено 3 сентября 2009. .
    38. (англ.) . Официальный сайт. Проверено 3 сентября 2009. .
    39. (англ.) . ???. Проверено 3 сентября 2009. .
    40. Джош Фет. (рус.) . ??? (июнь 2008). - Установка PyDev в Eclipse. Проверено 3 сентября 2009. .
    41. (англ.) . ???. Проверено 3 сентября 2009. .
    42. (10.04.2015).
    43. (рус.) . ???. Проверено 3 сентября 2009. .
    44. (англ.) . . Проверено 3 сентября 2009. .
    45. (англ.) . . Проверено 3 сентября 2009. .
    46. (англ.) . ???. Проверено 3 сентября 2009. .
    47. (англ.) . ???. Проверено 3 сентября 2009. .
    48. (англ.) (недоступная ссылка - история ) . ???. Проверено 3 сентября 2009. .
    49. (англ.) . ???. Проверено 3 сентября 2009.

    Ссылки

    • (англ.)
    • (англ.)
    • (англ.) - Документация для Eclipse SDK
    • (англ.)
    • (англ.)
    • (англ.) - Платформа расширенного клиента
    • (англ.)
    • (англ.) IBM
    • IBM (рус.)
    • (рус.) IBM
    • (рус.)
    • (англ.) - варианты дистрибутивов Eclipse «под ключ» для разных направлений разработки (Expert Java, Desktop Java, Server Java, Mobile Java и т. д.)
    • (рус.) Студия Артемия Лебедева

    Отрывок, характеризующий Eclipse (среда разработки)

    На другой день Ростов проводил княжну Марью в Ярославль и через несколько дней сам уехал в полк.

    Письмо Сони к Николаю, бывшее осуществлением его молитвы, было написано из Троицы. Вот чем оно было вызвано. Мысль о женитьбе Николая на богатой невесте все больше и больше занимала старую графиню. Она знала, что Соня была главным препятствием для этого. И жизнь Сони последнее время, в особенности после письма Николая, описывавшего свою встречу в Богучарове с княжной Марьей, становилась тяжелее и тяжелее в доме графини. Графиня не пропускала ни одного случая для оскорбительного или жестокого намека Соне.
    Но несколько дней перед выездом из Москвы, растроганная и взволнованная всем тем, что происходило, графиня, призвав к себе Соню, вместо упреков и требований, со слезами обратилась к ней с мольбой о том, чтобы она, пожертвовав собою, отплатила бы за все, что было для нее сделано, тем, чтобы разорвала свои связи с Николаем.
    – Я не буду покойна до тех пор, пока ты мне не дашь этого обещания.
    Соня разрыдалась истерически, отвечала сквозь рыдания, что она сделает все, что она на все готова, но не дала прямого обещания и в душе своей не могла решиться на то, чего от нее требовали. Надо было жертвовать собой для счастья семьи, которая вскормила и воспитала ее. Жертвовать собой для счастья других было привычкой Сони. Ее положение в доме было таково, что только на пути жертвованья она могла выказывать свои достоинства, и она привыкла и любила жертвовать собой. Но прежде во всех действиях самопожертвованья она с радостью сознавала, что она, жертвуя собой, этим самым возвышает себе цену в глазах себя и других и становится более достойною Nicolas, которого она любила больше всего в жизни; но теперь жертва ее должна была состоять в том, чтобы отказаться от того, что для нее составляло всю награду жертвы, весь смысл жизни. И в первый раз в жизни она почувствовала горечь к тем людям, которые облагодетельствовали ее для того, чтобы больнее замучить; почувствовала зависть к Наташе, никогда не испытывавшей ничего подобного, никогда не нуждавшейся в жертвах и заставлявшей других жертвовать себе и все таки всеми любимой. И в первый раз Соня почувствовала, как из ее тихой, чистой любви к Nicolas вдруг начинало вырастать страстное чувство, которое стояло выше и правил, и добродетели, и религии; и под влиянием этого чувства Соня невольно, выученная своею зависимою жизнью скрытности, в общих неопределенных словах ответив графине, избегала с ней разговоров и решилась ждать свидания с Николаем с тем, чтобы в этом свидании не освободить, но, напротив, навсегда связать себя с ним.
    Хлопоты и ужас последних дней пребывания Ростовых в Москве заглушили в Соне тяготившие ее мрачные мысли. Она рада была находить спасение от них в практической деятельности. Но когда она узнала о присутствии в их доме князя Андрея, несмотря на всю искреннюю жалость, которую она испытала к нему и к Наташе, радостное и суеверное чувство того, что бог не хочет того, чтобы она была разлучена с Nicolas, охватило ее. Она знала, что Наташа любила одного князя Андрея и не переставала любить его. Она знала, что теперь, сведенные вместе в таких страшных условиях, они снова полюбят друг друга и что тогда Николаю вследствие родства, которое будет между ними, нельзя будет жениться на княжне Марье. Несмотря на весь ужас всего происходившего в последние дни и во время первых дней путешествия, это чувство, это сознание вмешательства провидения в ее личные дела радовало Соню.
    В Троицкой лавре Ростовы сделали первую дневку в своем путешествии.
    В гостинице лавры Ростовым были отведены три большие комнаты, из которых одну занимал князь Андрей. Раненому было в этот день гораздо лучше. Наташа сидела с ним. В соседней комнате сидели граф и графиня, почтительно беседуя с настоятелем, посетившим своих давнишних знакомых и вкладчиков. Соня сидела тут же, и ее мучило любопытство о том, о чем говорили князь Андрей с Наташей. Она из за двери слушала звуки их голосов. Дверь комнаты князя Андрея отворилась. Наташа с взволнованным лицом вышла оттуда и, не замечая приподнявшегося ей навстречу и взявшегося за широкий рукав правой руки монаха, подошла к Соне и взяла ее за руку.
    – Наташа, что ты? Поди сюда, – сказала графиня.
    Наташа подошла под благословенье, и настоятель посоветовал обратиться за помощью к богу и его угоднику.
    Тотчас после ухода настоятеля Нашата взяла за руку свою подругу и пошла с ней в пустую комнату.
    – Соня, да? он будет жив? – сказала она. – Соня, как я счастлива и как я несчастна! Соня, голубчик, – все по старому. Только бы он был жив. Он не может… потому что, потому… что… – И Наташа расплакалась.
    – Так! Я знала это! Слава богу, – проговорила Соня. – Он будет жив!
    Соня была взволнована не меньше своей подруги – и ее страхом и горем, и своими личными, никому не высказанными мыслями. Она, рыдая, целовала, утешала Наташу. «Только бы он был жив!» – думала она. Поплакав, поговорив и отерев слезы, обе подруги подошли к двери князя Андрея. Наташа, осторожно отворив двери, заглянула в комнату. Соня рядом с ней стояла у полуотворенной двери.
    Князь Андрей лежал высоко на трех подушках. Бледное лицо его было покойно, глаза закрыты, и видно было, как он ровно дышал.
    – Ах, Наташа! – вдруг почти вскрикнула Соня, хватаясь за руку своей кузины и отступая от двери.
    – Что? что? – спросила Наташа.
    – Это то, то, вот… – сказала Соня с бледным лицом и дрожащими губами.
    Наташа тихо затворила дверь и отошла с Соней к окну, не понимая еще того, что ей говорили.
    – Помнишь ты, – с испуганным и торжественным лицом говорила Соня, – помнишь, когда я за тебя в зеркало смотрела… В Отрадном, на святках… Помнишь, что я видела?..
    – Да, да! – широко раскрывая глаза, сказала Наташа, смутно вспоминая, что тогда Соня сказала что то о князе Андрее, которого она видела лежащим.
    – Помнишь? – продолжала Соня. – Я видела тогда и сказала всем, и тебе, и Дуняше. Я видела, что он лежит на постели, – говорила она, при каждой подробности делая жест рукою с поднятым пальцем, – и что он закрыл глаза, и что он покрыт именно розовым одеялом, и что он сложил руки, – говорила Соня, убеждаясь, по мере того как она описывала виденные ею сейчас подробности, что эти самые подробности она видела тогда. Тогда она ничего не видела, но рассказала, что видела то, что ей пришло в голову; но то, что она придумала тогда, представлялось ей столь же действительным, как и всякое другое воспоминание. То, что она тогда сказала, что он оглянулся на нее и улыбнулся и был покрыт чем то красным, она не только помнила, но твердо была убеждена, что еще тогда она сказала и видела, что он был покрыт розовым, именно розовым одеялом, и что глаза его были закрыты.
    – Да, да, именно розовым, – сказала Наташа, которая тоже теперь, казалось, помнила, что было сказано розовым, и в этом самом видела главную необычайность и таинственность предсказания.
    – Но что же это значит? – задумчиво сказала Наташа.
    – Ах, я не знаю, как все это необычайно! – сказала Соня, хватаясь за голову.
    Через несколько минут князь Андрей позвонил, и Наташа вошла к нему; а Соня, испытывая редко испытанное ею волнение и умиление, осталась у окна, обдумывая всю необычайность случившегося.
    В этот день был случай отправить письма в армию, и графиня писала письмо сыну.
    – Соня, – сказала графиня, поднимая голову от письма, когда племянница проходила мимо нее. – Соня, ты не напишешь Николеньке? – сказала графиня тихим, дрогнувшим голосом, и во взгляде ее усталых, смотревших через очки глаз Соня прочла все, что разумела графиня этими словами. В этом взгляде выражались и мольба, и страх отказа, и стыд за то, что надо было просить, и готовность на непримиримую ненависть в случае отказа.
    Соня подошла к графине и, став на колени, поцеловала ее руку.
    – Я напишу, maman, – сказала она.
    Соня была размягчена, взволнована и умилена всем тем, что происходило в этот день, в особенности тем таинственным совершением гаданья, которое она сейчас видела. Теперь, когда она знала, что по случаю возобновления отношений Наташи с князем Андреем Николай не мог жениться на княжне Марье, она с радостью почувствовала возвращение того настроения самопожертвования, в котором она любила и привыкла жить. И со слезами на глазах и с радостью сознания совершения великодушного поступка она, несколько раз прерываясь от слез, которые отуманивали ее бархатные черные глаза, написала то трогательное письмо, получение которого так поразило Николая.

    На гауптвахте, куда был отведен Пьер, офицер и солдаты, взявшие его, обращались с ним враждебно, но вместе с тем и уважительно. Еще чувствовалось в их отношении к нему и сомнение о том, кто он такой (не очень ли важный человек), и враждебность вследствие еще свежей их личной борьбы с ним.
    Но когда, в утро другого дня, пришла смена, то Пьер почувствовал, что для нового караула – для офицеров и солдат – он уже не имел того смысла, который имел для тех, которые его взяли. И действительно, в этом большом, толстом человеке в мужицком кафтане караульные другого дня уже не видели того живого человека, который так отчаянно дрался с мародером и с конвойными солдатами и сказал торжественную фразу о спасении ребенка, а видели только семнадцатого из содержащихся зачем то, по приказанию высшего начальства, взятых русских. Ежели и было что нибудь особенное в Пьере, то только его неробкий, сосредоточенно задумчивый вид и французский язык, на котором он, удивительно для французов, хорошо изъяснялся. Несмотря на то, в тот же день Пьера соединили с другими взятыми подозрительными, так как отдельная комната, которую он занимал, понадобилась офицеру.
    Все русские, содержавшиеся с Пьером, были люди самого низкого звания. И все они, узнав в Пьере барина, чуждались его, тем более что он говорил по французски. Пьер с грустью слышал над собою насмешки.
    На другой день вечером Пьер узнал, что все эти содержащиеся (и, вероятно, он в том же числе) должны были быть судимы за поджигательство. На третий день Пьера водили с другими в какой то дом, где сидели французский генерал с белыми усами, два полковника и другие французы с шарфами на руках. Пьеру, наравне с другими, делали с той, мнимо превышающею человеческие слабости, точностью и определительностью, с которой обыкновенно обращаются с подсудимыми, вопросы о том, кто он? где он был? с какою целью? и т. п.
    Вопросы эти, оставляя в стороне сущность жизненного дела и исключая возможность раскрытия этой сущности, как и все вопросы, делаемые на судах, имели целью только подставление того желобка, по которому судящие желали, чтобы потекли ответы подсудимого и привели его к желаемой цели, то есть к обвинению. Как только он начинал говорить что нибудь такое, что не удовлетворяло цели обвинения, так принимали желобок, и вода могла течь куда ей угодно. Кроме того, Пьер испытал то же, что во всех судах испытывает подсудимый: недоумение, для чего делали ему все эти вопросы. Ему чувствовалось, что только из снисходительности или как бы из учтивости употреблялась эта уловка подставляемого желобка. Он знал, что находился во власти этих людей, что только власть привела его сюда, что только власть давала им право требовать ответы на вопросы, что единственная цель этого собрания состояла в том, чтоб обвинить его. И поэтому, так как была власть и было желание обвинить, то не нужно было и уловки вопросов и суда. Очевидно было, что все ответы должны были привести к виновности. На вопрос, что он делал, когда его взяли, Пьер отвечал с некоторою трагичностью, что он нес к родителям ребенка, qu"il avait sauve des flammes [которого он спас из пламени]. – Для чего он дрался с мародером? Пьер отвечал, что он защищал женщину, что защита оскорбляемой женщины есть обязанность каждого человека, что… Его остановили: это не шло к делу. Для чего он был на дворе загоревшегося дома, на котором его видели свидетели? Он отвечал, что шел посмотреть, что делалось в Москве. Его опять остановили: у него не спрашивали, куда он шел, а для чего он находился подле пожара? Кто он? повторили ему первый вопрос, на который он сказал, что не хочет отвечать. Опять он отвечал, что не может сказать этого.
    – Запишите, это нехорошо. Очень нехорошо, – строго сказал ему генерал с белыми усами и красным, румяным лицом.
    На четвертый день пожары начались на Зубовском валу.
    Пьера с тринадцатью другими отвели на Крымский Брод, в каретный сарай купеческого дома. Проходя по улицам, Пьер задыхался от дыма, который, казалось, стоял над всем городом. С разных сторон виднелись пожары. Пьер тогда еще не понимал значения сожженной Москвы и с ужасом смотрел на эти пожары.
    В каретном сарае одного дома у Крымского Брода Пьер пробыл еще четыре дня и во время этих дней из разговора французских солдат узнал, что все содержащиеся здесь ожидали с каждым днем решения маршала. Какого маршала, Пьер не мог узнать от солдат. Для солдата, очевидно, маршал представлялся высшим и несколько таинственным звеном власти.
    Эти первые дни, до 8 го сентября, – дня, в который пленных повели на вторичный допрос, были самые тяжелые для Пьера.

    Х
    8 го сентября в сарай к пленным вошел очень важный офицер, судя по почтительности, с которой с ним обращались караульные. Офицер этот, вероятно, штабный, с списком в руках, сделал перекличку всем русским, назвав Пьера: celui qui n"avoue pas son nom [тот, который не говорит своего имени]. И, равнодушно и лениво оглядев всех пленных, он приказал караульному офицеру прилично одеть и прибрать их, прежде чем вести к маршалу. Через час прибыла рота солдат, и Пьера с другими тринадцатью повели на Девичье поле. День был ясный, солнечный после дождя, и воздух был необыкновенно чист. Дым не стлался низом, как в тот день, когда Пьера вывели из гауптвахты Зубовского вала; дым поднимался столбами в чистом воздухе. Огня пожаров нигде не было видно, но со всех сторон поднимались столбы дыма, и вся Москва, все, что только мог видеть Пьер, было одно пожарище. Со всех сторон виднелись пустыри с печами и трубами и изредка обгорелые стены каменных домов. Пьер приглядывался к пожарищам и не узнавал знакомых кварталов города. Кое где виднелись уцелевшие церкви. Кремль, неразрушенный, белел издалека с своими башнями и Иваном Великим. Вблизи весело блестел купол Ново Девичьего монастыря, и особенно звонко слышался оттуда благовест. Благовест этот напомнил Пьеру, что было воскресенье и праздник рождества богородицы. Но казалось, некому было праздновать этот праздник: везде было разоренье пожарища, и из русского народа встречались только изредка оборванные, испуганные люди, которые прятались при виде французов.
    Очевидно, русское гнездо было разорено и уничтожено; но за уничтожением этого русского порядка жизни Пьер бессознательно чувствовал, что над этим разоренным гнездом установился свой, совсем другой, но твердый французский порядок. Он чувствовал это по виду тех, бодро и весело, правильными рядами шедших солдат, которые конвоировали его с другими преступниками; он чувствовал это по виду какого то важного французского чиновника в парной коляске, управляемой солдатом, проехавшего ему навстречу. Он это чувствовал по веселым звукам полковой музыки, доносившимся с левой стороны поля, и в особенности он чувствовал и понимал это по тому списку, который, перекликая пленных, прочел нынче утром приезжавший французский офицер. Пьер был взят одними солдатами, отведен в одно, в другое место с десятками других людей; казалось, они могли бы забыть про него, смешать его с другими. Но нет: ответы его, данные на допросе, вернулись к нему в форме наименования его: celui qui n"avoue pas son nom. И под этим названием, которое страшно было Пьеру, его теперь вели куда то, с несомненной уверенностью, написанною на их лицах, что все остальные пленные и он были те самые, которых нужно, и что их ведут туда, куда нужно. Пьер чувствовал себя ничтожной щепкой, попавшей в колеса неизвестной ему, но правильно действующей машины.
    Пьера с другими преступниками привели на правую сторону Девичьего поля, недалеко от монастыря, к большому белому дому с огромным садом. Это был дом князя Щербатова, в котором Пьер часто прежде бывал у хозяина и в котором теперь, как он узнал из разговора солдат, стоял маршал, герцог Экмюльский.
    Их подвели к крыльцу и по одному стали вводить в дом. Пьера ввели шестым. Через стеклянную галерею, сени, переднюю, знакомые Пьеру, его ввели в длинный низкий кабинет, у дверей которого стоял адъютант.
    Даву сидел на конце комнаты над столом, с очками на носу. Пьер близко подошел к нему. Даву, не поднимая глаз, видимо справлялся с какой то бумагой, лежавшей перед ним. Не поднимая же глаз, он тихо спросил:
    – Qui etes vous? [Кто вы такой?]
    Пьер молчал оттого, что не в силах был выговорить слова. Даву для Пьера не был просто французский генерал; для Пьера Даву был известный своей жестокостью человек. Глядя на холодное лицо Даву, который, как строгий учитель, соглашался до времени иметь терпение и ждать ответа, Пьер чувствовал, что всякая секунда промедления могла стоить ему жизни; но он не знал, что сказать. Сказать то же, что он говорил на первом допросе, он не решался; открыть свое звание и положение было и опасно и стыдно. Пьер молчал. Но прежде чем Пьер успел на что нибудь решиться, Даву приподнял голову, приподнял очки на лоб, прищурил глаза и пристально посмотрел на Пьера.
    – Я знаю этого человека, – мерным, холодным голосом, очевидно рассчитанным для того, чтобы испугать Пьера, сказал он. Холод, пробежавший прежде по спине Пьера, охватил его голову, как тисками.
    – Mon general, vous ne pouvez pas me connaitre, je ne vous ai jamais vu… [Вы не могли меня знать, генерал, я никогда не видал вас.]
    – C"est un espion russe, [Это русский шпион,] – перебил его Даву, обращаясь к другому генералу, бывшему в комнате и которого не заметил Пьер. И Даву отвернулся. С неожиданным раскатом в голосе Пьер вдруг быстро заговорил.
    – Non, Monseigneur, – сказал он, неожиданно вспомнив, что Даву был герцог. – Non, Monseigneur, vous n"avez pas pu me connaitre. Je suis un officier militionnaire et je n"ai pas quitte Moscou. [Нет, ваше высочество… Нет, ваше высочество, вы не могли меня знать. Я офицер милиции, и я не выезжал из Москвы.]
    – Votre nom? [Ваше имя?] – повторил Даву.
    – Besouhof. [Безухов.]
    – Qu"est ce qui me prouvera que vous ne mentez pas? [Кто мне докажет, что вы не лжете?]
    – Monseigneur! [Ваше высочество!] – вскрикнул Пьер не обиженным, но умоляющим голосом.
    Даву поднял глаза и пристально посмотрел на Пьера. Несколько секунд они смотрели друг на друга, и этот взгляд спас Пьера. В этом взгляде, помимо всех условий войны и суда, между этими двумя людьми установились человеческие отношения. Оба они в эту одну минуту смутно перечувствовали бесчисленное количество вещей и поняли, что они оба дети человечества, что они братья.
    В первом взгляде для Даву, приподнявшего только голову от своего списка, где людские дела и жизнь назывались нумерами, Пьер был только обстоятельство; и, не взяв на совесть дурного поступка, Даву застрелил бы его; но теперь уже он видел в нем человека. Он задумался на мгновение.
    – Comment me prouverez vous la verite de ce que vous me dites? [Чем вы докажете мне справедливость ваших слов?] – сказал Даву холодно.
    Пьер вспомнил Рамбаля и назвал его полк, и фамилию, и улицу, на которой был дом.
    – Vous n"etes pas ce que vous dites, [Вы не то, что вы говорите.] – опять сказал Даву.
    Пьер дрожащим, прерывающимся голосом стал приводить доказательства справедливости своего показания.
    Но в это время вошел адъютант и что то доложил Даву.
    Даву вдруг просиял при известии, сообщенном адъютантом, и стал застегиваться. Он, видимо, совсем забыл о Пьере.
    Когда адъютант напомнил ему о пленном, он, нахмурившись, кивнул в сторону Пьера и сказал, чтобы его вели. Но куда должны были его вести – Пьер не знал: назад в балаган или на приготовленное место казни, которое, проходя по Девичьему полю, ему показывали товарищи.
    Он обернул голову и видел, что адъютант переспрашивал что то.
    – Oui, sans doute! [Да, разумеется!] – сказал Даву, но что «да», Пьер не знал.
    Пьер не помнил, как, долго ли он шел и куда. Он, в состоянии совершенного бессмыслия и отупления, ничего не видя вокруг себя, передвигал ногами вместе с другими до тех пор, пока все остановились, и он остановился. Одна мысль за все это время была в голове Пьера. Это была мысль о том: кто, кто же, наконец, приговорил его к казни. Это были не те люди, которые допрашивали его в комиссии: из них ни один не хотел и, очевидно, не мог этого сделать. Это был не Даву, который так человечески посмотрел на него. Еще бы одна минута, и Даву понял бы, что они делают дурно, но этой минуте помешал адъютант, который вошел. И адъютант этот, очевидно, не хотел ничего худого, но он мог бы не войти. Кто же это, наконец, казнил, убивал, лишал жизни его – Пьера со всеми его воспоминаниями, стремлениями, надеждами, мыслями? Кто делал это? И Пьер чувствовал, что это был никто.



    Рекомендуем почитать

    Наверх