Udvikler vild med C#: Ingen grund til at kode i Java nogensinde igen

Illustration: Bigstock/Photosvit
Seniorudvikler i konsulentfirma er krystalklar i mælet: C# og .Net er bare mindre bøvlet end Java. Og det er fordi, der kun er én leverandør bag platformen.

»Jeg synes, det er svært at finde ulemper ved C#. Hovedsageligt arbejder jeg med C#, men det sidste års tid har jeg arbejdet med Java. Det er besværligt. Der er ikke noget, der virker. Man skal trykke Java rigtigt på maven, før det gør det rigtige. I C# og .Net virker tingene bare. Der er også udfordringer, men det er så meget nemmere.«

Sådan lyder den kontante udmelding fra Eskild Diderichsen, der er seniorudvikler i konsulentvirksomheden IT Minds, når det handler om de to sprog, som tit konkurrerer på samme anvendelsesområder. Det er typisk server-applikationer, ofte med webgrænseflader.

C# og .Net er ganske populært i Danmark. Det viser Version2’s job-barometer, der som regel peger på, at C# og .Net optræder med højere hyppighed i it-stillingsopslag end Java. Version2’s opgørelse af CMS-systemer i det offentlige fra starten af året viste også en klar dominans af Asp.Net-teknologien, med en andel på 58 procent.

C# er bare bedre end Java, lyder den tørre konstatering fra Eskild Diderichsen, som er seniorudvikler i konsulentvirksomheden IT Minds og uddannet fra Aarhus Universitets ingeniøruddannelse. Illustration: IT Minds

Måske er Microsofts miljø bare nemmere at arbejde med? Det er i hvert fald Eskild Diderichsens mening, og den bygger på konkrete erfaringer:

»For eksempel skulle jeg lave en webapplikation. Kunden forlangte, at det skulle ske med webframeworket Spring Boot. Det udviklingsmiljø og editors, som det anbefales, man bruger, er det værste skrald, jeg nogensinde har arbejdet med. Udviklingsværktøjet er en modificeret udgave af Eclipse. Det var simpelthen forfærdeligt. Det er langsomt, autocomplete fungerer ikke rigtig, og man skal tweake miljøet meget for at få det til at virke. Man kan ikke bare vælge menuen ‘nyt projekt’ - og så kører det. Og det er jeg vant til fra .Net og Visual Studio. Det tog mig et par dage, før jeg overhovedet kunne køre Java-applikationen.«

Open source fjerner risiko for leverandørafhængighed

Med til historien hører det, at det var Eskild Diderichsens første bekendtskab med Spring Boot og Spring Tool Suite (STS).

»I dag ved jeg, at der findes Start.spring.io, og i stedet for STS ville jeg bruge Intellij Idea. Men det var der ingen ‘getting started guides’, der gad at informere mig om. Med det sagt, vil jeg stadig ikke anbefale Spring Boot eller Java til nogen.«

Læs også: Nej til null: Her er nyhederne i C# 8

Eskild Diderichsen prøver at overtale sine kunder til at vælge .Net som platform. Det giver ikke altid pote, og det kan der være gode grunde til. Kunden kan have et ønske om ikke at anvende for mange sideløbende teknologier i sin virksomhed.

»Men C# er min favorit. Det er en 'letvægter' og nemt at komme i gang med, og der er et godt community. Du har en forventning om, at tingene fungerer, når det hele kommer fra samme leverandør. Og det gør det også.«

Det er utrolig nemt at integrere C#, Asp.Net, Visual Studio og Azure. Det fungerer nemmere end med Amazons sky, og det spiller bare, lyder udmeldingen.

Men kan man sige, at man sætter sig i et afhængighedsforhold, med bare én leverandør?

»Det er rigtigt. Hvis det skulle begynde at gå skidt for Microsoft, så er det skidt for C# og .Net. Men sprog, framework og runtime er open source. Så kan man tage det og bygge videre på det, hvis det skulle være. Det fjerner det potentielle problem.«

»Nu er Java dødt«

De sammenstykkede elementer i Javas verden kan nemt give bøvl med skidt integration.

»I forhold til den Java-applikation, vi lavede, skulle vi integrere med en Oracle-database. Det var simpelthen noget bøvl. Jeg savnede værktøjer fra .Net-verdenen, som jeg ikke kunne finde alternativer til.«

