Javarelaterade trender och tekniker

Det känns inte längre lika trendigt och viktigt att springa efter nya trender och verktyg. Är det ett tecken på att branschen börjar mogna? Kanske är det svårt att skilja på om det är min personliga utveckling, mina närmaste kollegors eller hela branschen som färgar mig i detta avseende.

Javagruppen på CAG, som tillhör mina närmsta kollegor, består av en samling pragmatiska utvecklare som var och en har lång praktisk erfarenhet. Vi trivs bäst med verktyg och teknik som går att använda idag för att producera resultat just nu åt våra kunder.

Ett konkret resultat av detta är till exempel att vi ännu avvaktar att med full kraft kasta oss över relativa nymodigheter som Scala och NoSQL.

Praktiskt fungerande och etablerad teknik för oss just nu är t.ex. Maven, Wicket, GWT, injection, Spring3, JSF2, JPA2, JAX-WS, EJB3, JSON, Android, SVN, Java [SE]E6, SQL-databaser, OSGi, Scrum, Kanban, Jenkins, Nexus.

Tekniker vi använder och ser som stabila men i någon mån i framkant och på uppgång är t.ex. Git, automatisk test, utvecklingsmiljön i molnet, Cucumber, Vaadin, JAX-RS, HTML5, jQuery, Selenium, Sonar.

Alla sysslar förstås inte med allt. Inte ens någon sysslar med allt.

Automatisk test är nog det område där det mullrar mest just nu.

JavaFX 2.0 tycker jag ser riktigt lovande från ett tekniskt perspektiv – äntligen en kompetent ersättare för Flash, Swing och Javascript-appar. Jag tror emellertid att det aldrig når en bred webbanvändning då detta kräver att man får med sig Android och iOS också, och på den fronten ser det inte lovande ut.

Allt som rimmar på SQL känns övermoget och gammalmodigt, men det är väldigt etablerat och fungerar oftast tillräckligt bra. Alternativa databastekniker väntar fortfarande på momentum för att kunna lyfta. Minns objektdatabaserna som var på gång för 15 år sedan men som aldrig lyfte. Jag ser en viss vildvuxenhet i NoSQL-utbudet just nu som ger mig lite samma vibbar som då. Förmodligen är det SQL som står kvar som dominant persistenslösning även om ett decennium. Lite ospännande tycker jag. När skall Oracle modernisera gränssnitten på databassidan? Ingen databas är ens kompatibel med ANSI-standarden för SQL, alla gör ju ändå som de vill, så vad är det som hindrar dem? Jag fattar inte. Fat and happy? Trötta och rädda?

Jag ser gärna ett SQL++ baserat på moderna språkkonstruktioner, som då givetvis offrar den ytliga bakåtkompabiliteten men bibehåller grundkoncepten i en relationsdatabas. Tänk vad elegant det skulle kunna bli, t.ex. closures istället för stored procedures.

RESTful web services är en teknik som jag inte blir riktigt klok på. På ytan så enkelt men diffust och svårförstått om man tänker sig att dra ett icke-trivialt gränssnitt bortom tutorials och slideware.

Men det fina med REST är att det är så lätt att strunta i detta och i agil stil bara trampa på och implementera egensnickrad rakt-på-HTTP-RPC och sedan kalla det RESTful web services som substitut för att dokumentera [semantiken i] gränssnitten, och innan någon hunnit syna dig är projektet nedlagt eller produkten levererad och istället får underhållsprojektet i knäet att dokumentera – det är kanske därför som tekniken är så populär bland utvecklare just nu?

Detta är givetvis en ironisk överdrift. En viktig framgångsfaktor är noggrannt designade och adekvat dokumenterade gränssnitt, och denna insikt delar jag förmodligen med de flesta andra utvecklare. Man skall förresten använda tandtråd varje dag också.

Mina problem just nu med REST rör specifikt hur man designar och implementerar One URI och hur man blandar in verb i gränssnitten på ett bra sätt som får allt att hänga ihop, och detta med hjälp av JAX-RS. Den uppenbara bristen på möjlighet att göra callbacks med REST, vilket funkar utmärkt i SOAP, stör mig också. Är jag ensam om att se detta som ett stort arkitekturellt problem med REST? Jag kanske får anledning att återkomma i ämnet när det klarnat för mig.

