(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Rich Ajax Platform: Часть 1. Введение (исходники)

Крис Анищик, Бенджамин Мускалла

Цель проекта RAP - дать возможность разработчикам создавать функционально насыщенные интернет-приложения (Rich Internet Applications), используя подход Eclipse. Но что стоит за этим термином - "подход Eclipse"? Скажем так: RAP позволяет разработчикам создавать браузер-ориентированные Ajax-приложения с использованием всего объема библиотек языка Java и Eclipse API. Для этого предлагаются поддерживающие Web-технологии реализации SWT, JFace и Eclipse Workbench. Цель настоящей статьи - познакомить читателя с RAP при помощи нескольких несложных примеров.

Два этапа установки

Установка RAP чрезвычайно проста и состоит всего из двух этапов: загрузки RAP и настройки Eclipse для использования с данной платформой.

Этап 1: Загрузка RAP

Загрузите RAP с сайта Eclipse.org. Лучше всего взять самую новую стабильную версию; мы при написании статьи использовали выпуск 1.0. Загрузив с сайта архивный файл, содержащий целевую RAP-платформу, распакуйте ее в папку по своему выбору (см. рисунок 1). Эта папка будет играть очень важную роль - именно ее вы будете использовать при настройке целевой платформы на следующем этапе.

Рисунок 1. Целевая платформа RAP
RAP target

Этап 2. Установка целевой платформы

В среде программирования Eclipse Plug-in Development Environment (PDE) используется концепция целевой платформы. Целевая платформа собирается из набора плагинов, соответствующих той платформе, в рамках которой вы работаете (т. е. на которую нацелены создаваемые вами продукты). По умолчанию в качестве целевой устанавливается платформа, на которой Eclipse была запущена в вашем конкретном случае. Это означает, что плагины, которые вы разрабатываете в данный момент, окажутся предназначенными для исполнения на данном работающем экземпляре системы. Однако главное то, что целевую платформу можно менять. Например, вы можете выбрать в качестве целевой платформы инсталляцию Eclipse V3.2 или даже среду исполнения какого-то другого программного продукта. (Этот элегантный прием позволяет вам пользоваться последней версией Eclipse независимо от того, для чего именно предназначены ваши разработки.)

В данном случае нам необходимо определить в качестве целевой платформу RAP, поскольку именно она является для нас рабочей. Для этого в пункте меню Window > Preferences... > Plug-in Development > Target Platform нужно указать местонахождение целевой платформы - папку, в которую вы разархивировали плагины RAP на этапе 1 (рисунок 2).

Рисунок 2. Назначение RAP целевой платформой
Назначение RAP целевой платформой

Теперь, когда ваша целевая платформа установлена должным образом, вы можете создавать RAP-приложения. Но прежде чем мы перейдем к собственно коду, давайте рассмотрим небольшой пример - он даст нам представление о возможностях RAP и поможет научиться запускать RAP-приложения.

 
RAP и Google Web Toolkit
Google Web Toolkit (GWT) и RAP похожи в том, что оба они позволяют создавать функционально насыщенные интернет-приложения при помощи Java. Важнейшее их отличие состоит в том, что GWT выполняется на стороне клиента, тогда как RAP - на сервере. Благодаря этому обстоятельству с помощью RAP вы получаете полноценный доступ к Java API и можете воспользоваться знаменитой моделью плагинов Eclipse через посредство OSGi. В терминах Eclipse эту ситуацию можно изложить следующим образом: GWT представляет собой что-то вроде автономного SWT-приложения (т. е. всего лишь некий набор инструментов), тогда как RAP дает возможность полноценного RCP-подхода к Web-приложениям.
 

Примеры

Наше знакомство с RAP мы начнем с примера. Для взаимодействия с RAP нам необходимо создать стартовую конфигурацию для запуска RAP. Для этого нужно открыть диалог Run (Run > Open Run Dialog...) и создать новую OSGi-ориентированную стартовую конфигурацию. После этого необходимо удостовериться в том, что следующим VM-аргументам установлены нужные значения: -Dorg.osgi.service.http.port=8000 -Dosgi.noShutdown=true (рисунок 3). Эти аргументы дают возможность RAP запускать себя через порт 8000 и не позволяют Eclipse завершиться сразу после запуска.

Рисунок 3. Стартовая конфигурация RAP
Стартовая конфигурация RAP

Ну а теперь можно запустить браузер и перейти на http://localhost:8000/rap?startup=controls, чтобы познакомиться с демонстрационным скриншотом панели управления RAP. Этот пример основан на хорошо известном ControlExample из набора SWT Examples.

Рисунок 4. Панель управления RAP
Панель управления RAP

Примеры приложений

Рассмотрим два примера, в основе которых лежат шаблоны клиентской платформы RCP (Rich Client Platform), предоставляемые средой программирования PDE.

Пример "Hello World"

У программистов уже стало доброй традицией приводить в качестве иллюстрации программу, которая выдает сообщение "Hello World". Начнем с того, как создать такое простое RAP-приложение.

Рисунок 5. "Hello World" в исполнении RAP
Hello World в исполнении RAP

Основное различие между RAP- и RCP-версией приложения заключается в характере зависимости плагинов и в точке входа приложения. Если мы посмотрим на манифест плагина (см. листинг 1), то увидим, что эти зависимости различны.

Листинг 1. Зависимости RAP-приложения "Hello World" (MANIFEST.MF)

                
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Helloworld Plug-in
Bundle-SymbolicName: rap.helloworld; singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: rap.helloworld.Activator
Require-Bundle: org.eclipse.rap.ui
Eclipse-LazyStart: true

Обратили внимание на зависимость от org.eclipse.rap.ui? Это плагин RAP, аналогичный стандартному плагину org.eclipse.ui из базы RCP. Если вы хорошо знакомы с OSGi и знаете, как работает заголовок Import-Package, вам вообще не нужно устанавливать зависимости с конкретными плагинами; вы можете ссылаться только на нужные вам пакеты. Это очень важный момент, потому что благодаря этому вы можете организовать свой код так, чтобы он работал и с RAP, и с RCP. Например, если мы взглянем на коды workbench advisor в RAP (листинг 2) и RCP (листинг 3), то увидим сходство этих кодов и подключенных в обоих случаях пакетов.

Листинг 2. Workbench advisor в RCP

                
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
    }

    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
        return new ApplicationActionBarAdvisor(configurer);
    }
    
    public void preWindowOpen() {
        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
        configurer.setInitialSize(new Point(400, 300));
        configurer.setShowCoolBar(false);
        configurer.setShowStatusLine(false);
        configurer.setTitle("Hello RCP");
    }
}    	

