corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Совместное использование приложений на Java и Ruby

В этой статье описывается объединение приложений на Ruby и Java с помощью среды IDE NetBeans.

Содержание

Содержимое на этой странице относится к среде IDE NetBeans 6.0
Требования для работы со статьей
Создание проекта Java
Изменение проекта Java
Написание приложения на Rails

Требования для работы со статьей


В этой статье показано объединение приложений на Java с приложениями на Ruby. Одновременно демонстрируется ряд новейших возможностей Ruby в среде IDE NetBeans 6.0.

Для работы со статьей требуются следующие предпосылки:

  • базовые знания в области программирования с использованием технологий Ruby;
  • установленная на компьютере среда IDE NetBeans 6.0 c Ruby (загрузить).

Указания по настройке

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

Базу данных необходимо настроить следующим образом:

  • Создайте таблицу с названием CURRENCY.
  • Создайте три столбца строкового типа (или VARCHAR) в таблице CURRENCY: "Country", "Currency" и "Name".
  • Заполните таблицу данными. Например, можно добавить три валюты плюс произвольное количество других: "USA", "Dollar", "USD"; "Czech Republic", "Koruna", "CZK"; "Norway", "Krone", "NOK".

Также необходимо настроить доступ к таблице базы данных из среды NetBeans. Если это необходимо, следует настроить драйвер JDBC для базы данных и добавить источник данных в окне "Services".

Например, следующий код SQL создает таблицу CURRENCY в базе данных Derby с названием SAMPLE (используется комбинация имени пользователя и пароля APP/APP). Если требуется использовать ту же базу данных SAMPLE, таблицу можно создать путем выполнения этого SQL-кода в IDE (после подключения к базе данных SAMPLE). Можно создать и собственную базу данных в меню "Tools->Java DB Database->Create Database". Код SQL для создания такой же таблицы в другой СУБД может отличаться от приведенного в примере.

drop table "APP"."CURRENCY";
  create table "APP"."CURRENCY" (
country VARCHAR(20), currency VARCHAR(20), name VARCHAR (20),
id INTEGER GENERATED always AS IDENTITY);

 alter table CURRENCY add constraint currencyPK PRIMARY KEY (id);
  INSERT INTO CURRENCY VALUES ('USA', 'Dollar', 'USD',DEFAULT);
  INSERT INTO CURRENCY VALUES ('Czech Republic', 'Koruna', 'CZK',DEFAULT);
  INSERT INTO CURRENCY VALUES ('Norway', 'Krone', 'NOK',DEFAULT);
      INSERT INTO CURRENCY VALUES ('France', 'Euro', 'EU',DEFAULT);

Создание проекта Java

Сразу по выполнении задач настройки можно создать проект. Сначала создается настольное приложение на Java, которое фактически является приложением Swing, и выбирается вариант связывания с базой данных. Мастер позволяет выполнить все действия, необходимые для подключения проекта (назовем его "Money") к источнику данных, т.е. в нашем случае – к таблице CURRENCY примера базы данных Derby. После нескольких щелчков мышью полнофункциональное приложение типа CRUD для работы с базой данных готово.

Рис. 1: Создание настольного приложения для работы с базой данных "Money"

Создание приложения для работы с базой данных

Щелкните для увеличения

Рис. 2: Подключение проекта к источнику данных

Подключение проекта к источнику данных

Щелкните для увеличения

Запустите приложение Money (щелкните правой кнопкой мыши проект и выберите "Run"), и откроется экран, подобный следующему. (Для выхода из приложения нажмите комбинацию клавиш Ctrl+Q.)

Рис. 3: Приложение "Money"

Приложение "Money"

Изменение проекта Java

Начнем с исследования автоматически созданных классов Java; в частности, класса Currency.java. Ниже приводится ряд рекомендаций по просмотру элементов проекта.

В окне "Projects" разверните узел проекта "Source Packages->money" и дважды щелкните файл Currency.java для его открытия в редакторе исходного кода. Весь класс и его код выводится в окне редактора.

