Nauka Javy (a raczej całego "syfu" dookoła :))

0

Witam wszystkich,

Zwracam się do Was z prośbą wyjaśnienia laikowi ekosystemu Javovego
(obecnie dość dobrze idzie mi ogarnianie Javy SE).

Zacząłem - jakiś czas temu - uczyć się Javy. No i super, no i fajnie.
Jakiś miesiąc temu, z czystej ciekawości, zacząłem przeglądać oferty pracy
(oczywiście nie po to żeby już pracować w tej branży, bo to byłoby trochę rzucanie się z motyką na słońce,
tylko wiedzieć jakie są wymagania itp itd).

No i jak się okazało, że sama Java SE, to w zasadzie takie trochę nic jeśli by się chciało pracować w tym języku
(poprawcie, jeśli jestem w błędzie).

Ogarnąłem tak plus minus jak to jest , że jest JAVA SE, EE, ME.
Są też FX, Springi, MVC, Hibernejty, Maveny, JSP i inne takie (z tego co poczytałem to jakieś tysiąc pięćset sto dziewięćset tego typu spraw :) ).

Stąd moja prośba - czy mógłby ktoś czytelnie napisać jak wygląda ten "ekosystem?" Javy?

Czego osoba ogarniająca SE powinna się uczyć dalej?
Jakie, nazwijmy to umownie "rozszerzenia" są najbardziej przydatne?
Co jest do czego, po co i na co?

Zapewne część z tych technologii dotyczy przede wszystkim internetu, obsługi itp.
Idąc tym tokiem myślenia - jakie inne języki np. JavaScript? warto by było się nauczyć?

Każdemu kto podejmie się odpowiedzi na ten "elaborat" będę bardzo wdzięczny.
Pozdrawiam!

2

Ja pewien czas temu złożyłem wątek o podobnej treści - pytałem tam, na czym polega ta cała "magia" Javy. Było tam kilka ciekawych odpowiedzi i informacji, które mogą trochę dać Ci do myślenia ;)

Zobacz : https://4programmers.net/Forum/1466377

9

Najważniejsze pytania:

  • chcesz coś robić dla Siebie?
  • szukasz pracy - ile sobie dajesz czasu ?

Jeśli szukasz pracy w perspektywie roku to naucz się robić serwery Rest/Json w Springu 5 - tylko koniecznie 5-tym. 6 razy sprawdzaj, że tutorial, który czytasz dotyczy wersji 5. Jak się pojawia jakiś XML to nie czytaj dalej. (Mainstreamowy Spring 5 nie rózni sie tak wiele od Spring 4, tym niemniej).

Omijaj wszelkie application serwery, tomcaty itp. Jak będziesz musiał to skorzystasz, a taki Spring Boot (2.0) Ci zrobi to samo bez bóla. SPring 5 - definiowanie serwera, Spring boot - startowanie i konfuguracja. (niewiele trzeba się tu uczyć).

Bazy danych SQL : **Hibernate **ogarnij korzystanie przy pomocy Spring Data. Takie kombo.

Do budowania ogarnij jak korzystać z Mavena lub Gradla. Nie musisz umiec pisać "od zera" buildów, ale umiej korzystac z gotowych. (Komendy!)

Kontrola wersji: Naucz sie korzystać z **GITa **nawet do własnych projektów.

Co do frontu:
Zamiast JS naucz się **TypeScripta **trochę. Możesz spróbowac ogarnąć Angulara (**Angular.io **nowa wersja- omijaj angularjs).

JSP, Java ME to starocie - zapomnij.
JavaFX - raczej nie warto. Nisza.

Btw. żeby nie było, o prawie wszystkich tych technologiach zdanie mam co najwyżej średnie i życze im żeby wymarły, ale jak szukasz pracy w tym zawodzie niedługo, to nie masz wyjścia. Może za parę lat się zmieni.

0

@jarekr000000:

1)Szczerze? Dla siebie mam C++ i tego typu zabawki. Nie będę ukrywał - Javy chcę się nauczyć czysto pod komercję.
2) Na szczęście czasu mam bardzo sporo - jakieś 4? lata.

1

Jak masz 4 lata to zainteresuj się Kotlinem zamiast Javy, Serwerami non blocking : Spring WebFlux i ogarnij coś ciekawszego niż SQL/RDBM: np Cassandra, Hazelcast itp.

0

Faktycznie to są ciekawe/nowe/przyszłościowe technologie - tylko z tym chyba trochę jak z nowymi "Messimi" i "Ronaldo". Było takich od groma a w 99% to tylko sezonowa moda.

