Hej, po wielu latach siedzenia we froncie chce sie zaczac rozwijac w kierunku backendu/fullstacku, i mam wybor pomiedzy tymi technologii. Jakie maja wady i zalety? Czy ktoras z nich jest mocniejsza/bardziej wymagana na rynku?
- Rejestracja:prawie 9 lat
- Ostatnio:około rok
- Postów:54


- Rejestracja:prawie 22 lata
- Ostatnio:31 minut
- Postów:6648
Ja bym brał C#. Jak dla mnie, ma niższy próg wejścia. Już na start Visual Studio dużo ułatwia. Właściwie nie musisz tam nic konfigurować, po prostu tworzysz nowy projekt i działasz. Masz framework, jakąś bazę danych i lokalny serwer zapewnione przez IDE. A "jedyna słuszna dokumentacja" wprowadzi Cię do technologii, których chcesz używać.
W Javie trzeba trochę bardziej podrążyć, przynajmniej na początku.
- Rejestracja:ponad 6 lat
- Ostatnio:13 dni
- Postów:3561
Java i c# to dwie strony tej samej monety. Są bardzo podobne. Jak dla mnie to c# bardziej spełnia zasadę najmniejszego zaskoczenia. Ale generalnie język to mały pikuś. Duży pikuś to tzw ekosystem, czyli tule, społeczność, przykłady, materiały itp itd. - zimna pitulka dziś, 06:34
biela_ napisał(a):
Wydaje mi się że java popularniejsza ale jak już pisali konfiguracja tego to męka :) jak już projekt hula to spoko, ale stawiać od nowa to zawsze jest zabawa
Ekosystem Javy w mojej opinii jest bardziej "demokratyczny", tzn w praktycznie każdym obszarze jest wielość konkurencyjnych architektur, implementacji itd... (pominę pseudo-monopol Springa). Dla mnie ta wielość to zaleta, ale wierzę, że dla kogoś może być wadą.
Jak kiedyś będziesz chciał wychylić głowę poza web-backend, może to być zaletą.
Język C# jest o 10 lat nowszy, więc podczas jego tworzenia powstała nowocześniejsza koncepcja (np propertiesy wyrażone wprost, a nie przez konwencję, i inne rzeczy). Wady też ma, np powstanie Frameworka stricte pod Windows, dopiero "wersja 2.0" czyli Core jest przenośne do spodu.

