Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Das eierlegende Truffleschwein

Lars Hupel
September 10, 2019

Das eierlegende Truffleschwein

Damals, ganz früher, da war Java noch die alleinherschende Sprache auf der JVM und konnte tun und lassen, was sie wollte. Später gesellten sich ein paar Skriptsprachen hinzu, wie zum Beispiel Jython und JRuby. Und die neuen kompilierten Sprachen wie Scala und Kotlin haben das Zeitalter der polyglotten Programmierung endgültig eingeläutet. Das zur GraalVM zugehörige Truffle-Projekt verspricht nun, es noch einfacher zu machen, auch eigentlich JVM-fremde Sprachen mit dem Ökosystem zu verzahnen. In diesem Vortrag geht es um die Chancen der neuen polyglotten Programmierung und Erfahrungen aus dem Projektalltag.

Lars Hupel

September 10, 2019
Tweet

More Decks by Lars Hupel

Other Decks in Programming

Transcript

  1. D a s e i e r l e g

    e n d e T r u f f l e s c h w e i n L a r s H u p e l J U G I n g o l s t a d t 2 0 1 9 - 0 9 - 1 0
  2. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M
  3. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y
  4. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y
  5. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s
  6. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a
  7. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a 2 0 0 6 J a v a 6 m i t S c r i p t i n g , J a v a C o m p i l e r A P I
  8. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a 2 0 0 6 J a v a 6 m i t S c r i p t i n g , J a v a C o m p i l e r A P I 2 0 1 1 J a v a 7 m i t invokedynamic
  9. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a 2 0 0 6 J a v a 6 m i t S c r i p t i n g , J a v a C o m p i l e r A P I 2 0 1 1 J a v a 7 m i t invokedynamic 2 0 1 4 J a v a 8 m i t N a s h o r n
  10. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a 2 0 0 6 J a v a 6 m i t S c r i p t i n g , J a v a C o m p i l e r A P I 2 0 1 1 J a v a 7 m i t invokedynamic 2 0 1 4 J a v a 8 m i t N a s h o r n 2 0 1 7 J a v a 9 m i t j s h e l l , A O T , j l i n k
  11. J a v a , e i n e k

    u r z e G e s c h i c h t e 1 9 9 4 e r s t e V e r s i o n d e r J V M 2 0 0 1 e r s t e V e r s i o n e n v o n J y t h o n u n d J R u b y 2 0 0 3 e r s t e V e r s i o n v o n G r o o v y 2 0 0 4 J a v a 5 m i t G e n e r i c s 2 0 0 4 e r s t e V e r s i o n v o n S c a l a 2 0 0 6 J a v a 6 m i t S c r i p t i n g , J a v a C o m p i l e r A P I 2 0 1 1 J a v a 7 m i t invokedynamic 2 0 1 4 J a v a 8 m i t N a s h o r n 2 0 1 7 J a v a 9 m i t j s h e l l , A O T , j l i n k 2 0 1 9 e r s t e V e r s i o n v o n G r a a l V M
  12. J S R 2 2 3 • A p p

    l e S c r i p t • B e a n S h e l l • G r o o v y • J a s k e l l • J a v a • J a v a F X S c r i p t • J a v a S c r i p t R h i n o N a s h o r n • J U E L • P H P • P y t h o n • R u b y • S c h e m e • S m a l l t a l k • T c l • …
  13. C o m p i l e r v s

    . I n t e r p r e t e r S o u r c e C o d e C o m p i l e r T a r g e t C o d e R u n t i m e O u t p u t I n p u t
  14. C o m p i l e r v s

    . I n t e r p r e t e r S o u r c e C o d e R u n t i m e O u t p u t I n p u t
  15. F u t a m u r a - P

    r o j e k t i o n S o u r c e C o d e R u n t i m e O u t p u t I n p u t S o u r c e C o d e C o m p i l e d P r o g r a m
  16. public abstract class JSMultiplyNode extends JSBinaryNode { public abstract Object

    execute(Object a, Object b); @Specialization(guards = "b > 0", rewriteOn = ArithmeticException.class) protected int doIntBLargerZero(int a, int b) { /* ... */ } @Specialization(rewriteOn = ArithmeticException.class) protected int doInt(int a, int b) { /* ... */ } @Specialization protected double doDouble(double a, double b) { return a * b; } // ... }
  17. J V M + P o l y g l

    o t = P r o f i t • S p r a c h e n k ö n n e n s i c h g e g e n s e i t i g a u f r u f e n • S p r a c h e n p r o f i t i e r e n v o n d e r J V M : N e b e n l ä u f i g k e i t T o o l i n g B i b l i o t h e k e n . . .
  18. Q & A L a r s H u p

    e l � l a r s . h u p e l @ i n n o q . c o m � @ l a r s r _ h w w w . i n n o q . c o m i n n o Q D e u t s c h l a n d G m b H K r i s c h e r s t r . 1 0 0 4 0 7 8 9 M o n h e i m a . R h . G e r m a n y + 4 9 2 1 7 3 3 3 6 6 - 0 O h l a u e r S t r . 4 3 1 0 9 9 9 B e r l i n G e r m a n y L u d w i g s t r . 1 8 0 E 6 3 0 6 7 O f f e n b a c h G e r m a n y K r e u z s t r . 1 6 8 0 3 3 1 M ü n c h e n G e r m a n y c / o W e W o r k H e r m a n n s t r a s s e 1 3 2 0 0 9 5 H a m b u r g G e r m a n y i n n o Q S c h w e i z G m b H G e w e r b e s t r . 1 1 C H - 6 3 3 0 C h a m S w i t z e r l a n d + 4 1 4 1 7 4 3 0 1 1 1 A l b u l a s t r . 5 5 8 0 4 8 Z ü r i c h S w i t z e r l a n d
  19. L A R S H U P E L C

    o n s u l t a n t i n n o Q D e u t s c h l a n d G m b H L a r s e n j o y s p r o g r a m m i n g i n a v a r i e t y o f l a n - g u a g e s , i n c l u d i n g S c a l a , H a s k e l l , a n d R u s t . H e i s k n o w n a s a f r e q u e n t c o n f e r e n c e s p e a k e r a n d o n e o f t h e f o u n d e r s o f t h e T y p e l e v e l i n i t i a t i v e w h i c h i s d e d i c a t e d t o p r o v i d i n g p r i n c i p l e d , t y p e - d r i v e n S c a l a l i b r a r i e s .
  20. B i l d n a c h w e

    i s e • C h e r c h e u r d e T r u f f e s : https://commons.wikimedia.org/wiki/File:Lot_chercheur_de_truffes.JPG ( g e m e i n f r e i ) • C o n d e - C l e m e n t e , P a t r i c i a & O r t i n , F r a n c i s c o . ( 2 0 1 4 ) . J I N D Y : A j a v a l i b r a r y t o s u p p o r t i n v o k e d y n a m i c . • G r a a l V M a r c h i t e c t u r e : https://blogs.oracle.com/graalvm/announcement • R e g e n b o g e n : https://pixabay.com/photos/rainbow-seaside-coast-beach-sky-675832/ • L L V M - L o g o : A p p l e • D u k e : O r a c l e