Java -"zaawansowane" tematy

0

Które z bardziej zaawansowanych tematów Javy (SE) warto szczególnie poznać? Wcześniej uczyłem się C++, na każdym kroku były setki nowych zagadnień, samo zarządzanie pamięcią na 10 różnych sposobów (wartość, wskaźnik, referencja, r-value, itp, itd) to kupa materiałów, a to dopiero wierzchołek góry. Pytanie tylko, które z tematów/zagadnień/działów Javy SE są must have?
Na pewno chcę zapoznać się z tematem strumieni, wiele razy znalazłem 1linijkowe rozwiązanie czegoś co zajmowało mi 5-10 linijek, właśnie dzięki zastosowaniu strumieni. Poza tym chciałbym dowiedzieć się nieco więcej o GC, bo póki co wiem że sprząta, ale nie wiem jak. Co poza tym? W C++ materiał jaki miałem przygotowany na rozmowę o stanowisko juniora to było kilkadziesiąt zagadnień, z każdym standardem dochodziły nowe, rozmowę na Javę przeszedłem praktycznie mając wiedzę na temat C++ i OOP i teraz po 4 miesiącach pracy zastanawiam się nad czym się skupić by podnieś swoje czysto Javowe umiejętności?

0

Zależy gdzie chcesz w tej Javie pracować:

  1. Poziom zero to korpo-developer w Java EE / EJB 2.0. Tutaj wystarczy znajomość tworzenia metod, pętla for-each, JUnit i podstawy XML. Resztę (architektura, CI, klasy) robią za Ciebie inni.

  2. Java SE w domenie naukowej. Po prostu zdaj OCP. Potem rozwijaj się naukowo (data science, machine learning, deep learning itp).

  3. Java SE i oprogramowanie enterprise w wersji hipsterskiej (RxJava, Ratpack, Netty itd). Tutaj oprócz OCP trzeba śledzić to co wypisuje @jarekr000000. Czasami pisze niewiarygodnie dosadnie, ale w tym szaleństwie jest metoda.
    Wstęp do tej dziedziny:

  4. Java SE w wersji HFT. @katelx coś tam o tym wie, ale chyba nie chce się dzielić za bardzo wiedzą. Albo ma inne priorytety w życiu. W sumie na jej miejscu to nie wiem czy w ogóle bym tu zaglądał ;-)

Kilka przydatnych pozycji do (4):
https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
https://www.amazon.com/Java-Performance-Companion-Charlie-Hunt/dp/0133796825/
https://helion.pl/ksiazki/wydajnosc-javy-charlie-hunt-binu-john,wydjav.htm#format/d

0

Pod ktora opcje podchodzi pisanie w springu?

0

Hmm nie wiem czy dokładnie o to mi chodziło. W Javie pracuję obecnie w małej firmie i projekty są różne, jednak większość z nich to Springowy backend + formatki czasami w angularze, a czasami w technologii z poprzedniej epoki. Mimo wszystko mając 4 miesiące doświadczenia nie mogę narzekać na nudę.
Do czego zmierzam z tym tematem - w C++ nauka samego języka na poziomie juniora to były miesiące (przynajmniej w firmach gdzie startowałem). Ciągle było coś do douczenia, gdy już myślałem że ogarnąłem jakiś temat, obejrzałem bardziej ambitny filmik na YT i sie okazało że jednak mało jeszcze wiem. Ucząc się do testów na juniora miałem wypisane po kilka(naście) zagadnień z c++11, 14 i 17 które warto poznać. Javy (samego języka) na poziomie juniora wydaje mi się, ze można się nauczyć w tydzień, gorzej oczywiście z całą otoczką, całym tym "syfem" dookoła. Nie chce mi się jednak wierzyć, że nie ma jakiś bardziej zaawansowanych tematów w samym języku, może ktoś mógłby wypisać chociaż kilka tematów które warto znać z kolejnych wersji Javy?

0

Każdemu kto myśli że Javy można się nauczyć w tydzień polecam:
a) zdać OCP
b) przeczytać Java Puzzlers
c) przeczytać coś o wątkach, np. polecane przez niektórych Java Concurrency in Practice

