| » General Information |
| » Partner profiles |
| » White papers of partners |
| » Partner news |
| » Signing up as a partner |
JDK7: Improved support for dynamic languagesDe release van Java 7 nadert. Naast vernieuwing op het vlak van de taal en libraries, staan er voor deze release ook grote wijzigingen in de Java Virtual Machine op stapel. Sun heeft met het experimentele ‘Da Vinci Machine’ (multi-language VM) project verschillende interessante innovaties kunnen prototypen. Concreet levert dat voor de JDK 7 release een aantal nieuwe VM features op, waarvan support voor dynamische talen de belangrijkste is. Gezien de groeiende populariteit van alternatieve talen op het JVM platform is deze ontwikkeling, die via JSR-292 gestandaardiseerd wordt, significant te noemen. Voor het eerst wordt de architectuur van de JVM aangepast aan talen naast Java. In deze sessie gaan we kijken wat de voorgestelde ‘invokedynamic’ bytecode betekent en doet. Om hier een goed gevoel voor te krijgen moeten we in de huid van implementors van dynamische talen op de JVM kruipen. Hierbij wordt aan de hand van kleine voorbeelden duidelijk dat de huidige situatie verre van ideaal is. Dit heeft zijn weerslag op de performance van deze taal implementaties. De invokedynamic oplossing die in JDK7 komt, is opgebouwd uit verschillende kleinere Ten tweede worden zogenaamde lightweight method handles geïntroduceerd. Method handles zijn een soort functie pointers, die dynamisch gelinkt kunnen worden aan bestaande methodes van een class. Uiteraard is dit op een veilige manier geïmplementeerd, in lijn met de Java filosofie. Aangezien de VM kennis heeft van method handles, werkt deze oplossing veel efficiënter dan bijvoorbeeld een java.lang.reflect.Method opzoeken en aanroepen via reflectie. Het laatste stukje van de puzzel is de invokedynamic bytecode zelf. Deze maakt het mogelijk om een methode aanroep te doen zonder dat de argument-types en locatie van de aanroep (call-target) compile-time bekend zijn. Wanneer een invokedynamic bytecode uitgevoerd wordt, zal de VM een speciale bootstrap methode aanroepen, die zich bevindt in de class van de aanroep. Deze bootstrap methode is verantwoordelijk voor het aanwijzen (of creëren) van de juiste implementatie. Dit aanwijzen gebeurt uiteraard met een method handle. Deze method handle wordt daarna door de VM hetzelfde behandeld als een normale aanroep en kan daarom volledig geoptimaliseerd worden. Dit biedt dus zowel een flexibele manier van het binden van methode aanroepen, als goede performance. Naast de implementatie in JDK7 zal er ook een backport voor eerdere JDKs beschikbaar komen. Verder wordt via Project Coin een syntax uitbreiding op Java gedaan om de JSR-292 innovaties ook in de Java taal te kunnen gebruiken. Deze sessie is gericht op ontwikkelaars die geïnteresseerd zijn in de toekomst van het Java platform, buiten alleen de taal Java. De sessie is primair technisch van aard, maar reflecteert ook op de toekomstperspectieven van het Java platform. Hoewel de besproken vernieuwingen niet direct dagelijks in applicatie-code zullen terugkomen, geven ze een duidelijk beeld van de bredere visie op Java development die de JDK7 VM zal voorstaan. Structuur
Enige kennis van dynamische talen zoals b.v. Groovy of JRuby is handig. Verder zal een groot deel van de sessie ingaan op de interne werking van de JVM. Basiskennis van hoe Java in grote lijnen naar bytecode compileert, wordt verondersteld. Download de presentatie
|
||