<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag jruby</title>
    <link>http://blog.zabiello.com/articles/tag/jruby</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>JRuby 1.1 final</title>
      <description>&lt;p&gt;Jest w ko&#324;cu oczekiwana wersja stabilna &lt;strong&gt;JRuby 1.1&lt;/strong&gt;. W chwili pisania tej notki, nie ma o tym jeszcze informacji &lt;a href="http://jruby.codehaus.org/"&gt;na stronie g&#322;&#243;wnej&lt;/a&gt;, ale jest ju&#380; &lt;a href="http://dist.codehaus.org/jruby/"&gt;do pobrania&lt;/a&gt;. To bardzo dobra wiadomo&#347;&#263;, bo JRuby 1.1 ju&#380; w wersjach rozwojowych by&#322; znacznie szybszy od poprzedniej 1.0, a w wielu testach bi&#322; wydajno&#347;ci&#261; nie tylko Ruby 1.8.6 i 1.9, ale tak&#380;e Pythona 2.5.1. Dzi&#281;ki JRuby webowe frameworki takie jak &lt;a href="http://rubyonrails.pl"&gt;Rails&lt;/a&gt; czy &lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt; uzyskuj&#261; pe&#322;ny dost&#281;p do bibliotek Javy i tym samym jakiekolwiek uwagi co do (nie)dojrza&#322;o&#347;ci bibliotek Rubiego staj&#261; si&#281; nieistotne.&lt;/p&gt;</description>
      <pubDate>Mon, 31 Mar 2008 00:51:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:c7b2c8e8-bcd2-484d-b850-9b908c67015e</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/03/31/jruby11</link>
      <category>jruby</category>
      <category>ruby</category>
      <category>java</category>
    </item>
    <item>
      <title>Merb 0.9.2 i Sake</title>
      <description>&lt;p&gt;&lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt; wchodzi w ko&#324;cow&#261; faz&#281; przed wydaniem wersji &amp;#8220;1.0 (RailsConf)&amp;#8221; . W&#322;a&#347;ciwie nie zdziwi&#322;bym si&#281; jakby lada dzie&#324; ta wesja wysz&#322;a bo &lt;a href="http://merb.lighthouseapp.com/projects/7435-merb-more/milestones"&gt;prawie wszystkie&lt;/a&gt; tickety z problemami s&#261; ju&#380; wyczyszczone. Rozproszony system wersjonowania kodu &amp;#8211; &lt;a href="http://pl.wikibooks.org/wiki/Git"&gt;Git&lt;/a&gt; &amp;#8211; sprawdza si&#281; doskonale. Rozproszony Rake &amp;#8211; &lt;a href="http://errtheblog.com/posts/60-sake-bomb"&gt;Sake&lt;/a&gt; &amp;#8211; tak&#380;e. Nowy Merb wspiera &lt;a href="http://ebb.rubyforge.org/"&gt;Ebb&lt;/a&gt;. Jest on szybszy od &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrela&lt;/a&gt;, to najszybszy serwer &lt;span class="caps"&gt;HTTP&lt;/span&gt; dla Rubiego wykorzystuj&#261;cy interfejs &lt;a href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Sake&lt;/strong&gt;, to &lt;a href="http://rake.rubyforge.org/"&gt;Rake&lt;/a&gt; tylko, &#380;e dzia&#322;aj&#261;cy zdalnie! Mo&#380;na plik z taskami dla Rake wstawi&#263; gdziekolwiek w internecie i ka&#380;dy mo&#380;e go u&#380;ywa&#263;. Najlepiej zobaczy&#263; to na przyk&#322;adzie.&lt;/p&gt;


	&lt;p&gt;Stworzy&#322;em w Githubie mini projekt &lt;a href="http://github.com/hipertracker/merb-scripts/tree/master"&gt;merb-scripts&lt;/a&gt; gromadz&#261;cym r&#243;&#380;ne wygodne zadania w kontek&#347;cie Merba.&lt;/p&gt;


	&lt;p&gt;Sprawdzenie dost&#281;pnych zada&#324;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_bash "&gt;$ sake -T http://blog.zabiello.com/merb-scripts.sake
sake merb:pull         # Pull merb-core, merb-more, merb-plugins
sake merb:uninstall    # Uninstall all Ruby merb* gems
sake merb:juninstall   # Uninstall all JRuby merb* gems
sake merb:repackage    # Repackage merb-&amp;lt;core|more|plugins&amp;gt; (with all subgems)
sake merb:install      # Install all Merb gems and subgems
sake merb:jinstall     # Install all Merb gems and subgems for JRuby&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Dodanie listy zada&#324; do lokalnego repozytorium Sake (dok&#322;adniej: do pliku ~/.sake).&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_bash "&gt;sake -i http://blog.zabiello.com/merb-scripts.sake
sake -T # poka&#380; now&#261; list&#281; zada&#324;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Sprawdzenie &#378;r&#243;d&#322;a dla danej komendy:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;sake&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="ident"&gt;merb&lt;/span&gt;&lt;span class="symbol"&gt;:pull&lt;/span&gt;

