SlideShare una empresa de Scribd logo
1 de 35
Java
7
Launch

Fork/Join
concurrency




                        @Sander_Mak
What?

Fork:
Recursively
decompose
large
task
into
subtasks


Join:
Combine
results
of
recursive
tasks



      7/7/2011             Java
7
Launch
Event
Why?
              Mul3core
challenge




   7/7/2011                        Java
7
Launch
Event
How?

Introducing:


java.uLl.concurrent.ForkJoinPool                         Worker 1




• ‘ExecutorService
with
                                   Worker 2

  runLme
tuning’
• Recursive
algorithms
                                                           Worker 3
• Workstealing


         7/7/2011                    Java
7
Launch
Event
...
MapReduce?



Environment         Single
JVM          Cluster

Model               Recursive
forking   Single
fork
step

Scales
with         Cores/CPUs          Nodes

Opera3on            Workstealing        No
inter‐node

                                        communicaLon


         7/7/2011                        Java
7
Launch
Event
Example
Sony’s
been
hacked...




                Are
we
compromised...?



     7/7/2011                   Java
7
Launch
Event
Java
7
Launch

JSR‐292:
Invokedynamic




                         @Sander_Mak
JVM
Languages




                Java


    7/7/2011           Java
7
Launch
Event
JVM
Languages



               Groovy      Clojure

      JRuby        Java         JavaFX
                        Scala



    7/7/2011                     Java
7
Launch
Event
JVM
Languages
jProlog                     Pizza                                 MultiJava
                                            Fantom


 JLog
                       Groovy            Clojure                        MetaJ



            JRuby               Java             JavaFX                   Jaskell


                       Rhino        Scala                JBasic
Aardappel
                                        Funnel
                     Jacl                                               Drools
                               Jython

          7/7/2011                                Java
7
Launch
Event
JVM
Languages




  Hundreds of
  Languages
    7/7/2011    Java
7
Launch
Event
JVM
Languages

‘Language
ficLons’

       JVM


  Exceptions
  Primitive types
  Objects
  Access control
  Garbage coll.
  Threading
  Memory model



        7/7/2011    Java
7
Launch
Event
JVM
Languages

‘Language
ficLons’
                         Java

                    Enums
                    Checked exc.
       JVM          Generics


  Exceptions        Exceptions
  Primitive types   Primitive types
  Objects           Objects
  Access control    Access control
  Garbage coll.     Garbage coll.
  Threading         Threading.
  Memory model      Memory model



        7/7/2011                      Java
7
Launch
Event
JVM
Languages
                                            JRuby

‘Language
ficLons’                     Open classes
                                      Dynamic typing
                         Java         Closures

                    Enums             Enums
                    Checked exc.      Checked exc.
       JVM          Generics          Generics


  Exceptions        Exceptions        Exceptions
  Primitive types   Primitive types   Primitive types
  Objects           Objects           Objects
  Access control    Access control    Access control
  Garbage coll.     Garbage coll.     Garbage coll.
  Threading         Threading.        Threading
  Memory model      Memory model      Memory model



        7/7/2011                       Java
7
Launch
Event
JVM
Languages
                                            JRuby

‘Language
ficLons’                     Open classes
                                      Dynamic typing
                         Java         Closures

                    Enums             Enums
                    Checked exc.      Checked exc.
       JVM          Generics          Generics


  Exceptions        Exceptions        Exceptions
  Primitive types   Primitive types   Primitive types
  Objects           Objects           Objects
  Access control    Access control    Access control
  Garbage coll.     Garbage coll.     Garbage coll.
  Threading         Threading.        Threading
  Memory model      Memory model      Memory model



        7/7/2011                       Java
7
Launch
Event
JVM
Languages
 Obviously
JVM
is
viable,
however:
• Language
implementors
need
to
invent

  ‘creaLve’
compilaLon
schemes
for
every

  language
• Performance
suffers
when
abstracLng
beyond

  Java
idioms



                How
to
improve?

     7/7/2011                     Java
7
Launch
Event
JSR‐292
         Mission:
 “We are extending the JVM with first-class architectural
 support for languages other than Java, especially dynamic
 languages. This project will prototype a number of
 extensions to the JVM, so that it can run non-Java languages
 efficiently, with a performance level comparable to that of
 Java itself.”    http://openjdk.java.net/projects/mlvm/




      7/7/2011                             Java