- Rejestracja:około 5 lat
- Ostatnio:5 miesięcy
- Postów:2420
Jako że pisałem .NET/ASP MVC -> Java/Spring -> .NET Core -> Scala to się wypowiem:
.NET i Java to dwa zupełnie różne podejścia. .NET stawia na out-of-the-box, M$ dostarczy Ci wszystko: IDE, ORM, CI Server, framework webowy, system buildu (MSBuild). Jeżeli piszesz CRUDa lub przeciętną apkę biznesową to przekonasz się że jest o wiele prościej zacząć. Java z drugiej strony stawia na otwartość, prawie wszystko jest w co najmniej dwóch wersjach zaczynając od systemu buildu: Gradle i Maven, ORM: Hibernate lub MyBatis, nawet framework do kolekcji (listy, zbiory) nie jest jeden tylko: Standardowy, od Googla (Guava), Vavr i Eclipse Collections. Inny przykład to domyślna pula wątków w .NET'cie jest jedna globalna, która sama się reguluje ty tylko Task.Start(() => robota()) i zrobione. W javie jest co prawda pula globalna (ForkJoinPool) ale wszyscy i tak sobie robią własne lokalne pule za pomocą Executors.newXXX(). Kolejna opcja to tuning, prawie nigdy nie zdarzyło mi się tunować GC w .NET'cie (choć ma takie same pauzy jak ten w Javie BTW) za to w Javie tego nie unikniesz trzeba znać przynajmniej pobieżnie przełączniki JVM'a, samych algorytmów GC też jest co najmniej 5. M$ ostatnio prawie całe API przepisał na async, jeżeli przesiadasz się z TypeScript'u to może być to dla Ciebie znajome, w Javie jesteś zmuszony używać Rx/Reactor (choć są ambitne plany wprowadzenia green-threadów - project loom).
Jeżeli chodzi o modną ostatnio chmurę to wydaje się że Java ma tutaj przewagę. Dużo infry chmurowej (Kafka, Zookeeper, Spark, Hadoop, ElasticSearch, Cassandra) jest w Javie, teraz się to zmienia na korzyść Go. Generalnie jak chcesz pisać mikroserwisy w dużej skali to Java ma lepsze frameworki i klientów do wspomnianych komponentów.
Jeżeli chodzi o same języki programowania, Java to stary język i często ssie, sporo ludzi eksperymentuje teraz z Kotlinem, jeżeli zaczynasz naukę i wybierzesz JVM'a to radzę poważnie spojrzeć na ten język programowania od JetBrains. Podstawowy problem JVM'a to brak wsparcia prawdziwych typów generycznych, zamiast tego jak komilujesz List<Integer>
to dostajesz pod spodem List<Object>
,
w praktyce nie sprawia to aż tak dużych problemów ale wymaga przyzwyczajenia. C# jest jednym z najlepszych języków w których pisałem, miejsca ustępuje tylko Rocket/Scheme :D Zarówno w przypadku C# (VisualStudio, VSCode) jak i Javy (IntelliJ, Eclipse) IDE w wersji "community" są dostępne za darmo. Eclipse jest całkowicie za darmo i można go używać do tworzenia komercyjnych projektów.
Generalnie nie zgadzam się że setup projektu w Javie trwa dłużej, trzeba używać generatorów najprostszy to gradle init --type java-application
lub https://start.spring.io/ Ogólnie naukę springa zaczyna się od sciągnięcia apki demo PetProject i rozpoczęcia hackowania.
Ogólnie proste i przeciętne aplikacje biznesowe lepiej się piszę w .NET'cie. Skomplikowane systemy (Amazon) to raczej domena Javy.
Ostatnia ważna rzecz: jeżeli jesteś fanem Linuxa lub Mac'a to wybierz Javę, mniej problemów będzie po drodze. Co prawda .NET Core chodzi na wszystkim ale już VisualStudio i toole GUI np. Azure Service Bus Explorer już nie. Wybierając .NET jesteś defacto przykuty do Windy - dla mnie to był deal-breaker, pracuje teraz na mac'u a na domowym PC mam Linux'a - do Windy wracać nie zamierzam.
Podsumowując, w przeciwieństwie do tego co niektóre firmy sądzą na rekrutacjach obie platformy są do siebie bardzo podobne, Mid'owi nie powinno zająć dłużej niż 3 msc przestawienie się z jednej na drugą a kod biznesowy (a więc w bebechach aplikacji) zapewne jest w stanie zmieniać od pierwszego dnia. Rozejrzyj się po lokalnym rynku pracy w Wawie ofert z Javy więcej, wydaje mi się że we Wrocku i Krk jest na odwrót.

Wybierając .NET jesteś defacto przykuty do Windy - dla mnie to był deal-breaker, pracuje teraz na mac'u a na domowym PC mam Linux'a - do Windy wracać nie zamierzam.
bynajmniej, ludzie siedzą na Riderze na Macu / Linuxach.
- Rejestracja:ponad 6 lat
- Ostatnio:13 dni
- Postów:3561
0xmarcin napisał(a):
Jako że pisałem .NET/ASP MVC -> Java/Spring -> .NET Core -> Scala to się wypowiem:
Java z drugiej strony stawia na otwartość, prawie wszystko jest w co najmniej dwóch wersjach ... , ORM: Hibernate lub MyBatis,
Uprościłeś. Pierwszy poziom: JPA / non JPA.
JPA ma 2-3 istotne implementacje (w tym Hibernate - ja lubię Eclipselink) i kilka fikuśnych (np zintegrowanych nad bazą obiektową itd)
non-JPA to blisko 5-10 istotnych dla rynku bibliotek
Jeżeli chodzi o same języki programowania, Java to stary język i często ssie, sporo ludzi eksperymentuje teraz z Kotlinem, jeżeli zaczynasz naukę i wybierzesz JVM'a to radzę poważnie spojrzeć na ten język programowania od JetBrains.
Myśl o Kotlinie popieram.
Powiedzmy wyraźnie: to język JVM, czyli w olbrzymim stopniu kompatybilny z Javą.
To ten sam wybór w sensie tego wątku. Można wystartować z Javą i przemieszczać się do Kotlina
PS. Wzmiankujesz o IDE JetBrains IntelliJ Community oraz Eclipse.
Jeszcze jest Netbeans, wydaje mi się bardziej ceniony od Eclipse (a na pewno krócej się go "urabia" pod siebie), i zawiera za darmo elementy niedostępne w "Community"

