Ryan Stout hat verschiedene Java-Matrix-Libraries für JRuby gewrappt und als Gem veröffentlicht. Es liegt auf GitHub zum Download bereit. StairCar ist für zweidimensionale Matrizen gedacht und kann auch mit sehr großen Matrizen umgehen.
All things JRuby (and Rails). Neuigkeiten aus der JRuby und Rails-Welt. Follow me. https://twitter.com/hermann_kurz
Montag, 31. Dezember 2012
Sonntag, 30. Dezember 2012
fastruby heißt jetzt RubyFlux
Charles Nutter hat seinen statischen Ruby-zu-Java-Compiler, der bisher fastruby hieß, zu RubyFlux umbenannt. Der Compiler erzeugr auf Ruby-Programmen Java-Quelltext, der dann mit normalem Java weiterverwendet werden kann. Auf dem RubyFlux-Wiki gibt es mehr Hintergrund und auch Beispiele,
Samstag, 29. Dezember 2012
JRuby-rack-worker: Thread-basierte Worker
Karol Buceks jruby-rack-worker-library implementiert Worker-Threads für JRuby. Threads sind näher an der Java-Philosophie, als Background-Jobs. Im README sind die Vorgehensweise und potentielle Gotchas erläutert.
Freitag, 28. Dezember 2012
JrSerialPort: serielle Schnittstelle mit JRuby ansprechen
Wer einen seriellen Port mit JRuby ansprechen will, hatte bisher nicht viele Möglichkeiten. Für Java gibt es das plattformübergreifende RXTXcomm.jar. David Crosby von Atomic Spin hat dafür einen Wrapper für JRuby geschrieben, den er JrSerialPort nennt. In seinem Blog-Post bespricht er den Sourcecode und hat auch Beispiele zur Benutzung in JRuby parat.
Donnerstag, 27. Dezember 2012
Multimeter - Profiling für JRuby
Theo Hultbergs Multimeter-Gem ist ein JRuby-Wrapper um Yammers Metrics-Library. Damit kann man auf einfache Weise das Laufzeitverhalten seines Produktionssystems beobachten und sehen, welcher Code wie oft und mit welcher Performance ausgeführt wird.
- Multimeter
- Yammers Metrics-Library
- Theo Hultberg
Mittwoch, 26. Dezember 2012
Rails auf Windows - mit JRuby
Rocky Jaiswal hat eine Schritt-für-Schritt-Anleitung geschrieben, wie er eine JRuby-on-Rails-Applikation auf Windows zum Laufen gebracht hat.Als datenbank verwendet er PostgreSQL, sein Webserver ist Tomcat. Zum Bau der Webapp verwendet er Warbler.
Dienstag, 25. Dezember 2012
neo4j.rb, Version 2.2.1 ist raus (für JRuby 1.7.1)
Version 2.2.1 von neo4j.rb ist veröffentlicht. Das ist ein Bugfix-Release, um die Kompatibilität mit JRuby 1.7.1 herzustellen. Neo4j ist eine Graphen-Datenbank, die über neo4j.rb von JRuby aus zugänglich ist.
Montag, 24. Dezember 2012
JRuby Hackfest in Berlin?
Florian Gilcher hat ein JRuby-Hackfest in Berlin im Auge. Er plant das für Ende Januar/Anfang Februar 2013, hier ist das Annoncement:
Sonntag, 23. Dezember 2012
Per JDBC von JRuby auf MSSQL zugreifen
ZPH verwendet JDBC, um auf einen Microsoft-SQL-Server zuzugreifen. Eine Alternative wäre ODBC, was aber komplizierter zu konfigurieren ist. In einem Blog-Post zeigt er Schritt für Schritt, wie er die Verbindung hergestellt hat - vom Download der Treiber bis zum Einbinden in sein JRuby-Projekt.
Samstag, 22. Dezember 2012
Multithreaded HTTP-Client: jruby-httpclient
Adam Esterline hat einen Wrapper um Apache HTTPClient geschrieben, weil Net:HTTP auf JRuby nicht threadsafe ist. Version 1.1.1 liegt jetzt auf Github zum Download bereit.
Freitag, 21. Dezember 2012
Tutorial: Recommendation Engine mit JRuby und Mahout
Vasily Vasinov, der Autor des JRuby-Mahout-Gems, hat ein Tutorial geschrieben, in dem er beschreibt, wie er eine Recommendation Engine mit JRuby und dem JRuby-Mahout-Gem baut. Apache Mahout ist eine hochskalierbare Java-Machine-Learning-Library die wiederum auf Apache Hadoop basiert. Im Tutorial zeigt er anhand eines Beispiels Schritt für Schritt, wie so eine Recommendation Engine programmiert wird.
Labels:
JRuby,
recommendation engine,
tutorial
Donnerstag, 20. Dezember 2012
Multithreading-Probleme im Development-Modus lösen
Interessanter Artikel Fixing multithreading for Rails in development mode von Oleksandr Bondar auf dem railsware.com-Blog. Problematisch ist das Nachladen von geändertem Code per autoload im Development-Modus, das bei multithreaded-Applikationen nicht immer klappt. Im Text wird erläutert, was dahintersteckt und welche Maßnahmen helfen.
Mittwoch, 19. Dezember 2012
stanford-core-nlp Gem: Sparchverarbeitung (Nnatural language processing) für JRuby
Das stanford-core-nlp Gem wrappt das Stanford Core NLP package, ein Toolkit fürnatural language processing. Damit kann man Texte tokenisieren, taggen usw. Es werden Deutsch, Englisch und Französisch unterstützt.
Dienstag, 18. Dezember 2012
Heroku: Ruby-Anwendung auf JRuby umziehen
Auf dem Heroku-Devcenter ist ein Artikel erschienen, der genau beschreibt, wie man eine bestehende Ruby-Anwendung auf Heroku nach JRuby umzieht. Er fängt bei der Installation eines lokalen JRuby auf der Entwicklermaschine an, zeigt wie man einen JDBC-Teriber einbindet und hat Tips für den Umgang mit JRuby-inkompatiblen Gems.
Montag, 17. Dezember 2012
Concurrency-Probleme mit Hamster vermeiden
schreibt in seinem Blog, wie er Concurrency-Probleme unter JRuby durch die Verwendung der Bibliothek Hamster vermeidet. Hamster stellt Datenstrukturen bereit, die threadsafe sind uns so ConcurrenyErrors vermeiden.
Sonntag, 16. Dezember 2012
TorqueBox auf Heroku (JBoss/JRuby Application Server)
Ben Browning (RedHat, TorqueBox Core Contributor) beschreibt, wie man TorqueBox auf Heroku zum Laufen bekommt. TorqueBox ist eine Ruby-Application-Plattform, die auf RedHats JBoss AS aufsetzt und Enterprise-Features (Clustering, HA, Scheduling, Messaging usw) zur Verfügung stellt. Dazu wurde TorqueBox an das Heroku-Environment angepasst, ein paar zusätzliche Schritte sind aber dennoch nötig und von Ben Browning genau beschrieben.
Samstag, 15. Dezember 2012
Heroku nun mit JRuby-Unterstützung
Es war bisher schon möglich, JRuby-Applilationen auf Herokus Infrastruktur laufen zu lassen, aber dazu war etwas Handarbeit nötig. Nun hat Heroku direkte JRuby-Unterstützung angekündigt und Hacks sind nicht mehr nötig! Heroku ist ein fantastischer Service, da es das Deployment von Websites/Webservices extrem einfach macht - und nun auch mit JRuby arbeitet. Einfach mal ausprobieren, für kleine Projekte fallen keinerlei Kost
Freitag, 14. Dezember 2012
JRuby Mahout - Machine Learning mit JRuby und Apache Mahout
Vasily Vasinov hate einen JRuby-Wrapper für Apache Mahout geschrieben. Apache Mahout ist ein verteiltes Machine-Learning-System, das auf Apache Hadoop basiert. Mit JRuby Mahout kann man bequem von JRuby aus auf Apache Mahout zugreifen.
Donnerstag, 13. Dezember 2012
Puma: Perfromancedaten (multithreaded Ruby)
Mike Perham schreibt in seiner Blog-Post-Serie 12 Gems of Christmas im ersten Teil über puma, einen in Ruby geschriebenen multithreaded Webserver. Er testete gegen eine nichttrivial Webanwendung, die zwei Datenbankqueries und eine Templateextrapolation durchführte. Ergebnisse mit JRuby und MRI-Ruby hat er miteinander und mit derselben Anwendung unter dem Unicorn-Server verglichen. Puma/JRuby ist klar am schnellsten, hier kommt die Muticore-Untertützung von JRuby zum Tragen.
Mittwoch, 12. Dezember 2012
Spieleprogrammierung mit JRuby und Entity-Component-Architektur
Chris Powell hat eine Serie von Blog-Posts über Spieleprogrammierung mit der Entity-Component-Architektur geschrieben. Dazu verwendet er JRuby und libGDX. Bis jetzt sind fünf Teile erschienen. Fünf Teile sind schon fertig und mindestens drei weitere angekündigt. Faszinierende Sache..
- Part 1 – introduction and nomenclature
- Part 2 – entities and the entity manager
- Part 3 – components
- Part 4 – systems
- Part 5 – libGDX concepts
- Part 6 – the Lunar Lander game
- Part 7 – adding new game features
- Part 8 – serialization
Dienstag, 11. Dezember 2012
Rubydoop: Haddop aus JRuby aufrufen (Big data)
Eine neue Version von Rubydoop ist auf github verfügbar.Rubydoop ist eine Integration von JRuby in die Hadoop-Runtime. Damit kann Apache Hadoop direkt von JRuby aus benutzt werden. Es liegen einige Beispiele bei, so daß man einen einfachen Einstieg hat.
- Rubydoop auf github
- Apache Hadoop
Montag, 10. Dezember 2012
Mitschnitt vom 3rd Ruby Hangout auf Youtube
Der Mitschnitt vom 3rd Ruby Hangout vom 5.12. ist nun auf auf Youtube. Sehr interessantes Q&A mit Charles Nutter, dersich viel Zeit nimmt, den Stand von JRuby und insbesondere Performanceverbesserungen mit invokedynamic zu erklären. Ein grosser Teil nimmt auch eine Diskussion über die Vorteile der JVM, (Garbage Collection JRuby vs MRI, bessere Performance durch abwarten einer neuen JVM usq.)
Sonntag, 9. Dezember 2012
imgry: gem für Image-resizing und -cropping
Eine neue Version des imgry-Gem ist raus. Dieses Gem ist auf hohe Geschwindigkeit unter JRuby optimiert funktioniert aber auch auf MRI-Ruby.
Samstag, 8. Dezember 2012
TorqueBox 2.2.0 erschienen (JRuby Application Server)
TorqueBox 2.2.0 ist erschienen und steht zum Download bereit. TorqueBox ist ein Ruby-Application-Server und basiert auf JRuby und JBoss AS7. Diese Version enthält das brandneue JRuby 1.7.1 und einige weitere Goodies: torquebox-console, Steuerung von scheduled jobs über ein neues API und viele Bugfixes. Clustering, Loadbalancing und HA-Features ebenfalls sind in TorqueBox enthalten.
Freitag, 7. Dezember 2012
Benchmark mit JRuby, MRI und verschiedenen Webservern
Marek Jelen von RedHats OpenShift hat einen Benschmark auf der Plattform mit verschiedenenen Webservern und Ruby-Versionen durchgeführt. Er verglich MRI-Ruby 1.9.3, JRuby 1.7.0 unter Mizuno (Jetty), Trinidad (Tomcat), Puma und Thick (Thick stammt von Mark Jelen selbst) Es gibt keinen eindeutigen "Sieger" - Fazit war, daß die Auswahl von der Art des Problems abhängt, das man lösen will.
Mittwoch, 5. Dezember 2012
heute Nacht (6.12, 01:00 MEZ): Ruby hangout mit Charles Nutter
Wer heute Nacht (6.12.2012, 01:00 MEZ) Zeit & Lust hat kann auf Google plus (https://plus.google.com/events/cve767iu4nma86ivisc6k9quad8) mit Charles Nutter und anderen über JRuby chatten. Bisher haben schon über 60 Leute zugesagt.
Ruby-Refinements und die Auswirkungen auf JRuby-Performance
Charles Nutter hat hier einen sehr interessanten Text über die Refinements geschrieben, die mit Ruby 2.0 kommen sollen. Refinements schränken die Möglichkeit für Monkey-Patching ein, um negative Effekte besser kontrollieren zu können. Refinements haben aber sehr negative Auswirkungen auf die Performance, die Komplexiät der Sprachimplementierung und außerdem ist das Verhalten bei Edge-Cases nicht genau definiert. Auf Grund dieser Diskussion werden Refinements nur in eingeschränkter Form ins kommende Ruby 2.0 einfliessen.
Montag, 3. Dezember 2012
JRuby 1.7.1 scheint fertig zu sein (Update: ist fertig!)
Jedenfalls ist die Version auf github bereits auf 1.7.1 gestellt worden. Was fehlt ist noch das offzielle Announcement und die Binaries zum Download. Wer jetzt schon damit anfangen will, kann sich JRuby 1.7.1 aber gleich selbst bauen :-)
Update
JRuby 1.7.1 ist offiziell fertig! Hier das Announcement von Tom Enebo. Eingeflossen sind hauptsächlich Bug- und Securityfixes - also möglichst bald von 1.7.0 auf 1.7.1 updaten!
Update
JRuby 1.7.1 ist offiziell fertig! Hier das Announcement von Tom Enebo. Eingeflossen sind hauptsächlich Bug- und Securityfixes - also möglichst bald von 1.7.0 auf 1.7.1 updaten!
OpenShift Enterprise, RedHat PaaS ist nun nicht mehr "beta"
RedHats OpenShift ist nun nicht mehr im beta-Status, sondern offiziell als OpenShift Enterprise verfügbar. Interessant an OpenShift ist, daß es komplett Opensource ist und man damit seine Applikationen in eine private Cloud verlagern kann, falls man es nicht von RedHat hosten lasen will. OpenShift ist polyglot, neben Java werden JRuby, Perl, PHP und Python unterstützt, als Datenbanken mySql und PostgreSQL.
Announcing OpenShift Enterprise – an On-Premise Platform as a Service from Red Hat
Announcing OpenShift Enterprise – an On-Premise Platform as a Service from Red Hat
Sonntag, 2. Dezember 2012
Ruboto 0.10.0 ist fertig (JRuby auf Android)
Ruboto 0.10.0 ist fertig. Uwe Kubosch vom Ruboto-Team hat die neue Version auf Github bereitgestellt. Wichtigste Änderungen: es wurden einige legacy-Features entfernt, viele Bugs gefixt und die Dokumentation erweitert. Mit Ruboto kann von einem JRuby-Script direkt auf das komplette Android-API zugegriffen werden.
Samstag, 1. Dezember 2012
JRuby 1.7.1 kommt am Montag, 3.12.2012
Tom Enebo hat hat das Releasedatum von JRuby 1.7.1 auf Montag verschoben. Eigentlich sollte es schon diese Woche fertig sein, doch das JRuby-Team will noch einen Bug auf Windows zum Release fixen.
Freitag, 30. November 2012
Neue Tweitgeist-Version (Realtime twitter top-hashtags)
Colin Surprenant hat eine neue Version seines Online-Realtime-Top-Hashtag-Visualisierungstools online gestellt. Tweitgeist analysiert in Echtzeit Twitter und erstellt mittels JRuby, Redstorm, Coffeescript und D3.js fortlaufende Grafiken der Top-hashtags. Sehr beeindruckend!
Donnerstag, 29. November 2012
perfer - Benchmark tool für alle Rubies
Interessantes Benchmark-Tool für Ruby (alle Implementierungen): perfer. perfer wurde in einem Google Summer Of Code-Projekt verwirklicht. Ein Beispiel für die Anwendung gibt es hier.
Mittwoch, 28. November 2012
Umfrage auf InfoQ: What's Your Next JVM Language?
Auf InfoQ läuft momentan eine Umfrage What's Your Next JVM Language?
Es ist keine plumpe "diese Sprache ist die beste"-Umfrage, sondern man kann dieverse Sprachen nach verschiedenen Kriterien ranken. Zusätzlich gibt es eine Auswertung, die man sich anschauen kann - und man kann sich die Votes einzelner Leute anschauen. Sehr interessant.
Es ist keine plumpe "diese Sprache ist die beste"-Umfrage, sondern man kann dieverse Sprachen nach verschiedenen Kriterien ranken. Zusätzlich gibt es eine Auswertung, die man sich anschauen kann - und man kann sich die Votes einzelner Leute anschauen. Sehr interessant.
Dienstag, 27. November 2012
Benchmark: Performance Multithreading JRuby vs MRI Ruby
Jack Slingerland hat einen Artikel über die Performance von Standard (MRI)-Ruby vs JRuby geschrieben. Die Ergebnisse seines Beispieles sprechen eindeutig für JRuby, da die benötigte Zeit bei JRuby mit der Anzahl der Threads sinkt bis alle Cores ausgenutzt sind. Unter MRI-Ruby bleibt die Geamtzeit konstant, es wird nur ein Core genutzt.
Montag, 26. November 2012
log4jruby: JRuby-Wrapper für log4j
Wer seinen JRuby-Code in Java integriert, muß sich oft an die dortigen Konventionen halten und mit log4j loggen. Um die Integration zu erleichtern, hat Lenny Marks einen Wrapper für log4j geschrieben und ihn log4jruby genannt. Der Wrapper ist nun in Version 0.5.0 als gem auf github verfügbar.
- log4jruby auf github
- Lenny Marks
Sonntag, 25. November 2012
Interface-Testing mit Sikuli und JRuby (Video)
Sehr interessantes Video von einem Vortrag auf der RubyConf 2012. Rodrigo Franco nimmt als Beispiel Diablo III und erläutert, wie er mit Sikuli und JRuby einen Bot gebaut hat, mit dem er Diablo automatisiert. Sikuli arbeitet mit Bilderkennung und braucht deshalb kein explizites Interface von der Software, die damit gesteuert wird!
Da Sikuli in Java geschrieben ist, kann es ohne Probleme von JRuby benutzt werden - es stellt dazu eine eigene Scriptsprache bereit, die Rodrigo für Diablo III in JRuby-Methoden gewrapped hat.
Da Sikuli in Java geschrieben ist, kann es ohne Probleme von JRuby benutzt werden - es stellt dazu eine eigene Scriptsprache bereit, die Rodrigo für Diablo III in JRuby-Methoden gewrapped hat.
Samstag, 24. November 2012
Ganz interessant: JRuby Tips (http://jrubytips.com/)
Sehr interessant für JRuby-Benutzer: jrubytips.com mit vielen Tips aus dem JRuby-Umfeld.
Freitag, 23. November 2012
JRuby und JMX
Ganz interessant für die Java-Enterprise-Leute: ein HowTo von Oracle
Use JRuby with JMX for Oracle WebLogic Server 11g. Der Text Ist zwar schon ein bischen älter, sollte aber auch mit neuen JRuby-Versionen funktionieren: Pas Apicella zeigt Schritt für Schritt, wie man mit dem jmx4r-Gem remote Java-Applikationen von einem Ruby-Script aus managen kann.
Donnerstag, 22. November 2012
Tips zum Upgrade auf JRuby 1.7.0 von Fiona Tay
Fiona Tay hat einige Tips zum Upgrade auf JRuby 1.7. Diese neue Version bringt vor allem Performance-Vorteile und Erleichterung bei der Integration von Java.
Mittwoch, 21. November 2012
Schneller JRuby-Startup mit drip
Drip ist ein Launcher für JRuby, der die Startup-Zeit minimiert. Das wird dadurch erreich, daß Drip eine frische Java VM vorhält, zu der sich das Script dann verbinden kann. Nach Gebrauch wird diese VM verworfen und eine neue, frische im Hintergrund gestartet. Das ist anders als bei nailgun in JRuby schon eingebaut), das eine einzige, persistente VM vrhält. Nachteil ist da, daß die persistente VM nach einigem Gebrauch Fragmente alter Programme enthalten kann, die das Verhalten irregulär machen.
Dienstag, 20. November 2012
activerecord-postgres-hstore: noSQL mit Postgres
Wer einen key-Value-Store ausprobieren möchte und schon eine PostgreSQL-Datenbank am Laufen hat, kann einfach PostgreSQLs hstore benutzen. Für Ruby gibt es dazu das activerecord-postgres-hstore-Gem, das nun auch direkten JRuby-Support bekommen hat. Wahrscheinlich ist das die schmerzloseste Möglichkeit, schnell an eine noSQL-Datenbank zu kommen.
Montag, 19. November 2012
jruby-pgp: PGP-Gem für JRuby
jruby-pgp ist ein Java- und JRuby-Wrapper für das Bouncy Castle PGP API. ScottGonyea hat ihn geschrieben, um die PGP-Einbindung in JRuby zu erleichterm.
Sonntag, 18. November 2012
JRuby success stories
Auf den JRuby-Wiki auf github gibt es eine Seite mit JRuby-Success-Stories. Vielleicht ganz interessant wenn man selbst dort was eintragen möchte.
Samstag, 17. November 2012
jruby-pg: nativer Postgres-Treiber für JRuby
jruby-pg ist ein drop-in-Ersatz für das MRI-ruby-pg Gem. jruby-pg benutzt direkt das API von Postgres und umgeht damit Einschränkungen von JDBC, die es in einigen Fällen schwierig machten, Prjekte, die mit pg-ruby arbeiten auf JRuby zu portieren. Das ist mit jruby-pg jetzt kein Problem mehr.
Freitag, 16. November 2012
Faker-Gem für Java
Luca Simone hat das Ruby-Faker-Gem mit Hilfe von JRuby so verpackt, daß man es von Java aus benutzen kann. Mit Faker kann man Testdaten (Namen, email-Adressen usw) erzeugen um z.B. Datenbanken für Tests zu bestücken.
Donnerstag, 15. November 2012
Migration nach JRuby - Success story von Richard Huang
Sehr interessanter Blogpost von Richard Huang. Er berichtet über die Migration von OpenFeint (einer social Plattform für mobile Anwendungen) von REE-Ruby nach JRuby. Hintergrund war eine Verbesserug der Skalierbarkeit und Satbilität. Es gab ein paar Stolpersteine (Gems mit C-Erweiterungen), er hat jedoch dafür Lösungen gefunden und erfreut sich jetzt einer wesentlich verbesserten Response-Time (30ms statt 50-60ms). Interessant ist die Beschreibung der Hintergründe der Entscheidungen und des Vorgehens mit Performancetests, Migrationsstrategie, Auswahl des Servers, Monitoring und vielem mehr.
Mittwoch, 14. November 2012
orientdb-jruby: Zugriff auf Graph/Document-DB mit JRuby
orientdb-jruby wrappt die Graph-Datenbank orientb. Orientdb hat einige interessante Features und ist unter der Apache2-Lizenz verfügbar.
Dienstag, 13. November 2012
Am 14.11.2012 in Münster: JRuby und Chef (Vortrag der Java Usergroup)
Vielleicht ganz ineterssant für Leute aus der Gegend von Münster: am Mittwoch den 14.11.2012 gibt es einen Vortrag der Java Usergroup Münster
Kochstunde: In kurzer Zeit aus JRuby und Chef ein wohlschmeckendes Gericht zaubern
Wie ist es möglich, innerhalb eines Jahres mit zwei Entwicklern einen neuen Mobile Payment Service inklusive der notwendigen Apps und des Backends zur Produktionsreife zu bringen?
Kochstunde: In kurzer Zeit aus JRuby und Chef ein wohlschmeckendes Gericht zaubern
Wie ist es möglich, innerhalb eines Jahres mit zwei Entwicklern einen neuen Mobile Payment Service inklusive der notwendigen Apps und des Backends zur Produktionsreife zu bringen?
Montag, 12. November 2012
Vortrag: Why JRuby Works (Video, Charles Nutter, Tom Enebo)
Auf der Rubyconf 2012 haben Tom Enebo und Charles Nutter (die beiden JRuby-Guys) zusammen den Vortrag Why JRuby Works gehalten. Das Video ist nun Online auf Youtube. Themen sind die Implementierung, Performance, Einbindung von Java-Libraries, invokedynamic, Benchmarks und viele andere Sachen. Sehr interessant um sich einen Einblick in die Hintergründe von JRuby zu verschaffen. Die beiden bringen dazu viele Beispiele, Zahlen und Code.
Sonntag, 11. November 2012
JRuby mit jstack debuggen
Dr Nic Williams erklärt auf dem Engineyard-Blog, wie er mit jstack Stacktraces untersucht, um hängenden JRuby-Threads auf die Spur zu kommen. Dazu gibt er ein Beispiel in JRuby. Mit JRuby das zwar nicht ganz so straightforward, wie mit Java-Programmen (hier gibt es ebenfalls ein Beispiel), aber auch ohne Probleme sichtbar, welcher Ruby-Code feststeckt.
Samstag, 10. November 2012
Celluloid:io - multithread-Programmierung für Ruby
Kyle Drake hat einen interessanten Foliensatz zu Celluloid::io auf slidesharenet bereitgestellt. Dort erläutert er, wie es Celluloid::io für ihn ermöglicht, Parallelität auszunutzen. Dort hat MRI-Ruby ein Problem, weil es durch das globale-Interpreter-Lock schwierig ist, Multicore-Systeme vernünftig auszunutzen. Celluloid::io nutzt unter JRuby und Rubinius alle CPU-Cores und bringt dadurch wesentliche Vorteile.
Freitag, 9. November 2012
JRuby-Monitoring mit Simple::Metrics
Das Simple::Metrics Gem ist ein Wrapper um die Java-Library Metrics. Das Gem dient zum monitoren von JRuby-Applikationen. Es können verschiedene Paramater überwacht werden: Metrics' Timer, Meter und Healthchecks stehen zur Verfügung und können die Ergebnisse im Browser über eigene Sevlets darstellen.
Donnerstag, 8. November 2012
Ruboto: Version 0.9, verbesserte Doku (JRuby auf Android)
Ruboto ist in der Version 0.9.0 erschienen. Wichtigste Neuerung ist die Unterstützung von Java-Subclassing. Zum Erscheinen wurde die Dokumentation wesentlich verbessert, es sind jetzt auch mehr Beispiele und Verweise auf externe Ressourcen vorhanden. Mit Ruboto können Ruby-Scripte direkt auf Android-Geräten ausgeführt werden. Ruboto hat dabei Zugriff auf das gesamte Android-API!.
- Ruboto 0.9.0 released!
Mittwoch, 7. November 2012
Vortrag von Charles Nutter über invokedynamic (Video)
Auf Youtube gibt es das Video vom Jaxconf-Vortrag Charles Nutters (JRuby Guy) über invokedynamic, das Feature von Java7, das dynamische Sprachen auf der JVM beschleunigt. Charles zeigt Hintergründe und Benchmarks. Leider gibt es noch Probleme mit der Java 7 VM, deshalb ist dieses Feature beim neuen JRuby 1.7.0 defaultmässig ausgeschaltet, kann aber explizit aktiviert werden. Nutzt man JRuby 1.7.0 unter (dem noch nicht fertigen) Java 8, ist es aber eingeschaltet.
Dienstag, 6. November 2012
JRuby und Google Guice (Dependency Injection)
Xavier Shay hat aufgeschrieben, wie er JRuby in einem Java-Container benutzt der mit Google Guice konfiguriert wird. Google Guice ist ein Dependency-Injection-Framework, mit dem normalerweise Java-Komponenten verdrahtet werden. Das ganze ist ein bischen tricky. Um das wiederholbar zu machen, gibt es noch eine Maven-Integration dazu.
Montag, 5. November 2012
Verschiedene Sprachen auf der JVM
Eine interessante Übersicht zum Stand der JVM und den verschiedenen Sprachen, die darauf laufen, findet sich auf dem Blog von Dr Dobb Journal. Diskutiert werden dort auch die neueren Entwicklunge von Java7 (invokedynamic) und zukünftiges in Java8
Sonntag, 4. November 2012
BitNami JRuby-Stack mit JRuby 1.7.0
Der BitNami JRuby-Stack läuft jetzt mit JRuby 1.7.0. Enthalten sind sofort lauffähige Versionen von Tomcat, MySQL, JRuby und Rails und die benötigten Abhängigkeiten sowie der Amazon AWS PHP SDK. Den Stack gibt es in verschiedenen Geschmacksrichtungen: als Installer für Windows, Linux und OSX, als VM oder als Amazon Cloud Image
Ziel der BitNami-Stacks ist es, das Deployment so einfach wie möglich zu machen. Geschäftsmodell ist, die Stacks frei zu verteilen und fürs Hosting Geld zu nehmen. Der BitNami JRubyStack ist unter der Apache 2.0 license.
Ziel der BitNami-Stacks ist es, das Deployment so einfach wie möglich zu machen. Geschäftsmodell ist, die Stacks frei zu verteilen und fürs Hosting Geld zu nehmen. Der BitNami JRubyStack ist unter der Apache 2.0 license.
Samstag, 3. November 2012
JRuby-Lint: neue Version (Kompatibiltätstester für JRuby)
Version 0.4 von JRuby-Lint ist fertig. JRuby-Lint ist ein Tool, mit dem man vorhandenen Code auf JRuby-Kompatibilität abklopfen kann. Es prüft u.a. auf verwendete Gems und schlägt Alternativen vor für Gems die unter JRuby problematisch sind. Output ist ein Report als Text oder HTML.
Freitag, 2. November 2012
Jetpack: JRuby für Jetty verpacken
Es gibt ja schon einige Tools, um JRuby-Apps zum Deployment auf verschiedenen Servern zusammenzupacken. Jetpack ist ähnlich, packt aber JRuby-Applikation und einem Jetty-Server so zusammen, das als Infrastruktur nur ein JRE zum Laufen benötigt wird.
Donnerstag, 1. November 2012
Phusion Passenger 4.0 mit JRuby-Support
Phusion Passenger hat neulich Versionsstand 4.0beta1 erreicht. Seitdem wird JRuby (und Rubinius) unterstützt. Phusion Passenger ist ein App-Server, dessen Schwerpunkt auf einfachem Deplyoment liegt. Auf dem Phusion Blog gibt es einen Post zu den Hintergründen. Ein Hauptgrund ist die Unterstützung von Multicore-Servern durch JRuby, die immer wichtiger wird und durch die JVM gewährleistet ist. Hier hat MRI-Ruby den Nachteil des Global Interpreter Locks, das deutlich mehr Ressourcen kostet, da dann mehrere Ruby-Prozesse gestartet werden müssen.
Mittwoch, 31. Oktober 2012
Performance-Vergleich verschiedener Ruby-Implementierungen
Arthur Shagall hat die Performance verschiedenener Ruby und JRuby-Implementierungen verglichen. Die Ergebnisse hat er auf seinem Blog veröffentlicht.
Interessant ist der sehr große Performancegewinn von JRuby im Vergleich zu MRI Ruby (teilweise mehr als zehnfach) - sonderbar die Verschlechterung der Performance von JRuby 1.7.0 mit invokedynamic zu JRuby 1.7.0 ohne invokedynamic. Es handelt sich um synthetische Tests, evtl sieht das in der Praxis anders aus. Sonderbar ist es trotzdem.
Interessant ist der sehr große Performancegewinn von JRuby im Vergleich zu MRI Ruby (teilweise mehr als zehnfach) - sonderbar die Verschlechterung der Performance von JRuby 1.7.0 mit invokedynamic zu JRuby 1.7.0 ohne invokedynamic. Es handelt sich um synthetische Tests, evtl sieht das in der Praxis anders aus. Sonderbar ist es trotzdem.
Dienstag, 30. Oktober 2012
Trinidad Worker Extension: Background-Threads unter JRuby
Für den Trinidad-Server ist die Trinidad Worker Extension in Version 0.2 erschienen. Damit lassen sich JRuby-Hintergrund-Jobs neben einer Rails-Applikation betreiben. Trinidad Worker Extension unterstützt dabei Resque und Delayed::Job.
Montag, 29. Oktober 2012
JXInsight/Opus for JRuby 1.1 (JRuby performance management)
JINSPIRED hat JXInsight/Opus for JRuby 1.1 fertiggestellt. Mit dieser Software kann man Performance, Latenzen festellen, um QOS von JRuby-Applikationen zu messen und zu profilen. In der neuen Version ist besserer Support für Java 7 enthalten.
Sonntag, 28. Oktober 2012
Why JRuby, Video von der Alohaconf 2012
Charles Nutters Vortrag Why JRuby ist jetzt als 45 minütiges Video veröffentlicht worden.Wie vor einiger Zeit berichtet, sind die Slides ebenfall online.
Samstag, 27. Oktober 2012
JRuby mit Netbeans profilen
Patrick schreibt in seinem Blog, wie er die Netbeans-IDE aufgesetzt hat, um JRuby-Scripte zu debuggen. Das ganze geht remote, d.h. er kann direkt sehen, wo es auf dem Server klemmt. An Hand einiger Screenshots führt er vor, wie man vorgeht, um die kritischen Stellen zu finden.
Donnerstag, 25. Oktober 2012
3D-Spiel mit JRuby und jMonkeyEngine
Jeremy Woertink hat zwei 3-D-Grafik-Spiele und Samples (Maze Craze und Waves) auf Github veröffentlicht, die er mit JRuby und jMonkeyEngine umgesetzt hat. jMonkeyEngine ist eine Java-Game-Engine, die unter der BSD-Lizenz steht. Mit JRuby lässt sich diese Library sehr einfach einbinden
Mittwoch, 24. Oktober 2012
Richard Huang: zero downtime deployment
Richard Huang beschreibt in seinem Ruby-Tip auf jrubytips.com, wie er zero-downtime-deployment unter JRuby erreicht. Das heißt, kein HTTP-Request geht verloren. Er hat dazu ein Script für capistrano veröffentlicht, das über einen Rolling restart genau dies erreicht.
Montag, 22. Oktober 2012
JRuby 1.7.0 ist da!
JRuby 1.7.0 wurde veröffentlicht und steht zum Download bereit! Glückunsch an das JRuby-Team. Wie üblich wurde die Geschwindigkeit und die Kompatibilität zu MRI-Ruby weiter verbessert. Der Ruby-1.9.3-Modus ist nun Default. Es wird nun mimdesten Java 6 benötigt. invokedynamic wird nun unterstützt, muß jedoch wegen JVM_Problemen expizit aktiviert werden.
Labels:
1.7.0,
invokedynamic,
JRuby,
performance
Sinatra-Deployment mit JRuby / recipes.sinatrarb.com
Auf http://recipes.sinatrarb.com gibt es jede Menge nützlicher Rezepte für Lösungen mit Sinatra, dem leichtgewichtigen Ruby-Framework. Sinatra läuft auch unter JRuby (hey, sogar auf dem Raspberry Pi). Deshalb gibt es auch Rezepte zum Deployment unter verschiedenen Szenarien und Servern (Trinidad, TorqueBox, etc) auf dieser Site.
Sonntag, 21. Oktober 2012
RedStorm 0.6.4 ist fertig (Big Data mit JRuby)
Colin Surprenant hat RedStorm in Version 0.6.4 auf github bereitgestellt. Das RedStorm-Gem stellt eine Ruby DSL durch JRuby-Integration des Storm Distributed Realtime Computation System bereit. Als Default installiert RedStorm Storm- and JRuby-jar-Abhängigkeiten. Andere Abhängigkeiten können über ein Dependencies-File definiert werden. Das ganze kann auch im Cluster laufen. RedStorm kann sowohl im JRuby-1.8-Modus als auch im JRuby-1.9-Modus laufen. Zusätzlich gibt es jede Menge Beispiel-Konfigurationen. Wie bereits gestern gemeldet ist Tweitgeist eine Demo-Anwendung, die mit RedStorm erstellt wurde.
Samstag, 20. Oktober 2012
Tweitgeist wieder online - Big data mit JRuby
Colin Surprenants Tweitgeist ist wieder Online - nun mit Version 1.2. Tweitgeist analysiert einen Twitter-Stream in Echtzeit und zeigt alle fünf Sekunden die häufigsten hashtags. Ideal um auf einen Blick zu sehen, was dort gerade so los ist. Tweitgeist stellt eigentlich eine Demo von Colins RedStorm Gem dar, das wiederum ein Wrapper für das Storm-Realtime-Distributed-Computing-Framework ist. Sehr beeindruckend. Laut Colin kommt die Architektur mit einem vollen Echtzeit-Twitter-Feed (Twitter Firehose) klar.
Freitag, 19. Oktober 2012
Big Data mit Cascading (und JRuby)
Interessante Vortragsfolien von Paco Nathan zum Thema Building Enterprise Apps with Cascading. Cascading ist ein Framework, das auf Apache Hadoop aufsetzt. Damit kann man recht einfach Big Data-Applikationen bauen und das in verschiedenen Programmiersprachen (JRuby, Jython, Clojure, Scala und Java). Der Vortrag befasst sich mit den Hintergründen von Big Data und wie Cascading dabei helfen kann diese Daten auszuwerten.
Donnerstag, 18. Oktober 2012
JRuby 1.7.0 ist bald da - Tester gesucht
Tom Enebo (JRuby-Core-Commmitter) schreibt auf Twitter, daß JRuby 1.7.0 sehr bald kommen wird. Er bittet darum, gegen 1.7.0RC2 zu testen, damit die letzten Bugs ausgeräumt werden können.
Mittwoch, 17. Oktober 2012
Ruby Performance - Diskussion von Charles Nutter
Ganz interessante Dikussion von Charles Nutter (JRuby-Core-Committer) über die Performance-Apsekte verschiednere Ruby-Interpreter. Charles geht sehr ins Detail und behandelt verschiedene Dinge, die auf den ersten Blick nicht so offensichtlich sind: Umwandlung von Zahlen, Floating-PointPerformance, Closures, Parallelität und noch viel mehr. Sehr interessant mal zu sehen, was unter der Motorhaube der verschiedenen Implementierungen (JRuby, MRI,ubinius, Macruby) so los ist. Sehr interessant!
Montag, 15. Oktober 2012
Raspberry Pi mit 512MB RAM (besser für JRuby)
Nach dem gestrigen Benchmark von JRuby/Sinatra auf dem Raspberry Pi sind nun Geräte mit 512MB RAM (Statt 256MB) aufgetaucht. Das wenige RAM war das Haupthindernis für sinnvollen JRuby-Betrieb - das sollte jetzt gelöst sein. Die Dinger sind auch schon bei element14 bestellbar. Habe ich natürlich gleich gemacht. Wenn er da ist, gibt es einen neuen Benchmark mit JRuby/Sinatra & Co.
JRuby auf dem Raspberry Pi: Webserver-Performance
Neulich habe ich mir mehrere Raspberry-Pi-Rechner zugelegt und probiere verschieden Sachen damit aus. Der Raspberry Pi ist ein kleiner, billiger (etwa 40€) Einplatinenrechner mit folgender Ausstattung: ARM-CPU, 256MB RAM, Ethernet, schnelle Grafik mit Debian Linux. Zielgruppe sind eigentlich Schüler, die damit programmieren lernen sollen.
Die Kiste lässt sich auch als Webserver benutzen, dazu habe ich mit Sinatra unter MRI-Ruby und PostgreSQL einige Performancetests durchgeführt. Die gleiche Anwendung habe ich nun auch unter JRuby (statt MRI Ruby) getestet.
Test mit Apache Bench (ab), 500 requests, keine Concurrency.
Requests per second: 4.91 [#/sec] (mean)
Time per request: 203.817 [ms] (mean)
Time per request: 203.817 [ms] (mean, across all concurrent requests)
Requests per second: 3.03 [#/sec] (mean)
Time per request: 329.990 [ms] (mean)
Time per request: 329.990 [ms] (mean, across all concurrent requests)
Time per request: 3323.769 [ms] (mean)
Time per request: 332.377 [ms] (mean, across all concurrent requests)
Transfer rate: 3.81 [Kbytes/sec] received
Unter JRuby war der Speicherverbrauch wesentlich höher als unter MRI-Ruby, es waren nur noch etwa 20MB RAM frei (unter MRI etwa 90MB).
Hier gibt es eine Exception beim Server-Start,
file:/home/pi/jruby-1.7.0.RC2/lib/ruby/gems/shared/gems/jruby-rack-1.1.10/lib/jruby-rack-1.1.10.jar!/rack/handler/servlet.rb:22:in `call'
es kommen keine sinnvollen Ergebnisse zurück :-(
Links
Die Kiste lässt sich auch als Webserver benutzen, dazu habe ich mit Sinatra unter MRI-Ruby und PostgreSQL einige Performancetests durchgeführt. Die gleiche Anwendung habe ich nun auch unter JRuby (statt MRI Ruby) getestet.
Installierte Software:
- Soft-Float Debian wheezy (nur mit dem Soft-Float-ABI läuft Oracles Java7)
- Java 7 JDK für ARM
- JRuby 1.7.0RC2
- Trinidad-Webserver (Tomcat mit Rack-Interface)
Test mit Apache Bench (ab), 500 requests, keine Concurrency.
1. Baseline: Ergebnis für MRI-Ruby, siehe auch www.µc.net/2012/10/raspberry-pi-als-webserver-mit.html
Requests per second: 4.91 [#/sec] (mean)
Time per request: 203.817 [ms] (mean)
Time per request: 203.817 [ms] (mean, across all concurrent requests)
2. Ergebnis für JRuby mit Trindad (keine Concurrency) nach Aufwärmen, der erste Request dauerte über 10 Sekunden
Start des Servers mit jruby -S app.rb -s TrinidadRequests per second: 3.03 [#/sec] (mean)
Time per request: 329.990 [ms] (mean)
Time per request: 329.990 [ms] (mean, across all concurrent requests)
3. Ergebnis für JRuby mit Trindad (Concurrency 10)
Requests per second: 3.01 [#/sec] (mean)Time per request: 3323.769 [ms] (mean)
Time per request: 332.377 [ms] (mean, across all concurrent requests)
Transfer rate: 3.81 [Kbytes/sec] received
Unter JRuby war der Speicherverbrauch wesentlich höher als unter MRI-Ruby, es waren nur noch etwa 20MB RAM frei (unter MRI etwa 90MB).
Verhalten mit invokedynamic
Start mit "jruby -Xcompile.invokedynamic=true -S app.rb -s Trinidad"Hier gibt es eine Exception beim Server-Start,
file:/home/pi/jruby-1.7.0.RC2/lib/ruby/gems/shared/gems/jruby-rack-1.1.10/lib/jruby-rack-1.1.10.jar!/rack/handler/servlet.rb:22:in `call'
es kommen keine sinnvollen Ergebnisse zurück :-(
Fazit für JRuby auf dem Raspberry Pi
JRuby ist keine so gute Wahl für den Raspberry Pi und diesen Use Case: die Performance und der Speicherverbrauch sind schlechter als unter MRI-Ruby. Anders sieht es aus, wenn man Java-Libraries benutzen will.Links
- Raspberry Pi
- Raspberry Pi als Webserver mit PostgreSQL, Ruby und Sinatra
- JRuby läuft auf dem Raspberry Pi, jffi-Library wird benötigt
Labels:
JRuby,
raspberry pi,
raspi,
trinidad
Sonntag, 14. Oktober 2012
invokedynamic - Vortrag von der JUDcon
Douglas Campos hat auf der JBoss Users & Developers Conference (JUDcon) im Juni einen Vortrag über invokedynamic von Java 7 gehalten. Das Video ist jetzt auf Youtube zu sehen.Mit invokedynamic bietet die Java 7 VM eine Schnittstelle für dynamisch typisierte Sprachen (z.B. JRuby), die eine enorme Perormancesteigerung verspricht.
Samstag, 13. Oktober 2012
JavaScript-Engine automatisch auswählen (für Gem-Entwickler)
Ganz interessanter Tip von sensible.io für Gem-Entwickler, die einen embedded JavaScript-Interpreter brauchen: benutzt das ExecJs-Gem von Sam Stephenson! Es wählt je nach Umgebung die passende JavaScript-Engine aus. Für JRuby ist das therubyrhino, für andere Ruby-Implementierungen natürlich was anderes. Durch ExecJS wird das dann portabel und als Gem-Entwickler muß man sich nicht mehr um die Plattform kümmern, auf der das ganze dann läuft.
Freitag, 12. Oktober 2012
Why JRuby - Vortrag von der Aloha RubyConf 2012
Charles Nutter kommt viel rum. Auf der Aloha RubyConf 2012 hat er einen längeren Vortrag über JRuby gehlaten und seine Slides online gestellt. Der Vortrag gibt einen Überblick über die Historie von JRuby, Performance, das JRuby-Team, das JVM-basierte Ökosystem und vieles mehr. Sehr interessant zum Durchklicken für Leute, die zwar von JRuby gehört haben, aber die Sinnfrage stellen.
Donnerstag, 11. Oktober 2012
Trinidad JMX Remote Extension
Karol Bucek hat eine Extension für den Trinidad-Server geschrieben. Damit kann man den Server über JMX erreichen und z.B. über jconsole überwachen.
Mittwoch, 10. Oktober 2012
JRuby 1.7.0RC2 (letzter RC?) ist da!
JRuby 1.7.0 wird bald fertig sein. Es ist gerade der RC2 erschienen, der als letzter Release-Candidate geplant ist.Schwerpunkt wurde auf das Verhalten bei high Concurrency gelegt, was die Enterprise-Entwickler freuen dürfte und vielleicht einge MRI-Nutzer zum Schwenk auf JRuby bringen wird. Als Default ist "invokedynamic" unter Java7 nicht noch nicht aktiviert (wg JVM-Issues). Unter Java 8 ist es aktiviert. Fürs Perfomance-Tuning gibt es eine extra Seite im Wiki.
Labels:
invokedynamic,
JRuby 1.7.0RC2,
performance
Dienstag, 9. Oktober 2012
Charles Nutter - Rockstar
Ganz witzig: Charles Nutter (JRuby-Core), ist jetzt offiziell ein Rockstar! Die JavaOne-Konferenz zeichnet herausragende Sprecher mit diesem Titel aus. Hier gibt es ein kleines Interview dazu.
Montag, 8. Oktober 2012
Vortrag Lessons learned: use of modern JVM languages besides Java von Kai Wähner
Kai Wähner hat auf der JavaOne 2012 einen Vortrag mit dem Titel Lessons learned: use of modern JVM languages besides Java gehalten. Die Vortragsfolien sind auf Slideshare zu sehen.
Er gibt einen Überblick über die Sprachen die auf der JVM laufen, über die Vorteile der JVM (concurrency!) und betrachte die Komplexität und Reife verschiedener Lösungen. Für seine Zwecke schneidet JRuby nicht am besten ab, aber es ist sehr interessant, mal über den Sprachen-Tellerrand zu schauen.
Er gibt einen Überblick über die Sprachen die auf der JVM laufen, über die Vorteile der JVM (concurrency!) und betrachte die Komplexität und Reife verschiedener Lösungen. Für seine Zwecke schneidet JRuby nicht am besten ab, aber es ist sehr interessant, mal über den Sprachen-Tellerrand zu schauen.
Sonntag, 7. Oktober 2012
Vorträge von der JavaOne-Konferenz von Charles Nutter
Charles Nutters Vorträge von der JavaObe-Konferenz sind online (Audio + Slides). Bischen schwierig zu finden, man muß rechts oben auf "Presentation Download" klicken..
Samstag, 6. Oktober 2012
JRuby auf der Grafikkarte?
AMD und Oracle arbeiten zusammen, um Java auch auf Grafikkarten zu bringen. Und zwar hat sich AMD am Projekt Sumatra beteiligt, wo der JDK in diese Richtung weiterentwickelt wird. Grafikkarten sind extrem gut in der Parallelverarbeitung per Hardware und damit passen sie sehr gut zu Java.
Freitag, 5. Oktober 2012
Concurrency mit JRuby auf der JVM
Alex Kira hat einen Vortrag mit dem Thema Concurrency using JRuby and the JVM gehalten. Die Vortragsfolien sind auf Slideshare abrufbar. Er gibt eine Übersicht über mögliche Techniken mit Codebeispielen in verschiedenen Sprachen.
Donnerstag, 4. Oktober 2012
SSH-Services mit JRuby und Apache MINA
Dylan Vassalo, einer der Autoren von Gitris (wir berichteten :-), hat auf seinem Blog beschrieben, wie er mit der Java-SSH-Implementierung Apache MINA einen SSH-Server in eine JRuby-Applikation integrieren konnte. Er zeigt auch, wie er die Authentifizierung über einen Github-Account bewerkstelligt hat. Sehr coole Sache.
Mittwoch, 3. Oktober 2012
Rubydoop: Hadoop Jobs in JRuby
Theo Hultberg hat Rubydoop 1.0 veröffentlicht. Damit kann man Hadoop-Jobs in JRuby schreiben. Apache Hadoop ist ein Big Data Framework zur Parallelverarbeitung extrem grosser Datenmengen. Rubydoops Quellcode liegt auf github zum Abholen bereit.
Dienstag, 2. Oktober 2012
Gitris: Multiplayer Tetris mit JRuby
Mal was sehr schräges: Dylan Vassallo und Victor Nilsson haben ein "Dual-Player-Remote-Tetris" entwickelt, das in einem Terminal-Fenster über SSH läuft. Authentifiziert wird über Github, der Server ist laut @headius in JRuby geschrieben (um beim Thema zu bleiben). Das ganze heisst gitris.
Montag, 1. Oktober 2012
Ruboto 0.9.0RC (JRuby auf Android) ist da!
Der erste Release Candidate von Ruboto 0.9.0 liegt zum Download bereit. Wichtigstes neues Feature ist Subclassing von Java-Klassen zur Laufzeit! Mit Ruboto können Ruby-Scripte auf Android-Geräten laufen und das komplette Android-API benutzen.
Sonntag, 30. September 2012
Neue Version von TorqueBox (JRuby-Applikation-Plattform)
Die Version 2.1.2 von TorqueBox ist fertig. Dazu gibt es einen neuen TorqueBox Getting started Guide, der die Installation auf Mac, Linux und Windows erläutert. TorqueBox ist eine JRuby-Application-Platform, mit Support für Messaging, Scheduling und Caching-Services. TorqeBox läuft auf Redhats JBoss-Server, der Enterprise-Features wie Clustering, Load-Balancing usw bereitstellt.
Samstag, 29. September 2012
Das Javamagazin schreibt über invokedynamic, Performance und JRuby
Das aktuelle Editorial des Javamagazins befasst sich mit invokedynamic von Java7. Dieses Feature von Java 7 wird dort Türöffner für dynamische Sprachen genannt. Da steckt sicher einige Wahrheit dahinter. Durch invokedynamic können für Scriptsprachen extreme Performancessteigerungen auf der JVM erreicht werden. Was das für die Sprache Java selbst bedeutet, bleibt abzuwarten, die Java-Plattform - im speziellen die JVM - wird dadurch wesentlich attraktiver für dynamische Sprachen wie JRuby und Groovy.
Freitag, 28. September 2012
Video zum Vortrag Deploy, Scale and Sleep at Night with JRuby
Joe Kutner (@codefinger) hat auf der Golden Gate Ruby Conference 2012 einen Vortrag zum Thema Deploy, Scale and Sleep at Night with JRuby
gehalten. Das Video vom Vortrag ist nun online. Joe ist auch Autor des Buchs Deploying with JRuby.
Donnerstag, 27. September 2012
FrenzyBunnies: Background-Worker für JRuby
Dotan J. Nahum hat auf github seinen Background Worker FrenzyBunnies bereitgestellt. FrenzyBunnies läuft unter JRuby und benutzt die Middleware RabbitMQ zum Message-Processing. Die FrenzyBunnies-Worker arbeiten dabei in einem nativen Threadpool der JVM, so daß der Ressourcenverbrauch minimiert wird.
Mittwoch, 26. September 2012
JRuby 1.7RC1 ist da!
Die nächste Version 1.7 von JRuby ist beinahe da. Der erste Release Candidate steht zum Download bereit. Die wichtigsten Neuerungen:
- Support von Java 7 invokedynamic
- 1.9.3 ist nun der Default-Runtime-Mode
- Massive Performancesteigerungen
- und vieles mehr
Dienstag, 25. September 2012
Tips für nailgun von Keith R. Bennett
Keith R. Bennett hat einige Tips zur Verwendung von nailgun mit JRuby. Nailgun hält die JVM persistent im Speicher, so daß die JVM-Startup-Zeiten entfallen. JRuby hatNailgun bereits integriert, Keith' Tips zeigen ein paar Kniffe, die man beachten sollte. Zusätzlich hat er beeindruckende Performance-Werte gemessen.
Hello, Nailgun; Goodbye, JVM Startup Delays
Nailgun: Insanely Fast Java
Hello, Nailgun; Goodbye, JVM Startup Delays
Nailgun: Insanely Fast Java
Montag, 24. September 2012
Programmiersprachen auf der JVM
Auf Dr Dobb's gibt es einen schönen Überblick über Sprachen, die auf der JVM laufen. JRuby ist natürlich auch dabei, aber auch jede Menge andere - auch solche, von denen ich noch nichts gehört habe (Gosu). Ein Blick über den Tellerrand ist auf jeden Fall lohnend.
Sonntag, 23. September 2012
Rails nur mit Java
In manchen Situationen hat man nur die nackte JVM zur Verfügung und nur die Möglichkeit ein .war zu deployen. Wenn man dann auch nicht auf eine externe Datenbank zugreifen kann und eine Rails-Applikation online bringen will, gibt es ein Problem. Rockyj hat dafür eine Lösung. Er verwendet HSQLDB als Datenbank, die in Java geschrieben ist und die er in sein Deployment integrieren kann. In einer Anleitung geht er die einzelnen Schritte durch und erläutert seine Konfiguration.
Freitag, 21. September 2012
Vortrag über JVM-Interna (JIT) von Charles Nutter
Charles Nutter (JRuby-Core-Team) hat auf der JAX 2012 einen Vortrag über die Funktion des JIT-Compilers (Just-in-Time) der JVM gehalten. Schwerpunkte waren Monitoring, Performance und Fehlersuche. Der Vortrag kann auf Youtube angeschaut werden.
Donnerstag, 20. September 2012
JRuby 1.6.8 ist fertig
Die (wahrscheinlich) letzte 1.6er-Version von JRuby ist fertig und steht zum Download bereit. Schwerpunkt dieses Releases ist die Ausmerzung von Inkomatibilitäten zu Ruby 1.9. Dieses Release wurde maßgeblich von der Community gebaut, nicht vom JRuby-Core-Team, das sich gerade auf das Release von JRuby 1.7 konzentriert.
Mittwoch, 19. September 2012
jbundler für jars
mkristian hat jbundler entwickelt, um damit jars und ihre Abhängigkeiten zu verwalten. jbundler ist an bundler angelehnt: es gib ein "Jarfile" zur Definition, die Syntax ist gleich, usw. Die Sourcen können von github geholt werden.
Dienstag, 18. September 2012
Fastruby: Experiment von Charles Nutter
Charles Nutter hat ein Experiment mit einem statischen Compiler für Ruby gemacht. Ruby-Code wird zu Java-Code compiliert und nicht - wie bei JRuby - zur Laufzeit interpretiert. Wer das Experiment nachvollziehen will, kann den Code von github downloaden. Die Ergebnisse sind erstaunlich, der nicht optimierte Test-Code ist 30% schneller als JRuby.
Montag, 17. September 2012
Deploy, Scale and Sleep at Night with JRuby (Vortrag von Joe Kutner)
Die Folien von Joe Kutners Vortrag Deploy, Scale and Sleep at Night with JRuby sind jetzt online. Joe beschreibt kurz Deployment mit Warbler, Trinidad, TorqueBox und verweist noch auf sein Buch zum Thema.
Sonntag, 16. September 2012
High Performance Ruby (Vortrag von Charles Nutter)
Charles Nutter hat die Folien seines Vortrags von der Golden Gate Ruby Conference online gestellt. Thema ist High Performance Ruby. Im Vortrag geht es darum, wie die JRuby-Implementierung die JVM benutzt, die positiven Auswirkungen von invokedynamic von Java 7 auf das Laufzeitverhalten, Benchmarking und wietere Themen.
High Performance Ruby
Charles Nutter
Golden Gate Ruby Conference
High Performance Ruby
Charles Nutter
Golden Gate Ruby Conference
shoes-app (GUI mit JRuby) als jar zusammenpacken
Eric Watson hat auf github einen Proof-of-concept für das Verpacken einer shoes-4-app als .jar abgelegt. Er macht das ganze via warbler und erhält zum Schluss ein einziges .jar, das von der Kommandozeile gestartet werden kann. shoes 4 ist ein plattformunabhängiger GUI-Toolkit, mit dem man in Ruby Applikationen mit grafischer Oberfläche schreiben kann.
Samstag, 15. September 2012
TorqueBox lite Application Platform
TorqueBox lite steht auf github zum Download bereit. Es handelt sich um eine Web-only Version der Ruby-Application-Platform TorqueBox. Ziel ist, es eine stabile, leichtgewichtige Version von TorqueBox ohne Scheduled jobs, messaging, Backgroundable, long-running services, distributed transactions, caching und clustering zur Verfügung zu stellen, die aber sonst kompatibel zur Komplettversion ist. hinter TorqueBox steckt auch Redhat, so daß von dort noch einiges zu erwarten ist.
Freitag, 14. September 2012
Tddium für JRuby (Test Driven Development)
Tddium hat eine private Beta für JRuby-Anwender aufgesetzt. Tddium ist eine Continous Integration Plattform, die "in der Cloud" läuft und automatisierte Tests erleichtern soll. Man kann z.B. Tests durchführen, die vor dem Deployment nach Heroku durchlaufen werden müssen. Laufen sie durch, wird deployed, sonst eben nicht.
Donnerstag, 13. September 2012
Game of life in JRuby / Swing
Keith Bennett hat das "Game of Life" in JRuby umgesetzt. Game of Life ist ein Klassiker der Informatik, es ist ein zweidimensionaler zellulärer Automat, der einige überraschende Eigenschaften hat. Das UI von Keith Bennetts Umsetzung ist mit Swing gebaut. Die JRuby-Sourcen hat er auf github zur Verfügung gestellt, eine ausführlliche Erläuterung ist auch dabei.
Mittwoch, 12. September 2012
Verbesseter Performancevergleich von Rocky Jaiswal
Rock Jaiswal hat seinen Performancevergleich von C-Ruby und verschiedenen JRuby-Servern um JRuby unter TorqueBox-lite ergänzt. Zusätzlich hat jetzt richtige Zahlen für JRuby unter Tomcat, die er zunächst versehentlich falsch gemessen hatte.
Dienstag, 11. September 2012
Performancevergleich JRuby / Ruby
Rocky Jaiswal hat die Performance von JRuby und Ruby (MRI) verglichen und hat ein paar interessante Ergebnisse gefunden, die er in seinem Blog veröffentlicht hat.
Montag, 10. September 2012
threadsafe Rails und JRuny
Richard Huang beschreibt auf jrubytips.org die Hintergründe einer threadsafen Rails-Applikation und welche Vorteile man unter JRuby daraus ziehen kann. Er zeigt detailliert, wie Request mit und ohne Threads bearbeitet werden und diskutiert die Auswirkungen auf Speicherverbrauch, connection pooling und warmup.
Sonntag, 9. September 2012
Bericht von der JRubyConfEU (neo4j Blog, track & hack)
Auf dem neo4j Blog gibt es einen (schon einge Tage alten) Bericht von der JRubyConfEU 2012 in Berlin. Michael Hunger berichtet, wie das neo4j "track & hack"-Projekt (Tracking und Visualisierung von Positionen mit Openbeacon-RFID-Tags) aufgesetzt wurde.
Samstag, 8. September 2012
JRuby Präsentation von Keith R. Benett
Keith R. Benett hat für die Northern Virginia Ruby Users Group einen Vortrag gehalten und die Folien und das mp3 zum Vortrag ins Netz gestellt. Themen sind u.a. Tools, Server und Codebeispiele für JRuby und Deployment.
Freitag, 7. September 2012
Ruboto 0.8.1 ist fertig (JRuby auf Android)
Ruboto 0.8.1 ist fertig und liegt zum Download auf github bereit. Für einen schnelle Einstieg gibt es ein Tutorial Getting started with Ruboto. Mit Ruboto hat man aus Ruby heraus vollen Zugriff auf das Android API.
Donnerstag, 6. September 2012
Hashes und JRuby und warum Charles Nutter sie vermeidet
Charles Nutter schreibt in seinem Blog, warum er Hashes für überbewertet hält und sie in der Implementierung von JRuby vermeidet.
Mittwoch, 5. September 2012
Rubykraut Podcast über Ruby-Implementierungen von Konstantin Haase
Konstantin Haase (Rubinius-Entwickler und Sinatra-Maintainer) beleuchtet in der Rubykraut-Podcast-Folge Ruby-Implementierungen die Interna und Besonderheiten der verschiedenen Ruby-Interpreter, unter anderem auch JRuby und natürlich auch Rubinius.
Dienstag, 4. September 2012
Volltextsuche: Setup in drei Zeilen mit SolrSail
Michael Guymon hat SolrSail geschrieben, um das Basis-Setup von Apache Solr (Volltextsuchserver basierend auf Apache Lucene) zu erleichtern. Unter JRuby sind ganze drei Zeilen (!) notwendig, um einen Volltextsuchserver für eine JRuby-Applikation zu installieren! Die Details erläutert er in seinem Blog. Sehr beeindruckend!
Montag, 3. September 2012
Java-Applikationen mit Capistrano deployen
Rocky Jaiswal schreibt in seinem Blog, wie er Java-Applikationen mit Capistrano deployed. Dazu benutzt er JRuby (1.7.0 preview 2).
Sonntag, 2. September 2012
Liste mit JRuby-Alternativen für C-Extensions
Auf github gibt es eine Liste mit JRuby-Alternativen für C-Extensions. Ganz guter Einstieg, wenn man eine bestehende Ruby-Anwendung auf JRuby umziehen möchte.
Samstag, 1. September 2012
Railscast #376: JRuby Basics
Im aktuellen Railscast #376 von Ryan Bates geht es um JRuby Basics. Ryan zeigt Installation und erste Schritte mit JRuby. Dann geht er über zur Java-Integration und zeigt, wie man Swing von JRuby aus benutzen kann. Weiter geht es mit Concurrency/Threading, dann mit Rails on Rails unter JRuby. Der Screencast dauert 10 Minuten und gibt einen groben Überblick über JRuby.
Freitag, 31. August 2012
Vorbereitungen für JRuby 1.6.8
Charles Nutter hat den CI-Server für JRuby 1.6.x wieder angeworfen. Damit sind jetzt wieder Snapshot-Builds auf http://ci.jruby.org/snapshots/1.6.x/ verfügbar. Charles fixt für da 1.6.8-Release gerade Bugs und hätte gerne noch Input.
Donnerstag, 30. August 2012
jcouchbase: couchbase jruby-wrapper als Gem
Jeremy Brenner hat einen JRuby-Wrapper um den couchbase-Java-Client geschrieben und als jcouchbase-Gem auf github veröffentlicht. Couchbase ist eine Erweiterung von CouchDB mit Hochverfügbarkeits-Zugaben (Caching, Clustering, etc).
Mittwoch, 29. August 2012
JRuby-Gem schreiben: Teil 2 von Richard Huang
Richard Huang hat Teil zwei seines Tutorials how to write a jruby gem online gestellt. Schwerpunkt ist diesmal die Erweiterung um Java-Code, um eine bessere Performance zu errreichen. Auch diesmal ist viel Quellcode dabei, von dem man sich einiges abschauen kann.
Dienstag, 28. August 2012
Sehr interessanter Vortrag: JRuby at Square (Payment-Provider)
Xavier Shay hat auf der JRubyConf 2012 einen sehr interessanten Vortrag über JRuby bei Square gehalten. Square ist ein Payment-Provider für kleine Händler, der gerade viel Aufmerksamkeit und Kapital erhält. Jack Dorsey (Twitter) ist CEO von Square.
Xavier Shay beschreibt die Abwägungen und den Entscheidungsprozess der zum Einsatz von JRuby geführt hat. Dabei lag der Schwerpunkt auf Zuverlässigkeit (Payment-Provider!), nicht auf Performance. Im Vortrag kommen auch Probleme zur Sprache, die aufgetreten sind. Das 30-minütige Vortragsvideo kann auf Vimeo angeschaut werden und ist unbedingt sehenswert.
Xavier Shay beschreibt die Abwägungen und den Entscheidungsprozess der zum Einsatz von JRuby geführt hat. Dabei lag der Schwerpunkt auf Zuverlässigkeit (Payment-Provider!), nicht auf Performance. Im Vortrag kommen auch Probleme zur Sprache, die aufgetreten sind. Das 30-minütige Vortragsvideo kann auf Vimeo angeschaut werden und ist unbedingt sehenswert.
Montag, 27. August 2012
Filemaker-Zugriff mit jdbc-helper
jdbc-helper hat nun einen Adapter für Filemaker. Damit kann JRuby per jdbc auf Filemaker-Datenbanken zugreifen.
Sonntag, 26. August 2012
Datenbank für JRuby: H2 oder MySQL?
Gabor Vitez schreibt in seinem Blog, warum er sich für die H2-Datenbank (das ist eine embedded Java-DB) anstatt MySQL für eine Applikation entschieden hat. Dazu gibt es Benchmarks und weitere Argumente. Sehr lesenwswert.
Samstag, 25. August 2012
SafetyPin: Gem zum Zugriff auf JCR
Vielleicht interessant für Ruby-Anwendungen, die ein Java Content Repository (JCR) benutzen sollen: SafetyPin, ein Gem von Jordan Raine zum Zugriff auf JCR. JCR wird in verschiedenen Java-CMS genommen um Content zu speichern. Das Gem ist noch sehr jung, hat die Version 0.0.5 und Dokumentation fehlt auch noch komplett. Es gibt Query-Methoden, die SQL2 (eine JCR-Query-Sprache) verwenden, um JCR-Nodes zu finden.
Freitag, 24. August 2012
Ruboto - JRuby on Android at JRubyConf.eu 2012
Uwe Kubosch hat seine Vortragsfolien Ruboto - JRuby on Android auf speakerdeck online gestellt. Uwe ist ein Ruboto Core Developer. In seinem Vortrag geht es um die Historie von JRuby, das Tooling und einige Codebeispiele.
Donnerstag, 23. August 2012
Neue Version von jruby-memcached fertig
Richard Huang hat das Release 0.5.0 von jruby-memcached zum Download bereitgestellt. Laut Ankündigung sind primär Bugfixes der Grund für das neue Release.
Mittwoch, 22. August 2012
JRuby läuft auf dem Raspberry Pi, jffi-Library wird benötigt
Nachdem mein erster Versuch, JRuby 1.7 unter Java 7 auf dem Raspberry Pi zum Laufen zu bekommen gescheitert ist, hier eine Anleitung, wie das dann doch klappt - es sind allerdings ein paar Hürden zu überwinden..
28 gems installed
Grundlagen:
- Der Raspberry Pi ist ein kleiner Linux-Rechner (256MB RAM, ARM-Prozessor, Ethernet, USB, HD-Video usw), der sehr günstig zu haben ist (etwa 40€). JRuby darauf wäre doch mal nett..
- Für die ARM-Architektur und damit den Raspberry Pi fehlt die jffi-Library (Java Foreign Function Interface), die wird von JRuby benötigt und musste von mir selbst kompiliert werden, da sie architekturspezifisch und momentan noch nicht in der JRuby-Distribution drin ist. Dazu braucht man git und maven und den JDK. Wer das nicht selbst machen will, kann die fertig kompilierte Libary hier runterladen und nach jruby-1.7.0.preview2/lib/native/arm-Linux kopieren.
- Ich verwende Oracle Java, da der Java-Compiler benötigt wird (siehe unten) und OpenJDK wohl etwas langsam ist.
- Oracles Java braucht eine Distribution mit der "armel"-Architektur, da es das Soft Float ABI verwendet. Das schließt die normale Raspbian-Distribution aus, da diese "armhf" (Hardware-Floating-Point) verwendet!
komplette Installation:
- Auf http://www.raspberrypi.org/downloads gibt es ein Debian Wheezy-Image mit "armel"-Architektur, bei mir war das 2012-08-08-wheezy-armel.zip
- Dieses Image entpacken und per "dd" (Linux) oder entsprechendem Windows-Tool auf eine SD-Card bringen (min 2GB)
- Raspberry ans Ethernet klemmen, schauen was er für eine IP-Adresse erhält, per ssh einloggen und konfigurieren (sudo raspi-config, locale und ssh). Neu starten.
- Bei Oracle den SDK runterladen. Das geht über http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1637583.html, dort muß man ein paar Fragen beantworten. Leider geht das nicht vom Raspberry Pi aus, sondern nur über einen richtigen Browser..
- Java-SDK auf den Raspi kopieren, dann auf dem Raspberry Pi einloggen
- Java-SDK als Root installieren und als Standard setzen
- mkdir /opt/javacd /opt/java
tar -zxf /home/pi/jdk-7u6-linux-arm-sfp.tar.gz
update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.7.0_06/bin/javac" 1
update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.7.0_06/bin/java" 1 - Wer die jffi-Library nicht selbst kompilieren will, kann sie hier runterladen und nach jruby-1.7.0.preview2/lib/native/arm-Linux kopieren, die Schritte 9-16 entfallen dann.
- git auf dem Raspberry Pi installieren: sudo apt-get install git
- Die folgenden Schritte als User "pi"
- maven auf dem Raspberry Pi installieren. Das habe ich nicht per apt-get gemacht, da dann gleich OpenJDK mit installiert wird, sondern Maven direkt von http://maven.apache.org/download.html geholt, entpackt und den PATH des Users "pi" entsprechend erweitert.
- jffi holen: git clone https://github.com/jnr/jffi
- jffi-Library kompilieren: cd jffi; mvn install
- Als User "pi" das neueste jruby-1.7.2 (momentan http://jruby.org/2012/08/07/jruby-1-7-0-preview2) runterladen und entpacken.
- Kompilierte Library ins richtige JRuby-Verzeichnis kopieren: mv ./jffi/target/jni/arm-Linux jruby-1.7.0.preview2/lib/native/
- Nun noch Pfade und JRUBY_HOME setzen:
export JRUBY_HOME=/home/pi/jruby-1.7.0.preview2
export PATH=$PATH:$JRUBY_HOME/bin - Jetzt kann z.B. Rails (dauert sehr lange) oder Sinatra installiert werden:
jruby -S gem install rails
Fetching: i18n-0.6.0.gem (100%)
.
Fetching: i18n-0.6.0.gem (100%)
.
.
Successfully installed rails-3.2.828 gems installed
Warum das Ganze?
Um zu sehen, was auf der kleinen Kiste geht. Die Performance habe ich mir noch nicht angeschaut, da kommt sicher noch ein Blog-Eintrag.Video: hochverfügbarer Cluster mit TorqueBox
Joe Kutner, (Autor des Buches Deploying with JRuby) zeigt in einem kurzen Video, wie einfach es ist, einen hochverfügbaren Cluster mit Torquebox aufzusetzen. Das wird nur durch Konfiguration erreicht, Codeanpassungen sind nicht nötig.
Dienstag, 21. August 2012
JRuby-Lint checkt Code auf JRuby-Probleme
JRuby-Lint ist ein Tool von Nick Sieger (JRuby-Core-Committer), das Ruby-Code auf potentielle Probleme mit JRuby checkt.
Abonnieren
Posts (Atom)