Tutoriale, książki, cokolwiek dla dobrego core Java Dev'a

0

Cześć,

Mam nadzieję, że trafiłem w dobre miejsce i że nie zostanę zlinczowany za temat w złym miejscu. Do rzeczy.

Jestem na 3 roku studiów. Na studiach nauczyłem się solidnych podstaw Javy, z akademickimi projektami (typowe algorytmiczne) nie miałem najmniejszych problemów, zawodowo przez 1/2 roku programowałem w Objective-C / Swift 2.x tworząc aplikacje na iOS.

Teraz pragnę przebranżowić się na srogi Javowy backend, tylko nie mam zielonego pojęcia z jakich źródeł powinienem się uczyć. Widziałem (na tym forum też :) ) dużo materiałów i podpowiedzi, aczkolwiek większość postów / materiałów jest przestarzała.

  1. Słyszałem, że JEE nadgoniła zaległości względem Swing'a. Robiąc "rekonesans" na targach IT mogę powiedzieć, że wykorzystanie tych techów jest niemalże na równi, więc która technologia będzie najlepsza do nauki web dev'u (uwzględniając późniejsze ewentualne przeskoczenie na "konkurencję" i mój totalny brak wiedzy w tym zakresie)?

  2. Obecnie muszę zrobić projekt wykorzystujący mySQL. Z jakimi materiałami do nauki z powodzeniem mogę zabrać się za to?

  3. Mam dostęp do raspberry pi 3 i chciałbym zbudować mały serwer, którego zadaniem będzie łączeniem się z API, pobieraniu danych, przetwarzaniu ich, wystawienia własnego API i łączenie się z nim z poziomu innej maszyny. Do tego dochodzi kwestia deployment'ów, administracji itp.. W jaki sposób mogę zabrać się za to? (parsowanie, tworzenie JSON'a to nie problem)

0
  1. Pytanie czy zależy Ci na zdobyciu wiedzy przydatnej za rok żeby jak najłatwiej zdobyć pracę?
  • Wtedy Spring 5. Omijaj JavaEE z daleka bo to trup. (a raczej ZombiEE). Pracy w tym jest dużo, ale przyjemność żadna. A jak będziesz musiał to to co nauczysz się w Springu bedzie nadal działać w JavaEE (tylko gorzej (np. EntitnyManager jest kiepski w porównaniu ze SpringData (tak wiem porównuję jabłka do pomarańczy...) ).

Jeśli myślisz o perspektywie dalszej niż rok ...

  • to wtedy przyjrzyj się czemuś w stylu Lagom i( lub) Spring 5 Web Reactive (to nie to samo co spring 5).
  1. Projekt w MySQL... ale co za projekt. Co ma robić ?

  2. Ja takie rzeczy robię na Ratpacku (Java) - lub Akka HTTP (Scala), ale może Sprign 5 Web Reactive Ci przypadnie do gustu.
    Deployment to jar - proste.
    Na Lagomie wspomnianym też pójdzie. (choć to będzie armata na wróbla - ale spoko zadziała)
    Tu jest narzędzie do deploymentu.. ale raczej też zrób jako jar.

0

Zależy mi na tym, żeby znaleźć staż w możliwie jak najbliższej perspektywie czasowej (power learning jak najbardziej wchodzi w rachubę).

Dlaczego mówisz, że JEE jest trupem? Z 10 z 20 firm z którymi rozmawiałem robi rozwiązania w JEE i dużo nasłuchałem się o tym, że JEE odzyskuje renomę. O co chodzi?

Dlaczego zrobiłeś taką klasyfikację technologii? Jedne są o wiele bardziej zawiłe niż drugie?

A co do mySQL, to sam mam wymyślić sobie zadanie. Dobrze napisany CRUD wystarczy na 4.0. Myślałem o jakiejś serializacji danych pobranych przez API NBP, ale to tylko pierwszy lepszy pomysł. Ogółem na inżynierkę zamierzam zrobić coś podobnego. Konkretnej analizę i przewidywania giełdowe. To już temat zahaczający o szeregi czasowe itp. Fajnie byłoby zrobić sobie porządne podwaliny pod to.

EDIT: znasz jakieś renomowane, gorąco polecane źródła wiedzy (pl, ang - nie robi mi to różnicy)?
EDIT2: Akka z tego co się orientuję też wspiera Jave. Ogółem chyba wszystko oparte na JRE. Scala, to moja taka mała perełka, ale w trójmieście, troszkę ciężko o pracę w Scali... :/ Chyba tylko Scalac, konkretnie zajmuje się tym.

0

JavaEE odzyskuje renomę tak przez ostatnie 15 lat. Obecnie to taki potworek złożony z technologii, które tylko na pozór do siebie pasują :
np. CDI i EJB, JAX-RS - to co się na styku dzieje to naprawdę piękna katastrofa. Dodatkowo zawiera zupełnie absurdalne i już nieprzydatne rzeczy - JSF.
Generalnie praca w JaaEE to męczarnia z szukaniem nulli i konfigurowanie projektu w annotacjach i xmlach. Z programowaniem ma to mało wspólnego.
Testy automatyczne - nadal w porównaniu ze Springiem - dramat. (A Spring też wcale dobry nie jest :-)) .
Dodatkowo przy odrobinie szęścia będziesz pracował na Application Serwerze (i np. czekał 5 minut aż łaskawie IBM Websphere przeładuje nową wersję twojej aplikacji bo poprawiłeś buga w ifie - czysta przyjemność).

