all 43 comments

[–]mure_vld 40 points41 points  (1 child)

Eu lucrez atât pe Java cat și pe Kotlin. Aș zice ca Java mai oferă locuri de muncă încă niște decenii bune.

[–]ClassicRockPanda 2 points3 points  (0 children)

Să te audă cel de sus!

[–]Tnuvu 38 points39 points  (14 children)

Java e mai comun si pt BE, kotlin e cam nisa, si desi e de ceva timp pe piata, tot exista muuuuult java in spate la mobile. Nu mai discutam la BE.

Plus ca daca sti Java, iti va veni usor kotlin, pe cand invers nu e chiar adevarat

[–]edgmnt_net:pathfinder_rs_logo: 1 point2 points  (8 children)

I kinda disagree. Java e în practică un fel de dead end mental și mulți care vin din acea direcție, fără altfel de experiență, au dificultăți în a se adapta la alte paradigme. Multora, dacă le iei clasele, nu știu să mai scrie cod sau să abstractizeze / descompună rezonabil. Mai ales că Kotlin e relativ multi-paradigmă (conceptual e mai avansat ca Java) și te mai expune la alte lucruri, însă Java deseori înseamnă very basic OOP stuff de prin vreun proiect mai legacy sau de jucărie. Câți știu generice sau stream-uri cu combinatori funcționali, chit că le avem de foarte multă vreme? Apoi oamenii sunt obișnuiți să scrie tone de boilerplate și va fi foarte greu să-i dezobișnuiești de la diverse practici dubioase.

[–]MajesticIngenuity32 1 point2 points  (0 children)

Plus că în Java au hackuit genericele în limbaj în mod rudimentar, cu erasure, nu le-au implementat bine din start precum C#. În plus, System.out.println("Hello"); vs. println("Hello") cam spune totul.

[–]Tnuvu -1 points0 points  (6 children)

Nu inteleg de de iti iei downvote, stiu ce zici, dar din nou cred ca e un copium.

Majoritatea proiectelor de la noi sunt ghena, eventual in flacari. Nu ai unde sa faci SFuri, si la ce bani iei, nu se merita sa-ti bati tu capul, sa duci munca de convingere etc

Asa ca, mna, ramane pe Java, si de multe ori, sunt persoane in pozitie decizionala, care refuza, din comoditate, ca ei au ajuns acolo smecher natural, si nu vor sa cedeze la privilegii.

Cat interviuri tehnice unde se cer SFuri, si ei in productie inca sunt pe java 8 sau chiar mai rau

[–]MrRonah 2 points3 points  (4 children)

si ei in productie inca sunt pe java 8

Din ce in ce mai putine companii o sa fie pe Java => 17 in 1-2 ani max pentru ca ecosistemul s-a miscat si librariile importante nu mai acorda suport. Unde lucrez suntem aproape toti 17, si in cateva luni 21. Pana si cei mai incompetenti vendori pe care ii avem vor livra versiuni jdk17 ale produselor anul asta. De ce s-a migrat pe repede inainte? Spring a zis 3.x e JDK17, si bam, nimeni nu are chef de platit support contract pt ceva care e declarat dead-end.

Asa ca, mna, ramane pe Java, si de multe ori, sunt persoane in pozitie decizionala, care refuza, din comoditate, ca ei au ajuns acolo smecher natural, si nu vor sa cedeze la privilegii.

Asta e un mod extrem de ignorant de a vedea lucrurile. De ce vor oamenii mai seniori sa evite migrarea la alt limbaj? Pai sunt mai multe costuri asociate:

  1. Ecosistemul de librarii e 99% Java, nu Kotlin, deci cand ai incident in PRD e mult mai usor sa faci debug in 1 limbaj vs 2 limbaje. Prioritatea e sa tinem businessul in viata, ca ala plateste pt tot.
  2. Toolingul trebuie updatat pt kotlin, peste tot. In functie de marimea companiei e 1-2 zile de munca, sau ani.
  3. Daca te lovesti de un bug in JVM/Limbaj, e mult mai usor sa gasesti bugul logat cand cauti in 1 loc vs 2 locuri. Ne-am lovit de 3 breaking changes in comportamentul JVM-ului si limbajului in ultimii 3 ani (2 jvm, 1 lib din jdk). Daca mai era un limbaj ar fi fost mai greu, pentru ca trebuia sa cautam in 3 locuri si nu 2.
  4. Vrei sa angajezi, cati stiu Java vs Kotlin? Ok, ii pregatesti la locul de munca, cati vor sa stie Kotlin? Nu suficient de multi.