Члены класса

Для просмотра членов класса Currency необходимо нажать Ctrl+F12. Для быстрого перемещения внутри класса удобно пользоваться диалоговым окном "Members".

Рис. 4: Члены класса Currency.java

Члены класса

Например, для просмотра определения класса введите в поле "Filter" Cur.

Рис. 5: Определение класса "Currency"

Определение класса "Currency"

Примечание: Убедитесь в том, что в созданном коде Currency.java правильно объявляется поле идентификатора ID. Вероятно, к файлу Java потребуется добавить строку, указывающую на то, что идентификатор создан автоматически и уникален. Ниже приведен правильный код для поля идентификатора. Также отметим, что при добавлении строки для типа создания (@GeneratedValue (strategy=GenerationType.IDENTITY)) вероятно возникновение ошибки отсутствия импорта, так что строка будет подчеркнута красным цветом. Это положение нетрудно исправить: достаточно щелкнуть ошибку и нажать Alt+Enter.

 @Id
 @GeneratedValue (strategy=GenerationType.IDENTITY)
 @Column(name = "ID", nullable = false)
      private Integer id; 

Список задач

В среде IDE автоматически ведется список задач, содержащий ошибки компиляции, предупреждения и т.д. Список задач можно в любое время открыть и просмотреть сочетанием клавиш Ctrl+6.

Рис. 6: Список задач

Отображение списка задач

Ознакомьтесь с исходным кодом Currency. Обратите внимание, что в нем содержатся аннотации интерфейса API сохранения состояния объектов Java. Эти аннотации означают привязку к столбцам базы данных и отмечаются знаком "at" (@). Например, привязки к столбцам базы данных отмечаются аннотацией @Column, за которой следует имя столбца и переменная Java, например: @Column(name="COUNTRY") private String country;

Создание класса Java для доступа к столбцам базы данных

Требуется создать новый класс Java с названием CurrencyLookup, который обращается к этим объектам сохранения состояния Java – столбцам базы данных. Затем приложение на Rails вызывает этот класс CurrencyLookup для получения списка валют из базы данных. Эта задача упрощается благодаря функциям автозавершения кода и шаблонов в редакторе исходного кода.

Создайте в классе CurrencyLookup метод getAll, возвращающий список валют. Готовый метод выглядит следующим образом. Обратите внимание, что единица сохранения состояния samplePU соответствует имени использованной базы данных SAMPLE. Это не строгое требование.

public List<Currency> getAll() {
   EntityManager em = Persistence.createEntityManagerFactory("samplePU").createEntityManager();
   Query query = em.createQuery("select c from Currency c");
   return query.getResultList();
      }; 
  1. Щелкните правой кнопкой мыши узел money в "Source Packages" и выберите "New > Java Class".
  2. Введите CurrencyLookup в поле "Class Name" в диалоговом окне "New Java Class". (В диалоговом окне должно указываться местоположение "Source Packages" и имя пакета money. Если это не так, необходимо выполнить соответствующую настройку.) В среде IDE создается класс CurrencyLookup.java, который помещается в узел "Source Packages -> money".
  3. Создайте метод, возвращающий список всех валют. При этом удобно пользоваться функциями IDE (например, автозавершением кода, исправлением операторов импорта и т.д.). Начните с ввода pu (для public) где-либо внутри класса CurrencyLookup, а затем нажмите комбинацию клавиш Ctrl+Space. Отметим, что текст автоматически дополняется. (Приведенные здесь комбинации клавиш предназначены для платформы Windows; на других платформах могут использоваться другие комбинации. Точную комбинацию клавиш для конкретной среды можно выяснить в файле "Help -> Keyboard Shortcuts".)

    Рис. 7: Автозавершение кода

    Автозавершение кода
  4. Введите List<Cu, а затем нажмите комбинацию клавиш Ctrl+K для автозавершения имени класса Currency. Имя завершается как CurrencyLookup, так что необходимо удалить Lookup.

    Рис. 8: Автозавершение кода имени класса

    Автозавершение кода
  5. Продолжайте вводить имя метода и остальную часть кода метода.