- Rejestracja:ponad 8 lat
- Ostatnio:ponad 3 lata
- Postów:48
Idź w Jave.
Ja siedzę w .Net i widzę, że ofert pracy jest połowa tego co na Jave.
A to przekłada się na szanse otrzymania większej pensji.
Gdybym zaczynał od 0, wybrałbym Jave.







- Rejestracja:prawie 8 lat
- Ostatnio:9 miesięcy
- Postów:74
Nie ma znaczenia.

- Rejestracja:ponad 4 lata
- Ostatnio:ponad 4 lata
- Postów:5
Co ma wieksza przyszlosc typescript czy kotlin? Nie chce uczyc sie jaw nie lubie ich.


- Rejestracja:prawie 22 lata
- Ostatnio:31 minut
- Postów:6648
"Większą" przyszłość mają języki, które powstaną po kotlinie i typescript, a także języki, które powstały przed nimi :]

- Rejestracja:ponad 6 lat
- Ostatnio:13 dni
- Postów:3561
Kreciarz_ napisał(a):
Co ma wieksza przyszlosc typescript czy kotlin? Nie chce uczyc sie jaw nie lubie ich.
To są zupełnie nieporównywalne języki.
Zależy co w życiu chcesz
BTW co do użycia liczby mnogiej "nie lubię jaw" tzn że niewiele wiesz. Obie, tj Java i "Java w wersji Script" to zupełnie inne języki i tylko klamerki { } mają podobne
- Rejestracja:ponad 4 lata
- Ostatnio:ponad 4 lata
- Postów:5
Ale ja ich nieporownywalem do czego sie je stosuje, tylko pytalem o ich przyszlosc w stosunku do pracy i plac.
- Rejestracja:ponad 6 lat
- Ostatnio:13 dni
- Postów:3561
nieporownywalem ich tylko pytalem ktory ma wieksza przyszlosc? Google moze porzuci kotlina jak powstanie fuchsia os i zostanie dart i go. - Kreciarz_ 2 minuty temu
Nie da się tak "oszczędzać" nauki, żeby uczyć się TYLKO tego co w sposób zagwarantowny ma przyszłość.
Co więcej, w procesie edukacji niejeden język tzreba "zmarnować" tzn nauczyć się i nie pracować w nim komercyjnie. To jest trening myślenia w różnych paradygmatach, szeroki horyzont itd... Coś zupełnie odwrotne do "nie lubienia obu Jaw" (dla mnie klapki na oczach)
W tym sensie Kotlin da Ci rozwój, to bardzo ciekawy język.
- Rejestracja:ponad 4 lata
- Ostatnio:ponad 4 lata
- Postów:5
Ale google moze porzucic kotlina jak powstanie fuchsia os. Dlatego nie promuja juz nawet swojego go tylko dart i flutter. Ba, malo tego dart z flutterem ma byc wykorzystany do pisania aplikacji okienkowych na chromium os i unixa. Canonical tez to rozwiazanie promuje.
https://bulldogjob.pl/news/1185-flutter-dostepny-do-tworzenia-apek-na-linuksie


- Rejestracja:prawie 6 lat
- Ostatnio:prawie 4 lata
- Lokalizacja:Warszawa
- Postów:2918
AnyKtokolwiek napisał(a):
Nie da się tak "oszczędzać" nauki, żeby uczyć się TYLKO tego co w sposób zagwarantowny ma przyszłość.
Jeden wyjątek. Jedna firma i jej ekosystem. Apple
Objective-C
First appeared 1984
** 36 years ago**
Jego następca
Swift
First appeared June 2, 2014;
6 years ago
Nie znam żadnego programisty Apple który by marudził jak mu źle, nudno, mało zarabia itd
*OK może się maskują i pochlipują po kątach kiedy nikt nie widzi ;)
*