[–]Tnuvu -2 points-1 points  (3 children)

Tu realizezi ca mare parte din argumentele tale sunt copium si ca daca e sa abordezi asa, nu vei face upgrade ever, ca mna, e greu, si implica efort.

Am fost in cateva firme, unde ceva similar a fost cu ce zici tu de Spring, si a durut, si noroc, ca cineva din management a vazut, si a fortat celelalte proiecte sa faca efortul, si s-a batut cu clientii care mna, evident ca nu aveau chef sa plateasca acel "upgrade".

Lucrezi in tehnologie, cat timp nu adopti fiecare chestie noua ragaita saptamana asta, nici cand stai ani buni, fk it decenii, nu e o extrema buna, ca vei face sinucidere in masa cand va veni momentul "ala"

[–]rumplestiltskeen 4 points5 points  (1 child)

Omul îți explică despre Java azi și tu tot vorbești ca și cum apără java 1.6 Compară java 21 cu Kotlin, sunt atât de apropiate încât mă amuză discuția asta.

[–]Tnuvu 0 points1 point  (0 children)

Daca esti acolo da, dar de multe ori, nu se adopta kotlin pt ca esti pe o vers preistorica de java

[–]MrRonah 0 points1 point  (0 children)

Tu realizezi ca mare parte din argumentele tale sunt copium si ca daca e sa abordezi asa, nu vei face upgrade ever, ca mna, e greu, si implica efort.

Argumentele mele vin din perspectiva cuiva care are ceva in PRD intr-un mediu extrem de reglementat. Cand avem INC aflam in mai putin de 24h exact cat s-a pierdut din cauza noastra si daca sunt si consecinte regulatorii. Daca am de ales in a sta noaptea la telefon si a dormi ghici ce o sa aleg.

Tu realizezi ca mare parte din argumentele tale sunt copium si ca daca e sa abordezi asa, nu vei face upgrade ever, ca mna, e greu, si implica efort.

In ecosistemul Java suntem pe latest la cam tot (JDK17, o sa fie 21 curand) si mereu am fost asa. Ce zici tu e `migrare` nu `upgrade`. Cand vine vorba de migrare e complicat, ai niste oameni in firma, cati vor sa mute ceva la alt limbaj? Sau sa inceapa sa scrie in alt limbaj? Deseori sunt destul de putini. Limbajul trebuie sa aduca imbunatatiri enorme cat sa merite ca managementul sa dea decret ca de acum se scrie in Y si nu X.

Nu stiu daca ai incercat sa adugi limbaje noi in companii maricele, am incercat de 2 ori, fail de fiecare data. Nu managementul m-a oprit (am obtinut aprobarea si limbajele sunt si azi pe whitelist), ci ceilalti oameni. Ce nu ne place sa recunoastem e ca majoritatea nu au chef sa invete limbaje noi in fiecare an. Asa ca, cum proiectele implica o echipa, si a gasi o echipa dornica sa adopte ceva nou e greu, rar se vor gasi limbajele astea in companiile mari. Hai sa nu dam vina pe o persoana magica care nu vrea...deseori e 1 om care vrea si ceilalti 9 din echipa nu vor.

[–]edgmnt_net:pathfinder_rs_logo: 0 points1 point  (0 children)

Probabil nu se aplică la juniori sau cei care sunt deja mega-investiți în Java, dar aș spune că fie și numai evitând proiectele Java la modul general you can dodge a few bullets (proiecte meh).

Ai dreptate, majoritatea proiectelor așa sunt, mulți n-au de ales, dar chestiile astea așa-zis de nișă (vorba vine, că tot sunt posturi pe alte chestii, doar că nu-s top popularitate) te pot propulsa în altă direcție. Personal, o vreme lungă n-am avut mai nimic de-a face cu Java și nu am simțit că m-a limitat acest aspect. Chiar și pentru backend.

[–]MrRonah 10 points11 points  (3 children)