7
Launch
Event
Compiling
dynamic
languages

  • JVM
pre]y
language‐friendly
  • ExcepLon:
method
calls
       – Signature
at
callsite
must
match
exactly
                                    TargetClass        Name       Method descriptor
18:
 invokevirtual
    #5; //Method java/util/ArrayList.add:(Ljava/lang/Object;)Z



       – Dispatch
on
staLc
type
of
parameters
and
dynamic

         type
of
receiver
       – Method
must
exist
at
compile
Lme
       – Link
to
target
is
fixed,
no
relinking

            7/7/2011                                      Java
7
Launch
Event
Compiling
dynamic
languages

• Common
soluLons:
     - Don’t
compile,
interpret
(someLmes
unavoidable)
     - Introduce
generic
CallSite
abstracLon
which
dispatches

       method
calls
     - AOT
compilaLon
into
specialized
invoker
classes

       (suitable
for
core
methods)
     - JIT
bytecode
generaLon
of
small
stub
methods


 Either
way:
abundance
of
syntheLc
types
and

 bytecode
hard
to
opLmize
for
JVM

     7/7/2011                              Java
7
Launch
Event
Invokedynamic
      New
bytecode,
last
piece
of
JSR‐292
puzzle:
                                        Name    Method descriptor
18:
 invokedynamic
   #5; //NameAndType addInts:(II)I




 • InvocaLon
without
reference
to
actual
method

   descriptor
 • Instead,
symbolic
name
and
type
 • No
receiver:
all
arguments
are
equal
                      What
is
the
target?
           7/7/2011                                     Java
7
Launch
Event
Method
handles
• Lightweight,
safe
method
pointers
• Like
java.lang.reflect.Method,
but:
  – No
argument
boxing/unboxing
  – Access
checks
only
at
creaLon
Lme
  – Leaner,
can
be
as
fast
as
direct
call
  – No
wrapping
of
excepLons




      7/7/2011                              Java
7
Launch
Event
Method
handles
• Lightweight,
safe
method
pointers
• Like
java.lang.reflect.Method,
but:
  – No
argument
boxing/unboxing
  – Access
checks
only
at
creaLon
Lme
  – Leaner,
can
be
as
fast
as
direct
call
  – No
wrapping
of
excepLons

                                                                  Java
7
 MethodHandle mh =
    MethodHandles.lookup().findVirtual(String.class,
 “substring”, typeDescriptor);

 String java = (String) mh.invokeExact(“jjava”, 1);

      7/7/2011                              Java
7
Launch
Event
Invokedynamic
‐
bootstrap
• Invokedynamic
triggers
bootstrap
• Ader
installing
target,
invokedynamic
invokes

  MH
directly
 DynamicInvokerClass                  ImplementationClass

aload_1;
invokedyn. meth:Type;             implementation(Type) {
return;                              result = ..
                                     return result

                                  }
bootstrap( .. ) {
   ..lookup..
   return CallSite

}




       7/7/2011                    Java
7
Launch
Event
Invokedynamic
‐
bootstrap
• Invokedynamic
triggers
bootstrap
• Ader
installing
target,
invokedynamic
invokes

  MH
directly
 DynamicInvokerClass                  ImplementationClass

aload_1;
invokedyn. meth:Type;             implementation(Type) {
return;                              result = ..
                                     return result

                                  }
bootstrap( .. ) {
   ..lookup..
   return CallSite

}




       7/7/2011                    Java
7
Launch
Event
Invokedynamic
‐
bootstrap
• Invokedynamic
triggers
bootstrap
• Ader
installing
target,
invokedynamic
invokes

  MH
directly
 DynamicInvokerClass                  ImplementationClass

aload_1;
invokedyn. meth:Type;             implementation(Type) {
return;                              result = ..
                                     return result

                                  }
bootstrap( .. ) {
   ..lookup..
   return CallSite

}




       7/7/2011                    Java
7
Launch
Event
Invokedynamic
‐
bootstrap
• Invokedynamic
triggers
bootstrap
• Ader
installing
target,
invokedynamic
invokes

  MH
directly
 DynamicInvokerClass                                   ImplementationClass

aload_1;
invokedyn. meth:Type;                              implementation(Type) {
return;                                               result = ..
                                                      return result

                                                   }
