The .Net Ruby VM<br />Nikos Dimitrakopoulos<br />Dec 2009<br />
Me<br />Software developer<br />Pamediakopes.gr (now)<br />Rento.gr (past)<br />Individually (past + now)<br />Bachelor in...
Pamediakopes.gr<br />Travel agency<br />Airtickets<br />Hotels<br />Ferry Tickets<br />Car rentals<br />…<br />Travel agen...
Scope<br />Do the laundry<br />Sys-admin<br />Do small but amazingly repetitive tasks<br />Prototype – fast!<br />Don’t re...
So?<br />Ruby is amazingly good for:<br />Sys-admin scripts<br />Implementing simple (and not so simple) libraries<br />Ra...
Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />5<br />A fully Object-Oriented Language<br />Every...
Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />6<br />Cross platform<br />Open source<br />Multip...
Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />7<br />Origins in Japan<br />Zen is everywhere in ...
Demo!<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />8<br />
Famous quotes<br />It doesn’t scale<br />It’s slow<br />It’s immature<br />Not enterprise<br />…<br />9<br />Nikos Dimitra...
But<br />jRuby<br />MacRuby<br />Rubinius<br />MagLev<br />IronRuby<br />10<br />Nikos Dimitrakopoulos on IronRuby Microso...
11<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />IronRuby<br />
12<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
What is IronRuby<br />An alternative Ruby VM<br />Implemented on top of the DLR<br />Tight integration with .Net<br />Part...
A Ruby VM<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />14<br />Ruby interpreter (compliant with v 1....
.Net Integration<br />Interoperability with .Net<br />Consume all the C# code you want!<br />The huge .Net library ecosyst...
Additionally<br />“Translations” of idioms:<br />object.SomeMethod() &lt;-&gt; object.some_method<br />System.Core &lt;-&g...
# Demo<br />17<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
.Net Integration<br />Test .Net code with Cucumber & RSpec!<br />18<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDa...
# Demo<br />19<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
.Net Integration<br />Extend existing .Net classes the ruby way!<br />20<br />Nikos Dimitrakopoulos on IronRuby Microsoft ...
.Net Integration<br />Call ruby code from .Net!<br />21<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
# Demo<br />22<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
.Net Integration<br />Deploy on .Net infrastructure<br />Web apps on IIS (Rails on .Net!)<br />Consume Azure services!<br ...
.Net Integration<br />Deploy on .Net infrastructure<br />Desktop applications on Windows<br />Desktop applications on ever...
Additionally<br />Interoperability with the other scripting languages!<br />Python<br />…<br />Use code also from there!<b...
Silverlight<br />Silverlight integration<br />Write ruby instead of javascript in your pages! (Gestalt project) <br />26<b...
Silverlight<br />27<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
Limitations<br />No support for native C gems<br />Some rough edges in interoperability<br />28<br />Nikos Dimitrakopoulos...
Status<br />29<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />RC1<br />Runs on .Net 3.5 & .Net 4.0 (di...
Status<br />30<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
Future<br />31<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />Speed<br />Be on par with JRuby<br />Rub...
Thanks!<br />32<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />Thanks a lot & happy hacking!<br />
Links<br />33<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />IronRuby:<br />http://ironruby.net/<br />...
Upcoming SlideShare
Loading in...5
×

Microsoft Hellas Dev Days 09: IronRuby

1,101

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,101
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Microsoft Hellas Dev Days 09: IronRuby"

  1. 1. The .Net Ruby VM<br />Nikos Dimitrakopoulos<br />Dec 2009<br />
  2. 2. Me<br />Software developer<br />Pamediakopes.gr (now)<br />Rento.gr (past)<br />Individually (past + now)<br />Bachelor in Telecommunications (main emphasis on web) from University of Peloponnese<br />Programming experience:<br />Ruby<br />C#<br />JavaScript<br />Java, Objective-C, …<br />1<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  3. 3. Pamediakopes.gr<br />Travel agency<br />Airtickets<br />Hotels<br />Ferry Tickets<br />Car rentals<br />…<br />Travel agency. But:<br />Fully electronic<br />Fully automated (ok, almost…)<br />A software house<br />Tools of the trade:<br />C#, SQL, ASP.Net, JavaScript<br />plus a million different technologies for internal stuff (ruby, python, c, …)<br />2<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  4. 4. Scope<br />Do the laundry<br />Sys-admin<br />Do small but amazingly repetitive tasks<br />Prototype – fast!<br />Don’t reinvent the wheel!<br />Combine 2, 3 or 10s of different software ecosystems!<br />Testing<br />Unit<br />Functional<br />Integration<br />Easier/less time consuming than C# with NUnit (for example)<br />3<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  5. 5. So?<br />Ruby is amazingly good for:<br />Sys-admin scripts<br />Implementing simple (and not so simple) libraries<br />Rapid prototyping<br />Rails<br />Sinatra<br />…<br />Reusing code<br />Strong community & ecosystem after 2004 (Rails)<br />Almost everything is Open Source<br />4<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  6. 6. Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />5<br />A fully Object-Oriented Language<br />Everything is an object<br />Functional Paradigm<br />Lambdas / procs<br />map(), each(), inject()<br />Fully Dynamic<br />Interpreted<br />Dynamically typed<br />Totally extensible (even core classes)<br />
  7. 7. Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />6<br />Cross platform<br />Open source<br />Multiple VMs<br />Vanilla Ruby (MRI, aka Matz’s Original Interpreter)<br />Runs on all platforms<br />C bindings<br />JRuby (On JVM, aka the Java Virtual Machine)<br />Runs where Java Runs<br />Java bindings<br />MacRuby (On Mac OS X)<br />Runs on Mac OS X<br />Objective-C & Cocoa bindings<br />
  8. 8. Ruby<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />7<br />Origins in Japan<br />Zen is everywhere in the language<br />Simple<br />Effective<br />“No-fluff”<br />
  9. 9. Demo!<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />8<br />
  10. 10. Famous quotes<br />It doesn’t scale<br />It’s slow<br />It’s immature<br />Not enterprise<br />…<br />9<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  11. 11. But<br />jRuby<br />MacRuby<br />Rubinius<br />MagLev<br />IronRuby<br />10<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  12. 12. 11<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />IronRuby<br />
  13. 13. 12<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  14. 14. What is IronRuby<br />An alternative Ruby VM<br />Implemented on top of the DLR<br />Tight integration with .Net<br />Part of the “Iron” languages implemented in .Net<br />Python<br />Ruby<br />LISP<br />…<br />13<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  15. 15. A Ruby VM<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />14<br />Ruby interpreter (compliant with v 1.8.6)<br />Faster than vanilla MRI Ruby (usually)<br />Standard tools included:<br />Console (irb)<br />Libraries (rubygems)<br />Documentation (ri / RDoc)<br />
  16. 16. .Net Integration<br />Interoperability with .Net<br />Consume all the C# code you want!<br />The huge .Net library ecosystem<br />External .Net libraries<br />Custom / existing C# code<br />15<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  17. 17. Additionally<br />“Translations” of idioms:<br />object.SomeMethod() &lt;-&gt; object.some_method<br />System.Core &lt;-&gt; System::Core<br />C# lambdas and delegates &lt;-&gt; Ruby clojures<br />&gt;&gt;&gt; l = System::Byte.instance_methods(false).last<br />=&gt; &apos;get_type_code&apos;<br />&gt;&gt;&gt; l.ruby_name<br />=&gt; &quot;get_type_code&quot;<br />&gt;&gt;&gt; l.clr_name<br />=&gt; &quot;GetTypeCode&quot;<br />16<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  18. 18. # Demo<br />17<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  19. 19. .Net Integration<br />Test .Net code with Cucumber & RSpec!<br />18<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  20. 20. # Demo<br />19<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  21. 21. .Net Integration<br />Extend existing .Net classes the ruby way!<br />20<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  22. 22. .Net Integration<br />Call ruby code from .Net!<br />21<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  23. 23. # Demo<br />22<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  24. 24. .Net Integration<br />Deploy on .Net infrastructure<br />Web apps on IIS (Rails on .Net!)<br />Consume Azure services!<br />Use .Net services<br />SQL<br />Office<br />Active Directory<br />Exchange<br />etc...<br />23<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  25. 25. .Net Integration<br />Deploy on .Net infrastructure<br />Desktop applications on Windows<br />Desktop applications on everywhere (Mono)<br />24<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  26. 26. Additionally<br />Interoperability with the other scripting languages!<br />Python<br />…<br />Use code also from there!<br />25<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  27. 27. Silverlight<br />Silverlight integration<br />Write ruby instead of javascript in your pages! (Gestalt project) <br />26<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  28. 28. Silverlight<br />27<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  29. 29. Limitations<br />No support for native C gems<br />Some rough edges in interoperability<br />28<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  30. 30. Status<br />29<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />RC1<br />Runs on .Net 3.5 & .Net 4.0 (different builds)<br />Passing ~93% of the Ruby specs<br />Already faster than vanilla Ruby (in a lot of cases)<br />1.0 expected soon<br />Full compatibility with Ruby 1.8.6<br />Common build for .Net 3.5 & .Net 4.0 (hopefully)<br />
  31. 31. Status<br />30<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />
  32. 32. Future<br />31<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />Speed<br />Be on par with JRuby<br />Ruby 1.9 (maybe?)<br />???<br />
  33. 33. Thanks!<br />32<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />Thanks a lot & happy hacking!<br />
  34. 34. Links<br />33<br />Nikos Dimitrakopoulos on IronRuby Microsoft DevDays 2009<br />IronRuby:<br />http://ironruby.net/<br />http://ironruby.codeplex.com/<br />Rubyst.es<br />http://rubyst.es<br />http://groups.google.com/ruby-hellug<br />Pamediakopes<br />http://www.pamediakopes.gr<br />http://www.airtickets24.com<br />Me<br />http://blog.nikosd.com<br />http://twitter.com/nikosd<br />nospam - at - nikosd - dom – com<br />Code samples : http://nikosd.com/f/ironruby-code-samples.zip<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×