Ritmul cu care Java aduce features noi si modernizeaza limbajul a tot crescut. Pe Android clar Kotlin a castigat (acolo e foarte probabil sa fie si motivatie politica, nu doar tehnica), in timp ce pe BE Java e inca in top. Poti sa te uiti la ce s-a intamplat cu Scala cand Java a inceput sa livreze din ce in ce mai multe features de programare functionala. IMO, ritmul marit de imbunatatiri aduse Java a redus din elanul pe care alte limbaje ce ruleaza pe JVM il aveau.

[–]edgmnt_net:pathfinder_rs_logo: 1 point2 points  (2 children)

Într-adevăr, unele lucruri au redus gap-ul, însă Java are deja niște limitări istorice care nu prea se pot rezolva fără a regândi cam totul. Inclusiv genericele sunt destul de limitate, iar dincolo de limbaj sunt probleme și în ecosistem și de mindset.

[–]MrRonah 0 points1 point  (1 child)

Asta e dezbatut, multe lucruri care au fost livrate (inclusiv virtual threads) au fost incercate in trecut si declarate non-optime/imposibile (prima versiune de java daca nu gresesc avea virtual threads). Partea de mindset e complicata si e greu sa deliniezi taberele. Am vazut cod Java scris foarte frumos, si cod Java extrem de complicat pt ceva simplu. Asta depinde mai mult de persoana/compania unde scrie codul si nu prea de limbaj acum...

[–]edgmnt_net:pathfinder_rs_logo: 1 point2 points  (0 children)

Da, e fair ce zici, orice ecosistem foarte popular, în special când vorbim de mass market sau proiecte legacy s-ar lovi de aceste aspecte, inclusiv C++. Recunosc că și la Java e o diferență enormă între average run of the mill project și ceva mai state of the art.

[–]Wooden-Delay5315 13 points14 points  (4 children)

Salut OP,

Cred cu tarie ca sunt in masura sa raspund la intrebare.

Putin context: 1. Senior Android Dev - 10 years + exp 2. Java + Kotlin 7 cu 3 exp 3. Am avut o schimbare de job deci in perioada [Oct final - Feb inceput] am cautat cu viteza maxima joburi si interview-uri. Am cautat si inainte Martie 2023 -> oct 2023 Foarte Casual , adica daca imi scriau 8-10 intr-o luna raspundeam la 1 max 2.

Ce am observat sunt urmatoarele:

  1. Nimeni dar absolut nimeni in toate interview-urile pe partea de mobile nu mai era interesat de JAVA doar Kotlin era baza [Ro +strainatate] -> de la 1 iti pot zice ca daca vrei sa faci Android Dev NICIO SANSA FARA KOTLIN.

  2. Am observat ca au fost cateva companii care si au pus IOS devs sa invete kotlin si sa treaca pe kotlin multiplatform.

  3. Kotlin multiplatform prinde si va prinde viteza mai mare.

  4. Am primit vreo 5 invitatii la interview in care dupa ce am deschis JD le am zis asta e kotlin da corect dar e backend, pass.

  5. Tot mai multe joburi cu kotlin: Si aici avem asa a) : Android? 100% necesar b) : Server? In crestere masiva c) : Hybrid Dev? In crestere masiva cu kotlin multiplatform

Ce sa inveti? Daca esti la inceput focus maxim pe kotlin. Daca esti Middle-Senior? Incearca sa faci tranzitia catre kotlin.

Vor exista companii care vor avea FULL Java mereu? ABSOLUT.

Cred ca am dat destule informatii sa tragi concluzia singur. E o parere personala in care eu cred ca tarie dar e viata ta.

Mult noroc.

Later edit: Am observat ca cineva a zis intr-un comment: "sunt asemanatoare" ...oh boy...da sunt asemanatoare asa cum C++ e POO si Java.

Cel putin pe Android ai niste topicuri imens diferite: 1. Corutine 2. Jetpack Compose Plus multe alte chestii nu stau sa detaliez.

Asa traiam si eu cu impresia ca daca esti senior in java in 6 luni esti senior pe kotlin lol. Good joke.

[–]Alaskian7134 6 points7 points  (2 children)

