Funcționalități din C# pe care aș vrea să le am în Java

Daca @adavidoaiei a postat acel articol cu 15 reasons why you should learn C# in 2021, postez si eu unul despre cateva feature-uri din C# care exista si in alte limbaje, poate sub o alta forma sau nume, dar in java nu sunt.

Poate aflam pe aici ca si in Java sunt si inca nu le-am descoperit eu sau alternative :grin:

1 Like
  1. In java toate referentile sunt nulabbile, din contra nu ai not null
  2. Optional, e mai clunky poate dar aceeasi idee
  3. Mda, string format.

Eu ce as vrea din C# sunt fiber threads, desi C# nu are un concurency story prea bun cu await / async, si value types, struct.

Da
Project Loom, green threads
este un build de jdk cu el :slight_smile:

async await imi place si mie.

Sper sa pot face update la java 17 in proiect
Restul de dependinte sunt deja actualizate.

Daca vrei lucruri mai fancy folosesti Kotlin, cu mica problema ca nu e foarte compatibil cu GraalVM.

Iar daca vrei sa fii foarte fancy direct Scala.

de cand am schimbat C# cu Scala am tot avut ganduri ca ba vreau sa revin, ba nu :rofl: C# (.Net core, devenit .net, rebranduit ca vechiul asp.net parca).

Pro C# ar fi async awaitul care nu-ti dadea batai de cap, serializare json (NewtonJson, nici macar n-aveam idee cum se transforma o clasa in json pentru a fi trimis clientului), functii lambda, DataContextul (cu EF Core nu prea existau probleme cu db-ul), comunitate, chiar si buildul e ceva mai rapid. Ca minusuri, acoladele obligatorii peste tot (conditional operator mai ajuta), cresterea liniilor de cod inutila, IIS, probabil si altele, dar nu-mi amintesc acum (sau nu stiu)

Pro Scala, ah, aici imi place matching patternul (personal imi pare un switch mult mai optimizat), Optionalul (luat din Java, chiar daca uneori e mai enervant vs nullul din C#), Try’ul, Futures (m-au facut sa inteleg oarecum cum functioneaza partea asta de async await, ce in C# nu ma interesa prea mult), faptul ca este foarte flexibil in scriere (iti permite sa declari metode ce contin caractere, nu esti obligat sa folosesti acolade pentru metode sau functii scurte). La inceput ma speriase faptul ca e limbaj functional. Fals, e multi, un api scris in .NET Core poate fi la fel de bine scris in Scala, chiar mult mai comprimat. Problema la scala e la serializare (mie imi da batai de cap, dar asa am avut ocazia sa invat mai multe decat in C#). Daca nu folosesti un framework (Play! fiind cel mai comun) o sa trebuiasca sa scrii writes/reads custom pentru fiecare clasa (si mai complicat unde ai generice). Altceva, jdbc-ul imi pare mult mai problematic decat ce ofera C#. Erori de conexiune mult mai dese si mult mai greu de depistat. Futures’urile, daca abuzezi de ele (ca in cazul meu), o sa dea batai de cap. Totusi, nu de mult timp incep sa prefer deployul unui jar pe centos vs deployul unei aplicatii C# pe IIS (un chin). Scala e nisat pe Big Data, mie ca web dev mi se pare enervant sa primesc oferte de joburi doar din domeniul asta :))

In java tot ce pot sa retin sunt getterii si setterii :unamused: C#/Scala i-au ascuns cat de mult au putut :woozy_face:

N-am vrut sa transform postul intr-unul C# vs Scala, Scala fiind in mare parte scris in java, si isti specificandu-l, am zis sa-mi las si eu ideile aici :crazy_face:

2 Likes

Este perfect!!!
Raspuns bazat pe experienta personala valoreaza mai mult decat un hello world.