(kolejność dowolna)

0

O coś takiego mi chodziło ;)
https://education.oracle.com/pls/web_prod-plq-dad/view_pdf?c_org_id=10&c_lang=PL&c_id=D84838GC10
czyli to byłaby lista zagadnień od A do Z? Pytanie czy znajdę gdzieś przykładowe testy albo materiały pod ten kurs za free (5k na Oracle to jednak sporo) czy zostaje nauka na własną rękę?

No i z perspektywy kariery, taki certyfikat jest faktycznie coś wart w oczach pracodawcy? Lepiej kolejne miesiące poświęcić na douczanie się w domu Springa na własną rękę, czy może właśnie przysiąść do podstaw i za jakieś pół roku, może więcej spróbować podejść do OCP?

0
Zimny Kret napisał(a):

O coś takiego mi chodziło ;)
https://education.oracle.com/pls/web_prod-plq-dad/view_pdf?c_org_id=10&c_lang=PL&c_id=D84838GC10
czyli to byłaby lista zagadnień od A do Z? Pytanie czy znajdę gdzieś przykładowe testy albo materiały pod ten kurs za free (5k na Oracle to jednak sporo) czy zostaje nauka na własną rękę?

Wygląda jak zagadnienia do OCP. Kursy Oracla są za drogie wg mnie dla osoby fizycznej, chyba że namówisz pracodawcę.
Ale jakoś nie wierzę że można się nauczyć w 5 dni tego. Nawet jeśli mieszkasz u mamy i jesteś na 5 roku studiów (czyli jesteś młody, masz zapewniony dom, jedzenie i dużo wolnego czasu).

No i z perspektywy kariery, taki certyfikat jest faktycznie coś wart w oczach pracodawcy? Lepiej kolejne miesiące poświęcić na douczanie się w domu Springa na własną rękę, czy może właśnie przysiąść do podstaw i za jakieś pół roku, może więcej spróbować podejść do OCP?

Do Springa masz osobny certyfikat. OCP daje przede wszystkim Ci to że masz usystematyzowaną wiedzę, której możesz nawet nie zdobyć po 10 latach pracy - bo różne są stanowiska i różne ciśnienie ludzie mają na naukę nowych rzeczy. A papierek jest dobry także dla Ciebie - wiesz że się rzeczywiście nauczyłeś. Czy pracodawca na to patrzy - być może. Nie robiłem statystyk.

0

Z tym tygodniem chodziło o to, że zanim znalazłem pracę, uczyłem się od jakiś 6 miesięcy **regularnie ** C++, ofert jednak nie było bardzo dużo, na głupiego juniora miałem listę zagadnień dłuższą niż to co wysłałem przed chwilą i od niechcenia wysłałem CV na Java Developera, głównie dlatego że firma była <1km od mojego mieszkania. No i mając solidne podstawy C++ w dosłownie tydzień ogarnąłem Javę na tyle, że dostałem pracę. Fartem było to, że pytania na rozmowie dotyczyły głównie programowania, wzorców, OOP, nie stricte języka.

Co do OCP i ewentualnego podejścia, dałbym sobie na to prędzej 5 miesięcy, nie 5 dni. Pytanie tylko czy gra jest warta świeczki, czy nie lepiej po prostu przyswoić te zagadnienia i w międzyczasie starać się je użyć w jakimś projekcie w Springu, i za te 6 miesięcy mieć po prostu większą wiedzę z zakresu samego języka jak i Springa i do tego móc się pochwalić jakimś projektem w CV, zamiast certyfikatem.

0
Zimny Kret napisał(a):

Co do OCP i ewentualnego podejścia, dałbym sobie na to prędzej 5 miesięcy, nie 5 dni. Pytanie tylko czy gra jest warta świeczki, czy nie lepiej po prostu przyswoić te zagadnienia i w międzyczasie starać się je użyć w jakimś projekcie w Springu, i za te 6 miesięcy mieć po prostu większą wiedzę z zakresu samego języka jak i Springa i do tego móc się pochwalić jakimś projektem w CV, zamiast certyfikatem.

