Wpis z mikrobloga

Dotychczas zajmowałem się #gamedev i #androiddev . Chciałbym wiedzieć, jak wygląda #java w innych zastosowaniach. Dużo słyszałem o #javaee , #spring, #hibernate itd., ale nie mogę tego sobie poukładać, co czym jest i które wykorzystać. Wiem, że Java EE to Java SE rozszerzona o frameworki i służy głównie do #webdev . Chciałbym iść w kierunku Javy EE, ale nie wiem jaką drogę obrać i czego się w jakiej kolejności uczyć, bo widzę, że tego jest masa
  • 27
@mmprogr: Spring (Spring Boot obecnie). Dokumentacja bardzo rozbudowana i szczegółowa, milion tematów na stackoverflow - wystarczy siąść i pisać.

Mógłbym zadać to samo pytanie tylko w drugą stronę. ( ͡° ͜ʖ ͡°)
@mmprogr: przygotuj się na szok, to prawie jak inny język. Do tego wedle wielu ludzi wydajność jest na ostatnim miejscu a na pierwszym to by ci tester kodu pokazał 100% a kod wyglądał jak słodka księżniczka (,)
(Nie piszę tutaj że czytelność kodu nie jest ważna, tylko o tym że w często widać artykuły gdzie zalecają napisanie znacznie wolniejszego kodu by wyglądał czytelniej, pomimo że tak właściwe
@Guillem: @GotoFinal: @aldrael: Spring i Java EE mają jeszcze jakieś popularne zastosowanie, czy tylko web? Wszędzie każdy pisze ogólnie jakiego typu aplikacje się pisze, a nie doczytałem się konkretów.
Na razie jestem na etapie wyboru technologii w którą pójdę i chciałbym najpierw popisać w każdej i wybrać tą mi przeznaczoną ( ͡° ͜ʖ ͡°)
@mmprogr: Spring to jest przede wszystkim DI (Dependency Injection) oraz mnostwo roznego rodzaju modulow. W praktyce do czego uzyjesz - Twoja sprawa. Web? Prosze bardzo. Ale nic nie stoi na przeszkodzie zebys robil z tego apke standalone, lub cokolwiek innego przyjdzie Ci do glowy. Pamietaj ze apka web to nie jest tylko JSP, czesto gesto zdarzaja sie aplikacje bez frontu, a jedynie wystawiajace odpowiednie RESTy (Spring MVC).
W dużym skrócie: Spring powstał, gdy pewnej grupie osób nie podobała się Java EE. Stworzyli swój framework, który rozwinął się niesamowicie - obecnie można śmiało powiedzieć, że to standard w ekosystemie Java.

Hibernate to próba zmapowanie relacyjnego świata bazodanowego na obiekty Javowe (ORM) - ma to swoje plusy i minusy, równie wielu przeciwników jak i zwolenników. Oprócz Hibernate, powstało też kilka alternatyw (ORM lub SQL-like) np. MyBatis, JOOQ

Z ważniejszych komponentów Springowych:
@mmprogr: @martinuz: W zasadzie wszystko co ma stać na serwerze napiszesz w Javie. Szczególnie stosuje się to do projektów, w których występuję dużo logiki bądź logika jest skomplikowana. Mówię tutaj głównie o backendowych rzeczach. Bankowość/finanse to dobry przykład - ogromne projekty, wymagające ciągłego utrzymywania i rozbudowywania, z dużym naciskiem na bezpieczeństwo. Dobrze zaprojektowany i napisany system pozwala latami utrzymywać aplikacje, również dzięki testowalności, na którą w dużej mierze pozwala wspomniane
@martinuz: @warli: @aldrael: Dzięki za odpowiedzi, ale mam jeszcze jedno pytanie, które mnie nurtuje. Mogę pisać w pełni działające i sensowne rzeczy bez dotykania frontu ( mam na myśli html,css, js itp.), bo go nie trawię , czy będę w jakiś sposób przez to ograniczony ?
@mmprogr: Oczywiście, jesteś wtedy back-end developerem :) Dostarczasz API z którego front korzysta

