För en oerfaren utvecklare kan valet mellan Dotnet och Java vara avgörande för hela den framtida karriären. En del organisationer bygger hela sin infrastruktur på Microsofts teknologier medan andra väljer plattformsoberoende tekniker som Java.
För den oinvigde är det inte alltid lätt att veta vilket språk som passar bäst under vilket förhållande, så för att sprida lite ljus över situationen har vi pratat med två svenska experter som båda har mångårig erfarenhet av sitt favoritspråk.
I sju stenhårda ronder får vi veta hur Dotnet respektive Java står sig inom allt från det mobila området till hur arbetsmarknaden ser ut för närvarande.
Java:
Med tanke på att Java har hela tjugo år på nacken är utvecklingstakten förvånansvärt hög. I juli släpptes Java SE 7 som bland annat introducerar stöd för dynamiska språk. Stödet innebär att ett Java-program kan modifiera och utöka sig själv även efter att koden är kompilerad. Vi kan tillägga att flera andra språk redan har samma funktion, till exempelvis Javascript, Objective-C, php och Powershell.
Den största nyheten är däremot att det grafiska ramverket Javafx 2.0 släpptes i oktober. Java är vanligtvis inte förstahandsvalet för att skriva grafiska program, men med Javafx 2.0 ska stöd för hårdvaruaccelerering, animeringar, ljud och bättre integration med den underliggande databasen kunna ge Dotnet en match. Koden till Javafx 2.0 är i dagsläget proprietär men den ska enligt Oracle öppnas upp framöver.
– Java 7 är här, men få verkar hoppa jämfota av glädje. Intresset för Java EE 6 har däremot ökat och fler väljer att implementera lösningar i den versionen, som är kraftigt förbättrad och förenklad, säger Jens Augustsson.
– Bland annat kan man nu även köra Java EE 6 i molnet via Cloudbees och Openshift. Många börjar däremot titat på alternativa språk för jvm:en, framför allt Scala, fortsätter han.
Dotnet:
Sedan starten av Dotnet för drygt tio år sedan har Microsoft inte slagit av på takten. I september i år släppte de en förhandsversion av Dotnet 4.5.
Senaste versionen kommer med ramverket Metro som låter utvecklare skapa program gjorda för det nya gränssnittet i Windows 8. Utvecklaren kan välja mellan C# och Visual Basic.
Ramverket asp.net har förbättrats och stöder ännu fler html5-element som exempelvis Websockets.
Ramverket öppnas upp
Den största förändringen av Dotnet kommer inifrån Microsoft säger Markus Andersson, som ser att ramverket öppnats upp betydligt:
– Microsofts attityd till öppen källkod har förändrats, det ser vi med start från Asp.net MVC. Man släpper mer av sina ramverk med källkod och lyssnar mer. Det är en mycket bra trend och kan säkert bli riktigt bra om det fortsätter.
– Bland de senaste öppna projekten finns Nuget som är ett pakethanteringsystem som hjälper till att hålla koll på olika bibliotek. Nuget pluggas rakt in i Visual Studio och gör det möjligt för öppna projekt att få mer exponering.
Nästan som Ruby
Utvecklingen av Dotnet har hela tiden gått framåt menar Markus:
– Själva plattformen och språken har hela tiden utvecklats. Mycket har hänt. I C# har vi fått en ganska bra syntax för closure eller lambda som är nästan lika kompakt som i Ruby. På horisonten ser vi också språkstöd för att enklare uttrycka asynkrona anropa, vilket kan ge tydligare kod.
Experterna
Jens X Augustsson har titeln Java Solutions Team Leader på Redpill Linpro i Göteborg. Han har jobbat med Java sedan 2000, som konsult, utbildare och med support, uteslutande på öppna produkter. Uppdragen handlar i dag oftast om applikationsutveckling och mellanprogramvara.
Markus Andersson är mjukvaruutvecklare på Factor10 i Lund. Han har jobbat i it-svängen sedan 2001, bland annat på CNC och med uppdrag åt Försvarsmakten som konsult inom nätverksbaserat försvar. Huvudsakligen arbetar han med affärssystem.
Innehållsförteckning
- autocompletion: Utvecklingsmiljön ger själv förslag på kompletta klass- och funktionsnamn när du skriver. Snabbar upp kodandet.
- bdd, behaviour driven development: En utvecklingsstil som främjar kommunikationen mellan flera utvecklare inom samma projekt.
- closure: Syntaxen som definerar en funktion eller klass.
- ddd, domain driven design: Ett arbetssätt med en serie metoder för att utveckla komplexa system.
- ide, integrated development environment: Själva utvecklingsmiljön.
- jvm, java virtual machine: Mjukvaran som exekverar Java-programmen.
- lambda-uttryck: Ett snabbt sätt att kodmässigt skapa nya funktioner som utför en viss operation.
- linq, language Integrated query: Databasoberoende språk för att hämta och manipulera data.
- native: Kod som är arkitekturberoende, till exempel för x86.
- runtime-miljö: Program skrivna i både Java och Dotnet behöver underliggande miljö för att fungera, en så kallad runtime-miljö.
- paas, platform as a service: Ett uttryck som används när du hyr plats i molnet för att köra dina program.
- tdd, test driven development: Testdriven utveckling – innan du skriver koden skriver du testet som koden ska klara av att utföra. Resultatet blir mer stabil kod som är enklare att underhålla.