Lepiej, ale nie licz na to że pracując w Springu czy JEE nauczysz się Javy "przy okazji".
To są raczej osobne zagadnienia, coś jak grafika i AI w grach.

0

No ja sie zgadzam - w ogóle nie rozumiem jarania się jakimiś certyfikatami, ale ja chyba jestem troche nienormalny
Wolałbym zakodzić jakis ciekawy projekt w którym zastowałbym tą wiedze, bo sprawa jest prosta:
a)masz normalnego pracodawce i on ma w dupie certyfikaty -> po co robić wiec ten certyfikat?
b)masz jakiś nieogarów którzy uważają że certyfikat jest przydatny -> po co z takimi ludźmi pracowac?

@vpiotr to wystarczy napisac jakąs normalną aplikacjie nie CRUDa w Springu i tez sie nauczy

1

Swoją drogą - czym nie jest zwykł CRUD? Większość aplikacji z którymi się spotkałem w pracy sprowadza się do mniej więcej tego samego, strzelić po SOAP/REST pod jakiś endpoint, uzyskać uwierzytelnienie, odebrać dane, wykonać na nich jakąś logikę, zapisać je w bazie, wystawić endpoint umożliwiający pobranie jakiś danych, etc. Dopiero gdy zabrałem się za pisanie we własnym zakresie jakiś prostych gier jak szachy, monopoly, czy np. prosta aplikacja czatu to czułem ze robię coś więcej niż CRUD. No ale springowy backend i coś więcej niż CRUD? Co? Jedyne co mi przychodzi do głowy to jakiś CMS albo gra przeglądarkowa jak plemiona,

0

Wszystko gdzie zapisujesz, edytujesz, usuwasz i aktualizujesz dane jest CRUDem. CMS jak najbardziej wpisuje sie w definicje.
Pytanie co oprocz tych czterech zagadnien bedzie robic dodatkowo Twoj projekt.
Czat to tez CRUD. Chyba, ze nie implementujesz edycji/kasowania wpisu dla moderatora/administratora. Wtedy masz tylko CR :-)

0

Tą książke sobie kup. Masz tu Jave na przyzwoitym poziomie w tym sporo o strumieniach.

https://helion.pl/ksiazki/nowoczesne-receptury-w-javie-proste-rozwiazania-trudnych-problemow-ken-kousen,noreja.htm#format/d

0
Zimny Kret napisał(a):

Swoją drogą - czym nie jest zwykł CRUD? Większość aplikacji z którymi się spotkałem w pracy sprowadza się do mniej więcej tego samego, strzelić po SOAP/REST pod jakiś endpoint, uzyskać uwierzytelnienie, odebrać dane, wykonać na nich jakąś logikę, zapisać je w bazie, wystawić endpoint umożliwiający pobranie jakiś danych, etc. Dopiero gdy zabrałem się za pisanie we własnym zakresie jakiś prostych gier jak szachy, monopoly, czy np. prosta aplikacja czatu to czułem ze robię coś więcej niż CRUD. No ale springowy backend i coś więcej niż CRUD? Co? Jedyne co mi przychodzi do głowy to jakiś CMS albo gra przeglądarkowa jak plemiona,

No własnie o to chodzi, jak złożoną logike tam masz. Jeśli to jest zwyky zapis z formularza do BD to jest prosty CRUD, ale jeśli masz bardziej złożone reguły biznesowe to nie. Ja bym polecił coś do nauki samego cora Javy, np. operacje IO, wielowątkowość

0
Zimny Kret napisał(a):

rozmowę na Javę przeszedłem praktycznie mając wiedzę na temat C++ i OOP

no to nie chce myslec jaki byl poziom tej rozmowy :) w sieci jest masa zaawansowanych materialow o javie, musisz tylko zdecydowac w jakim kierunku chcesz isc. tu mozesz zaczac - https://github.com/deephacks/awesome-jvm

jesli twoim glownym celem sa wysokie zarobki (i to szybko) to naucz sie porzadnie javy i startuj do jakiejs mordowni zeby sobie uzbierac troche punktow doswiadczenia, nie len sie tam przez ten rok-dwa i potem juz z gorki bedzie lecialo ;)

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