bootstrap( .. ) {
   ..lookup..           MH
can
be
guarded

   return CallSite
                        with
test,
adapt
types,

}                       etc.



       7/7/2011                                    Java
7
Launch
Event
Invokedynamic
‐
bootstrap
• Invokedynamic
triggers
bootstrap
• Ader
installing
target,
invokedynamic
invokes

  MH
directly
 DynamicInvokerClass                    ImplementationClass

aload_1;
invokedyn. meth:Type;   Method      implementation(Type) {
return;                 Handle(s)      result = ..
                                       return result

                                    }
bootstrap( .. ) {
   ..lookup..
   return CallSite

}




       7/7/2011                     Java
7
Launch
Event
Invokedynamic

• Invokedynamic
+
bootstrap
method
allow

  language
to
up‐call
from
VM
for
linking/
  dispatching.

Not
impossible
before,
but
hard
and
slow.
JVM
now

          fully
opLmizes
dynamic
calls.




     7/7/2011                    Java
7
Launch
Event
Wrap‐up
• JSR‐292
invokedynamic
features:
  – Let’s
language
implementors
avoid
tricks
  – Level
the
playing
ground,
speedwise
  – Allow
exisLng
VM
opLmizaLons
to
be
applied
to

    new
paradigms
• JRuby,
Groovy
acLvely
working
on
JSR‐292

  support
• For
example,
JRuby
can
cut
80%
of
linking/
  calling
code
in
runLme

     7/7/2011                         Java
7
Launch
Event
Java
7
Launch

  Beyond
Java
7




                  @Sander_Mak
Ader
JDK7





    7/7/2011   Java
7
Launch
Event
JDK8:
Coin
conLnued
                                                                  Java
7

List<Integer> piDigits = Collections.unmodifiableList
(Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9 ));



                                                                  Java
8
// List literal:
List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];
Integer first = piDigits[0];

// Map literal:
Map<Integer, String> platonicSolids = { 4 : "tetrahedron",
      6 : "cube", 8 : "octahedron", 12 : "dodecahedron",
     20 : "icosahedron"
};



       7/7/2011                             Java
7
Launch
Event
JDK8:
Project
Lambda
• Add
first‐class
funcLons
• Single
Abstract
Method
types
• Solve
interface
evoluLon
with

‘defender

  methods’
• Paves
way
for
parallel
collecLons
                                                               Java