Дополнительные рекомендации по внесению изменений в исходный код

Приведем ряд дополнительных рекомендаций по внесению изменений в исходный код:

  • Функция "Fix Imports" в контекстном меню окна редактора позволяет импортировать недостающие классы.
  • Для просмотра рекомендаций относительно элементов, отсутствующих в методе, нажмите комбинацию клавиш Alt+Enter.
  • При изменении тела метода по нажатию клавиши Return вставляется закрывающая фигурная скобка (}).
  • Быстро заменить слово можно путем наведения курсора на это слово и нажатия Ctrl+R с последующим вводом нового текста.

Готовый класс запроса CurrencyLookup можно при необходимости протестировать. Для этого используется функция "Tools -> Create JUnit Test" или комбинация клавиш Ctrl+Shift+U. При этом автоматически создается скелетный класс CurrencyLookupTest. Фиктивный код можно удалить, после чего добавить для тестирования строку assertFalse. Например, для тестирования непустого статуса строки, возвращенной из базы данных, можно добавить следующую строку: assertFalse ("contains data", new CurrencyLookup().getAll().isEmpty());. Затем для запуска тестирования необходимо нажать Shift+F6.

Написание приложения на Rails

Теперь создайте приложение на Rails, обращающееся к коду Java в приложении "Money". Сначала потребуется небольшая подготовка, в т.ч. сборка проекта "Money" и добавление к проекту Rails нескольких архивов JAR.

Создание и настройка проекта Rails

  1. Сначала убедитесь в том, что настольное приложение Money на Java сформировано. Выберите в контекстном меню проекта функцию "Clean and Build" или нажмите комбинацию клавиш Shift+F11.
  2. Создайте новый проект "Ruby -> Ruby on Rails". Примите в мастере значения по умолчанию и создайте проект Rails в IDE. (Если установлен естественный Ruby на C, предлагается выбрать интерпретатор Ruby. Следует выбрать встроенный интерпретатор JRuby.)

    Рис. 9: Создание проекта Rails

    Создание проекта Rails

    Щелкните для увеличения

  3. Затем следует настроить ряд свойств Java для проекта Rails. А именно, требуется добавить архивы JAR TopLink для интерфейса API сохранения состояния объектов Java плюс архив JAR для настольного приложения Money на Java. (Файл Money.jar расположен в каталоге /dist проекта "Money".) Щелкните правой кнопкой мыши узел проекта "Ruby" и выберите "Properties". Выберите категорию "Java", а затем нажмите кнопку "Add JAR/Folder". Перейдите к трем архивам JAR и добавьте их. Убедитесь в том, что добавлены toplink-essentials-agent.jar и toplink-essentials.jar; оба этих файла расположены в установочном каталоге NetBeans java1/modules/ext/toplink/. Файл Rails config/database.yml в этом проекте изменять не требуется, так как в приложении на Rails для работы с базой данных используется код Java.

    Рис. 10: Добавление архивов JAR

    Добавление архивов JAR

Добавление поиска валют к проекту Rails

На этом этапе выполняется изменение автоматически созданного проекта Rails для использования кода поиска валют из проекта Java "Money".

  1. Сначала необходимо запустить проект Rails и вывести таким образом в обозревателе стандартную пустую страницу Rails. Измените URL-адрес по умолчанию; этот адрес должен указывать на приложение. Например, возможен следующий вид: http://localhost:3001/; в конце следует добавить /money/list. В обозревателе выводится сообщение ошибки при маршрутизации. По завершении написания кода (добавляется действие, реагирующее на этот URL-адрес) приложение будет выполняться в обозревателе корректно.
  2. Создайте контроллер "money" и представление списка с помощью генератора кода Rails. Выберите "Generate" из контекстного меню проекта Rails. В поле "Generate" диалогового окна "Rails Generator" выберите controller и введите money в поле "Name" и list в поле "View". Нажмите кнопку "OK".