Det drejer sig for eksempel om .Net’s ‘entity framework,’ der skaber en bro mellem relationsdatabaser og kode.

»Der findes Hibernate til Java, men det kan ikke håndtere versionering af database-schemaet. Når man ændrer databasen, så er det manuelt arbejde, i stedet for at kunne generere ‘database-migrations’ ud fra koden. Der er plugins til Hibernate, der siger, at de kan det der, og jeg har forsøgt at få det til at virke, men når det kommer til stykket, virker det ikke. Det er den oplevelse, jeg har fået med Java. Det er noget gammelt juks.«

I .Net og C# har Microsoft givet mulighed for, at man kan bryde bagud-kompatibilitet, når det drejer sig om store versionsnumre. I modsætning hertil har Java en meget vidtgående bagud-kompatibilitet, men det ser Eskild Diderichsen ikke som et problem:

»Man kan have .Net-frameworks installeret ved siden af hinanden i forskellige versioner, og så kan man rette applikationen efter den version, man vil have. Det gælder også .Net Core.«

Med .Net Core version tre, er Microsofts miljø nu open source hele vejen igennem. Og når IT Minds udvikler applikationer i C#, foregår det i Docker-containere på Linux.

Hvilken betydning får det, at kunder ikke længere skal betale for en Windows Server-licens i forbindelse med drift, men i stedet kan bruge Linux?

»Det betyder, at nu er Java dødt. Færdigt. Der er ikke grund til at skrive nogle linjer kode i Java nogensinde igen. I hvert fald så længe, det handler om server-applikationer,« slutter Eskild Diderichsen.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (17)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Torben Jensen

For mig er det eneste take away på dette at Eskild er en meget ufleksibel gammel mand (på trods af han ikke er så gammel)

.NET har mange smarte værktøjer som andre sprog måske kunne have gavn af at få, men at påstå at alt bare virker i .NET og intet virker i andre sprog er simpelthen for lavt. Jeg har selv prøvet at integrere Oracle via Entity Framework og nej, det virker ikke bare, det skal man have erfaring med, for ellers er der huller overalt man kan falde i, præcis på samme måde som der er med Java og Hibernate.

Samtidigt virker det uovervejet at bashe Eclipse, for så efterfølge sige der var alternativer ingen fortalte ham om, men jeg er 99.9% sikker på at han udvikler i Visual Studio med Resharper, fra selv samme udvikler af IntelliJ som laver Idea.

Så i bund og grund er dette indlæg et "jeg har et værktøj jeg kan finde ud af, så alt andet er lort" for mig, og uden værdi. Beklager Eskild, men når du på din linkedIn profil vælger at sige du aldrig vil arbejde med PHP igen, og samtidigt vælger at bashe Java på denne måde siger mere for mig at du er en "one trick pony"-konsulent som potentielt kan være en dyrere fornøjelse for mig som kunde.

  • 44
  • 1
Thomas Sørensen

Det er godt vi alle er forskellige.
Jeg startede min karriere som software udvikler i C# og .NET, men endte senere i Java verden - og jeg har ikke lyst til at gå tilbage. Netop Spring Boot og IntelliJ IDEA er, i mine øjne, langt nemmere at arbejde med, end Visual Studio og .NET Framework.

At påstå at Java er dødt og færdigt er vidst en meget subjektiv holdning..

  • 36
  • 1
Christian Nobel

.. og sådan skal det også være.

Som jeg ser det, så drejer det sig om at man vælger det værktøj man nu engang selv mener er mest produktivt, da det er resultatet det drejer sig om - og om hullet er boret med en Bosch, Aeg, Makita, DeWalt, Fein, B&D eller andet er bedøvende ligegyldigt, bare hullet er som det skal være.

Men at specifikt udråbe hint eller dette til lort er useriøst (bevares, personligt mener jeg også at JavaScript er apita, bla. pga den svage (manglende) typing, men jeg kan så bare styre uden om i videst muligt omfang), og tyder primært på manglende omstillingsevne.

Man kan så altid overveje om der overhovedet er behov for at skifte til noget andet/nyere, hvis det ikke øger ens produtivitet, eller giver nogen sikkerhedsmæssig gevinst - så at falde for "sprogsnobberiet" giver ikke nødvendigvis et bedre slutresultat.