To, że wiele firm i architektów utkwiło mentalnie na JavaEE i czeka na zbawienie i wieszczy świetlaną przyszłość to inna historia.
Jaki oburzenie było po raporcie Gartnera też uznającym javaEE za przestarzałe: https://www.infoq.com/news/2016/12/Gartner-downgrades-Java-EE
A jak Oracle w zeszłym roku lekko wstrzymal pracę nad nowym JavaEE (8) to nawet powstąła grupa JavaEE_guardians.
Oracle słusznie wstrzymał - bo ta platforma to obecnie taki trochę "wstyd przed Ryśkiem". Możliwe, że będą tam dorzucać ficzery - ale IMO to już ani spójne ani eleganckie nie będzie :-(
Ludzie Springa o wiele lepiej adoptują się do zmieniających trendów i są odważniejsi w wywalaniu starych pierdół - więc lepiej to wygląda.

Podział technologii zrobiłem bo i Spring i JavaEE to trochę echa starych czasów javy lizanej. Obecnie to mainstream... ale się to zmienia.
Spring 5 Reactive to próba odnowienia platformy Spring.
Niestety alternatywy, które są ciekawsze od JavaEE i Spring - jeszcze poczekają zanim zostaną zaadoptowane na rynku i zanim w tym pracę znajdziesz.
Ale warto się tych alternatyw uczyć. (Choćby po to żeby wiedzieć, że "CRUD is DEAD").

Tak przy okazji za dnia full time pracuję z JavaEE (większość czasu) i trochę Springiem i tylko czasami z czymś nowszym (10-20%).
Ja się tych kup dawno temu nauczyłem (JavaEE szczególnie) . Ale po prostu tracenia czasu na naukę czegoś co uważam z gruntu za kiepskie i nie rokujące nie polecam. A tej nauki jest cholernie dużo :-(. To trochę tak jak uczenie się teraz Pascala/Deplhi. Nadal znajdziesz pracę i są firmy w tym pracujące... jakkolwiek raczej przyszłościowe to nie jest.

Jako źródła wiedzy używam konferencji softwarowych i twittera... takie czasy. Jak do czegoś wyjdzie książka to już dziadowie nie pamiętają co to było.
Na konfach można się dowiedzieć na temat trendów. Z twittera dostaję linki do blogów i raportów.

Scala/ Akka jako alternatywa jak najbardziej polecam - tylko, że tak jak piszesz pracę będzie Ci znaleźć trudniej. Ale to przynajmniej jest jakieś programowanie. Wspomniany przeze mnie Lagom to właśnie framework oparty o Akka i Play w wersji na Javę.

0

Czy znając samą Jave 8 SE można zdobyć gdzieś pracę? Wszędzie wymagane znajomość: Java, Hibernate, Spring, Angular lub React, Html, JavaScript, Css, SQL. :(
Ten pracodawca mnie dobił wymaganiami

0

Książki
Effective Java
Concurrency in Practice
Head First Design Patterns

0

Dobra. W takim wypadku biorę się za poznanie Spring i Spring Reactive. Zobaczę z czym to się je i do masterowania wybiorę coś co bardziej mi leży.

PS: Mam rozumieć, że jeżeli wybiorę Spring, to Hibernate jest must-have'm jeżeli chodzi o interakcję z bazą danych?

0

Chciałem zerknąć co kryje się w książce Effective Java, która jest tak bardzo zachwalana. Najnowsze jest drugie wydanie oparte o Java 6. Warto korzystać z niej? Jak tak, to gdzie najlepiej pouczyć się wyrażeń lambda i innych rzeczy które pojawiły się w Java 7 i 8?

0

https://imagery.pragprog.com/products/343/vsjava8.jpg?1362075649

Ale Effective Java tak bardzo się nie zestarzało.

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