8
// Lambda expression
List<Integer> list = [1,2,3];
list.forEach(#{ e -> e * 2; });

// Reference existing methods
Person[] people = ...
Arrays.sort(people, #Person.compareByAge);


        7/7/2011                             Java
7
Launch
Event
JDK8:
Modularity
JSR‐294
‘Project
Jigsaw’,
goals:


• Modular
JDK
  - SE
Core
  - Packages:
Swing,
CORBA,
XML,
etc.
• Modular
and
versioned
applicaLons
• Integrate
with
plamorm
dependency

  management


       7/7/2011                    Java
7
Launch
Event
JDK8


              Available
Fall/Winter
of




          See
you
@
next
launch
event?


   7/7/2011                              Java
7
Launch
Event

Más contenido relacionado

La actualidad más candente

Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and Bytecode
Yoav Avrahami
 
Java bytecode and classes
Java bytecode and classesJava bytecode and classes
Java bytecode and classes
yoavwix
 
Java compilation
Java compilationJava compilation
Java compilation
Mike Kucera
 
Java New Evolution
Java New EvolutionJava New Evolution
Java New Evolution
Allan Huang
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
Keith Bennett
 

La actualidad más candente (19)

Java introduction
Java introductionJava introduction
Java introduction
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 
An Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and RuntimeAn Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and Runtime
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and Bytecode
 
Java bytecode and classes
Java bytecode and classesJava bytecode and classes
Java bytecode and classes
 
Java compilation
Java compilationJava compilation
Java compilation
 
JAVA BYTE CODE
JAVA BYTE CODEJAVA BYTE CODE
JAVA BYTE CODE
 
Using Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRBUsing Java from Ruby with JRuby IRB
Using Java from Ruby with JRuby IRB
 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projects
 
Grand Central Dispatch
Grand Central DispatchGrand Central Dispatch
Grand Central Dispatch
 
Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...Introduction to Java programming - Java tutorial for beginners to teach Java ...
Introduction to Java programming - Java tutorial for beginners to teach Java ...
 
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor BuzatovićJavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
 
Spring boot
Spring bootSpring boot
Spring boot
 
Java New Evolution
Java New EvolutionJava New Evolution
Java New Evolution
 
Java 8 parallel stream
Java 8 parallel streamJava 8 parallel stream
Java 8 parallel stream
 
Scala
ScalaScala
Scala
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
Rjb
RjbRjb
Rjb
 

Destacado

OrlandoiX Launch Event, Feb. 4 2014
OrlandoiX Launch Event, Feb. 4 2014OrlandoiX Launch Event, Feb. 4 2014
OrlandoiX Launch Event, Feb. 4 2014
David Glass
 
LG L Integrated Marketing Communications UK Launch Proposal
LG L Integrated Marketing Communications UK Launch ProposalLG L Integrated Marketing Communications UK Launch Proposal
LG L Integrated Marketing Communications UK Launch Proposal
Juan Mejia
 
Integrating Social Media With Traditional Media
Integrating Social Media With Traditional MediaIntegrating Social Media With Traditional Media
Integrating Social Media With Traditional Media
parkernow
 
Element Design Final Presentation3
Element Design Final Presentation3Element Design Final Presentation3
Element Design Final Presentation3
guestdf2bf9
 
Wereldwinkelsvoorlichtingenfairtrade
WereldwinkelsvoorlichtingenfairtradeWereldwinkelsvoorlichtingenfairtrade
Wereldwinkelsvoorlichtingenfairtrade
francienvaneersel
 
Отчет Антона
Отчет АнтонаОтчет Антона
Отчет Антона
unDrei
 

Destacado (20)

Microsoft Dynamics CRM 2011 Launch Event in Belgium
Microsoft Dynamics CRM 2011 Launch Event  in BelgiumMicrosoft Dynamics CRM 2011 Launch Event  in Belgium
Microsoft Dynamics CRM 2011 Launch Event in Belgium
 
OrlandoiX Launch Event, Feb. 4 2014
OrlandoiX Launch Event, Feb. 4 2014OrlandoiX Launch Event, Feb. 4 2014
OrlandoiX Launch Event, Feb. 4 2014
 
Integrated Social Media Strategies For Events
Integrated Social Media Strategies For EventsIntegrated Social Media Strategies For Events
Integrated Social Media Strategies For Events
 
LG L Integrated Marketing Communications UK Launch Proposal
LG L Integrated Marketing Communications UK Launch ProposalLG L Integrated Marketing Communications UK Launch Proposal
LG L Integrated Marketing Communications UK Launch Proposal
 
Samsung Galaxy Note/At&t Launch Event
Samsung Galaxy Note/At&t  Launch EventSamsung Galaxy Note/At&t  Launch Event
Samsung Galaxy Note/At&t Launch Event
 
Deliver Engaging Content to Your Buyers: A Tale of Two Journeys
Deliver Engaging Content to Your Buyers: A Tale of Two JourneysDeliver Engaging Content to Your Buyers: A Tale of Two Journeys
Deliver Engaging Content to Your Buyers: A Tale of Two Journeys
 
Boost Your Results with Innovative Landing Pages
Boost Your Results with Innovative Landing PagesBoost Your Results with Innovative Landing Pages
Boost Your Results with Innovative Landing Pages
 
New Business: Launch Campaign Proposal
New Business: Launch Campaign Proposal New Business: Launch Campaign Proposal
New Business: Launch Campaign Proposal
 
Interactive Content For Demand Generation
Interactive Content For Demand GenerationInteractive Content For Demand Generation
Interactive Content For Demand Generation
 
Media And Tecnology
Media And TecnologyMedia And Tecnology
Media And Tecnology
 
Iowa Supreme Court Decision - 4/09 - Gay Marriage
Iowa Supreme Court Decision - 4/09 - Gay MarriageIowa Supreme Court Decision - 4/09 - Gay Marriage
Iowa Supreme Court Decision - 4/09 - Gay Marriage
 
Integrating Social Media With Traditional Media
Integrating Social Media With Traditional MediaIntegrating Social Media With Traditional Media
Integrating Social Media With Traditional Media
 
以共融的觀點探討銀髮族節能生活型態之概念設計計畫
以共融的觀點探討銀髮族節能生活型態之概念設計計畫以共融的觀點探討銀髮族節能生活型態之概念設計計畫
以共融的觀點探討銀髮族節能生活型態之概念設計計畫
 
Element Design Final Presentation3
Element Design Final Presentation3Element Design Final Presentation3
Element Design Final Presentation3
 
Wereldwinkelsvoorlichtingenfairtrade
WereldwinkelsvoorlichtingenfairtradeWereldwinkelsvoorlichtingenfairtrade
Wereldwinkelsvoorlichtingenfairtrade
 
Unenclosable
UnenclosableUnenclosable
Unenclosable
 
漢字對話
漢字對話漢字對話
漢字對話
 
MVC CSRF Protection
MVC CSRF ProtectionMVC CSRF Protection
MVC CSRF Protection
 
Örjan Lönngren - Energianvändning kopplat till tillagning
Örjan Lönngren - Energianvändning kopplat till tillagningÖrjan Lönngren - Energianvändning kopplat till tillagning
Örjan Lönngren - Energianvändning kopplat till tillagning
 
Отчет Антона
Отчет АнтонаОтчет Антона
Отчет Антона
 

Similar a Java 7: Fork/Join, Invokedynamic and the future

Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Paul King
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting Started
Rakesh Madugula
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
Charles Nutter
 
Jpf model checking
Jpf model checkingJpf model checking
Jpf model checking
thought444
 
Core java 5 days workshop stuff
Core java 5 days workshop stuffCore java 5 days workshop stuff
Core java 5 days workshop stuff
Rajiv Gupta
 
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Anton Arhipov
 

Similar a Java 7: Fork/Join, Invokedynamic and the future (20)

Java virtual machine
Java virtual machineJava virtual machine
Java virtual machine
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
JRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVMJRuby - Programmer's Best Friend on JVM
JRuby - Programmer's Best Friend on JVM
 
Visual COBOL Development for Unix and Java
Visual COBOL Development for Unix and JavaVisual COBOL Development for Unix and Java
Visual COBOL Development for Unix and Java
 
A begineers guide of JAVA - Getting Started
 A begineers guide of JAVA - Getting Started A begineers guide of JAVA - Getting Started
A begineers guide of JAVA - Getting Started
 
Практики применения JRuby
Практики применения JRubyПрактики применения JRuby
Практики применения JRuby
 
JDK7: Improved support for dynamic languages
JDK7: Improved support for dynamic languagesJDK7: Improved support for dynamic languages
JDK7: Improved support for dynamic languages
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
 
Let's talk about jni
Let's talk about jniLet's talk about jni
Let's talk about jni
 
Java 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kolliparaJava 7 Dolphin manjula kollipara
Java 7 Dolphin manjula kollipara
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
Jpf model checking
Jpf model checkingJpf model checking
Jpf model checking
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
 
GOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter SlidesGOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter Slides
 
Understanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual MachineUnderstanding the Dalvik Virtual Machine
Understanding the Dalvik Virtual Machine
 
JVM Bytecodes
JVM BytecodesJVM Bytecodes
JVM Bytecodes
 
Java J2EE Training in Chennai, Tambaram
Java J2EE  Training in Chennai, TambaramJava J2EE  Training in Chennai, Tambaram
Java J2EE Training in Chennai, Tambaram
 
Core java 5 days workshop stuff
Core java 5 days workshop stuffCore java 5 days workshop stuff
Core java 5 days workshop stuff
 
JAVA Object Oriented Programming (OOP)
JAVA Object Oriented Programming (OOP)JAVA Object Oriented Programming (OOP)
JAVA Object Oriented Programming (OOP)
 
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
 

Más de Sander Mak (@Sander_Mak)

Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
Sander Mak (@Sander_Mak)
 

Más de Sander Mak (@Sander_Mak) (20)

Scalable Application Development @ Picnic
Scalable Application Development @ PicnicScalable Application Development @ Picnic
Scalable Application Development @ Picnic
 
Coding Your Way to Java 13
Coding Your Way to Java 13Coding Your Way to Java 13
Coding Your Way to Java 13
 
Coding Your Way to Java 12
Coding Your Way to Java 12Coding Your Way to Java 12
Coding Your Way to Java 12
 
Java Modularity: the Year After
Java Modularity: the Year AfterJava Modularity: the Year After
Java Modularity: the Year After
 
Desiging for Modularity with Java 9
Desiging for Modularity with Java 9Desiging for Modularity with Java 9
Desiging for Modularity with Java 9
 
Modules or microservices?
Modules or microservices?Modules or microservices?
Modules or microservices?
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
 
Provisioning the IoT
Provisioning the IoTProvisioning the IoT
Provisioning the IoT
 
Event-sourced architectures with Akka
Event-sourced architectures with AkkaEvent-sourced architectures with Akka
Event-sourced architectures with Akka
 
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the painTypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
 
The Ultimate Dependency Manager Shootout (QCon NY 2014)
The Ultimate Dependency Manager Shootout (QCon NY 2014)The Ultimate Dependency Manager Shootout (QCon NY 2014)
The Ultimate Dependency Manager Shootout (QCon NY 2014)
 
Modular JavaScript
Modular JavaScriptModular JavaScript
Modular JavaScript
 
Modularity in the Cloud
Modularity in the CloudModularity in the Cloud
Modularity in the Cloud
 
Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?
 
Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)
 
Hibernate Performance Tuning (JEEConf 2012)
Hibernate Performance Tuning (JEEConf 2012)Hibernate Performance Tuning (JEEConf 2012)
Hibernate Performance Tuning (JEEConf 2012)
 
Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)Fork Join (BeJUG 2012)
Fork Join (BeJUG 2012)
 