Herudover, så har jeg svært ved at se det specielt begavede i at bekende sig til en monokultur, og dermed effektivt afskære sig selv fra andre verdener.

  • 8
  • 2
Martin Kofoed

Jeg troede ikke, man kunne støde på denne type "playmobil er bare federe end lego, derfor skal alle lege med playmobil!! Nå!!!1!"-konsulenter mere. Det er useriøst -- da specielt når man ernærer sig som konsulent, som må formodes at være i stand til at løse mange forskelligartede opgaver for kunder med forskellige behov.

  • 15
  • 1
Kasper Nielsen

Lad os nu bare slå det fast en gang for alle. Java leder ikke kun i markedsandel over C# men også i teknologi.

Indefor de seneste år har vi set kontinuerlig dyb profilering i produktion med JFR. Vi har fået lav-latency, samtidige kopierende GCs med C4, ZGC, og Shenandoah. Og partielt-evaluerende Futumura projecterende optimiserende kompilere via Graal/Truffle. Som vel er det største kommercielle gemmembrud indefor kompilere inde for de seneste mange år. Ydermere kommer der snart fibere til Java via project Loom. Som er en væsentlig upgrade i forhold til C# async/await.

Så nej, Java er bestemt ikke dødt på server side. Det er længder foran lignende platforme.

  • 9
  • 3
Michael Cederberg

Jeg har arbejdet med både Java og .NET på backend siden og skiftet frem og tilbage flere gange. Jeg har intet forhold til web siden, men her er mine oplevelser:

  • C# er på alle måder et bedre og mere moderne sprog end Java
  • Typesystemet i .NET CLR er på stort set alle måder bedre end det der findes i JVM (og det ses i både Java og C#)
  • Garbage collection i Java er på et helt andet plan end .NET; I praksis betyder det at man kan lave applikationer med meget større in-memory footprint
  • Open Source øko-systemet omkring Java er gigantisk, kan være svært at navigere, men er fantastisk givende. .NET lider under dette.
  • Udvikling i Java sker bedst med IntelliJ; udvikling i C# sker bedst med Resharper
  • Bortset fra specifikke show-stoppere for meget specialiserede løsninger gør intet af ovenstående nogen stor forskel for de fleste løsninger
  • 17
  • 0
Bo AA

Wow, sikke en omgang vrøvl. Jeg kommenterer meget sjældent på nyheder, men det her er da noget af det værste vrøvl jeg længe har læst!

Det er jo ikke Java's skyld at nogle ikke kan lide Eclipse. Jeg er heller ikke selv fan. Derfor tog det mig også ganske få minutter at finde ud af, at IntelliJ er meget udbredt og fungerer ekstremt godt. Helt ærligt, er det for meget at forlange, at man bruger to minutter på at lave en Google søgning, når man skal lære et nyt programmeringssprog?

Jeg har selv kodet i Python, PHP, Java, C#, og C++. Jeg har haft hovedpiner ved at lære dem allesammen, på den ene eller anden måde. Er det ikke bare præmissen når man skal lære en ny måde at gøre tingene på, og ikke kan gøre som man plejer? Det kan let give en uge med hovedpine og frustrationer, men det forventer jeg når jeg skal lære et nyt programmeringssprog, framework, udviklingsværkøjer, osv. på samme tid.

Det lyder mest af alt bare som et surt opstød efter en dårlige uge med opsætning af et Java miljø. Jovist, det kan sagtens være at værktøjer til .NET er nemmere at integrere med hinanden, men at tingene "ikke virker" og at Java er dødt...

Helt ærligt, tag dig sammen kammerat. Det lyder jo som kommentarer fra en 15-årig fanboy. Folk er forskellige, folk har forskellige præferencer, ting gøres forskelligt, osv.

Jøses, altså.

  • 13
  • 3
Christian Nobel

Det er vel fint med en artikel om personlige præferencer.

Da afgjort.

Det vigtigste er da hvordan man får løst opgaven - som sagt hvilken boremaskine man benytter er lidt underordnet.

Og så skal man måske passe på med at bruge Tiobe til at fastlægge hvad der er mest populært - der er forskel på popularitet og udbredelse.

NemID er også ret så udbredt, men populariteten kan diskuteres.

  • 0
  • 0
Log ind eller Opret konto for at kommentere