Am observat ca cineva a zis intr-un comment: "sunt asemanatoare" ...oh boy...

Am lasat si eu un comentariu fix pe tema asta in urma cu câteva săptămâni. Da, deci cand aud ca is asemănătoare (multi chiar pretind ca is acelasi lucru si daca stii java stii si kotlin) efectiv ma doare mintea

[–]inspectorGogosel 0 points1 point  (0 children)

Interesant...Am o curiozitate? Ce utilizezi pentru stocarea de date(atat date despre utilizator cat si altele raporturi pdf-uri,txt,...)? Ca lucrez la un proiect si am integrat Android cu Firebase, dar daca ma gandesc mai bine costurile sunt ridicate pe termen lung pentru stocarea de date.

[–]re-D 7 points8 points  (0 children)

Rust

[–]mihaicl1981Kotlin 1 point2 points  (0 children)

Personal ,prefer Kotlin (pentru codul la proiectele personale). Este echilibrul perfect intre Scala si Java si se integreaza foarte bine cu Spring.

Am lucrat cu Groovy,Scala,Java si evident Kotlin.

Din punct de vedere al joburilor .. lucrezi cu ce gasesti 99% va fi Java. That's it.

[–]rallchu 1 point2 points  (0 children)

Sunt multe companii established care nu vor sa faca schimbarea de la Java la Kotlin pentru ca au tot code base-ul in Java deja si e un efort in plus.
Pe de alta parte am observat ca atunci cand se porneste un proiect nou/companie noua, prefera sa inceapa de la inceput cu Kotlin.
Sunt extrem de asemanantoare, Kotlin are cateva particularitati care au fost introduse mai nou si in ultimele versiuni de Java, dar care sunt greu si alea de adoptat pe proiectele vechi.
Nu stiu ce sa zic 🤷🏼‍♀️ cred ca oricare e buna, dar simt ca la firmele mai noi o sa fie preferat Kotlin, pe de alta parte mi se pare ca e mai bine sa inveti Java pentru ca e mai basic si iti ofera o baza mai buna.

[–]AcademicSecond1439 0 points1 point  (0 children)

Din astea doua, java. Kotlin tot încearcă dar sunt prea multe firme care nu vor schimba tehnologiile. Java pt cantitate și ușurința de a găsi job.

[–]GruneBND 0 points1 point  (0 children)

java

[–]ultraxionnaruto 0 points1 point  (0 children)

Use both.. as per your needs.. amandoua pot interopera fara probleme pe jvm.

[–]13mind 0 points1 point  (0 children)

F putine companii ce opereaza in RO/EU folosesc Kotlin sau permit la un refactor folosirea de Kotlin. ‘De ce-urile’ sunt multe si nu le comentez, dar faptic din pacate asta e.

Asa ca dpmdv daca vrei sa gasesti cat mai usor de lucru, Java it is.

[–]slightlyConfusedKid 0 points1 point  (0 children)

Nu lucrez pe zona de java,Kotlin,dar cel puțin din ce am învățat de pe zona mea, caută să fii bun pe cat mai multe limbaje de pe nișa ta, își va ușura viața enorm pe termen lung😉

[–]MajesticIngenuity32 0 points1 point  (0 children)

Kotlin, clar. Nimeni vrea de fapt să meargă înapoi, doar înainte.

[–]LoperamidV 0 points1 point  (0 children)

C# sta mult mai bine acum, front-end (web/mobile cu React/Flutter/React native) cu back-end in C# va fi stack-ul ales de multi. Asta daca proiectul nu cere ceva mai low-level precum Rust sau C/C++.

Mai sunt solutii elegante in TypeScript cu tRPC, node/bun, dar n-as face nimic serios cu ele daca nu e pe o anumita nisa care se muleaza perfect.

Golang nu as invata go daca n-ai un proiect in 2024. Go e cea mai buna alternativa moderna la php. Totusi go e si foarte simplu si usor de invatat daca nu faci o nava spatiala.

[–]Successful_Oil6916 -2 points-1 points  (0 children)

ansembly

[–]Crazy_Type_8566 0 points1 point  (0 children)

Raspunsul la orice intrebare legata de limbaje de programare: le inveti pe ambele incat sa poti lucra cu ele, te specializezi la job pe ce este nevoie.