Jag antar att uppsvinget för RESTful web services till viss mån är drivet av uppsvinget för Javascript på klientsidan. Jag hoppas att REST-hysterin lägger sig så småningom så vi slipper se REST-gränssnitt överallt, och framför allt där de verkligen inte lämpar sig. Under tiden kanske de som underhåller JAX-WS-verktygen/implementationerna hinner fixa de flesta av de onödiga och irriterande buggar och diffusa felmeddelanden som jag antar är den egentliga orsaken till RESTs oproportionerliga popularitet. JAX-WS/SOAP är egentligen bra grejor. Men kommer du undan med RMI så tveka inte. RMI är utan jämförelse enklaste remote-gränssnittet att utveckla och att underhålla.

Trots min relativa konservatism, dyker det emellanåt upp ny teknik som verkligen fångar mitt intresse, trots att den ännu är helt obrukbar:

Kotlinlogo

Kotlin – Java behöver en ersättare på sikt. Det är visserligen inte alls speciellt bråttom eftersom Java i nuvarande tillstånd fungerar mycket bra. Men så småningom, när rätt tid är inne och när rätt ersättare dyker upp… Kotlin är den första potentiella ersättare som jag tror har möjlighet slå på bredden.

Att det utvecklas en IDE parallellt med Kotlin ser jag som en styrka, och att det är JetBrains som gör det är också en styrka. Då har jag hopp om att resultatet blir stabilt, snyggt och användbart.

Java har många problem: Okompakt språk, standardlibben för vildvuxna, generics-lösningen är ett sorgebarn, exceptionfilosofin som aldrig nått en bred förståelse, closures och modulsystem som aldrig kommer.

Scala tvekar jag fortfarande inför som bred Java-ersättare då jag ser att det är komplext, ogenomskinligt och har stor frihetsgrad. Reservationer dock för att jag inte kan mycket mer om Scala utöver det man lärde sig på kursen.

Dartlogo

Dart – Javascript är ett sjukt språk, från början ihopslängt på ett par veckor och nu har dess användning formligen exploderat. Att programmera Javascript som javautvecklare tycker jag känns som att balansera på en knivsegg med skallerormar på bägge sidor, och helt i onödan såvida man inte bara är ute efter att känna adrenalin. Jag undrar om det är så att det bara går att tycka om Javascript om man aldrig sett [poängen med] ett statiskt typat programmeringsspråk? Jovisst, det är lite att sticka ut hakan, men jag gör å andra sidan inte anspråk på att alltid ha rätt och inte heller att representera en balanserad åsikt som hela utvecklarkollektivet står bakom.

Hur som helst, Dart ser i mina ögon ut att vara en tilltalande efterföljare, och skulle kunna utgöra rätt verktyg för uppgiften att bygga seriösa klienter för webbläsaren, till skillnad från Javascript som mer lämpar sig för balla hack för specialeffekter i webbsidor.

Tesla – Maven är hatkärlek och är idag en självklar följeslagare. Jag skulle inte kunna tänka mig att backa tillbaka till Ant, så enda möjliga vägen är framåt, och Tesla ser i alla fall vid en första anblick ut att utgöra den vägen. Att bli lämnad ensam kvar med bara Maven som sällskap vill nog ingen bli.

När jag tänker efter sysslar flera av oss med NoSQL sedan länge, och långt innan det fick sitt namn. Och vid ännu närmare eftertanke har vi till och med lagt ut en implementation av en avskalad, rasande snabb NoSQL-databas av typen Key/Value store och gjort den till open-source. Tänk dig en RandomAccessFile fast du kan skriva, läsa och omskriva ett objekt av varierande storlek på varje offset istället för en enda byte. Senaste användningsområdet för denna databas var att lagra kart-tiles, komprimerade raster-kvadrater av varierande storlek.

Hm, det här lämnar ju bara Scala kvar som exempel på coola nymodigheter vi inte sysslar med, att backa upp mitt resonemang med. Det är lite klent. Kanske kommer jag senare på något annat coolt och nytt vi inte har varit och rivit runt i.

IT Consultant at CAG Edge. Cloud and Continuous Delivery specialist, software developer and architect, Node.js, Java.

Publicerad i Java

Kategorier

WP to LinkedIn Auto Publish Powered By : XYZScripts.com