söndag 19 juni 2011

Godmorgon, Java!


Det börjar röra sig på javafronten igen. Som man kunde se på Scandinavian Developer Conference här i Göteborg i våras, så händer det saker. Man kan verkligen hålla med Ben Evans när han i sin presentation gjorde den observationen att Java inte har dött utan bara gått i ide ett litet tag. Medan de stora drakarnas advokater gjorde upp om företagsförsäljningen av SUN till Oracle, så har utvecklingen faktiskt puttrat på.

Först och främst har det (som vanligt) skett mycket utveckling utanför SUN:s och Oracle's väggar. Det är som en fortsättning av de ramverk som utvecklades för Java under 2000-talets första år (tänk Apache och Spring). Ramverken visade i sin tur på behovet av att införa vissa modernare språkkonstruktioner i Java, som t ex möjlighet till mer dynamisk typning, mindre dynamiskt typade kollektioner, eller funktioner som första klassens objekt (lambda-funktioner / closures).

I väntan på att dessa konstruktioner skulle eller skulle inte införas i Java (minns den låååånga väntan utan några besked från SUN), så utvecklades ett antal språk som körs på JVM:en. Till exempel Groovy (dynamiskt typat, lambda-funktioner), Jython och JRuby (Python och Ruby för JVM:en), Clojure, eller Scala (statiskt typat, slick syntax, multiparadigm).

Det är ju en väldigt bra utveckling. Javas virtuella maskin är en väldigt spridd driftsplattform, och alla program som körs i JVM:en kan tack vare dess design hyfsat enkelt integreras med befintliga javaprogram. Med fler programmeringsspråk till JVM:en ökar chansen att man väljer ett språk som är rätt verktyg för jobbet, utan att man för den sakens skull behöver byta plattform.

Dessutom har samtliga dessa utmanarspråk en effektiv syntax. Det kan helt enkelt gå snabbare att utveckla i dem (även om den största delen av systemutvecklingstiden går åt till att tala med människor och inte med maskiner).

Men så händer det saker med själva språket Java också. Henrik Ståhl från Oracle pratade om alla nyheter som verkar (Oracle lovar inget) vara på gång i version 7 och 8. Bland annat pratade han om:

Invoke dynamic - en efterlängtad funktion. Det handlar om att JVM:en ska kunna göra metodanrop utan att kräva kunskap om vilken datatyp metoden returnerar. I alla dynamiskt typade språk kan man detta, så implementatörerna av Groovy och Jython och de övriga har helt enkelt fått fuska på olika sätt. Nu kommer de att kunna göra det mycket enklare, förutom att du som utvecklare kan utnyttja funktionen även i Java (åtminstone i Java 8).

Project Coin - en uppsättning syntaktiskt godis som kommer att göra språket mindre pladdrigt, mer konsist, och mindre irriterande. Bara en sån sak som att äntligen kunna få ange ett heltal med binär syntax i källkoden: 0b10010. Eller att slippa ange samma datatyp på två ställen när man skapar en typad kollektion. Eller att även typen Double får sitt maxvärde specificerat i en konstant.

Ett API-lager för filsystemen - Så att man kan skapa olika filsystemsimplementationer över samma API:er, t ex nätbaserade filsystem eller virtuella.

Dessutom har Oracle fått lite snits på hemsidan igen, så att man lätt och direkt får tillgång till allt javarelaterat. Så om de bara får Java 7 och 8 utanför dörren så blir det upp till oss kodare att använda allt detta och skapa stordåd igen. Eller åtminstone bra grejer.

Inga kommentarer:

Skicka en kommentar