Рис. 11: Создание контроллера "money"

Создание контроллера "money"

Созданный контроллер money открывается в окне редактора. Добавьте к контроллеру код, позволяющий приложению работать с кодом Java (require 'java'), и добавьте класс Java CurrencyLookup (include_class 'money.CurrencyLookup'). После этого класс Java CurrencyLookup проекта "Money" можно вызывать обычным образом. Также следует иметь в виду, что в среде IDE имеется средство автозавершения кода специально для Ruby и Rails; для автозавершения имен методов и т.п. можно нажать Ctrl+K и Ctrl+Space.

Ниже приводится полный код для класса MoneyController:

class MoneyController < ApplicationController
  def list
    require 'java'
    include_class 'money.CurrencyLookup'
    lookup = CurrencyLookup.new
    @list = lookup.get_all
      end
end

Настройка представления

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

  1. Откройте представление списка, созданное для класса MoneyController. Вызовите функцию "Navigate -> Goto Rails Action/View" или нажмите комбинацию клавиш Ctrl+Shift+A. В редакторе открывается файл list.rhtml или представление Money#list.
  2. Вставьте скелет таблицы в представление списка. Для ускорения процесса введите table и нажмите клавишу Tab. В среде IDE автоматически добавляется HTML для строк и ячеек таблицы.
  3. Рис. 12: Использование клавиши Tab

    Использование клавиши Tab

     

  4. Выберите блок строки таблицы (<tr>) и нажмите комбинацию клавиш Alt+Enter. Поскольку требуется итерация по списку валют, строки таблицы следует заключить в цикл for. По комбинации клавиш Alt+Enter выводится вариант быстрого ввода, обозначенный значком лампочки. Выберите Surround with for и нажмите клавишу Enter.
  5. Рис. 13: Использование комбинации клавиш Alt+Enter

    Использование комбинации клавиш Alt+Enter
  6. Теперь измените параметры цикла for в соответствии с данными о валютах. Для перехода между этими параметрами используется клавиша Tab. Назовем переменную цикла c вместо f и заменим @field на @list. Добавьте дополнительные теги ячеек таблицы (<td></td>) внутрь тега строки (<tr></tr>) с помощью комбинации клавиш для автозавершения кода.
  7. Рис. 14: Использование автозавершения кода для добавления тегов HTML

    Использование автозавершения кода для добавления тегов HTML
  8. Вставьте шаблон кода для выражения Ruby между тегами ячейки таблицы. Введите re, а затем нажмите клавишу Tab. При этом вставляется выражение Ruby <%= %>.
  9. Рис. 15: Вставка выражений Ruby

    Вставка выражений Ruby
  10. Создайте три таких блока ячеек с выражением Ruby <%= %> в каждом. Вставьте имена столбцов валют (c.country, c.code и c.name) в блоки <%= %>. После этого код должен выглядеть следующим образом:
  11. <h1>Money#list</h1>
      <p>Find me in app/views/money/list.rhtml</p>
      <table border="1">
    <% for c in @list %>
    <tr>
      <td>
         <%= c.country %>
      </td>
      <td>
         <%= c.currency %>
      </td>
      <td>
         <%= c.name %>
      </td>
    </tr>
    <%end%>
             </table>
  12. Нажмите комбинацию клавиш Shift+F6 для просмотра таблицы в обозревателе. Общий вид должен соответствовать приведенному ниже, в зависимости от валют, добавленных к базе данных:

Рис. 16: Вывод таблицы валют Ruby

Вывод таблицы валют с помощью проекта Ruby

Заключение

В этой статье было продемонстрировано объединение приложения на Ruby on Rails с настольным приложением на Java. В настольном приложении на Java содержался код для доступа к таблице базы данных, а приложение на Ruby вызывало написанный на Java код доступа к таблице базы данных для получения и вывода данных.

Также в статье был показан ряд сочетаний клавиш, доступных при разработке приложений на Java и Ruby.


Что дальше?




>> Дополнительная документация по Ruby в среде NetBeans

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems