JRuby. Сборник рецептов
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Эдельсон Джастин
Перевод:
Слинкин Алексей Александрович
Год издания: 2023
Кол-во страниц: 236
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное образование
ISBN: 978-5-89818-481-0
Артикул: 816798.01.99
Интересующемуся языком JRuby вряд ли нужны руководства по Ruby, Rails или Java — требуется лишь узнать, как решить ту или иную конкретную задачу. В этой книге вы найдете практические рецепты по работе с данной реализацией языка Ruby на платформе Java. Специально рассмотрены такие вопросы, как развертывание веб-приложений Rails на Java-серверах, интеграция программ на JRuby с технологиями из мира Java, разработка персональных приложений на JRuby с помощью инструментальных библиотек на Java и многое другое. Интерпретатор JRuby сочетает в себе простоту и легкость использования Ruby с развитыми библиотеками и технологиями Java, и это открывает совершенно новые возможности для применения Ruby, Rails и Java.
Эта книга даст вам возможность воспользоваться всем потенциалом языка JRuby.
- Полная коллекция по информатике и вычислительной технике
- Веб-разработка
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
JRuby Сборник рецептов Москва, 2023 Джастин Эдельсон, Генри Лю Перевод с английского А. Слинкина Издание рекомендовано в качестве учебного пособия для студентов технических вузов 2-е издание, электронное
УДК 32.973.26-018.2 ББК 004.438 Э19 Э19 Эдельсон, Джастин. JRuby. Сборник рецептов / Дж. Эдельсон, Г. Лю ; пер. с англ. А. А. Слинкина. — 2-е изд., эл. — 1 файл pdf : 236 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-481-0 Интересующемуся языком JRuby вряд ли нужны руководства по Ruby, Rails или Java — требуется лишь узнать, как решить ту или иную конкретную задачу. В этой книге вы найдете практические рецепты по работе с данной реализацией языка Ruby на платформе Java. Специально рассмотрены такие вопросы, как развертывание веб-приложений Rails на Java-серверах, интеграция программ на JRuby с технологиями из мира Java, разработка персональных приложений на JRuby с помощью инструментальных библиотек на Java и многое другое. Интерпретатор JRuby сочетает в себе простоту и легкость использования Ruby с развитыми библиотеками и технологиями Java, и это открывает совершенно новые возможности для применения Ruby, Rails и Java. Эта книга даст вам возможность воспользоваться всем потенциалом языка JRuby. УДК 32.973.26-018.2 ББК 004.438 Электронное издание на основе печатного издания: JRuby. Сборник рецептов / Дж. Эдельсон, Г. Лю ; пер. с англ. А. А. Слинкина. — Москва : ДМК Пресс, 2012. — 240 с. — ISBN 978-5-94074-589-1. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-481-0 © Оформление, издание, ДМК Пресс
Краткое содержание ПРЕДИСЛОВИЕ ........................................................................ 8 ГЛАВА 1. ПРИСТУПАЯ К РАБОТЕ ................................... 13 ГЛАВА 2. JRUBY ON RAILS ................................................. 49 ГЛАВА 3. ИНТЕГРАЦИЯ С JAVA ....................................... 85 ГЛАВА 4. JAVA В СИСТЕМАХ МАСШТАБА ПРЕДПРИЯТИЯ..................................................................... 111 ГЛАВА 5. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС И ГРАФИЧЕСКИЕ ПРИЛОЖЕНИЯ ..... 147 ГЛАВА 6. ИНСТРУМЕНТЫ СБОРКИ ............................. 181 ГЛАВА 7. ТЕСТИРОВАНИЕ .............................................. 205 ГЛАВА 8. СООБЩЕСТВО ПОЛЬЗОВАТЕЛЕЙ JRUBY ....................................................................................... 227 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ .......................................... 232
Содержание Предисловие ............................................................................ 8 Предполагаемая аудитория ........................................................... 8 Организация материала ................................................................ 8 Типографские соглашения ............................................................ 9 О примерах кода .......................................................................... 10 Доступность на Safari ................................................................... 10 Вопросы и замечания .................................................................. 10 Благодарности ............................................................................. 11 Глава 1. Приступая к работе ........................................... 13 1.0. Введение ............................................................................... 14 1.1. Установка JRuby .................................................................... 17 1.2. Управление пакетами с помощью RubyGems ........................ 21 1.3. Одновременное использование Ruby и JRuby ....................... 22 1.4. Совместное использование gemпакетов ............................. 24 1.5. Обращение к Javaклассам из Ruby....................................... 25 1.6. Преобразование Rubyмассива в Javaмассив...................... 29 1.7. Включение JARфайлов в путь поиска классов ...................... 30 1.8. Расширение Javaкласса в Ruby ............................................ 31 1.9. Реализация Javaинтерфейса на Ruby .................................. 32 1.10. Открытие Javaклассов в JRuby ........................................... 37 1.11. Конфигурирование Eclipse для разработки на языке JRuby .... 39 1.12. Конфигурирование NetBeans для разработки на JRuby....... 43 1.13. Распознавание платформы в приложении JRuby ................ 47 Глава 2. JRuby on Rails ....................................................... 49 2.0. Введение ............................................................................... 50 2.1. Установка и настройка Rails................................................... 51 2.2. Пакетирование приложения Rails для работы в среде Java EE............................................................................. 54 2.3. Вебприложения с внешним репозиторием gemпакетов ..... 56 2.4. Конфигурирование сервлета JRubyRack.............................. 57 2.5. Пакетирование приложения Rails с источником данных JNDI ..... 58 2.6. Развертывание Rails на сервере Tomcat ................................ 59 2.7. Развертывание Rails на сервере JBoss .................................. 62 2.8. Развертывание Rails на сервере Jetty .................................... 64
Содержание 5 2.9. Развертывание Rails с помощью jetty_rails ............................. 65 2.10. Развертывание Rails на сервере Mongrel ............................. 68 2.11. Развертывание Rails на сервере GlassFish v2....................... 69 2.12. Gemпакет GlassFish v3 ........................................................ 71 2.13. Использование библиотеки ActiveRecord вне Rails............... 72 2.14. Получение информации о Javaсервлете ............................ 74 2.15. Конфигурирование хранилища сеансов .............................. 75 2.16. Управление классами, каталогами и прочими файлами, упакованными в WARфайл .......................................................... 75 2.17. Изменение имени WARфайла и местоположения рабочей области ........................................................................................ 77 2.18. Развертывание приложения Rails в корневом контексте ..... 77 2.19. Создание приложения Rails в интегрированной среде Aptana Studio ................................................................................ 79 2.20. Доступ к статическим файлам из приложения Rails, работающего в контейнере Java EE ............................................. 82 Глава 3. Интеграция с Java .............................................. 85 3.0. Введение ............................................................................... 86 3.1. Выполнение Rubyкода из Javaприложения ......................... 87 3.2. Вызов JRuby с помощью каркаса Bean Scripting Framework .... 91 3.3. Вызов JRuby с помощью технологии Java Scripting ............... 93 3.4. Протоколирование из Ruby с помощью библиотеки Jakarta Commons Logging............................................................. 95 3.5. Использование встроенных в Java средств параллельной обработки .................................................................................... 97 3.6. Создание методовакцессоров в духе JavaBean ................. 100 3.7. Написание единообразного кода ........................................ 101 3.8. Преобразование XMLдокументов с помощью библиотеки TrAX ......................................................................... 102 3.9. Создание пула сред исполнения JRuby ............................... 104 3.10. Удаленное управление с помощью технологии JMX .......... 106 3.11. Доступ к платформеннозависимым библиотекам из JRuby ..................................................................................... 108 Глава 4. Java в системах масштаба предприятия ......................................................................... 111 4.0. Введение ............................................................................. 112 4.1. Создание контекста JNDI .................................................... 113
Содержание 6 4.2. Отправка JMSсообщений................................................... 115 4.3. Получение JMSсообщений ................................................ 118 4.4. Реализация компонента Enterprise JavaBean на JRuby ........ 120 4.5. Определение Springкомпонентов на JRuby ........................ 123 4.6. Создание самообновляемых Springкомпонентов на JRuby ..................................................................................... 127 4.7. Встраивание Springкомпонентов, написанных на JRuby .... 130 4.8. Реализация Awareинтерфейсов Spring в JRubyобъектах ...... 131 4.9. Создание MVCконтроллеров Spring с помощью JRuby ...... 134 4.10. Hibernate и JRuby ............................................................... 137 4.11. Java Persistence API и JRuby............................................... 140 4.12. Выполнение вызовов по протоколу SOAP .......................... 141 4.13. Упрощение доступа к LDAPкаталогу ................................. 143 Глава 5. Пользовательский интерфейс и графические приложения ................. 147 5.0. Введение ............................................................................. 148 5.1. Создание приложений Swing ............................................... 148 5.2. Обработка событий Swing ................................................... 150 5.3. Долго работающие задачи в приложениях Swing ................ 151 5.4. Пакетирование автономных приложений ............................ 153 5.5. Пакетирование JRubyприложений, запускаемых по технологии Web Start ............................................................. 155 5.6. Написание аплетов на JRuby ............................................... 157 5.7. Манипулирование изображениями ..................................... 161 5.8. Создание приложений SWT ................................................. 164 5.9. Доступ к рабочему столу ..................................................... 166 5.10. Доступ к системному лотку ................................................ 167 5.11. Разработка приложений Swing на предметноориентированных языках на базе JRuby ............. 169 5.12. Использование библиотеки Monkeybars для разработки приложений Swing ............................................ 173 5.13. Создание приложений Qt с помощью JRuby ...................... 177 Глава 6. Инструменты сборки ...................................... 181 6.0. Введение ............................................................................. 182 6.1. Включение Rubyсценариев в процесс сборки системой Ant .............................................................................. 182
Содержание 7 6.2. Применение Ruby в условных конструкциях Ant .................. 185 6.3. Написание задания Ant на Ruby ........................................... 187 6.4. Включение Rubyсценариев в процесс сборки системой Maven ......................................................................... 188 6.5. Написание подключаемого к Maven модуля на JRuby .......... 190 6.6. Сборка Javaпроектов с помощью Raven ............................. 193 6.7. Ссылка на библиотеки в Raven ............................................ 195 6.8. Организация частного репозитория Raven.......................... 196 6.9. Прогон тестов JUnit с помощью Raven ................................. 197 6.10. Сборка Javaпроектов с помощью Buildr ........................... 198 6.11. Ссылка на библиотеки в Buildr ........................................... 201 6.12. Сборка с помощью Rake в контексте сервера Hudson ....... 202 6.13. Добавление Rubyсценария в качестве задачи сервера Hudson ....................................................................................... 203 Глава 7. Тестирование..................................................... 205 7.0. Введение ............................................................................. 206 7.1. Автономное тестирование Javaкода с помощью Test/Unit ..... 206 7.2. Автономное тестирование Javaкода с помощью библиотеки dust ......................................................................... 209 7.3. Автономное тестирование Javaкода с помощью библиотеки Expectations ............................................................ 210 7.4. Тестирование Javaкода с помощью RSpec ......................... 212 7.5. Создание mockобъектов с помощью библиотеки Mocha ..... 217 7.6. Модификация пути поиска классов для JtestR..................... 219 7.7. Группировка тестов для JtestR ............................................ 219 7.8. Аргументы командной строки при запуске JtestR ................ 220 7.9. Совместное использование JtestR и Ant .............................. 222 7.10. Совместное использование JtestR и Maven ....................... 223 7.11. Повышение производительности JtestR ............................ 224 Глава 8. Сообщество пользователей JRuby ......... 227 8.0. Введение ............................................................................. 228 8.1. Сборка JRuby из исходных кодов ........................................ 228 8.2. Отправка извещения о недоработке в JRuby ....................... 229 8.3. Списки рассылки JRuby ....................................................... 231 Предметный указатель .................................................. 232
Предисловие Язык JRuby – это просто Ruby, воспользовавшийся преимуществами виртуальной машины Java. Он взял все лучшее от Java и дополнил Ruby целым рядом фантастических возможностей. – Чарльз Наттер, руководитель проекта JRuby, Twitter, 7 августа 2008 В этом высказывании Чарльз Наттер кратко выразил оба аспекта, которые в последнее время привлекли внимание к проекту JRuby: вопервых, тот факт, что Java – это отличная платформа, пригодная для самых разных языков, а не только собственно для Java, а, вовторых, рост интереса к языку программирования Ruby. В этой книге мы рассмотрим множество возможных вариантов использования JRuby. Ели говорить словами Чарльза, то в одних рецептах речь пойдет о том лучшем, что взято от Java, в других – о фантастических возможностях, привнесенных в Ruby, а в третьих – о том и другом вместе. Предполагаемая аудитория Если вы хотите получить от JRuby максимум возможного, то должны свободно переходить от Java к Ruby и обратно. Работая над этой книгой, мы ориентировались на читателя, который в той или иной мере владеет обоими языками, хотя, быть может, одним лучше, чем другим. Поэтому обширного введения вы здесь не найдете, разве что в первой главе, где мы описываем, в каких вопросах Ruby и Java похожи, а в каких – различаются. Вообще говоря, мы ставили себе целью не рассказать о том или ином уже имеющемся в Ruby или Java средстве, а объяснить, как JRuby позволяет воспользоваться имеющимися средствами или расширить их. Так, рецепты в главе, посвященной JRuby on Rails, рассчитаны на читателя, который уже создал хотя бы одно (работающее) приложение Rails. Организация материала Глава 1. Приступая к работе Эта глава представляет собой краткое введение в JRuby, за которым следует описание ряда простейших приемов работы с этим языком, в том числе применение системы управления пакетами RubyGems и техника обращения к Javaкоду из программы на Ruby. В конце главы приводятся рецепты, касающиеся установки и настройки различных интегрированных сред разработки (IDE) для работы с JRuby.
Предисловие 9 Глава 2. JRuby on Rails Эта глава посвящена разнообразным сценариям развертывания приложений Ruby on Rails с использованием JRuby. Глава 3. Интеграция с Java Эта глава начинается несколькими рецептами о вызове Rubyкода из Javaпрограммы. Затем следуют рецепты, описывающие обращение из Ruby к таким популярным Javaбиблиотекам, как Java Native Access (JNA) и Jakarta Commons Logging. Глава 4. Java в системах масштаба предприятия Все рецепты, собранные в этой главе, относятся к использованию JRuby в таких предназначенных для создания крупномасштабных систем каркасах, как JMS, JNDI, EJB, Spring и Hibernate. Глава 5. Пользовательский интерфейс и графические приложения В этой главе описываются некоторые основанные на JRuby каркасы для создания графических пользовательских интерфейсов. Сюда же включены рецепты, касающиеся операций над графическими изображениями, аплетов и интеграции с рабочим столом. Глава 6. Инструменты сборки В этой главе речь пойдет об использовании JRuby для усовершенствования процедуры сборки Javaпроектов. Оба наиболее популярных в мире Java инструмента сборки – Ant и Maven – допускают различные способы подключения JRuby. Здесь же вы найдете рецепты, посвященные программам Raven и Buildr, которые ориентированы исключительно на JRuby. Глава 7. Тестирование Эта глава посвящена главным образом пакету JtestR, который включает в себя JRuby и ряд популярных инструментов тестирования для языка Ruby. Содержащиеся здесь рецепты научат вас писать на Ruby тесты для Javaпрограмм. Глава 8. Сообщество пользователей JRuby Это последняя глава. В нее включены сведения о том, как можно принять участие в жизни сообщества пользователей JRuby. Типографские соглашения В книге применяются следующие соглашения: Курсив Таким начертанием выделяются URL, имена каталогов и файлов, параметры. Иногда оно применяется для выделения важной информации. Ìîíîøèðèííûé øðèôò Применяется для листингов программ, а также внутри текста для обозначения элементов программы, как то: имена пространств имен, классов и методов.
Предисловие 10 Ìîíîøèðèííûé êóðñèâ Текст, вместо которого надо подставить значения, вводимые пользователем. Этот значок обозначает совет, рекомендацию или замечание общего характера. Этот значок обозначает предупреждение или предостережение. О примерах кода Эта книга призвана помогать вам в работе. Поэтому вы можете использовать приведенный в ней код в собственных программах и в документации. Спрашивать у нас разрешение необязательно, если только вы не собираетесь воспроизводить значительную часть кода. Например, не требуется разрешение, чтобы включить в свою программу несколько фрагментов кода из книги. Однако для продажи или распространения примеров на компактдиске нужно получить разрешение. Можно без ограничений цитировать книгу и примеры в ответах на вопросы. Но чтобы включить значительные объемы кода в документацию по собственному продукту, нужно получить разрешение. Мы высоко ценим, хотя и не требуем, ссылки на наши издания. В ссылке обычно указываются название книги, имя автора, издательство и ISBN, например: «JRuby Cookbook, by Justin Edelson and Henry Liu. Copyright 2009 Justin Edelson and Henry Liu, 9780596519803». Если вы полагаете, что планируемое использование кода выходит за рамки изложенной выше лицензии, пожалуйста, обратитесь к нам по адресу permissions@oreilly.com. Доступность на Safari Если на обложке вашей любимой книги присутствует значок Safari® Enabled, это означает, что книга доступна онлайн в сетeвой библиотеке Safari издательства O’Reilly. У Safari есть преимущество перед обычными электронными книгами. Это виртуальная библиотека, которая позволяет легко находить тысячи технических книг, копировать примеры программ, загружать отдельные главы и быстро получать точную и актуальную информацию. Бесплатный доступ по адресу http://safari.oreilly.com. Вопросы и замечания Мы тщательно проверили информацию, приведенную в этой книге, и протестировали код. Однако полностью исключить ошибки и опечатки невозможно. Если вы