Листинг 3. Workbench advisor в RAP

                
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
    }

    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
        return new ApplicationActionBarAdvisor(configurer);
    }
    
    public void preWindowOpen() {
        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
        configurer.setInitialSize(new Point(400, 300));
        configurer.setShowCoolBar(false);
        configurer.setShowStatusLine(false);
        configurer.setTitle("Hello RAP");
    }
}    	

Другое ключевое различие между RAP- и RCP-приложениями заключается в точке входа (аналогично методу main(String[] args) в языке Java). В случае RCP мы имеем точку расширения org.eclipse.core.runtime.applications, где вы определяете IApplication (обратите внимание, что в версиях Eclipse до 3.3 ему соответствовало IPlatformRunnable). RAP-эквивалент RCP-приложения - это точка расширения org.eclipse.rap.ui.entrypoint, которая определяет IEntryPoint. Сравнив типичный код точки входа в RCP- (листинг 4) и RAP-контексте (листинг 5), вы увидите, что между ними имеется определенное сходство. В обоих случаях мы создаем компоненты Display и Workbench для обеспечения возможности запуска workbench advisor.

Листинг 4. Точка входа RCP-приложения (org.eclipse.core.runtime.applications)

                
public class Application implements IApplication {

	public Object start(IApplicationContext context) throws Exception {
		Display display = PlatformUI.createDisplay();
		try {
			int returnCode = PlatformUI.createAndRunWorkbench(display, 
			new ApplicationWorkbenchAdvisor());
			if (returnCode == PlatformUI.RETURN_RESTART)
				return IApplication.EXIT_RESTART;
			else
				return IApplication.EXIT_OK;
		} finally {
			display.dispose();
		}
		
	}

	public void stop() {
		final IWorkbench workbench = PlatformUI.getWorkbench();
		if (workbench == null)
			return;
		final Display display = workbench.getDisplay();
		display.syncExec(new Runnable() {
			public void run() {
				if (!display.isDisposed())
					workbench.close();
			}
		});
}    	

Листинг 5. Точка входа RAP-приложения (org.eclipse.rap.ui.entrypoint)

                
public class Application implements IEntryPoint {

	public Display createUI() {
		Display display = PlatformUI.createDisplay();
		PlatformUI.createAndRunWorkbench
		( display, new ApplicationWorkbenchAdvisor() );
		return display;
	}
}

Пример RCP Mail

Классический пример RCP Mail (рисунок 6) после минимальных изменений может быть запущен в среде RAP (рисунок 7). Этот факт указывает на то, что в среде RAP доступны для использования, в частности, такие workbench-концепции, как виды, перспективы и редакторы (см. сравнение концепций в таблице 1). Если хотите, можете поиграться с исходными кодами двух последних примеров.

Таблица 1. RAP и RCP

RAP RCP
OSGi (на стороне сервера) OSGi
Standard Widget Toolkit (SWT) RAP Widget Toolkit (RWT)
JFace JFace
Workbench Web Workbench

Рисунок 6. RCP Mail
RCP Mail

Рисунок 7. RAP Mail
RAP Mail

Заключение

При помощи нескольких простых примеров и демонстрационных скриншотов статья знакомит читателей с платформой RAP. RAP позволяет разработчикам, не переучиваясь, использовать Eclipse для создания функционально насыщенных интернет-приложений (Rich Internet Applications). RAP, кроме того, дает возможность организовать разрабатываемый код таким образом, чтобы он мог исполняться как локальным (RCP), так и удаленным (RAP) образом. По существу, RAP ставит Eclipse в один ряд с браузерами и Web 2.0.

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 26.07.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Bitdefender Antivirus Plus 2020/1 год/1 ПК
Dr.Web Security Space, продление лицензии на 1 год, 1 ПК
IBM Rational Functional Tester Floating User License
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
FastReport.Mono Single License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
СУБД Oracle "с нуля"
Компьютерные книги. Рецензии и отзывы
Новые материалы
Программирование на Visual Basic/Visual Studio и ASP/ASP.NET
Мастерская программиста
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100