&lt;span class="ident"&gt;desc&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Pull merb-core, merb-more, merb-plugins&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;task&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;merb:pull&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="constant"&gt;Rake&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Task&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;merb:init&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;].&lt;/span&gt;&lt;span class="ident"&gt;invoke&lt;/span&gt;
  &lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;merb-core&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;merb-more&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;merb-plugins&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;dir&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;exists?&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;dir&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;then&lt;/span&gt;
      &lt;span class="ident"&gt;sh&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;cd &lt;span class="expr"&gt;#{dir}&lt;/span&gt;; git pull&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;else&lt;/span&gt;
      &lt;span class="ident"&gt;sh&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;git clone git://github.com/&lt;span class="expr"&gt;#{@git_fork}&lt;/span&gt;/&lt;span class="expr"&gt;#{dir}&lt;/span&gt;.git&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;&#346;ci&#261;gni&#281;cie najnowszej wersji rozwojowej Merba, kompilacja gem&#243;w i instalacja dla JRuby (musi by&#263; dost&#281;pny w systemie)&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_bash "&gt;sake merb:pull merb:repackage merb:jinstall&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Dla tych, co jeszcze nie wiedz&#261;. Jest ju&#380; dost&#281;pny &lt;a href="http://dist.codehaus.org/jruby/"&gt;JRuby &lt;span class="caps"&gt;RC3&lt;/span&gt;&lt;/a&gt; i Merb mo&#380;e by&#263; uruchamiany pod JRuby tak jak i Rails.&lt;/p&gt;</description>
      <pubDate>Tue, 25 Mar 2008 07:11:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ac3d5ab1-00e0-46d8-903f-ab6320adc8ce</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/03/25/merb092-sake</link>
      <category>rake</category>
      <category>sake</category>
      <category>ruby</category>
      <category>merb</category>
      <category>jruby</category>
    </item>
    <item>
      <title>RadRails 1.0</title>
      <description>&lt;p&gt;Pog&#322;oski o &#347;mierci RadRails by&#322;y chyba troch&#281; przedwczesne. Firma Aptana wypu&#347;ci&#322;a przedwczoraj &lt;a href="http://www.aptana.com/node/320"&gt;nowy RadRails 1.0&lt;/a&gt;. Wewn&#281;trznie u&#380;ywany jest JRuby 1.11RC2. RadRails pozwala na uruchamianie Rubiego, JRuby i &amp;#8230; Rubiniusa. Chwal&#261; si&#281; nawet, &#380;e maj&#261; &lt;a href="http://www.aptana.com/rails/#features"&gt;wi&#281;cej funkcji&lt;/a&gt; ni&#380; &lt;a href="http://www.netbeans.org/features/ruby/index.html"&gt;Netbeans 6&lt;/a&gt;. Aptana dodatkowo zapewnia integracj&#281; z &lt;a href="http://www.aptana.com/jaxer"&gt;Jaxerem&lt;/a&gt;, wsparcie do Adobe &lt;span class="caps"&gt;AIR&lt;/span&gt;, i jak zwykle bardzo dobry parser do &lt;span class="caps"&gt;HTML&lt;/span&gt;, CSS i debugger JavaScript. Mimo wszystko, nie wiem czy to wszystko wystarczy, bo Netbeans 6 ma znacznie bardziej inteligentny, kontekstowy analizator kodu Rubiego, podczas gdy RadRails u&#380;ywa znacznie mniej wyrafinowany plugin &lt;span class="caps"&gt;RDT&lt;/span&gt; (o kt&#243;rym poza tym chodz&#261; od dawna pog&#322;oski &#380;e &lt;a href="http://www.mail-archive.com/haml@googlegroups.com/msg02474.html"&gt;przesta&#322; by&#263; rozwijany&lt;/a&gt;). W ka&#380;dym razie takie wsp&#243;&#322;zawodnictwo i obecno&#347;&#263; dw&#243;ch tak dobrych &lt;span class="caps"&gt;IDE&lt;/span&gt; to na pewno dobra wiadomo&#347;&#263; dla wszystkich sympatyk&#243;w Ruby on Rails.&lt;/p&gt;</description>
      <pubDate>Thu, 13 Mar 2008 03:47:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:61d77d59-5ef6-4d7b-a6db-75f459fc9842</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/03/13/radrails-1-0</link>
      <category>radrails</category>
      <category>ruby</category>
      <category>rails</category>
      <category>aptana</category>
      <category>eclipse</category>
      <category>jruby</category>
      <category>rubinius</category>
    </item>
    <item>
      <title>Szalej&#261;ce frameworki Rubiego i Rack/WSGI</title>
      <description>&lt;p&gt;Merb w wersji 0.9 poszed&#322; na ca&#322;o&#347;&#263; i oparli sw&#243;j midleware na &lt;a href="http://rack.rubyforge.org/"&gt;Rack&amp;#8217;u&lt;/a&gt;. Jej tw&#243;rcy nie kryj&#261; si&#281; &#380;e wzorowali si&#281; na pythonowej bibliotece &lt;a href="http://www.wsgi.org/wsgi"&gt;&lt;span class="caps"&gt;WSGI&lt;/span&gt;&lt;/a&gt;. Biblioteka ta robi niez&#322;&#261; furor&#281; w kr&#281;gach Rubiego. Powstaje sporo r&#243;&#380;nych mikroframework&#243;w lub szybkich serwer&#243;w &lt;span class="caps"&gt;HTTP&lt;/span&gt; pracuj&#261;cych asynchronicznie i wykorzystuj&#261;cych Rack. Niedawno powsta&#322; &#347;wietny &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin&lt;/a&gt;, a ju&#380; mo&#380;na przeczyta&#263; o &lt;a href="http://www.rubyinside.com/ebb-web-framework-http-server-786.html"&gt;2x szybszy Ebb&lt;/a&gt;. Co ciekawe, Ebb chce docelowo obs&#322;ugiwa&#263; zar&#243;wno frameworki Rubiego jak i &lt;strong&gt;Pythona&lt;/strong&gt;! Jestem ciekaw czy b&#281;dzie w stanie zdetronizowa&#263; serwer &lt;a href="http://pythonpaste.org/"&gt;Paste&lt;/a&gt;... Rack doczeka&#322; si&#281; ju&#380; swojej &lt;a href="http://github.com/booleanman/rackinterfacefilter/tree/master"&gt;implementacji w JRuby&lt;/a&gt;! Umo&#380;liwia to  tym samym odpalanie w &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; wszystkich framework&#243;w kt&#243;re korzystaj&#261; z Rack&amp;#8217;a.&lt;/p&gt;


	&lt;h2&gt;Frameworki&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://rubyonrails.pl"&gt;&lt;strong&gt;Rails&lt;/strong&gt;&lt;/a&gt; &amp;#8211; najwa&#380;niejszy framework Rubiego, mo&#380;e by&#263; odpalany za pomoc&#261; Thina kt&#243;ry &lt;em&gt;u&#380;ywa Rack&lt;/em&gt;. Rails mo&#380;na odpali&#263; na JRuby nawet prosto z &lt;a href="http://www.netbeans.org/features/ruby/index.html"&gt;Netbeans 6&lt;/a&gt; :)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://merbivore.com/"&gt;&lt;strong&gt;Merb&lt;/strong&gt;&lt;/a&gt; &amp;#8211; pretendent do detronizacji Rails, _u&#380;ywa Rack_i tym samym mo&#380;na go odpali&#263; na JRuby.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://ramaze.net/"&gt;Ramaze&lt;/a&gt; &amp;#8211; podobnie do Merba, stara si&#281; promowa&#263; bardziek elastyczne podej&#347;cie, &lt;em&gt;u&#380;ywa Rack&lt;/em&gt;, raczej nie zagrozi Merbowi&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://fuzed.rubyforge.org/"&gt;Fuzed&lt;/a&gt; &amp;#8211; Rails z &lt;a href="http://yaws.hyber.org/"&gt;&lt;span class="caps"&gt;YAWS&lt;/span&gt;&lt;/a&gt; (szybkim serwerem &lt;span class="caps"&gt;HTTP&lt;/span&gt; napisanym w &lt;a href="http://en.wikipedia.org/wiki/Erlang_programming_language"&gt;Erlangu&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.nitroproject.org/"&gt;Nitro&lt;/a&gt; &amp;#8211; typu &lt;span class="caps"&gt;MVC&lt;/span&gt; z w&#322;asnym &lt;span class="caps"&gt;ORM&lt;/span&gt; &amp;#8211; &lt;a href="http://www.nitroproject.org/docs/rdoc/classes/Og.html"&gt;Ogg&lt;/a&gt; i naciskiem na &lt;span class="caps"&gt;AJAX&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://enigo.com/projects/iowa/"&gt;&lt;span class="caps"&gt;IOWA&lt;/span&gt;&lt;/a&gt; &amp;#8211; komponentowy, &lt;/li&gt;
		&lt;li&gt;&lt;a href="https://rubyforge.org/projects/wee/"&gt;Wee&lt;/a&gt; wzorowany na smalltalkowym &lt;a href="http://www.seaside.st/"&gt;Seaside&lt;/a&gt; u&#380;ywaj&#261;cym &lt;a href="http://en.wikipedia.org/wiki/Continuation"&gt;kontynuacji&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://sinatra.rubyforge.org/"&gt;Sinatra&lt;/a&gt; &amp;#8211; mikroframework wzorowany na minimalistycznym, pythonowym &lt;a href="http://webpy.org"&gt;Web.py&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://sergiosantos.info/2007/7/camping-a-ruby-microframework"&gt;Camping&lt;/a&gt; &amp;#8211; kolejny mikroframework w Ruby&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://rubywaves.com/"&gt;Wave&lt;/a&gt; &amp;#8211; wzorowany na Camping, te&#380; u&#380;ywa Rack i Rubiego wsz&#281;dzie gdzie si&#281; da.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://github.com/macournoyer/invisible/tree/master"&gt;Invisible&lt;/a&gt; mikroframework u&#380;ywaj&#261;cy Rack napisany w 35 linijkach kodu Rubiego (bardziej ciekawostka)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Mongrel i sp&#243;&#322;ka&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.webrick.org/"&gt;Webrick&lt;/a&gt; &amp;#8211; serwer http dost&#281;pny razem ze standardow&#261; bibliotek&#261; Rubiego&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://dev.robotcoop.com/Libraries/webrick-high-performance/classes/WEBrick/HighPerformanceServer.html"&gt;Highperformance Webrick&lt;/a&gt; &amp;#8211; szybsza wersja Webricka (u&#380;ywaj&#261;ca uniksowych fork&#243;w)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt; &amp;#8211; klasyka, napisany cz&#281;&#347;ciowo w C, to od niego zacz&#281;&#322;a si&#281; rewolucja i odej&#347;cie od FastCGI jako metody odpalania Rails&#243;w.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://swiftiply.swiftcore.org/mongrel.html"&gt;Swiftyply i evented_mongrel&lt;/a&gt; asychroniczne, szybsze wersje Mongrela&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://code.macournoyer.com/thin/"&gt;&lt;strong&gt;Thin&lt;/strong&gt;&lt;/a&gt; &amp;#8211; asynchroniczny web server u&#380;ywaj&#261;cy Mongrela i Rack&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://ebb.rubyforge.org/"&gt;&lt;strong&gt;Ebb&lt;/strong&gt;&lt;/a&gt; &amp;#8211; u&#380;ywa Rack, wi&#281;kszo&#347;&#263; kodu jest w C, dlatego jest taki szybki, na razie ma&#322;o dokumentacji, by&#263; mo&#380;e nast&#281;pca Thin&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Tue, 04 Mar 2008 22:56:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:bdcbae56-a710-43b1-84a6-77d5471f8cac</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/03/04/frameworki-rubiego-rack-wsgi</link>
      <category>merb</category>
      <category>jruby</category>
      <category>rack</category>
      <category>python</category>
      <category>ruby</category>
      <category>frameworks</category>
      <category>thin</category>
      <category>rails</category>
      <category>ramaze</category>
      <category>mongerl</category>
      <category>ebb</category>
      <category>fuzed</category>
    </item>
    <item>
      <title>W&#347;ciek&#322;y Zed i dyskusja wok&#243;&#322; Rubiego i Rails&#243;w</title>
      <description>&lt;p&gt;Ostatnio jest troch&#281; szumie w bran&#380;y po bezpardonowym (i niewybrednym) &lt;a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html"&gt;ataku Zeda Shaw&lt;/a&gt; uderzaj&#261;cym w kilka znanych postaci z kr&#281;g&#243;w Rubiego i Rails. Pewnie nikt by na to nie zwr&#243;ci&#322; uwagi gdyby nie to, &#380;e Zed jest autorem znanego projektu &lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt;. Cho&#263; wpis si&#281; &#378;le czyta (bo jest rozwlek&#322;y i niepotrzebnie przeplatany ci&#261;g&#322;ymi przekle&#324;stwami autora) to zwr&#243;ci&#322; uwag&#281; na kilka istotnych problem&#243;w.&lt;/p&gt;


	&lt;p&gt;Autor zwraca uwag&#281;, &#380;e core team Rails&#243;w dosy&#263; opornie i wolno reaguje na podsy&#322;ane uwagi i poprawki. Fakt, jedn&#261; z poprawek jak&#261; kiedy&#347; podes&#322;a&#322;em odno&#347;nie &#378;le dzia&#322;aj&#261;cej funkcji render_to_string uwzgl&#281;dniono po.. o&#347;miu miesi&#261;cach. Zed si&#281; wkurzy&#322;, &#380;e ignorowano jego uwagi a potem i tak wychodzi&#322;o na jego. Tak z po&#322;owa core teamu to wg niego banda idiot&#243;w z wyp&#322;ukanymi przez &lt;span class="caps"&gt;PHP&lt;/span&gt;  m&#243;zgami. Ze swej strony bym m&#243;g&#322; do tej listy niekompetencji owej &amp;#8220;bandy&amp;#8221; te&#380; co&#347; do&#322;o&#380;y&#263;, ale to nie jest najwa&#380;niejsze. Jest reszta, kt&#243;ra dobrze robi swoj&#261; robot&#281;.  Ale mo&#380;e taka krytyka podzia&#322;a jak kube&#322; zimnej wody i w ko&#324;cu ca&#322;y core team zacznie skupia&#263; si&#281; na jako&#347;ci i optymalizacji ju&#380; istniej&#261;cego kodu. Bo jak nie, to programi&#347;ci Rails zaczn&#261; sukcesywnie przesuwa&#263; si&#281; do konkurencyjnego projektu &lt;a href="http://merbivore.com/"&gt;Merb&lt;/a&gt;. Ezra Zygmuntowicz udowodni&#322;, &#380;e mo&#380;na napisa&#263; &amp;#8220;lepsze Railsy&amp;#8221; (szybsze,  wielow&#261;tkowe i bardziej przejrzyste). Podoba mi si&#281; in&#380;ynieryjne podej&#347;cie Ezry Zygmuntowicza. Jego Merb jest bardzo &#322;adny, przejrzysty i szybki. Co ciekawe, Ezra zatrudni&#322; kilku developer&#243;w &lt;a href="http://rubini.us/"&gt;Rubiniusa&lt;/a&gt;. Zapowiada si&#281; &#380;e Railsy w ko&#324;cu spotka&#322;y bardzo trudn&#261; konkurencj&#281; (i bardzo dobrze). Sytuacj&#281; Rals&#243;w pog&#322;&#281;bia to, &#380;e nowe &lt;span class="caps"&gt;ORM&lt;/span&gt;&amp;#8217;y takie jak &lt;a href="http://datamapper.org/why.html"&gt;DataMapper&lt;/a&gt; i &lt;a href="http://code.google.com/p/ruby-sequel/"&gt;Sequel&lt;/a&gt; r&#243;wnie&#380; stanowi&#261; zagro&#380;enie dla dominacji &lt;a href="http://ar.rubyonrails.com/"&gt;Active Record&lt;/a&gt; nawet w kontek&#347;cie Rails&#243;w.&lt;/p&gt;


	&lt;h3&gt;PickAxe i inne ksi&#261;&#380;ki&lt;/h3&gt;


	&lt;p&gt;Zed przeprowadzi&#322; bardzo ciekaw&#261; krytyk&#281; chwalonej &lt;a href="http://helion.pl/ksiazki/prruby.htm"&gt;PickAxe&lt;/a&gt;. Ostro rozjecha&#322; autora za u&#380;ywanie g&#322;upich przyk&#322;ad&#243;w, niezgodnego z konwencjami Rubiego nazewnictwem zmiennych, i co najwa&#380;niejsze, omini&#281;cie szerokim &#322;ukiem najwa&#380;niejszej i najbardziej atrakcyjnej cechy Rubiego &amp;#8211; &#322;atwo&#347;ci metaprogramowania. PickAxe, zdaniem Zeda, odwo&#322;uje si&#281; do starych praktyk projektowania obiektowego z roku 2001. Zed idzie nawet dalej, uwa&#380;a &#380;e ta ksi&#261;&#380;ka promuje z&#322;e nawyki programistyczne i zach&#281;ca do pisania z&#322;ego kodu. Twierdzi nawet, &#380;e ta ksi&#261;&#380;ka zamiast pom&#243;c, zaszkodzi&#322;a Rubiemu aby wcze&#347;niej wyp&#322;yn&#261;&#322; na szerok&#261; scen&#281;.&lt;/p&gt;


	&lt;p&gt;Faktycznie, w latach 2001-2004 o Ruby praktycznie nikt nie s&#322;ysza&#322;. Jakie&#347; nieliczne wyj&#261;tki uczy&#322;y si&#281; Rubiego na &lt;a href="http://www.ruby-doc.org/docs/ProgrammingRuby/"&gt;ksi&#261;&#380;ce Dave&amp;#8217;a Thomasa&lt;/a&gt; ale j&#281;zyk jako taki by&#322; czym&#347; bardzo malo znanym. Sytuacj&#281; zmieni&#322;o dopiero pojawienie &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; w 2005 roku, ktore spowodowa&#322;y &lt;strong&gt;znacz&#261;cy wzrost&lt;/strong&gt; popularno&#347;ci Rubiego (ja sam te&#380; zainteresowa&#322;em si&#281; te&#380; Railsami, a dopiero p&#243;&#378;niej Rubim). &lt;strong&gt;Dopiero Railsy pokaza&#322;y pi&#281;kno i moc metaprogramowania w Ruby&lt;/strong&gt;, co&#347; co zachwyci&#322;o rzesze ludzi, co&#347; czego nie maj&#261; inne j&#281;zyki. I nie wiem jak by si&#281; wysilano, nie da si&#281; uzyska&#263; tak pi&#281;knego i eleganckiego metaproramowania w &lt;span class="caps"&gt;PHP&lt;/span&gt;, Javie, czy nawet Pythonie. Zed bezpardonowo stwierdzi&#322;, &#380;e PickAxe tylko zaszkodzi&#322; Rubiemu zamiast mu pom&#243;c.&lt;/p&gt;


	&lt;p&gt;Wpierw mnie zaskoczy&#322;a ta opinia, ale p&#243;&#378;niej, jak si&#281; zastanowi&#322;em, to musz&#281; przyzna&#263; &#380;e du&#380;o w tym racji. Nigdy do mnie nie przemawia&#322;y u&#380;yte w ksi&#261;&#380;ce przyk&#322;ady. Ceni&#322;em j&#261; g&#322;&#243;wnie za to, &#380;e w og&#243;le jest cokolwiek na temat Rubiego, i &#380;e opisano bibliotek&#281; standardow&#261; Rubiego. Jestem ciekaw, co Zed by powiedzia&#322; na ksi&#261;&#380;k&#281; Hala Fultona &amp;#8220;The Ruby Way&amp;#8221;. Jej drugie wydanie w&#322;a&#347;nie &lt;a href="http://helion.pl/ksiazki/swruby.htm"&gt;zosta&#322;o wydane po polsku&lt;/a&gt;. Szkoda tylko, &#380;e ma w polskim wydaniu myl&#261;cy tytu&#322; sugeruj&#261;cy, &#380;e to tylko jaki&#347; zestaw 400 przyk&#322;ad&#243;w. Ksi&#261;&#380;k&#281; si&#281; dosy&#263; dobrze czyta. Lepiej ni&#380; PickAxe. T&#261; pierwsz&#261; troch&#281; traktuj&#281; jak podr&#281;cznik do bibliotek Rubiego.&lt;/p&gt;


	&lt;p&gt;Co ciekawe, dosta&#322;o si&#281; te&#380; troch&#281; ksi&#261;&#380;ce &lt;a href="http://helion.pl/ksiazki/agilep.htm"&gt;Agile&lt;/a&gt; :) Ale generalnie du&#380;o nie ma co si&#281; przyczepi&#263;. Ksi&#261;&#380;ka jest raczej dobrze napisana, szkoda tylko, &#380;e opisuje starsze Rails 1.2 a nie 2.0. No c&#243;&#380;, nie wiadomo czy wyjdzie trzecie wydanie, bo &lt;a href="http://www.loudthinking.com/about.html"&gt;&lt;span class="caps"&gt;DHH&lt;/span&gt;&lt;/a&gt; jako&#347; si&#281; do niego nie pali.&lt;/p&gt;


	&lt;p&gt;Z ciekawo&#347;ci sprawdzi&#322;em inn&#261; ksi&#261;&#380;k&#281;, polecan&#261; przez Zeda, &lt;a href="http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321445619/"&gt;The Rails Way&lt;/a&gt;. Faktycznie wygl&#261;da na dobrze napisan&#261; i uwzgl&#281;dnia nowsze cechy Rails&#243;w. Jest dost&#281;pna online (cho&#263; nie za darmo) przez &lt;a href="http://safari.oreilly.com/"&gt;O&amp;#8217;Reilly Safari Books Online&lt;/a&gt; (tak w og&#243;le to &#347;wietny serwis, kt&#243;ry warto sobie zaprenumerowa&#263;).&lt;/p&gt;


	&lt;h3&gt;Rubinius, JRuby i Jubinius&lt;/h3&gt;


	&lt;p&gt;Zed si&#281; wkurzy&#322;, nabluzga&#322;, ale zwr&#243;ci&#322; uwag&#281; na kilka wa&#380;nych kwestii. Tak&#380;e odno&#347;nie samego Rubiego to pochwa&#322;a dosta&#322;a si&#281; &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; i &lt;a href="http://rubini.us/"&gt;Rubiniusowi&lt;/a&gt;. Szczeg&#243;lnie ten drugi mo&#380;e wkr&#243;tce kompletnie zagrozi&#263; dominacji &lt;span class="caps"&gt;MRI&lt;/span&gt; jaki jest u&#380;ywany w dzisiejszej, opartej na C, implemementacji Rubiego. Je&#347;li szybko nie powstanie kompletnie uko&#324;czony &lt;a href="http://www.atdot.net/yarv/"&gt;&lt;span class="caps"&gt;YARV&lt;/span&gt;&lt;/a&gt; (w&#322;&#261;czony do Ruby 1.9), to Rubinius zwyci&#281;&#380;y. Temat Rubiniusa jest on tematem naszych dyskusji na kanale &lt;span class="caps"&gt;IRC&lt;/span&gt; &lt;a href="irc://irc.eu.freenode.net/rubyonrails.pl"&gt;#rubyonrails.pl&lt;/a&gt;. Podej&#347;cie jest tu troch&#281; podobne do pythonowego &lt;a href="http://codespeak.net/pypy/dist/pypy/doc/news.html"&gt;PyPy&lt;/a&gt;, cho&#263; Rubinius nawi&#261;zuje bardziej do 30 lat do&#347;wiadcze&#324; &lt;a href="http://www.smalltalk.org/main/"&gt;Smalltalka&lt;/a&gt;. Celem jest stworzenie najszybszej wirtualnej maszyny Rubiego oraz &#322;atwego i szybkiego rozwoju dla samego Rubiego. Dzi&#281;ki temu, &#380;e mamy tu do czynienia z Ruby kt&#243;rego implementacja napisana jest w Ruby, znacznie &#322;atwiej jest rozwija&#263; j&#281;zyk.&lt;/p&gt;


	&lt;p&gt;Co ciekawe, autorzy JRuby zastanawiaj&#261; si&#281; czy nie zrobi&#263; podobnie. I ju&#380; s&#261; dyskusj&#281; o tym aby stworzy&#263; analogicznie &lt;a href="http://ola-bini.blogspot.com/2007/09/rubinius-is-important.html"&gt;Jubiniusa&lt;/a&gt;. Tak jak Rubinius w &#322;atwy spos&#243;b wci&#261;ga biblioteki napisane w C, Jubinius wci&#261;ga&#322;by te napisane w Javie. Jubinius mia&#322;by dodatkowo o tyle wygodniejsz&#261; sytuacj&#281;, &#380;e implementacja ca&#322;ej biblioteki standardowej Rubiego jest ju&#380; przepisana do Rubiego. Jubinius m&#243;g&#322;by z marszu wykorzysta&#263; ten kod.&lt;/p&gt;</description>
      <pubDate>Sun, 06 Jan 2008 23:49:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:1c2f3888-12a8-42dd-b190-ddd345a03248</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/01/06/zed-ruby-rails</link>
      <category>mongrel</category>
      <category>ruby</category>
      <category>rubinius</category>
      <category>merb</category>
      <category>rails</category>
      <category>datamapper</category>
      <category>sequel</category>
      <category>activerecord</category>
      <category>jruby</category>
      <category>jubinius</category>
    </item>
    <item>
      <title>JRuby 1.0</title>
      <description>&lt;p&gt;Ukaza&#322;a si&#281; finalna wersja &lt;a href="http://jruby.codehaus.org/"&gt;JRuby 1.0&lt;/a&gt; &amp;#8211; implementacji j&#281;zyka &lt;a href="http://ruby-lang.org/"&gt;Ruby&lt;/a&gt; w czystej Javie. Zesp&#243;&#322; JRuby zach&#281;ca do testowania Rails&#243;w na JRuby. Z tego co pami&#281;tam, to wersji finalnej JRuby zapowiadano w&#322;&#261;czenie optymalizacji kodu. Zanim zatem wyjdzie w ko&#324;cu Ruby 2.0, JRuby on Rails ma ju&#380; teraz szans&#281; prze&#322;ama&#263; stereotyp o s&#322;abszej wydajno&#347;ci Rubiego. Szczeg&#243;lnie mo&#380;e to mie&#263; du&#380;e znaczenie dla platformy Windows, bo Ruby na systemach &lt;span class="caps"&gt;POSIX&lt;/span&gt; (Linux, &lt;span class="caps"&gt;BSD&lt;/span&gt;, Mac &lt;span class="caps"&gt;OS X&lt;/span&gt;) pracuje znacznie wydajniej.&lt;/p&gt;


	&lt;p&gt;Dla mi&#322;o&#347;nik&#243;w Mac &lt;span class="caps"&gt;OS X&lt;/span&gt; jest dost&#281;pny &lt;a href="http://www.techcfl.com/blog/?p=109"&gt;artyku&#322; pokazuj&#261;cy jak skonfigurowa&#263;&lt;/a&gt; ca&#322;e &#347;rodowisko Javy dla Rail. Ale do pracy z Rails, najpro&#347;ciej u&#380;y&#263; &lt;a href="http://deadlock.nbextras.org/hudson/job/ruby/"&gt;Netbeans 6&lt;/a&gt; kt&#243;ry od jakiego&#347; czasu pozwala&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; na uruchamianie Rails&#243;w na JRuby (mo&#380;na wybra&#263; sobie opcj&#281; JRuby lub klasyczny CRuby).&lt;/p&gt;


	&lt;p&gt;Zobacz te&#380; artyku&#322; &amp;#8220;&lt;a href="http://java.sun.com/developer/technicalArticles/scripting/jruby/"&gt;JRuby and the Java Platform&lt;/a&gt;&amp;#8221; jaki ukaza&#322; si&#281; wczoraj na stronie firmy Sun.&lt;/p&gt;