Ale mimo wszystko warto chociaż trochę frontowe rzeczy znać.
JavaEE byłaby spoko gdyby wywalić EJB i JSF. Ja sobie ostatnio "próbuję" .Net Core i podobają mi się zapytania do bazy (w stosunku do Criteria Api) i akcesory (get/set).
Ale tworząc coś w pełni działającego samemu, muszę być już full stack developerem ? To tak jak w gamedevie programista i grafik ? Jak nie ma grafika , to samemu trzeba zrobić grafikę (front)


@mmprogr: tak, ale czesto, jesli ogarniasz jave ee, jestes backendowcem. Zakres wiedzy z backendu (baza danych + orm + logika) jest tak duzy, ze wystarczy ze w tym jestes specjalista. To wszystko jest do aplikacji typu enterprise,
JavaEE byłaby spoko gdyby wywalić EJB i JSF. Ja sobie ostatnio "próbuję" .Net Core i podobają mi się zapytania do bazy (w stosunku do Criteria Api) i akcesory (get/set).


@nunczako: Ja siedzę w tym stacku i wydaje sie o wiele prostszy na pierwszy rzut oka (Core'a jako tako jeszcze nie znam, ale powoli ogarniam), ale jeśli dobrze go nie znasz (bebechów), to na duzych aplikacjach mozesz mieć problemy z pamięcią.
Do tego wedle wielu ludzi wydajność jest na ostatnim miejscu


@GotoFinal: Bo tak właśnie jest. Dokupić 32GB ramu jest taniej, niż zoptymalizować kod. I prawidłowo.

Oprócz Hibernate, powstało też kilka alternatyw


@warli: A alternatywą Coca-Coli jest Original Cola z Biedronki :)

jedynie wystawiajace odpowiednie RESTy (Spring MVC).


@martinuz: MVC to wzorzec, można mieć zarówno MVC bez RESTa, jak i RESTa bez MVC, to nie jest w żaden sposób skorelowane
@fegwegw: Dokupić 32 GB ramu to nie problem, ale 2 nowe xeony po kilka tyś każdy już trudniej. Ramu to sam sobie zazwyczaj nie żałuje, ale jak widzę kod który zjada 10x więcej ramu i wykonuje 100x więcej instrukcji to chyba coś nie halo, szczególnie że kod w obu formach jest czytelny, a ten wydajniejszy nawet bardziej oczywisty. (I nie ma żadnego problemu z rozbudową itd)
@GotoFinal: to podaj przykład kodu produkcyjnego, który widziałeś, którego braki wydajnościowe spowodowały potrzebę dokupienia 2 Xeonów. Bo teoretyzować jest łatwo.

Bo wiesz, zamiana LinkedList na ArrayList w teorii spowoduje 6 krotne zmniejszenie zużycia pamięci, ale w praktyce nie zmieni nic.
@fegwegw: mi chodzi tylko o te dziwne praktyki, ale warto się przejmować też jako-tako wydajnością, i znaleźć jakiś złoty środek... bo potem strona się ładuje uj wie ile, albo aplikacja działa strasznie wolno, jak widzę takie dziwolągi:
http://koziolekweb.pl/2016/04/04/czy-da-sie-pisac-kod-bez-jawnego-uzywania-if/
http://koziolekweb.pl/2015/10/20/enum-w-warunkach-jak-zrobic-to-lepiej/
To aż strach... Ale autor tego bloga to i tak jakiś kretyn, kłócił że pisząc kod bez ifów tak jak wyżej to będzie on szybszy bo ma mniejszą złożoność - mniej branchy!
@fegwegw: po prostu EJB nakłada się "koncepcynie" :) z CDI, oba wprowadzają koncepcję klas zarządzanych przez kontener, przy czym CDI zmierza w kierunku stania się bazą do wszystkiego (można poczytać grupę mailingową nowego mikroprofilu JEE). Oczywiście wymagałoby to przepisania części rzeczy z EJB na CDI (a nie ma komu). Tu na ten temat jest ciekawa prezentacja Davida Blevinsa, członka grupy eksperckiej specyfikacji EJB http://www.slideshare.net/dblevins1/2015-javaone-ejbcdi-alignment . Ale nawet pomijając prezentację, sam ucząc