4

Ogarnąłem tak plus minus jak to jest , że jest JAVA SE, EE, ME.
Są też FX, Springi, MVC, Hibernejty, Maveny, JSP i inne takie (z tego co poczytałem to jakieś tysiąc pięćset sto dziewięćset tego typu spraw :) ).

Jeśli od razu chcesz robić wszystko w Javie (począwszy od aplikacji na starożytne telefony do beanów w starożytnych kobyłach) to musisz nauczyć się wszystkiego co do tej pory w Javie wymyślono. Jednak nikt rozsądny nie aspiruje do robienia wszystkiego. Technologie, które wymieniłeś mają odpowiedniki w innych językach, np:

0

Dobra panowie.
Jeśli dobrze ogarniam ->
a) jeśli mam mało czasu mam się uczyć jeszcze Javy
b) jeśli mam dużo czasu lepiej uczyć się czegoś nowszego

Póki co ogólnie dobrze rozumuję?

Kolejne pytanie:
jeśli teraz ktoś z was miał sporo czasu na nauczenie się programowania pod "komerchę" to szedłby
w Javę/Javo-podobne Kotliny itp. czy w ogóle w coś innego?

0

Java "komercha" w pl to głównie spring i okolice (bazując na ogłoszeniach o pracę)

0

Jeszcze pytanie właśnie poruszone powyżej - o ogłoszeniach o pracę itp.

Jak to jest w praktyce -> jeśli w ogłoszeniu pisze, że wymagane jest pierdyliard bibliotek, których połowa programistów języka
nie zna nawet z nazwy,to jest sens się do takiej pracy zgłaszać ze stwierdzeniem, że sama nauka biblioteki/rozszerzenia to dla ciebie nie problem?

1

Przeraził mnie ten post. Aż tak nie warto isć w Jave ? Myślałem o Kotlinie wygląda fajnie ale nigdy nie sprawdzałem z czym to się je. Lepiej porzucić Jave i iść w Kotlina czy dalej brnąć w to ?

3

Nie bardzo widzę co takiego przerażającego... Że są iblioteki gotowe do robienia wielu rzeczy. Zaprawdę - straszne.

A co do ogłeszenia o pracy - tej całej kultury zbierania POKEMONÓW, nie ogarniam. Co któreś ogłoszenie zawiera całą listę blibliotek i srejmworków. Z drugiej strony: to samo CV-ki.
Czasem się zastanawiam, czy naprawdę ktoś w tych HRach i specyfikujący te ogłoszenia myśli, że jak gość zna Hibernate 5.2, to na 5.1 zupełnie polegnie i nie warto go nawet pytać....

Sam dostałem już raz dobrą pracę za znajomość specyficznego frameworka (moim zdaniem do nauczenia w 17 do 19 minut, z przerwą na przejrzenie demotywatorów).

3

Ja bym z Kotlinem uważał bo Groovy a później Scala też miał zwojować świat a mimo to pozostały niszą. Kotlin zadomowił się w Androidzie, bo Android cały czas stoi na Javie 7 i Kotlin jednak stanowił tam wyraźną "nową jakość". Ale mając pod ręką Javę 10 i jakieś Immutables, wiele zespołów woli zostać przy javie. Zresztą pamiętajmy że większość pracy to rozwijanie istniejących systemów a te są pisane w javie.

Wracając do głównego pytania, popatrz na ogłoszenia o pracę i zrób sobie statystykę buzzwordów i będziesz wiedział czego się uczyć. Pewnie będzie to Spring (Boot, MVC, Data), JPA/Hibernate, maven, git. To jest takie nieśmiertelne kombo na którym stoi masa aplikacji.

ogarnij coś ciekawszego niż SQL/RDBM: np Cassandra, Hazelcast itp.

Hazelcast i Cassandra są mocno mainstreamowe i faktycznie mogą się przydać, ale nie określałbym ich jako coś "ciekawszego". Każda technologia ma swoje zastosowanie i w jednym miejscu się nadaje a w innym nie. Jest teraz mocny hype na wszelkie noSQLe, ale dobiera sie narzędzia do problemu ;) SQL jest bardzo dobrym rozwiązaniem dla wielu problemów i zastępowanie go na siłę czymś innym raczej dobrze się nie kończy. Ja bym jednak skłaniał się ku jakiemuś polyglot persistence -> warto mieć rozeznanie w różnych technologiach składowania danych, żeby wiedzieć i rozumieć kiedy użyć X a kiedy Y.

