comparing groovy & jruby *
|
|
- Clinton Martin
- 6 years ago
- Views:
Transcription
1 ThoughtWorks comparing groovy & jruby * * please check all knives, guns, pitchforks, and torches at the door NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA blog: memeagora.blogspot.com twitter: neal4d
2 housekeeping ask questions at the end (insane amount of material!) download slides from nealford.com download samples from github.com/nealford
3 agenda: syntax closures eigenclass approaches meta-programming framework approach
4 geek fu test:
5 Groovy dynamicizes the Java TM platform JRuby brings Ruby to the Java TM platform
6 strong dynamic static weak
7
8 differences & observations
9 syntax
10 sigils
11 this.name
12
13
14 auto-encapsulation?
15
16
17 Perl!!!!!!!!!
18 Ruby has some Perl-isms......with significant differences
19 closures
20
21
22
23
24 passing closures
25 auto-blocks
26 passing closures
27 everything except... in Java, everything is an object......except primitives and nulls in Groovy, everything is an object... except null in JRuby, everything is an object
28 null is null?. handles protected reference person?.address?.street
29 nil is an instance of NilClass
30
31 switch/case statement
32
33
34 === iscase()
35 spread operator
36 elvis operator
37 side effects of encapsulating Java
38 things added to Object
39 supporting collections
40 really? really!
41 JRuby additions JRuby adds artifacts to Rubify Java ArrayList...but doesn t add collection stuff to Object Fixnum
42 Groovy is optionally typed
43
44 search exists on Stack but not on ArrayList or List!
45 interfaces & mixins
46 Groovy & interfaces allows you to interact with Java interfaces can wrap proxies around them if needed fake out interfaces via closures using as
47
48 be careful when implementing with a map: NullPointerException if you forget a method
49 Ruby has no interfaces mixin first appeared in symbolic logic s flavors system named after ice cream mix-ins not a form of specialization a way to collect functionality
50
51 comparisons
52 comparisons
53
54
55 comparisons
56 violating handshakes
57 mixins in Groovy, interfaces in JRuby
58
59 interfaces in JRuby?
60
61 meta-programming
62 mostly parity (functionally) very different implementations
63 executable declarations much of Ruby s infrastructure is metaprogramming meta-programming methods: attr_reader, attr_writer, attr_accessor include private, protected, public
64 AST transformations
65 implementation
66
67 optional inclusion
68 conditional method
69 attributes
70 hook methods
71 sticky attributes private, protected, public
72 eigenclass
73 adding methods via proxies
74
75 Groovy s eigenclass
76 framework approach
77 encapsulate & extend
78 Groovy & Grails leverage the existing industrial strength Java stack encapsulate best-of-breed frameworks use Groovy to simplify and humanize them encapsulate, then build up
79
80 abstraction layers via meta dsl
81 Ruby tends to build things as abstraction layers atop Ruby using meta-programming & dsl techniques Ruby on Rails = software factories + dsl s Ruby language is always 1 abstraction layer down lightweight abstraction layers
82 case study: builders
83 GroovyObjectSupport BuilderSupport MarkupBuilder
84
85 builder
86 builder works via method_missing but what about this?
87
88 the problem: how do you inherit from object......with inheriting from object?
89 1.8 Jim Weirich s BlankSlate Object BasicObject BlankSlate Recorder Builder Recorder Builder 1.9 BasicObject
90
91 different philosophies Groovy encapsulates and builds up Ruby either builds abstractions with dsl s via meta-programming
92 summary
93
94
95 the good unparalleled Java integration willing to evolve the language the real JDK 2.0! building up from best-of-breed
96 the bad fast changing at the core single runtime platform never spread out of the Java community framework approach?
97 def name public String getname() public void setname(string name)
98
99 the good well established (older than Java ) virtually effortless meta-programming futuristic framework approach truly cross platform, for the new definition of platform interpreted, then jit-ted
100 the bad some impedance mismatch with Java (smaller all the time) yet another language to learn unfamiliar frameworks you have to switch to a new community you have to learn to think like a Ruby-ist
101
102 ThoughtWorks? s please fill out the session evaluations samples at github.com/nealford NEAL FORD software architect / meme wrangler ThoughtWorks This work is licensed under the Creative Commons Attribution-Share Alike 3.0 License. nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA blog: memeagora.blogspot.com twitter: neal4d
103 ThoughtWorks resources Cow in the Road photo by Sophia Huda, from Flickr, under a Creative Commons license groovy web site jruby site ola bini s blog charles nutter s blog
104 ThoughtWorks resources jeff brown s blog graeme rocher s blog aboutgroovy venkat subramaniam s blog
introduction to jruby
ThoughtWorks introduction to jruby NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319 www.nealford.com www.thoughtworks.com memeagora.blogspot.com
More informationdesign patterns in ruby
ThoughtWorks design patterns in ruby NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319 www.nealford.com www.thoughtworks.com memeagora.blogspot.com
More informationbuilding DSLs with language workbenches
ThoughtWorks building DSLs with language workbenches NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319 www.nealford.com www.thoughtworks.com
More informationbuilding dsl s in static & dynamic languages
ThoughtWorks building dsl s in static & dynamic languages NEAL FORD thoughtworker / meme wrangler ThoughtWorks 14 Wall St, Suite 2019, New York, NY 10005 nford@thoughtworks.com www.nealford.com www.thoughtworks.com
More informationRails in the Large: Building the Biggest (Enterprise) Rails Application in the World
ThoughtWorks Rails in the Large: Building the Biggest (Enterprise) Rails Application in the World PAUL GROSS software developer / consultant ThoughtWorks NEAL FORD software architect / meme wrangler ThoughtWorks
More informationThe Curious Clojureist
The Curious Clojureist NEAL FORD director / software architect meme wrangler ThoughtWorks nford@thoughtworks.com 2002 Summit Boulevard, Atlanta, GA 30319 nealford.com thoughtworks.com memeagora.blogspot.com
More informationIntroduction to JRuby
Introduction to JRuby Neal Ford ThoughtWorker / Meme Wrangler www.nealford.com www.thoughtworks.com nford@thoughtworks.com memeagora.blogspot.com Questions, Slides, & Samples Please feel free to ask questions
More informationJRuby and Ioke. On Google AppEngine. Ola Bini
JRuby and Ioke On Google AppEngine Ola Bini ola.bini@gmail.com http://olabini.com/blog Vanity slide ThoughtWorks consultant/developer/programming language geek JRuby Core Developer From Stockholm, Sweden
More informationGroovy Primer Chris Dail Groovy Primer (March 2010)
Groovy Primer Chris Dail http://chrisdail.com Twitter: @chrisdail What is Groovy? An agile dynamic language for the Java Platform Both dynamically and statically typed Functional programming influence
More information1B1b Classes in Java Part I
1B1b Classes in Java Part I Agenda Defining simple classes. Instance variables and methods. Objects. Object references. 1 2 Reading You should be reading: Part I chapters 6,9,10 And browsing: Part IV chapter
More informationCSE 341, Autumn 2015, Ruby Introduction Summary
CSE 341, Autumn 2015, Ruby Introduction Summary Disclaimer: This lecture summary is not necessarily a complete substitute for atting class, reading the associated code, etc. It is designed to be a useful
More informationGroovy For Java Programmers
Groovy For Java Programmers QCONSF 2010 Jeff Brown Core Grails Developer jeff.brown@springsource.com SpringSource - A Division Of VMware http://springsource.com/ Copyright 2010 SpringSource. Copying, publishing
More informationThe Script Bowl Featuring Groovy, JRuby, Jython and Scala. Raghavan Rags N. Srinivas CTO, Technology Evangelism
The Script Bowl Featuring Groovy, JRuby, Jython and Scala Raghavan Rags N. Srinivas CTO, Technology Evangelism The Script Bowl: Groovy Style Guillaume Laforge VP Technology at G2One, Inc. Groovy Project
More informationAdvanced Enterprise Debugging
ThoughtWorks Neal Ford TS-4588 Advanced Enterprise Debugging ThoughtWorker/Meme Wrangler ThoughtWorks www.thoughtworks.com 2007 JavaOne SM Conference TS-4588 What This Session Covers Forensic debugging
More informationJRuby: Bringing Ruby to the JVM
JRuby: Bringing Ruby to the JVM Thomas E. Enebo Aandtech Inc. Charles Oliver Nutter Ventera Corp http://www.jruby.org TS-3059 2006 JavaOne SM Conference Session TS-3059 JRuby Presentation Goal Learn what
More informationCS 5142 Scripting Languages
CS 5142 Scripting Languages 10/25/2012 Ruby 1 Outline Ruby Martin Hirzel 2 About Ruby Invented 1995 by Yokihiro Matz Matsumoto Influenced by SmallTalk Everything is an object (even e.g., integers) Blocks
More informationUsing Scala for building DSL s
Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain
More informationTDDB84: Lecture 5. Singleton, Builder, Proxy, Mediator. fredag 27 september 13
TDDB84: Lecture 5 Singleton, Builder, Proxy, Mediator Creational Abstract Factory Singleton Builder Structural Composite Proxy Bridge Adapter Template method Behavioral Iterator Mediator Chain of responsibility
More informationExtreme Java Productivity with Spring Roo and Spring 3.0
Extreme Java Productivity with Spring Roo and Spring 3.0 Rod Johnson Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Agenda Motivation
More informationMetaprogramming in Ruby A Pattern Catalog
Metaprogramming in Ruby A Pattern Catalog Sebastian Günther, Marco Fischer School of Computer Science, University of Magdeburg Abstract Modern programming languages provide extensive metaprogramming facilities.
More informationOracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios.
Oracle Mix A Case Study Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Vanity slide Vanity slide Ola Bini Vanity slide Ola Bini From Stockholm, Sweden Vanity
More informationLecture 2. Object Orientation 1 / 51
Lecture 2 Object Orientation 1 / 51 Homework 1 Homework 1 was due at noon You will be graded on: Correctness: 15 points (passing all RSpec tests) Style: 5 points (having no Rubocop style offenses) Best
More informationGroovy & Grails Scripting for Modern Web Applications. Rohit Nayak Talentica Software
Groovy & Grails Scripting for Modern Web Applications Rohit Nayak Talentica Software Agenda Demo: Quick intro to Grails Scripting, Web Applications and Grails/Groovy REST service in Grails Demo Internals
More informationAquarium: AOP for Ruby
Aquarium: AOP for Ruby Dean Wampler Object Mentor, Inc. dean@objectmentor.com AOSD 2008 April 3, 2008 1 Goals and Features Provide an intuitive syntax. Support runtime addition and removal of advice. Advise
More informationOutline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context
Types 1 / 15 Outline Introduction Concepts and terminology The case for static typing Implementing a static type system Basic typing relations Adding context 2 / 15 Types and type errors Type: a set of
More informationJussi Riihelä / Jussi Riihelä
28.4.2006 Jussi Riihelä jussi.riihela@nokia.com 1 2006-04-28 / Jussi Riihelä Content Basic facts and motivation Groovy features IDE support and runtime dependencies Criticism 2 2006-04-28 / Jussi Riihelä
More informationthe productive programer: mechanics
ThoughtWorks the productive programer: mechanics NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319 www.nealford.com www.thoughtworks.com
More informationPrinciples of Ruby Applica3on Design. Dean Wampler Senior Mentor and Consultant Object Mentor, Inc. Chicago, IL
Principles of Ruby Applica3on Design Dean Wampler Senior Mentor and Consultant Object Mentor, Inc. Chicago, IL dean@objectmentor.com 1 Get the latest version of this talk: aspectprogramming.com/papers
More informationTDDB84: Lecture 09. SOLID, Language design, Summary. fredag 11 oktober 13
TDDB84: Lecture 09 SOLID, Language design, Summary SOLID Single responsibility principle Open/closed principle Liskov substitution principle Interface segregation principle Depency inversion principle
More informationBeginning Groovy, Grails and Griffon. Vishal Layka Christopher M. Judd Joseph Faisal Nusairat Jim Shingler
Beginning Groovy, Grails and Griffon Vishal Layka Christopher M. Judd Joseph Faisal Nusairat Jim Shingler Contents J About the Authors About the Technical Reviewer Acknowledgments xv xvii xix Chapter 1:
More informationArray variable in class ruby. Array variable in class ruby.zip
Array variable in class ruby Array variable in class ruby.zip Returns a new array. In the first form, if no arguments are sent, the new array will be empty. When a size and an optional obj are sent, an
More informationSmalltalk: developed at Xerox Palo Alto Research Center by the Learning Research Group in the 1970 s (Smalltalk-72, Smalltalk-76, Smalltalk-80)
A Bit of History Some notable examples of early object-oriented languages and systems: Sketchpad (Ivan Sutherland s 1963 PhD dissertation) was the first system to use classes and instances (although Sketchpad
More informationParley: Federated Virtual Machines
1 IBM Research Parley: Federated Virtual Machines Perry Cheng, Dave Grove, Martin Hirzel, Rob O Callahan and Nikhil Swamy VEE Workshop September 2004 2002 IBM Corporation What is Parley? Motivation Virtual
More informationGroovy & Grails in Depth
Groovy & Grails in Depth Simplifying Java EE with Grails Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Speaker s qualifications Graeme
More informationCSE 413 Spring Introduction to Ruby. Credit: Dan Grossman, CSE341
CSE 413 Spring 2011 Introduction to Ruby Credit: Dan Grossman, CSE341 Why? Because: Pure object-oriented language Interesting, not entirely obvious implications Interesting design decisions Type system,
More informationMetaprogramming in Ruby A Pattern Catalog
Metaprogramming in Ruby A Pattern Catalog Sebastian Günther, School of Computer Science, University of Magdeburg and Marco Fischer, School of Computer Science, University of Magdeburg Modern programming
More informationUnit Testing J2EE from JRuby. Evan Light
Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control
More informationA Folding Language. Ola Bini computational metalinguist fredag, 2009 september 18
A Folding Language Ola Bini computational metalinguist ola.bini@gmail.com http://olabini.com/blog Your host From Sweden Language geek at ThoughtWorks Experience with C/C++, C#, Java, Ruby, Lisp and many
More informationCSE 341: Programming Languages. Section AC with Nate Yazdani
CSE 341: Programming Languages Section AC with Nate Yazdani aga method dispatch mixins visitor pattern method dispatch what is dispatch method dispatch or just dispatch is the protocol to look up the method
More informationLecture 2. Object Orientation
Lecture 2 Object Orientation 1 Homework 0 Grades Homework 0 grades were returned earlier this week Any questions? 2 Homework 1 Homework 1 is due tonight at 11:59pm You will be graded on: Correctness: 15
More informationCSE 413 Programming Languages & Implementation. Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs
CSE 413 Programming Languages & Implementation Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs CSE413 Winter 2019 1 The Plan Ruby container data structures Blocks and control structures (iterators,
More informationLike It Or Not Web Applications and Mashups Will Be Hot
Like It Or Not Web Applications and Mashups Will Be Hot Tommi Mikkonen Tampere University of Technology tommi.mikkonen@tut.fi Antero Taivalsaari Sun Microsystems Laboratories antero.taivalsaari@sun.com
More informationRuby: Object-Oriented Concepts
Ruby: Object-Oriented Concepts Computer Science and Engineering College of Engineering The Ohio State University Lecture 8 Classes Classes have methods and variables class LightBulb # name with CamelCase
More informationCSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP. Dan Grossman Winter 2013
CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP Dan Grossman Winter 2013 Ruby logistics Next two sections use the Ruby language http://www.ruby-lang.org/ Installation / basic usage
More informationCSE 341: Programming Languages
CSE 341: Programming Languages Hal Perkins Spring 2011 Lecture 19 Introduction to Ruby Hal Perkins CSE341 Spring 2011, Lecture 19 1 Today Why Ruby? Some basics of Ruby programs Syntax Classes, Methods
More informationRuby logistics. CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP. Ruby: Not our focus. Ruby: Our focus. A note on the homework
Ruby logistics CSE341: Programming Languages Lecture 19 Introduction to Ruby and OOP Dan Grossman Autumn 2018 Next two sections use the Ruby language http://www.ruby-lang.org/ Installation / basic usage
More informationA guide to learning the popular JVM programming language, Groovy 2.x, and its ecosystem
Learning Groovy A guide to learning the popular JVM programming language, Groovy 2.x, and its ecosystem Adam L. Davis This book is for sale at http://leanpub.com/learninggroovy This version was published
More informationRuby II. Classes. Classes are straight forward in Ruby.
Ruby II Classes Classes are straight forward in Ruby. expr Note that the class name begins with a capitol letter. Classes can contain instance variables, instance methods, class variables, class methods,
More informationContents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview...
Contents in Detail Foreword by Aaron Patterson xv Acknowledgments xvii Introduction Who This Book Is For................................................ xx Using Ruby to Test Itself.... xx Which Implementation
More informationthe productive programmer
ThoughtWorks the productive programmer NEAL FORD software architect / meme wrangler ThoughtWorks nford@thoughtworks.com 3003 Summit Boulevard, Atlanta, GA 30319 www.nealford.com www.thoughtworks.com memeagora.blogspot.com
More informationKotlin for Android Developers
Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
More informationJRuby: What, Why, How...Do it Now!
JRuby: What, Why, How...Do it Now! Thomas E Enebo, JRuby Core Developer Charles Oliver Nutter, JRuby Core Developer TS-5416 Learn how awesome JRuby is Learn how much nicer Java technologybased APIs can
More informationKotlin for Android Developers
Kotlin for Android Developers Learn Kotlin the easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
More informationTopic 9: Type Checking
Recommended Exercises and Readings Topic 9: Type Checking From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6 and
More informationTopic 9: Type Checking
Topic 9: Type Checking 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6
More informationObject-Oriented Programming
13 Object-Oriented Programming Exercises 13.1 Using Java as an example: 13.2 Code reuse: inhertiance, interfaces. In the case of an interface, any class implementing the Comparable interface can be sorted
More informationModel Driven Architecture with Java
Model Driven Architecture with Java Gregory Cranz Solutions Architect Arrow Electronics, Inc. V20061005.1351 Page Number.1 Who am I? Solutions Architect Software Developer Java Early Adopter Page Number.2
More informationRuby on Rails TKK, Otto Hilska
Ruby on Rails intro @ TKK, 25.5.2009 Otto Hilska 1 Today s agenda 1. The Ruby programming language 2. Ruby on Rails framework 3. An example project 2 About me Started Nodeta Oy in 2004 10+ employees always
More informationLecture 2. Object Orientation 1 / 50
Lecture 2 Object Orientation 1 / 50 Homework 1 Homework 1 was due last night You will be graded on: Correctness: 15 points (passing all RSpec tests) Style: 5 points (having no Rubocop style offenses) Best
More informationDatabase Application Architectures
Chapter 15 Database Application Architectures Database Systems(Part 2) p. 221/287 Database Applications Most users do not interact directly with a database system The DBMS is hidden behind application
More informationBytecode Manipulation Techniques for Dynamic Applications for the Java Virtual Machine
Bytecode Manipulation Techniques for Dynamic Applications for the Java Virtual Machine Eugene Kuleshov, Terracotta Tim Eck, Terracotta Tom Ware, Oracle Corporation Charles Nutter, Sun Microsystems, Inc.
More information9/19/2018 Programming Data Structures. Polymorphism And Abstract
9/19/2018 Programming Data Structures Polymorphism And Abstract 1 In-class assignment: deadline noon!! 2 Overview: 4 main concepts in Object-Oriented Encapsulation in Java is a mechanism of wrapping the
More informationAssumptions. History
Assumptions A Brief Introduction to Java for C++ Programmers: Part 1 ENGI 5895: Software Design Faculty of Engineering & Applied Science Memorial University of Newfoundland You already know C++ You understand
More informationOverview of the Ruby Language. By Ron Haley
Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationProgramming Paradigms
PP 2016/17 Unit 4 Ruby Advanced 1/42 Programming Paradigms Unit 4 Ruby Advanced J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE PP 2016/17 Unit 4 Ruby Advanced 2/42 Outline
More informationWhat are they, and what are the benefits and risks?
Groovy and Grails 1 What are they, and what are the benefits and risks? Who am I? 2 John Leach, Chief Technical Officer for Syger Java developer from the start and still learning Syger - a small software
More informationPractical DSL Design. Groovy Sydney Meetup May 4th, Peter Bell CEO/CTO SystemsForge
Practical DSL Design Groovy Sydney Meetup May 4th, 2010 Peter Bell CEO/CTO SystemsForge Overview Before DSLs... What is a DSL? Creating a DSL Good DSL Design Key Concepts Implementing DSLs in Groovy Testing
More informationStatic Typing or Dynamic Typing: A Real Issue or a Simple Case of Tribalism
Static Typing or Dynamic Typing: A Real Issue or a Simple Case of Tribalism Dr Russel Winder Concertant LLP russel.winder@concertant.com 2007 Russel Winder 1 Aims and Objectives Survey some of the static
More informationBuilding Grails Applications with PostgreSQL. Brent Baxter and Ken Rimple PostgreSQL East - March 25, 2010
Building Grails Applications with PostgreSQL Brent Baxter and Ken Rimple About Brent and Ken Brent Baxter: bbaxter@chariotsolutions.com Consultant and Applications Architect Grails, Java, and Spring developer
More informationRuby Topic Maps. Introduction to Ruby. Benjamin Bock.
Ruby Topic Maps http://rtm.rubyforge.org Introduction to Ruby Benjamin Bock 1 Calculator irb(main):001:0> 1+2 Type irb in your Terminal / Command / Shell window to start the interactive Ruby interpreter
More informationEvolving the Java platform. Ola Bini JRuby Core Developer ThoughtWorks Studios
Evolving the Java platform Ola Bini JRuby Core Developer ThoughtWorks Studios About me Ola Bini From Stockholm, Sweden JRuby Core Developer ThoughtWorks Studios Member of the JSR292 expert group Programming
More informationRefactotum #6. Jason Rudolph
Refactotum #6 2G Experience Jason Rudolph jason@thinkrelevance.com Published under the Creative Commons Attribution Noncommercial Share Alike License Version 2.5. (Please see http://creativecommons.org/licenses/by-nc-sa/2.5
More informationObjects and Iterators
Objects and Iterators Can We Have Data Structures With Generic Types? What s in a Bag? All our implementations of collections so far allowed for one data type for the entire collection To accommodate a
More information15.1 Origins and Uses of Ruby
15.1 Origins and Uses of Ruby - Designed by Yukihiro Matsumoto; released in 1996 - Use spread rapidly in Japan - Use is now growing in part because of its use in Rails - A pure object-oriented purely interpreted
More informationProgramming Paradigms
PP 2017/18 Unit 18 Summary of Basic Concepts 1/13 Programming Paradigms Unit 18 Summary of Basic Concepts J. Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE PP 2017/18 Unit 18
More informationExam in TDDB84: Design Patterns,
Exam in TDDB84: Design Patterns, 2014-10-24 14-18 Information Observe the following, or risk subtraction of points: 1) Write only the answer to one task on one sheet. Use only the front side of the sheets
More informationRules and syntax for inheritance. The boring stuff
Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for
More informationEvaluation Guide for ASP.NET Web CMS and Experience Platforms
Evaluation Guide for ASP.NET Web CMS and Experience Platforms CONTENTS Introduction....................... 1 4 Key Differences...2 Architecture:...2 Development Model...3 Content:...4 Database:...4 Bonus:
More informationA Tour of Ruby.... for Java programmers
A Tour of Ruby... for Java programmers Everything has a value Everything has a value, which I'll show in a comment (following Matsumoto): 1234 # => 1234 2 + 2 # => 4 'Hello' + 'World' # => 'HelloWorld'
More informationSoftware Project Seminar VII: Tools of the Craft. 23 march 2006 Jevgeni Kabanov
Software Project Seminar VII: Tools of the Craft 23 march 2006 Jevgeni Kabanov Administrative Info Send your troubles to tarkvaraprojekt@webmedia.ee, not to Ivo directly Next time will be an additional
More informationClasses, Objects, and OOP in Java. June 16, 2017
Classes, Objects, and OOP in Java June 16, 2017 Which is a Class in the below code? Mario itsame = new Mario( Red Hat? ); A. Mario B. itsame C. new D. Red Hat? Whats the difference? int vs. Integer A.
More informationRails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp
Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point
More informationClosing the Case for Groovy (and Ruby, and Python)
Closing the Case for Groovy (and Ruby, and Python) Dr Russel Winder Concertant LLP russel.winder@concertant.com 2007 Russel Winder 1 Aims and Objectives Convince people that dynamic typing is not a difficulty,
More informationObject Oriented Programming: Based on slides from Skrien Chapter 2
Object Oriented Programming: A Review Based on slides from Skrien Chapter 2 Object-Oriented Programming (OOP) Solution expressed as a set of communicating objects An object encapsulates the behavior and
More informationRuby, with foxes. Ruby, cont d. Warning. why's (poignant) Guide to Ruby
O Ruby, cont d n O Ruby, with foxes n why's (poignant) Guide to Ruby Ruby explained through humorous and more or less irrelevant stories about foxes, elfs, cats and others Warning If I was put off Ruby
More informationOne can evaluate any valid string as code at run time using eval.
Metaprogramming Metaprogramming means writing code that writes code. This allows us to modify the behavior of a program at run time. Ruby has several metaprogramming facilities. One can add create a new
More informationObject Model Comparisons
Object Model Comparisons 1 Languages are designed, just like programs Someone decides what the language is for Someone decides what features it's going to have Can't really understand a language until
More informationGroovy. Extending Java with scripting capabilities. Last updated: 10 July 2017
Groovy Extending Java with scripting capabilities Last updated: 10 July 2017 Pepgo Limited, 71-75 Shelton Street, Covent Garden, London, WC2H 9JQ, United Kingdom Contents About Groovy... 3 Install Groovy...
More informationBe Careful, Your Java is Showing. Joe O Brien, artisan EdgeCase, LLC
Be Careful, Your Java is Showing Joe O Brien, artisan EdgeCase, LLC A language that doesn't affect the way you think about programming, is not worth knowing. Alan J. Perlis, Yale University .NET / Java
More informationRetaining Comments when Refactoring Code or
Retaining Comments when Refactoring Code or Why and how we build Refactoring Eclipse plug-ins for several non-java languages Prof. Peter Sommerlad IFS Institute for Software HSR Rapperswil, Switzerland
More informationRuby. Mooly Sagiv. Most slides taken from Dan Grossman
Ruby Mooly Sagiv Most slides taken from Dan Grossman Ruby dynamic, reflective, object-oriented, general-purpose programming language Designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto
More informationMetaprogramming. Concepts of Programming Languages. Alexander Schramm. 2. November Institut für Softwaretechnik und Programmiersprachen
Metaprogramming Concepts of Programming Languages Alexander Schramm Institut für Softwaretechnik und Programmiersprachen 2. November 2015 A. Schramm 2. November 2015 1/39 Table of Contents Introduction
More informationScaling Rails on App Engine with JRuby and Duby
Scaling Rails on App Engine with JRuby and Duby Run your apps on Google Servers, with access to first-class Java APIs John Woodell David Masover Ryan Brown June 9, 2010 2 Google App Engine 3 Key Features
More informationWho am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can.
Who am I? Harlan Iverson. Programming enthusiast. Seeker of truth. Imperfect. I'll be wrong about some things. Please correct me if you can. P.S... I hate boring presentations. Please, engage and stay
More informationThe name of the Show What will you enjoy learning?
The Day of celebration The name of the Show What will you enjoy learning? 1 The tale of programming A walk down the memory lane! 1) Programming - How did it all start and evolve? 2) What should you learn
More informationBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator Matt Raible Colorado Software Summit 2008 http://www.linkedin.com/in/mraible Matt Raible Building Rich Applications with Appcelerator Slide 1 Introductions
More informationThe Art of Metaprogramming in Java. Falguni Vyas Dec 08, 2012
The Art of Metaprogramming in Java Falguni Vyas Dec 08, 2012 Metadata What is Metadata? Data that describes other data Defined as data providing information about one or more aspects of the data, such
More informationEASY Programming with Rascal
EASY Programming with Rascal Paul Klint Joint work with Emilie Balland, Bas Basten, Jeroen van den Bos, Mark Hills, Arnold Lankamp, Bert Lisser, Tijs van der Storm, Jurgen Vinju Opening BLDL, November
More informationGrails, Trails, and Sails: Rails Through a Coffee Filter
Grails, Trails, and Sails: Rails Through a Coffee Filter Matt Hughes David Esterkin Chariot Solutions http://chariotsolutions.com BOF-9843 2007 JavaOneSM Conference Session BOF-9843 Agenda Brief History
More information