Статьи

JRuby 1.5 объединяет Maven и Ant


JVM-
версия Ruby сегодня представляет собой
версию 1.5 с интеграциями, которые переносят часть сборки и конфигурации mojo с платформы Java на Ruby. Разработчики Java также найдут язык JRuby более дружественным в этом выпуске. Новые функции, которые действительно выделяются в 1.5, включают интеграцию Maven и Ant, а также улучшенную поддержку Windows; но сначала давайте посмотрим на некоторые
советы по JRuby 1.5, предоставленные DZone Владимиром Сизиковым
, основным разработчиком JRuby.

Чтобы узнать, насколько быстро или медленно JRuby 1.5 загружает Gems или библиотеки, запустите этот скрипт:

jruby -b -J-Djruby.debug.loadService.timing=true -e "require 'rubygems'"

Вы получите вывод, как
это :

#>jruby -b -J-Djruby.debug.loadService.timing=true script\server
-> builtin/core_ext/symbol
<- builtin/core_ext/symbol - 35ms
-> enumerator
<- enumerator - 6ms
-> D:/work/jruby-dev/rails/xxx/config/boot
-> rubygems
-> rubygems/defaults
<- rubygems/defaults - 5ms
-> thread
<- thread - 7ms
-> etc
<- etc - 5ms
-> rbconfig
<- rbconfig - 7ms
-> rubygems/exceptions
<- rubygems/exceptions - 5ms
-> rubygems/version
-> rubygems/requirement
<- rubygems/requirement - 6ms

Далее, если вы хотите узнать, какие библиотеки требуются JRuby или куда они загружаются, вы можете запустить это:

jruby -J-Djruby.debug.loadService=true -e "require 'yaml'"

и получить вывод, как
это :

jruby -J-Djruby.debug.loadService=true -e "require 'yaml'"

LoadService: trying builtinLib: builtin/core_ext/symbol.class
LoadService: trying builtinLib: builtin/core_ext/symbol.rb
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/1.8/builtin/core_ext/symbol.class
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/1.8/builtin/core_ext/symbol.rb
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.class
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb
LoadService: found: file:/D:/work/jruby-dev/jruby/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb
LoadService: trying builtinLib: enumerator.class
LoadService: trying builtinLib: enumerator.rb
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/1.8/enumerator.class
LoadService: trying resourceFromLoadPath: D:/work/jruby-dev/jruby/lib/ruby/site_ruby/1.8/enumerator.rb

Кроме того, если у вас возникли проблемы при запуске JRuby в Windows, вы можете попробовать запустить jruby.exe -Xtrace
output.log и посмотреть подробный вывод журнала в
файле
output.log .

Ant и Rake

Хотя в JRuby 1.5 реализована более тесная интеграция с Apache Ant, разработчики JRuby также разработали бесшовную двустороннюю интеграцию между Rake и Ant. В основном это означает, что вы можете смешивать и сочетать инструменты в одном проекте. Разработчики Java, которые борются с минимальной поддержкой Ant для императивных конструкций программирования, возможно, найдут утешение в более чистом синтаксисе Rake и полностью императивной среде программирования.   

Разработчики Ruby, использующие Rake, сочтут интеграцию Ant полезной для выполнения распространенных задач Java, поскольку Rake не имеет много стандартизированных кроссплатформенных задач, таких как Ant. Ant также создаст файлы build.xml, чтобы вы могли использовать программное обеспечение, такое как NetBeans, которому нужен такой файл. Вы можете существенно использовать сильные стороны каждого инструмента. В Rake можно вызывать Ant, а цели Ant можно называть задачами Rake. Импорт файла сборки Ant делает его цели доступными для Rake как задачи, позволяя пользователям Rake взаимодействовать с файлами сборки Ant и их зависимыми системами.

Вот запись в
блоге, показывающая, как использовать Apache Ivy с интеграцией Ant в JRuby 1.5.

специалист

С некоторой помощью Sonatype JRuby 1.5 достиг полной интеграции RubyGems с каждым артефактом Maven. Пользователи JRuby 1.5 получат доступ к 60 тысячам дополнительных библиотек с помощью этой новой функции. Любая библиотека Java, когда-либо опубликованная в общедоступном репозитории Maven, может быть установлена ​​как Gems (или использована для зависимостей) в JRuby 1.5.

Команда JRuby справилась с этим с помощью Sonatype, создав сервер Maven, который выглядит как стандартный репозиторий Gem для JRuby. С этим изменением многие библиотеки Java так же просты в использовании, как и библиотеки Ruby в JRuby. Поскольку компании продолжают использовать JRuby для розничных веб-сайтов и приложений для заправки авиакомпаний, этот язык будет становиться все более прибыльным для корпоративных разработчиков.