1

Pytanie czy w ogóle trzeba i warto być w mainstreamie. Żałuje, że nie wyniosłem się na Scalę jak była młoda. Byłem wtedy fanatykiem Javowym... Teraz niestety ciężko, bo sam znajduję lepszych i tańszych Scalowców ode mnie :-) , a co tu dużo nie mówić język jest o wiele ciekawszy i projekty też są spoko.

Co do kotlina, to wróżę mu dobrą przyszłosć zgodnie z zasada wygrywa kupa, która jest trochę lepsza, ale nie za bardzo, bo nie ogarniemy. Kotlin to takie C++ naszych czasów.
Btw. język jest w porządku, chociaż odkrywczości w nim tyle co w produktach apple.

1

@Shalom: troche się nie zgodzę. Groovy jest do innych zastowań, ale w pewnym sensie teraz bardzo wojuje świat Javy, bo Spock jest calkiem popularny. Generalnie na produkcje język słaby.
Scala jest dosyć trudna i bardzo inna od Javy, Kotlin jest jest z tej 3 najbliższy. Zreszta jest na tyle podobny że przełączanie się miedzy Kotlinem a Javą to żaden problem, a jak ktoś ogarnia Jave dobrze to Kotlina ogarnie w tydzień.

0

Nie tęsknie do Spocka od kiedy mam KotlinTest. https://github.com/kotlintest/kotlintest
NIe do końca Spocka zastępuje, cel jest inny - ale i tak jest zajebiście.
Przyznam, że używam głównie przez jakieś szczątkowe podobieństwo do ScalaTest.
KotlinTest ma property testing i wspiera async testy (Future /whenReady). Dla mnie kluczowe.

0

@jarekr000000: ale jakbyś miał testy w Javie to napisania to wolałbyś Spocka czy JUnita?

0

@scibi92: to zależy od ludzi i projektu. Raczej Spock. Ale zwykle i tak tyle robię rewolucji w projektach, że wsadzanie tam Spocka, to wydawało mi się za dużo. Ludzie i tak mają problemy z napisaniem jakichkolwiek testów... (JPA, Spring, JavaEE i jest dramat).
Z drugiej strony widziałem przypadki, ze rewolucja w stylu zaczynała sie od testów. Właśnie zamierzam pójść tą ścieżką w jednym projekcie. ( KotlinTest do Javowej kobyły (nie tak starej) ) .

1

Java to bardzo dobry język. Natomiast ekosystem oprócz JVM to syf i nieporozumienie. Niedobrze mi się robi gdy ktoś wymawia słowo Maven. Nowoczesne języki nie muszą korzystać z żadnych, konfigurowalnych tonami XML narzędzi do budowania. Zobaczcie jak wygląda system pakietów w Fantomie, który też działa na JVM, albo moduły w D lub Pythonie. Nawet paczki w Go funkcjonują o niebo lepiej. Środowisko produkcyjne powinno się składać z edytora, kompilatora/interpretera i prostego systemu modułów. To co oferuje Java to koszmar i lata 90-te.

2

@siloam ty sobie chyba żartujesz teraz. Jedną z wielkich zalet Javy jest właśnie to że isnieją narzędzia takie jak Maven, których dla wielu innych technologii od lat ludzie nie mogą zreplikować. I nie bardzo rozumiem o jakich konfiguracjach mówisz, bo w 99% sytuacji masz tylko deklaracje zależności dla swojej aplikacji i nic więcej. Nie pomylił ci się Ant z Mavenem czasem? ;)

1

Dla poczatkujacego Ant jest o niebo lepszy od Mavena.
Raz na jakis czas zdarza sie ze nawet senior gubi sie w rozwiazywaniu problemow z zaleznosciami w Mavenie.

4

Nie no jaki pip o czym wy mówicie? o_O Bo ja widzę kolosalną różnicę między ściąganiem randomowych bibliotek do swojego środowiska z pythonem, a ściąganiem zaleznosci i budowaniem standalonowej paczki z aplikacją. Różnica jak między piciem w Szczawnicy i szczaniem w piwnicy.
W Javie robisz po prostu git clone && maven install i wszystko się składa. Spróbujecie takiej sztuki z kodem w C na przykład ;]

0

@jarekr000000: Co sądzisz zatem o C# pod kątem obecnym i przyszłościowym?

0

Ja wybrałem Kotlin i jest dość prosty jak Python. Naprawia to czego nie może Java z lat 90-tych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1