&lt;hr size="1" width="30%" align="left" /&gt;

	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; Szkoda, &#380;e &lt;span class="caps"&gt;NB6&lt;/span&gt; nie ma jeszcze zaimplementowanego kolorowania i podpowiadania helper&#243;w dla &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt;. Jak kto&#347; ma si&#322;y i czas to tu jest opis jak &lt;a href="http://platform.netbeans.org/tutorials/nbm-mfsyntax.html"&gt;doda&#263; kolorowanie&lt;/a&gt; dla jakiego&#347; innego j&#281;zyka.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Jun 2007 11:24:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:597062a5-308f-4772-8199-d0b695a2b515</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/06/13/jruby-1-0</link>
      <category>jruby</category>
      <category>java</category>
      <category>ruby</category>
      <category>rails</category>
    </item>
    <item>
      <title>Netbeans 6 - killer IDE dla Ruby on Rails?</title>
      <description>&lt;p&gt;Je&#347;li chodzi o jako&#347;&#263; podpowiadania sk&#322;adni i metod Rubiego, to najnowsza, sz&#243;sta wersja flagowego edytora &lt;span class="caps"&gt;IDE&lt;/span&gt; &amp;#8211; Netbeans, deklasuje &lt;a href="http://radrails.org"&gt;RadRailsa&lt;/a&gt; i reszt&#281; &amp;#8220;towarzystwa&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;To trzeba po prostu &lt;a href="http://blogs.sun.com/roumen/entry/two_demos_jruby_on_rails"&gt;obejrze&#263; na filmie&lt;/a&gt;! Czego&#347; takiego nie maj&#261; &#380;adne inne edytory dla Rubiego. Co prawda nie ma jeszcze wersji finalnej, ale mo&#380;na sobie &#347;ci&#261;gn&#261;&#263; i zainstalowa&#263; najnowsz&#261; &lt;a href="http://wiki.netbeans.org/wiki/view/MilestoneDownloads"&gt;wersj&#281; rozwojow&#261;&lt;/a&gt;.  (Aby uaktywni&#263; obs&#322;uge Rubiego nale&#380;y wej&#347;&#263; do Tools -&amp;gt; Update Center i doci&#261;gn&#261;&#263; plugin). Netbeans mo&#380;e by&#263; u&#380;ywany do pracy z klasycznymi &lt;a href="http://rubyonrails.org"&gt;Railsami&lt;/a&gt; lub ich wersj&#261; dzia&#322;aj&#261;c&#261; w Javie, czyli &lt;a href="http://www.headius.com/jrubywiki/index.php/JRuby_on_Rails"&gt;JRuby on Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Ruby skutecznie toruje sobie drog&#281; i znajduje coraz wi&#281;ksze zainteresowanie i wsparcie w kr&#281;gach Javy. Poza Netbeansami, wsparcie dla Rubiego i Rails&#243;w posiada te&#380; pot&#281;&#380;ny IntelliJ. Zobacz ich film o &lt;a href="http://www.jetbrains.com/idea/training/demos/ruby.html"&gt;Ruby&lt;/a&gt; i o &lt;a href="http://www.jetbrains.com/idea/training/demos/rails.html"&gt;Railsach&lt;/a&gt;. Mimo wysi&#322;k&#243;w tw&#243;rc&#243;w IntelliJ, z tego co widz&#281; Netbeans ma jednak lepiej dopracowane wsparcie Rubiego, lepsze kolorowanie kodu i lepsze podpowiedzi. Wida&#263; tu, &#380;e zatrudnienie tw&#243;rc&#243;w JRuby przez firm&#281; Sun robi swoje. Poza tym Netbeans jest darmowy (open source), a IntelliJ &amp;#8211; nie.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://blog.zabiello.com/images/articles/netbeans6-ror1.png" alt="" /&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 16 Mar 2007 11:39:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:c6bb4f4a-1930-4d1a-8718-4272a00772fe</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/03/16/netbeans6-and-ror</link>
      <category>ruby</category>
      <category>rails</category>
      <category>jruby</category>
      <category>edytory</category>
      <category>netbeans</category>
    </item>
    <item>
      <title>Sun zatrudni&#322; programist&#243;w JRuby</title>
      <description>&lt;p&gt;W &#347;rodowisku javowc&#243;w &lt;a href="http://ruby-lang.org/"&gt;Ruby&lt;/a&gt; jest j&#281;zykiem kt&#243;ry robi troch&#281; zamieszania (jako&#347; tak si&#281; sk&#322;ada, &#380;e Ruby bardziej przemawia do programist&#243;w Javy ni&#380; &lt;a href="http://python.org"&gt;Python&lt;/a&gt;).  Cieszy zatem, &#380;e firma Sun podj&#281;&#322;a decyzj&#281; o wsparciu projektu &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/09/07/JRuby-guys"&gt;zatrudniaj&#261;c&lt;/a&gt; jego czo&#322;owych developer&#243;w.  Powinno to znacznie przy&#347;pieszy&#263; prace nad tym projektem podobnie jak sta&#322;o si&#281; z &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython"&gt;IronPythonem&lt;/a&gt;, gdy Microsoft zatrudni&#322; jego tw&#243;rc&#281;.&lt;/p&gt;


	&lt;p&gt;Jestem ciekaw jak d&#322;ugo programi&#347;ci zachowaj&#261; entuzjazm dla swego j&#281;zyka, gdy b&#281;dzie mo&#380;na generowa&#263; taki sam bytecode Javy lecz w niezr&#243;wnanie prostszy spos&#243;b. :)&lt;/p&gt;


	&lt;p&gt;Przyk&#322;adowy kod Javy:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_java "&gt;public class Filter {
  public static void main(String[] args) {
    List list = new java.util.ArrayList();
    list.add(&amp;quot;Tim&amp;quot;); list.add(&amp;quot;Ike&amp;quot;); list.add(&amp;quot;Tina&amp;quot;);
    Filter filter = new Filter();
    for (String item : filter.filterLongerThan(list, 3)) { 
      System.out.println( item ); 
    }
  }
  public List filterLongerThan(List list, int length) {
    List result = new ArrayList();
    for (String item : list) {
      if (item.length() &amp;lt;= length) { result.add( item ); }
    }
    return result;
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;A oto odpowiadaj&#261;cy mu kod  w Ruby:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;list&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;Tim&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Ike&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;Tina&lt;/span&gt;&lt;span class="punct"&gt;']&lt;/span&gt;
&lt;span class="ident"&gt;list&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;select&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;length&lt;/span&gt; &lt;span class="punct"&gt;&amp;gt;&lt;/span&gt; &lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;}.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="ident"&gt;n&lt;/span&gt;&lt;span class="punct"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Oczywi&#347;cie to nie wszystko. Dzi&#281;ki JRuby mo&#380;na uzyska&#263; efekty kompletnie nieosi&#261;galne w standardowej Javie &amp;#8211; np. mo&#380;na pracowa&#263; z bibliotek&#261; Swing w spos&#243;b &lt;strong&gt;interaktywny&lt;/strong&gt;, z poziomu interpretera zmieniaj&#261;c na &#380;ywo jej obiekty.&lt;/p&gt;


	&lt;p&gt;Wkr&#243;tce ma tak&#380;e by&#263; gotowa &lt;strong&gt;wersja Rails&#243;w dzia&#322;aj&#261;ca z  JRuby&lt;/strong&gt; (Zobacz prezentacj&#281; w &lt;a href="http://dist.codehaus.org/jruby/jruby_presentation_may06.ppt"&gt;PowerPoint&lt;/a&gt;).  Tym samym odesz&#322;yby wszelkie uwagi co do wydajno&#347;ci Rails&#243;w, bo wsp&#243;&#322;czesna wirtualna maszyna Javy jest tak silnie zoptymalizowna &#380;e dor&#243;wnuje j&#281;zykowi C++. Oczywi&#347;cie model w&#261;tkowy JRuby jest zgodny z wydajnym i dojrza&#322;ym modelem w&#261;tkowym Javy &amp;#8211; po prostu z niego korzysta.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Sep 2006 10:33:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d35f513c-939f-4f71-9392-e4d9f95c11ee</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/09/08/sun-zatrudni%C5%82-programist%C3%B3w-jruby</link>
      <category>Ruby</category>
      <category>Java</category>
      <category>ruby</category>
      <category>java</category>
      <category>jruby</category>
    </item>
    <item>
      <title>JRuby on Rails - ruszy&#322;</title>
      <description>&lt;p&gt;&lt;a href="http://jruby.sourceforge.net/"&gt;JRuby&lt;/a&gt; &amp;#8211; projekt b&#281;d&#261;cy implementacj&#261; Rubiego w j&#281;zyku Java zosta&#322; przy&#347;pieszony w zwi&#261;zku z konferencj&#261; JavaOne. Developerom uda&#322;o si&#281; w ko&#324;cu uruchomi&#263; &lt;strong&gt;pe&#322;n&#261; aplikacj&#281; Rails&#243;w&lt;/strong&gt; dzia&#322;aj&#261;c&#261; na wirtualnej maszynie Javy. Na razie jeszcze nie ma informacji o jakim&#347; znacz&#261;cym przy&#347;pieszeniu dzia&#322;ania, ale pierwszy krok zosta&#322; dokonany. Zobacz &lt;a href="http://headius.blogspot.com/2006/05/and-they-said-jruby-was-dead.html"&gt;wi&#281;cej&amp;#8230;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Zobacz te&#380; &lt;a href="http://www.robert-tolksdorf.de/vmlanguages.html"&gt;list&#281; j&#281;zyk&#243;w&lt;/a&gt; potrafi&#261;cych pracowa&#263; w javowskiej &lt;span class="caps"&gt;JVM&lt;/span&gt; &amp;#8211; jest ich ca&#322;kiem sporo. Kto by pomy&#347;la&#322;, &#380;e nawet napisano assembler generuj&#261;cy klasy Javy. :)&lt;/p&gt;</description>
      <pubDate>Sun, 14 May 2006 20:21:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:308ee245-2689-49b6-8c04-6e881c39f468</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/05/14/jruby-on-rails-ruszy%C5%82</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>jruby</category>
      <category>ruby</category>
    </item>
  </channel>
</rss>