Fork/Join for Fun and Profit!
Fork/Join for Fun and Profit!Fork/Join for Fun and Profit!
Fork/Join for Fun and Profit!
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Java 7: Fork/Join, Invokedynamic and the future

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  9. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  10. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  11. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  12. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  13. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  14. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  15. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  16. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  17. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  18. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  19. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  20. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  21. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  22. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  23. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  24. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  25. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  26. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  27. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  28. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  29. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  30. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  31. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  32. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  33. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  34. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  35. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  36. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  37. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  38. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  39. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  40. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  41. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  42. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  43. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  44. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  45. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  46. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  47. Interessante ontwikkeling is dat Sun dit steunt (JavaFX, maar ook JRuby/Jython)\n\nWaarom zoveel talen? Ze bieden allemaal hun eigen &amp;#x2018;werkelijkheid&amp;#x2019; (volgende slide)\n
  48. *Java (taal) bevat ook ficties!\n*Schoen gaat wringen wanneer language fictions realiteit van JVM moeten gaan verbergen/opleuken\n* Zelfs in Java (Generics) is dat merkbaar... dat is waar tradeoffs (snelheid/bruikaarheid/correctheid) ontstaan\n\nFocus on JRuby in this pres. since very active in JSR-292 \n
  49. *Java (taal) bevat ook ficties!\n*Schoen gaat wringen wanneer language fictions realiteit van JVM moeten gaan verbergen/opleuken\n* Zelfs in Java (Generics) is dat merkbaar... dat is waar tradeoffs (snelheid/bruikaarheid/correctheid) ontstaan\n\nFocus on JRuby in this pres. since very active in JSR-292 \n
  50. *Java (taal) bevat ook ficties!\n*Schoen gaat wringen wanneer language fictions realiteit van JVM moeten gaan verbergen/opleuken\n* Zelfs in Java (Generics) is dat merkbaar... dat is waar tradeoffs (snelheid/bruikaarheid/correctheid) ontstaan\n\nFocus on JRuby in this pres. since very active in JSR-292 \n
  51. \n
  52. * Started 2007/2008\n* Open-ended experiment from Sun. Wild ideas considered, but must prove useful to reach Java SE 7\n
  53. \n
  54. * for core types specialized invokers may be packaged with ruby (but: wasteful, 100s of small classes)\n
  55. \n
  56. * Signature polymorphism (there is no actual invoke method conforming to the MethodType)\n* results in invokevirtual call on MethodHandle class, which then dispatches to the correct code (if type sig matches!)\n* pass target object as first param when virtual method is concerned\n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. This was already possible (hence the existing JVM languages), but is now architecturally supported. Therefore: easier to implement, more speed through optimizations etc.\n
  67. JRuby may throw away 80-90% of it&amp;#x2019;s calling-runtime, and win enormously.\n
  68. \n
  69. \n\n
  70. \n\n
  71. \n\n
  72. \n\n
  73. \n\n