66

23350043 Languages on the JVM Groovy Ruby Scala Clojure

Embed Size (px)

DESCRIPTION

groovy

Citation preview

Page 1: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

������������� ����������������� ���������������������������������������������������������������

�� �������

Page 2: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

���������

������������ ��������������������

���

����������������������������

Page 3: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

���� ��� ���������

� �������� �� ����������������� ��������������

� �������������������������������������

� � ����������������������

� �����������!���

� "���� � ���#

� ������� ��������������

���������$������$���������

� %��������� �������� ������ �

� !����������

Page 4: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�������������� ��������

Page 5: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

&��������'��������(�)

� ������� ���������� �����������������

� *+�����������+���������� �!����(����������+�������,��!���� -����!����� �����������

� ����������� �������+����� ���� ���������� � ������������������ ��������+������ ������.���������������

� *������������������ ������������� ������!���� /� �+�����������!�����������������������/� �+������������ -�����!���$�����������������(��������.��������+.�������.����

� � ����.��� ������������ ����� �� ���� ���������� ��

� 0�������������+�� ������+���������������������

Page 6: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

&��������'��������(�1

� ���+���������� ������!������������� ������!*-2113� ���+� ���!%-�(��������������� ��� ��������

� 4� ����+� ��� �����������������

�5�4��� ���������������� ���������������������� %�����������+���������+���������� �����������������

Page 7: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

%�6�����!����4� ���������������������

�������������������

��������������� �!�"����� ��#$� %�������� �!�����&�� ���� '��

�������� �!�������(� �)�*���������� �!%'�

"�%��� �� +�����'

�"�% ��� ��$%'��(��� '

���������% '�

��� �%�����'�

,

��������������������� %��� ��������'��

�������� �!� �����(� �)�*���������� �!%'�

��������%-.��/'�� ��������%-0� ��'�

��������%-1����/'�� ��������%-0����/'�

������������ �� % ����'�

�������(� �)�����%'�

�������� �!��$�2�����(���"����� ��#$� % ����&�3'�

������������ �� %�$�2����'�

,

,

Page 8: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

%�6�����/� �+�4� ���������������������

�������������������

��������������� �!�"����� ��#$� %�������� �!�����&�� ���� '��

�������� �!�������(� �)�*���������� �!%'�

"�%��� �� +�����'

�"�% ��� ��$%'��(��� '

���������% '�

��� �%�����'�

,

��������������������� %��� ��������'��

�������� �!� �����(� �)�*���������� �!%'�

��������%-.��/'�� ��������%-0� ��'�

��������%-1����/'�� ��������%-0����/'�

������������ �� % ����'�

�������(� �)�����%'�

�������� �!��$�2�����(���"����� ��#$� % ����&�3'�

������������ �� %�$�2����'�

,

,

Page 9: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

/� �+��+

��"� �����(�45#��5&�5.��5&�56��5&�52��57

�� �� � �����

��"��$�2�����(� �����"� �*������

���������8�%'��(�9�

,

��"���""�(� ����� ��$�2����

�� ����""

��������������������������������

����� ������� ��!

"� �� ��� �*������

"����� ��������

#� �������� ������ �

Page 10: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

��������(�%�/� �+� �����������������:�� ��

��"�����(�4+7

��� �� ���

� ������(�;3

��"�������

��� ������ �%'���-<� ���,&�<����,&�<��� ��,-,

=���������%��� �� '������4 7�,�

�������%��� �� &�=�������'������4 7�(���,

,

:�� �"���(� �)�:�� % ���+�>.��>

&������+�>"��?����@���>'

"����� ���(�>����>

%������ ���

&�����������

' �(����

) � ������ ������ �

* ��������� ��� �

"� ���������+�������� ���( +��������� � ��

���� �������� ���� �������

Page 11: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

������ ������� �����

� ����+� ����� ��������� ���� ���������� ����� ��������� �� ��7�����%'�� ��$A$.���"��$�"�%'�� ��$��$.����7

� *���������� ��� �������������������� �� �����������B���%'

�������������.�������

��"��������(�47

��"�����%:�� �'��

�������A(�

������

,

��"�����%.������"'��

�������A(�"�������

������

,

,

:�� �"���(�C

:�� �)�����(�C

.������"�� ��� ���(�C

"�� ��� ��A(�"���A�)����

:�� ��� ���(�C

:�� �������(�C

.������������(�C

������A(��� ���A������

Page 12: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

���� �+�

� %������� ���+���� ��� ������� ���� ����������� �� ������� ����� �,

��������� �B�������� ��

���������"�����%��� �����"&���� ����� �'��

����

��� �%���"��D ����%'�

A���� ���D ����%''����� �%'

,�����$�%2����.���������� �"'��

��� �%���"������� �'

,

,

,

�� �� �-;9/�A�-;9/�E�-;9;9/

���%��� �B�������� '���

�� �� �-;9/�A�-;9/��E�-FG/

,

, � -� ��� �. ���������-�A�� ���� �.���(

/!���� ������ ��-����0������ ������ �.�*� �(�1� ��� ����

Page 13: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

� �����

� %������� ��� ������������������������ ������ %� �+� ��������� ��8��� ��� 0��������,������.��������������� ,��

��"���"�%� �������&�B�������(��,'��

"�%��(�H��������������AA'

������%�'

,

��"�%9'����� !��� �� �-$���+�<��,/�,

"�� �.���(� ��� ! ��� ��.������������ �-����������� � �

2���� � �

3�( ��������� � ���"����� �������� -���������

Page 14: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(����� ��� ������� � ������"�)��$��@%��@��&�B������'��

����@%'�

����

������%'

,�"� ������

��� ��@%'�

,

,

��@���@�(� �)�I�� �� ���@%'

)��$��@%��@'����� �� �-D�$������J������$����@/�,

��"���D "�(�������&����� !��������%������D2.=&����'�,

)��$��@%��@

&���D "����%������������%5���5''����%5K���5''

"����� ��� ��� ��� ��� � !���-����(

4� ���������+��������� � ��

"����� �+��������� � ��

Page 15: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

5�����������4� � � �

� 4� �������+����������� ���� �/� �+� 9������������ �������.����������������������� ��.����

�5�4�� ������� ��� ' �����:�������� ���� ����� ��������� ��8�� �������

� ;� ���� ���������<�L��=����������M���B����

� ������������ ������M���B������ ��������������� ��

� & ��� �����������������5�4

��� ������B������ ������(��

� ������(�

��� �����������B �����%��� �������'

� ������ �)D ��� ��%% �)�N���%''����� �%''

,

�� �� � �)���� �%'�E�-����2��O�����/

, ���� ��� �� -������� ��������

/!���� ������ ��-����0������ ������ �.�*� �(�1� ��� ����

Page 16: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(����� �M���B����

��"���� �(� �)����� �M���B����%:�� '

��� ���*�����(�������!(��F�,

�"�%��� ���*����%''

���

� ������ ���������� �������� ������ �������� ���� ���� �������+��������+�

� ;� ���������� ���� �

� ���� �M���B����

Page 17: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(��=��*�+�������- ��

D ���������B��������:�����(������ ������ !

��B$��@��"��������� �>�������!������!>�"���

�"�%P%����((Q��R�S�A<�''

��� �% �'

��"�"����(����������%���'4�7��D ����%'

��"�� ��(� �)�I� ��%'

��"�������(�47

����������������

������A(�%M��$����%� �� ���D �%''�T�"���'�A���

,

�����

,

//D&D style dice rollprintln 5.d10[2, 7, 5, 4, 10]

Page 18: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

����+++��.5�� ����

Page 19: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

&��������'�������

� *��� ��������������� ������������������ 9���������.� ������ �������.������� ������������������

� �������������� ���� ��������������� ���������8������� ��������� -��+���2���� ������ ������ ����

� �������� ������ ��� '���:����� ������������������� �������������� ���������

� *��� ������������ �������������.������������ ������������ �������������������������+�� �� ���+������������������������������� ����� ����� ���������+� ��7�������9%'���� ��� �������� ����� �

Page 20: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

��������(�%�-��+� ����

������� �

??������(�H

���U�������+ ���&�+�����&�+�����

��"�� ������8�% &��&��'

? ����(� ��?������(����?����� �(��

� �

��"������ U� U�� ����

?����� ���GH

� �

��"������ U� U�� ����(%�'

?����� �(�����;H

� �

��"�����

??������A(��

� �

� �

% �����

) ��� � �� �. ��

"������ �. � "� �� �� �� ��� �� ��-���� �. ��

* �� ����.��

Page 21: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�%�-��+�*���� �s = Song.new("Cavatina", "John Williams", 200)puts s#<Song:0x9dca26>

s.duration_in_minutes = 4s.play

class Song def to_s

"song = #{@name}, artist = #{@artist}, duration = #{@duration}, plays = #{@@plays}"

endend

puts ssong = Cavatina, artist = John Williams, duration = 200, plays = 1

���� ���� +�� �������������

Page 22: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

������������5�� �� ����

� ����+��������-��+������� ������ �������.������������ ,���,�����������������������

� ����+������������� ������� 5������������������>���������������� �������

� ���"���������������������� �%+"��'��� 5�� ����� ���� ��������������������������� ���� �����

� ?������ �U�V�� ��������������� ���������� ������������������������

� 5�� ������������� ,������� ������ �������������� ����������� ������������+������*&

��(�� �� �) ) ��(� ���� � �)�� ������ ��� �Song��.6 ��

��(���A�O�W�9���� 7����� �������(���A%O��� �%+A&�9''

���������U��J���@��"�����U����� �U�V�+J���@

Page 23: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

-����

� 9����������(�������� ���������+

�5������(����������� �������� ��������� �� ������ ��� �����������������

� �������������(����������� ���� ������� �� �����

������X��@�� ����� ������"��U�

�����A�-4Y�?�����,7/� �

) � ����-����&� �

3����� � ��������U��8�-������ � !�

������B����2������"������U ���

���"������� ���� �

� �

������� ��� ������B����2���

��(�� �� �)%���'����� �%B����2���'

%�!� �������������� ��� �

��������� ���"���9

���"��%-* M� �2 Z 8/&�-2 Z 8* M� �/'� �

� �

Page 24: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

5����� �������������-��+

� ;����>����+��������� ���������������������� ������ ����� ���������������������

� -��+�������� �������� ��������������+� ��7���������������� �������

� 9��� ��������� ����������.� ������ ������������������ ������ ��7�=��������������$U�����%��� �'��[�[�������,

� %�� ���+ ��� ����������������������� ������� �������� ������������� *��������%�4�� ��7��������������� �.������������������ �����.���� ,����������������� �.�>���+��������������������������.����7

� ��7������������� �M���B��������/� �+��+����������������������� �������

Page 25: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(��������9���������� �

������B����

�����U���$��+��U �)&�+ �)

��"� �)%����'

������(���U �)%����'

����������������(�#���� )��"���"� ��V%���������������'

�����

� �

� �

, �� � +�������9 +

2����� ������+ �: +:

& ���� ���� ��-���� ������ !����

� *������������ ������� ����� ������������ ������������� ����+���������������

/!���� ������ ��-����;2�������� ��,�.�� ��/����� �.�*�� �3�����<

Page 26: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�9���������������� �M���B����

� %�/� �+���������������� ���+ ��� �������� ���� ����������� �������+

���������� �M���B����

��"����$�U����� �% ���&�����'

�"����4H7���U�V%:�'

���"�������� ��� ��U������

��"� �U���$�% �����U���$��%5(5'&����4H7'���

� �

����

����

� �

� �

� �

������ �� ��������� ��� �

������.������� �M���B����

� �

"�(�.� �)

"������(���������[�[�5K����Y��,P5,

"������5.��5

Page 27: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�!���0����*�+���4� �������

"����� =�3����+�������.�.��� -����� �,�.����

class Moduledef java_bean(*syms)

syms.each do |s|pn = s.to_s.split("_").collect!{|x| x.capitalize}.joinclass_eval %{

def get#{pn}@#{pn}

end}class_eval %{

def set#{pn}(v)@#{pn} = v

end}

endend

end

������N��

����U��� �+��U ���

C

� �

����(�N��� �)

�������M�2���%-"��/'

������������M�2���

Page 28: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

�������� ��

� %�������������������� �� ��"�������� ������ ���� ������������#

� ?���� ��� �������� ��� � ������.��������������������� ��8������� �.���������.������� ����,����,

� *������<88��� ��� �+7���������7 ��8���8������84& 41@@)AB'������� �@AB')7���

� ��7�%����� ��������� ����� ���� ��������� �������������������������� �

�"�%��!��H'

�����-��!��H/

����

�����-�����H/

� �

3� ���������������-�;�"�%��!��H'<���

�����-��!��H/��--���!��H

�����-�����H/��--������H�

Page 29: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

������

� �������� �� ����������� �������� �� ���������-��+

� ���������������������� �������������� ������ �������

� ?������� �������� �� ������� ������� ���������������������

������(����(����������[<� �U��[,

�������(����A(��<� �U���������"�%���(��H'

,�.����� ������ �� ����� ��.6 ������.���(

, ��� ������� ����� � ��6�����-� ���� �������

Page 30: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

��������(� � ������)��"��� �

�����5:D2L��5

����U� �U�����%<�� �U� �&� ��'

� �

�����5:D2L�O5

����U� �U�����%<�� �U� �&�<� �U� �'

�����5:D2L�95

����U� �U�����%<�� �U� �&�<� �U� �'

� �

��"�� �

�����5:=2L��5

����U� �U�����%<� �U� �&�<�� �U� �'

�����5:=2L�O5

����U� �U�����%<� �U� �&�<�� �U� �'

�����5:=2L�95

����U� �U�����%<� �U� �&�<�� �U� �'

� �

�� �

:D2L��:=2L��:D2L�O:=2L�O:D2L�9:=2L�9

��������(� � ������)

/!���� ������ ��-����;"����+����"��� ��"� �� ����� �2��� � �<�.�*��� ���> ����� ?�*+�����* ���

Page 31: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(� � ������1

��"�����U� �U�����%����U� �&������U� �'��������[����U� �[,�����U� �������� ����������U� ��((� ��

� �

��������(� � ������

"� �� ������� ���� �� ����� �-����� ����� ���������

, ��� ��� ���� �������

Page 32: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

�����+++�����5�� ����

Page 33: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

&��������'��������(�)

� %�+����� �� ���������������� ����� *��� ��������������������������������� ���������������� ���������� ������������ ��� ������ ��

� �������.�������� �������������� *������ ����������������� ������ 6��+���������� ������������������������+���������������� ��

� ��� �����������������.����� ��+������������� ��������� �� �����

� *��� ���� ����� �� ���� ������ ������ �������������� �������

� *��������+��+����(����>���������� ���� ������������������ ����������+������ ��� ������������������� �� �����+����������������+��������� ����� ������ ������ ��� *��� ��������������������������+���� ������ �

Page 34: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

&��������'��������(�1�

� *��������+��+��������� ����������� ��� 5 ������ � ����������+ ������������ ������ �

� *��� �������+����������� ��������+���������� �� 5 ��� ��.��� �������������.������ ���.�� �,���.��������.����� ���������+������ ���

Page 35: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

*��������+�;+���

�5������ ������+��������� ���������� �� ���������*����������������+����� ������ �����

� �������(�M��4D �&���� �7%�� !�-B��/&�O� !�-N�/'

� 5�� ����������+��.������������������� �

� 9����������� �����8������� ����+���� �����"� �+�%%D �&�D �'�(!�B�����'�(� ���

��"����=".����% ����+�D �'+�D ��(��

�������(�H

"�%��� ����� ����'

�"�%%����T��'�((�H'

����A(��

���

,

% ������ ��������

) - ��� ��-������ � !�

Page 36: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������� ������

������:�� %���� ���+���� �'

�������������%���������� ���+���� �

&�������+���� �'����� ���:�� % ���'��

��������+�N�����(�U

��"��$��% ���+���� �&���+���� �&�U�����+�N����'��

�$��% ���&���'

������(�U�����

,

��"���������������%'�(��

�����

,

��������"����� �%'+���� ��(� ����A�-%-�A����A�-'/

,

���"���(� �)��������%-6����/&�-HH\/'

�� �� %"��� ���' ���J������ ����"��� ���

#� ����� ���� ��������

* -������� ��������

3� ��� ����������

Page 37: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

*������ ��

� -������ ����� ����� �� ����������*����� ?�������������+����*���������������������

� ������������������������������������ ������������������� ������� ��

���������������

��"������% ���+���� �&���+���� �'�

(� �)��������% ���&���'

��"������% ���+���� �&���+���� �&������+�N����'

%���"�+�%��� �&���� �&�N����'(!�=��� 4�������7'

+=��� 4�������7�(��

�"�%���"�% ���&���&������''

���% �)��������% ���&���&������''

����

2 �

,

, #���� �� ����� ��+ ���� ���. �� ��� ��� �� ����

"���� ��-� ����

&� �� ��

"����� :����� ����

Page 38: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�*������ ������'��� ����

���"���(��������%-.��/&�-HH\/'

������(��������%50� ��5&�5HH�5&��OHHH'

�% ���&���&������'�(!�%�������(��HHHH',

����� ��+��������

�"�%����������'��

�� �� %5�����������$��$5'

,�������

�� ���(�������

,

"���� ��-� ���� ���������� ���� ���������� ��-�-����������� � ������

, ��� ��� ���� ���/����

Page 39: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

;�����

� *�������� ������������������������������������ ��

�5��������� ��������� ������������+�� � ���������������� 5������ ������

� 5������ ���������� ���+������������������������� ������������� ��

�����L���� ����

��"����K���% ���+���� �'�(�-K����-�A� ���

,

�������������%���������� ���+���� �&�������+���� �'

���� ���:�� % ���'�)��$�L���� ����

����"���(� �)��������%-.��/&�-HH\/'�)��$�L���� ��

Page 40: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

*���������5����

� ������ ������������������ ��+���� ����������������� 0+������������� ���������

� &��������������������� �����

� -�� ���� �� ��������� �������� �������� ������ ���������*����� ���0�)��$�#���*�)��$�#���0

� #���0� �@ #���*� �@ *�(����������0�����������

� ����������� ������������������ ��� �� ������2 �2� �������������

Page 41: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�*���������5�����(�)������:�� %���� ���+���� �'��

��"���������������%����+�N����'�(�����

,

�������������%���'����� ���:�� %���'��

��"��������%'�(���������������%�����'

���

,

��������0 ������� ���:�� ��

��������"���������������%����+�N����'�(

�������������������%�����A�%�������H�H3''

,

�����#$���� M �$����� ���:�� ��

��������"���������������%����+�N����'�(

�������������������%�����A�����'

,

"� �� ��. ���!� ��������� ������� !� ���-����2 ���

Page 42: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�*���������5�����(�1�

����"���(� �)�.��%-.��/&�-HH\/&�3HHH'�

)��$�* ���������)��$�#$���� M �$

�� �� %-������(�-�A�"����������'

, ������� ��� ��-�������������� -�.����������

#$���� M �$���������������

* �����������������������

.�����������������

Page 43: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

������ ��� ��;+���

� %������ �������.�� �� �� �� �� ����� ��� ������ ���������������������� �� �������� ���+�� ��

� ��7������������.��.��.��.����.����..���.��� ��.����� ���������������������

� ?���+� ����� ��.��������������� ��U

�������������%������ ���+���� ��������*����"�

��"�A%U�����+�N����'�(��$���������A�U�����

��"� +%U�����+�N����'�(��$��������� �U�����

��"�� ��U!!P%'+���������(�����������

��"�� ��U��P%'+���������(������������

"���������(�"���A��HHH���M��$�������"���A%�HHH'

"���!!P��������"��

�HH� +�"��

) ��� � ����-����+�� ����

Page 44: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

9��������;+��� ������ �

�5 ����������������������������������� ������ �� ��7��+���C�����(��+������� ��������� ����

� *�������� ���+ ��� ������������������ ������ �� ?������������,�+� ��� ����� �

������������(����������

������N���K����% ��+�D �'��

��"�����%)$� +���� �'�(��

��������(�B��� ������D ��� ��%'

)$� �����$��

�����-��/�(!���������%B��� ���N*]U=.UM=2#K&� ��'

���

,

��������#���%'

,

,

��"����������� ���D �ON���K����% ��+�D �'�(� �)�N���K����% ��'

"� � �� ���������( ����� ��� ��� ���� !���"#���$%

&����� ��-����2�������� ��&�����.�A (���&�.���� ���

Page 45: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������+

� & ��� ����������� ��� ����� ���� ��������+�������+��� �+� *������.�� ��� ��.���� ���� ������.������ ���.�� �,���.������� ���.���� �������

� %�� ��������� ���� %�� ������� �������+�������������+�� ��������� �����������+������������������ ������������������� ��������������� ��������� ����������

� ;� ���+�� ����������� ��� ������� �

� �������%�� �������

� ��������� ��� P�� ���������������

� �������(������� ���������������������� ���+��

Page 46: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������������4�����������

� 9������������������D

� � ��������������� �������������� ��3�� ����(�)�D

� ��7�9��EF���������������D� %����������+����� ������3�� �EG

� ' ���������������.�������� ��������������������� ��������������

� ��7�EF.�������� ����:�� ��1@� 3�(�11�� 31�(�H1� H3�(�G1� G3�(�I1� I3�(�EG�

������������ � ��. ���-��� � ��� � ��-�������� ��� � ��� � �

Page 47: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�������������4�����(�)�����������������*���U

����������(����"

��"�$���.���D I� ��%�������+�D �&��� +�D �&����+�D �'+�0��� �(��

%%�� ������'�"���������(!�%%��������T��'�((�H'�,���8��P(�H'

,

��2��$��@� ��� �

��"���:���%�������+�D �'+�0��� �(��

����� ���(��������� �9

���������� �(�%� �����OH'�A�%�"�%%� ���T�OH'�!�H'��������H'

���$���.����(�"����

"�%��� �H�� ���������� '��

������ �(�9�A�%����OH'

��������(��"�%%�� �A��^'�!��������'

%�������� ��'������%�� �A��^'

�����

������P�$���.���D I� ��%�������&��� &����'

,

,

���

,

"� �� ��� �������� �����������

/! ��� ��� �-� ���� �� ��� ���� �� ���������� ���������

Page 48: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������(�������������4�����(�1�

��"���:���%�����+�D �'+�0��� �(��

���

���$���.����(�"����

���

%H�� ���������� '�"���$�����(!�

��������

������ �+�0��� �(!�

$���.����(�$���.����[[�� �

�����U�(!

,

,

P$���.���

,

'�����-���� ���� ��-����������

%������� �� ���� ��� ����� ����� ��������� ����

Page 49: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

�����������=�����6�� ���

Page 50: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

&��������'��������(�)

� '����� ������������� 6����������� ����������������������.�� ��� ���� �������� � ��������������(� ��+��������� ���������������

� 5 ���!������� ��� �� ��>�����+���������� ��

� /��������������������.�����������������������������6�-J;95�� '����� ����������������

� �����K���+�����������>�����+

� ������ ����������� ��� ����� �@ ��+�������������+�������������� ��� � �����������+��������

%��" ���@� ������4����� ��7

%" �4 ���7�%"����-T�&�T�/������ ��� ���'''

%%��@� ������-0 ��/'�-6�� /'�E�-0 ��&�6�� /

B��.�� 2���� � � C��

Page 51: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

&��������'��������(�1

� %���������������������(�� �������������������L

� ����+������������>������(�������������� ���� &����(�%�����'

� 6��� ��(�4�����7

� *���(�Y������,

� 5���(��+���&�+���&�+8��,

� � � �� ����(���������������������������������� � �����������+�����(����������� �,� �� ��� ������������������� �������� ��������(��������������������������� ������

� ����+������������������������

%��"�"�>%�����''�E�%�����'

%� ����"�>%����8''�E�%����������8'

"�E�%�����'

%��"�"�%� ����"�>%����8'''�E�%����������8'

& !� ���-���� -�

, ����� �

Page 52: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

���������)@M

������������ ��"��%"� ���� ��"'��

� �����(���"�%� ����(��������"���AA

����(����� �%��'�

,

�������%��" �"���4"7

%�"�%8�V�"'�%��"�%"���%����"'''''

>� ���� �� -� ���

Page 53: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

�����������)@M�����*�>������

� ������������� ��������.�����+��������� �� ��������������� �M�K����(�)�M�L��

� &�:+������������������������������>������� 9����������>��������������� ��+������������������������������>�����

%�������%� �������''

%� �������'�E�%��O�9�;�3�G�\�F�^��H'

%��������%��O�9�;�3�G�\�F�^��H''

��� ������ �� "� ����"�����������

%��" �"��

%47��'

%4�7�%��������%� �����%� ���'''''

%��" �"�� �����47�%����"���%�������� ���'''

%��@��3�%"�� ����''�E�%��O�G�O;��OH'

#� ����� ��-� ���� 0 ��� �� �� -� �� �� 7� � ��-�-���������

3�( ���-��������

Page 54: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

�������!���

� 9�� ������!�����������

� 9�������������!�����������

� %������������ ��������������

� 9��������������������������������������������� ����+�������

%�����>%������)����� ��*��� ��� �'

%��"�"�% �)�6.����-#$�������"���/''

%��"�"�%6.�����-#$��������"���/''�

%��"����_����������'

%����_�������"����'

%����N�"����0��� �%����I�:� ��"''

E�%���"����I�:� �����N�"����0��� '

%����4*��� ����� �747

%���� :�"����4YR*��� ��� ��� ���7�%�C�'''

3� ��� �

Page 55: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

����������*�����'����

�D�����$������� ���������

%�����

>%�������)� ��6.����6:� ���60��� '

>%������)����� ��*��� ����� ��

*��� ��� ��1� �)*������1� �)��� �''

�D������ ��� �*��� ����� �

%��"���� ����� ��

%����4*��� ����� �7�47

%���� :�"����4� ���7

%�� �� �%"����50��� �T��������5�

%��� �������*��� B��� �''''

'

'

)��� � ����� ������ B��� �

Page 56: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

����������*�����'�����B�����������

%��"����� �

%���%60��� ��5:������5'

%����*��� ����� ����� ����� �'''

�B��������� ��

%��"��� ���

%���%6:� ���'

%��������� '''

�B�������"���

%���%6.����'

%����#�����5K���5'

%����N�"����B���=����� �6.����ND�:=��U=2UB�=��'

%������� ��'

%����1� �)����� ��)� ����� �'

%����@'

%��������� I�������#� ��'

%����_����������''

��� ��� ���������� �. �

���������-����+� ��� ����������� �� ��� �

Page 57: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������+

� *��� ����H�� ��������+�� ���� %������(���� ������������������ ����������� ����������

� %� ���(���,������������� ��� ��������

� -����������(������������,����������� ������������ �7,7��* �������;�������� ��5�� �+��*;5�

� 6����(�������� ����

���� ���� ��������� ���

������ � � �

�������� �

�������� � �

���������� �

���������� �

��������� � �

Page 58: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

*���������������5�������-���������

���

���

��3�� ����

3�� ���C

���3�� ����

3�� ���C

��

* - � � ������� ���������.� �����

D-��

%������������� ���� ���� �� ��E���?�"?� ��

Page 59: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

%�����

� ?���� ��������������������������

� *���������� ���� �� ���+���������� ����������� '����� ������������������+��� � ���+� ���+� ��������� ������������������������

� * ���� �� �� �� �������

%��"�"�%��� ��H''

?"�E�H

%� ��?"'�E��

?"�E�H

%�� ��"�� �'

�����"���������������

?"�E��

?"����������.�

Page 60: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

�$

-��������������*;5

� -������������"���� ����������������,����������� �

� * ���������������� ������� �+� %��� ��� ����� ���������� ����������������+ ��� ����� %��������������������� �����������

� J ����������������������� ���

� � ���� ������������������������������ �� ;��,��� � � ����$����������������

� %������������������� ������������������� �� ����������������������"

� ?�������������� ���������� �����������"

� ��� ������������������ ����������������� �� ��������������������� ��+����������� �

Page 61: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

?������"

%��"����������+���+ ���'

%��"�"�%�"�%������>�O9�-.��/'''�E��+����O9�+ ����-.��/,

?"�E��+����O9�+ ����-.��/,

%�����?"�+�� ���>����'�

E��+����O9�+ ����-.��/�+�� �������,

?"�E��+����O9�+ ����-.��/,

%��� �

%�����"������+�� ���>����''

E��+����O9�+ ����-.��/�+�� �������,

%��� �

%�������"������+�� ���>����''

E��+����O9�+ ����-.��/�+�� �������,

?"�E��+����O9�+ ����-.��/�+�� �������,

"� �� ������ ������

Page 62: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������� ����������������

���

%��� ��%�����"���������''

%��������'

� %����������� �������������� �� /������������������ ��� �+� ��"$���������?"�

� 6���������������������� ���������(������������������

� %��������� �������������� �� "�������,������������������������������������ �

� ��2)�������K������������������������� ��"������������� �������������� �

� 9�������.���������� ������������� 0 �+� ����������� ��������������������������

� ������������������ ��� ������ �������������������� ����@

%��������'

"���� ��.�� ��� ����� ������ '��������������� ��� �

Page 63: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

��������� ������������������

� *���������������������� ����������������� �������������� �

� 9��"�����������.���������� ������������

� '����� ����������� ����������������� ���������������� ��7���� ���������� ���������� ������ �

� J ��������� ,����� ���������+� ����.���������������� �������� ������������������� ��������

� ������������� ��� ���������

���

%��� ��%�������"���������''

%��������' %��������'

"���� ��.�� ��� ����� ������ (������������ ��� �

Page 64: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

����

B �"��(�%� ��&��--�/ �� ������(5�� � D�� ���

Page 65: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

-����� ����%�������� ��*N&�

� ��������� �������� ������������� �� �,� ������� -����� ������������������������ ��*N&

Page 66: 23350043 Languages on the JVM Groovy Ruby Scala Clojure

��

9�������������

%��"���>%�����'' � � �

%��"���%�����'' � � �

� �

%��"�8�%� ����>%�''' � � �

� �

8