technologie web Java, Primefaces, języki PHP'o podobne, parę drobnych pytań

0

Witam wszystkich
Jako, że nauki w bród, a wiadomo że im jej więcej, tym ściany wyglądem stają się ciekawsze do głowy wpadło mi kilka pytań :) Może zadam od punktów, bo niektóre nie są ze sobą specjalnie związane.

1.Pytanie do javowców: pisze w JSF i odnosze wrażenie, że mimo takiej ilości komponentów jest on troche.. zacofany? jest ich tam sporo, fakt, ale generalnie ciężko jest stworzyć jakąs ciekawie wyglądającą stronę. Szczerze się przyznam, jeszcze nie próbowałem, ale zastanawiam się czy np. pisząc szablon do strony w primefaces (tagi: p:layout, composition, insert, include etc.) wolno mi, jako nazwijmy to, "przyszłemu czystemu koderowi" pisać w HTML5? zrobić sobie np szablon na czystym html5, css3 i dodac tylko tagi primefaces, zeby wszystko zespolić? Stworzenie aplikacji z samych komponentów Primefaces wydaje się dość "brzydką" opcją, nie można za mocno poszaleć (tak mi sie wydaje). Generalnie nie jestem pewien czy JSF ma wsparcie dla HTML5, bo jeszcze nie próbowałem tego mieszać.

2.Troche nawiązując do pytania 1. Pewnie 80% z was koduje zawodowo, stąd ciekawi mnie jak wygląda (ze strony UI póki co) wygląd takiej porządnej aplikacji webowej, jak prezentuje się sam wygląd strony. Ma ktoś może jakieś screeny, przykłady?:P w internecie to wręcz nie możliwe znalezc cos dużego w javie, bo jak mi dobrze wiadomo takie aplikacje pisze się dla kogoś, nie ogólnodostępnie

3.Teraz pytanie stricte związane z web developerką javy - jak pewnie każdy wie, dwóch największych konkurentów: stos JEE i Spring. Moje pytanie brzmi, czy mimo tego, ze JEE to tylko specyfikacja, że niby bardziej elastyczna, bo więcej implementacji itd warto iść w jego strone? Pytanie to odgrzewany kotlet, ale chodzi mi troche o co innego. Mianowicie, Spring to cały "pakiet" narzędzi do pisania aplikacji w javie. Mamy tam narzedzia tjspring mvc, spring security do bezpieczenstwa, samo IoC i DI które są przeniezwykle chwalone, spring data itd. Wszystko jest pisane pod siebie - inaczej mówiąc każdy moduł tego springa ze sobą gra. Natomiast w JEE gdybym chciał porządnie zabezpieczyć aplikacje użyję spring security i tu.. zgrzyt, bo to konkurencyjne technologie i może coś nie grać ze sobą.
Dużo opinii słyszałem typu: "JEE shit, jak wziąłem się za Springa to dopiero zobaczyłem moc"
W związku z tym czy Spring nie wydaje się lepszym pomysłem niż JEE? Wszystko tam ze sobą śmiga aż miło.

4.Jak pisałem, piszę trochę w JSF. Jestem raczej początkujący, jednak zastanawiam się czy jak już poznałem podstawy JSF, Primefaces - czy nie wziąć się za coś typu EJB czy JPA w postaci Hibernate itd. Kiedyś @Shalom napisał, że generalnie nie idzie klepać nic ciekawego nie znając przynajmniej kliku technologii danego stosu. Stąd moja refleksja, "zmasterować" JSF aż będe wiedział dość dużo i dopiero brać się za logike, czy Od razu łączyć to z EJB, Hibernate i tak dalej i poznawać wszystko na równi?

  1. Ostatnie już pytanie :). Czasem przychodzi potrzeba napisać jakąś aplikacje/serwis internetowy, jakiś niezbyt skomplikowany, ale mimo to wymagający czegos wiecej niz HTML i CSS. Na myśl przychodzi PHP - jednak język mi się za bardzo nie podoba, chciałbym coś innego. Chodzi o to, żeby pisało się dość przyjemnie, bez zbędnych konfiguracji, szukania i płacenia krocia za hosting strony w tym jezyku napisanym itp. Myślałem nad Python (Django, Flask) - jako że go trochę znam - i Ruby (on Rails), ale czy są dość nieskomplikowane i maja jakis dobry hosting to nie mam pojęcia ;)

Dodałem wszystko w dziale edukacja, chociaż defacto mogłem dać też we flame. Ciekawią mnie odpowiedzi na powyższe pytania z przyczyn.. czysto ciekawskich :)
Pytanie 4 zakreśliłem bo jest dość ważne dla mnie

dzieki za przeczytanie i pozdrawiam! mam nadzieje, że nie wywołam pytaniami burzy :P

1
  1. JEE rozwija sie wolniej niż Spring, bo jest zależne od całego długiego procesu. Spring całkiem ładnie integruje sie z elementami JEE -> można z niego korzystać razem z JSFem, można bez problemu łączyć go z JPA. Z drugiej strony JEE z racji tego że jest dobrze ustandaryzowane jest w pewnym sensie "bezpieczniejsze" i częściej stosowane w poważnych projektach typu systemy bankowe.
  2. Moim zdaniem lepiej równolegle wziąć kilka frameworków. No bo co mozesz niby zaklepać z samym JSFem? ;] Poza tym istnieje ryzyko że złapiesz jakieś złe nawyki nie widząc "big picture" całego systemu. Ale nie ruszałbym gołego hibernate tylko raczej JPA ;)
  3. Python + Flask to dobry pomysł. Ale ja bym się zastanowił czy mimo wszystko nie robić tego i tak w javie. Wbrew pozorom małą aplikację postawić nie jest aż tak trudno jak się ma trochę wprawy to w kilka minut będziesz miał odpowiedniego stuba. Można sobie za pomocą embedded jetty zrobić jara który po uruchomieniu sam sobie stawia kontener (wszystko jest w jednym jarze) więc nie ma problemów z żadnymi tomcatami etc
0

@Shalom
3.Hmm no tak, tylko pytanie czy to bezpieczeństwo i różne implementacje JEE są warte tego by zostać zawsze troche w tyle. W Springu przyciąga mnie to, że mam wszystko właściwie co trzeba pod ręką, jedyne co do tej pory sie dowiedzialem, to to, że upiększanie UI polega na JS w postaci jQuery itd. - a poza tym, cały zestaw narzędzi gotowy i stworzony tak, żeby ze sobą grał. Jako doświadczony javowiec Shalom powiedz mi, duża jest różnica pisząc w JEE a Springu? Wykonując przykładową tą samą, trywialną lub nietrywialną aplikacje?

  1. Tak właśnie myślałem. Aktualnie pisze w gołym JSF ale to raczej takie proste przykłady, gdzie nawet pisząc CRUD czasem dochodze do wniosku, że "kurcze.. czegoś mi tu brakuje.." ale nie wiem czego i w jaki sposób. Zastanawiam się jak działa CDI np, albo EJB. Jak dobrze "w to wejść"? korzystam ze stron które kiedyś podesłałeś + b.czesto google jak czegoś pojedynczo nie wiem, ale przyznam szczerze, że trochę dużo wiedzy tam jest na raz, a gdyby chcieć od podstaw, po kolei? :P

5.Myślałem też najmocniej o pythonie, a z nim django lub flask. Zastanawiam się jednak jak wyglada hosting taki aplikacji? Co do javy - kolejną rzecza która przemawia za stosem springa jest Spring Roo. Podobno można w nim na krótką mete napisać na prawde szybko, porządną aplikacje. Jednak pozostaje kwestia hostingu aplikacji javowych. Z tego co wiem, ciężko o dobry hosting, a ceny są dość wysokie.

Generalnie z przypadku zacząłem od JSF. Troche już się tym bawie i mimo że nadal jestem dość zielony w to, troche byłoby mi głupio przechodzić na strone Springa, bo tam wiedza z JSF praktycznie mi sie nie przyda do niczego, więc dość sporo czasu który poświęciłem na poznanie jsf pójdzie na marne(w kwestii rozwoju w kierunku Springa, bo wiedzy nigdy za dużo podobno :P).

1
  1. Wbrew pozorom nie mam wcale aż tak wielkiego doświadczenia, szczególnie jeśli chodzi o JEE, ale z punktu widzenia architektury różnice są znikome, bo oba stosy dostarczają podobnych narzędzi. Może na przykład @Koziołek albo @Krolik napiszą coś więcej w tym temacie :)
  2. Nie znam odpowiedzi na twoje pytanie. Trzeba pisać i juz.
  3. Spring Roo to taka trochę zabawka i szczerze mówiąc nie wiem czy nadaje się specjalnie do realnego developmentu. To jest spoko jak chcesz w 5 minut postawić prostego cruda, ale nic ponadto. Jeśli chodzi o hosting to zawsze można jakiegoś VPSa kupić i tam sobie stawiać co ci sie podoba.

To trochę krótkowzroczne podejście. Co się nauczyłeś to twoje ;) Jeszcze nie raz w życiu będziesz musiał zostawić jakąś technologię i uczyć sie innej.

1

ad 1. JSF, czyli JSyF generalnie to dość hm... przestarzałe rozwiązanie. Co prawda jest duże zapotrzebowanie na tą technologię, ale wynika raczej z tego, że kiedyś tego używano i teraz zostało i śmierdzi.
ad 2. a wejdź sobie w system transakcyjny np. eurobanku. To wiem, że na pewno napisane w JEE.
ad 3. Spring i JEE się uzupełniają. Co więcej od pewnego czasu można powiedzieć, że Spring jest w częściowo implementacją referencyjną dla JEE. Co do podejścia "wybieram springa, bo JEE ssie" to wynika to z trochę innej przyczyny. Ludzie mają generalnie awersję do JEE, bo jest bardziej "corpo". Cały cykl życia specyfikacji i jej implementacji referencyjnych powoduje, że zmiany są wprowadzane dość powoli. Spring jest bardziej elastyczny pod tym względem. Dodatkową zaletą Springa jest to, że może działać na "gołym" kontenerze serwletów i nie trzeba użerać się z serwerami aplikacji.
ad 4. klep wszystko. I tak nie wymasterujesz JSFa bez znajomości backendu.
ad 5. Spring roo, spring goo... Jak chcesz mieć narzędzie pozwalające na szybkie i w miarę bezbolesne tworzenie aplikacji w stylu znanym z railsów czy symphony to użyj Play > www.playframework.com/ da się to zintegrować ze Springiem (DI) jak i np. angularjs co daje w praktyce nieograniczone możliwości zarówno po stronie front jak back endu.

0

@Shalom @Koziołek

  1. w takim razie JSF odchodzi do lamusa, stare systemy w nim się jeszcze utrzymuje, ale nowych nie tworzy zbyt wiele? w takim razie jaka technologie/framework wybrać do tworzenia front-endu w JEE? z tego co wiem JSF to tylko zbiór zasad, których implementacja musi przestrzegać, więc można to zastąpić np Primefaces/Icefaces/Myfaces czy to wciąż JSF?
  2. hmm ciekawe, zdecydowanie nie wygląda to na jave, raczej jak czysty html/css z javascriptem i php :P Co ciekawe, wcale nie widać, że to java, a już tym bardziej nie to co mi wychodzi aktualnie :D, co mnie troszke dziwi. Jest taka technologia w javie web do front endu, która pozwala bardzo elastycznie robic szablony stron w html5/css3 i to dopiero łączyć z javą? Chodzi mi dokładniej o to, że ładny wygląd strony dość łatwo można zrobić jak pisalem htmlem i cssem. Jednak z tego co widze: Spring MVC - strony z rozszerzeniem .jsp - wyczytałem, że z html5 to "nie bangla", JSF: strony typowo .xhtml - więc z tego co czytałem również, w nietrywialnych przypadkach ofc, HTML5 odpada. A może to tylko kwestia przeglądarki która interpretuje html5 i każdy framework można z nim łączyć. Jak to jest? jeśli nie, to jaki front-end framework wspierajacy html5 i css3?
    3.@Koziołek mam rozumieć, że jesteś kolejną osoba, poza @Shalom -em która również jest "troche bardziej po stronie Springa"? Coraz bardziej zastanawiam się czy nie przestawić się na Spring, tylko boje się zderzenia z czymś całkiem nieznanym i odmiennym, bo JSF z mojej wiedzy jest component-driven, a Spring MVC raczej request-driven. Podejście zupełnie inne, a efekt podobny, jak nie ten sam. Żeby się nie okazało, że jednak bardziej pasi mi JEE :D. Jak piszecie, można mieszać oba te stosy webowe, ale zwykle każdy developer za którymś "jest bardziej".
    4.tak myślałem.. jedno od drugiego zależne ;) od teraz bede próbował to wszystko łączyć
    5.Czyli ogólnie, spring roo to jeden wielki bullshit, który moge poznać tylko po to, żeby wiedzieć, że istnieje :P? O playu słyszałem, że bardzo dobry na start bo łatwo przyswajany, convencion over configuration i te sprawy

Poważnie zastanawiam się, czy nie zboczyć na droge Springa, czasem czytam opinie, że ogólnie życie staje się piękniejsze po przejściu z JEE. Ale jak wiadomo, są gusta i guściki ;)
Póki co z JEE poznałem podstawy: JSF, Facelets i Primefaces. Przejść całkiem na springa wybierając Spring MVC jako frontend i używać całego pakietu springa, czy zostac na JEE i jako dodatki używać modułow tj. Spring MVC, WebFlow etc? Pewnie do osiągnięcia wulkanu emocji przy oglądaniu strony Spring MVC musiałbym poznać dość porządnie jQuery UI.

Jak patrzę czasem to często nawet w aplikacjach Springa są niektóre technologie JEE tj. JPA dzieki któremu możemy łączyć sie z hibernate. Słyszałem też o Spring Data, ale się nie zagłębiałem specjalnie w temat ;)

dzieki za odp, dam plusa, licze na więcej ;)

0

ad 1. po części tak. Co więcej implementacje, które wymieniłeś są wzajemnymi klonami. Twórcy jednej podpieprzyli kod twórcom innej i pozmieniali nazwy.
ad 2. AngularJS + dowolna biblioteka do obsługi webservices po REST, Apache Wicket, GWT (choć to trochę inna filozofia), Spring + Velocity, Lift (to akurat scala).
ad 3. Po pierwsze osobiście preferuję Guice. Po drugie to nie są tylko stosy webowe, ale wszystko pod spodem - JMS, WS, baza danych, raporty, przetwarzanie wsadowe i wiele wiele innych komponentów. Łącznie z duperelami typu obsługa serwera poczty.
ad 5. Nie jest to bullshit, ale są lepsze rozwiązania.

Co do jQuery to po co? To nie ma nic wspólnego ze springiem jako takim. Po prostu fajerwerki po stronie klienta.

0

@Koziołek

  1. a czym warto zastąpić w JEE JSFy?
  2. nigdy żadną z tych technologii się mocniej nie interesowałem, gdzieś czytałem, ale nie próbowałem pisać. Czyli definitywnie ciężko jest połączyć te znane frameworki z HTML5? np Spring MVC(?) muszę łączyć np z Velocity, bo na czysto nie idzie używać htmla piątki?
  3. tak tak, wiem że nie tylko webowe, ale pod taką nazwą je ukrywam dla rozpoznania :P

A co myślicie o pomyśle przejścia na springa?
żeby być "na czasie", bo młody jeszcze jestem, to zanim mi się przyda coś w pracy zdąży się już 10 razy zmienić, ale wole już teraz brać świeże technologie, a nie te które już lecą w niepamięć (tj. JSF, od którego pechowo zaczałem.. :) )

dzięki jQuery z tego co mi wiadomo moge tworzyć dość bogate komponenty tj. okno wyboru koloru, kalendarze różnej maści itd. Czysty Spring MVC nie posiada takich elementów, dlatego wspominam o jQuery. Czym jeszcze innym mógłbym robić takie wodotryski? I przy okazji: do pisania w Springu rozumiem javascript również wyszlifowany w postaci chociaż jednej bilbioteki?

0

ad 1. Chociażby wspomnianym przeze mnie GWT, Wicketem czy też Vaadin. Zauważ, że ciągle mówimy o w sumie niewielkiej końcówce JEE jaką są interfejsy webowe.
ad 2. Nie, nie ma takiego ograniczenia. Właśnie dzięki temu, że używamy JEE, dokładnie specyfikacji servletów, nie ma konieczności sztywnego łączenia jakiś technologii fron i backendowych.

Wracając do jQuery, to jak wspomniałem wcześniej jest to po prostu rozwiązanie po stronie klienta, które ułatwia życie. Możesz go użyć ze springiem, ale też np z JSFem. Kwestia pobawienia się w integrację konkretnych rozwiązań. Zresztą większość pracy komercyjnej polega na integrowaniu różnych rozwiązań.

0

@Koziołek

  1. w takim razie, skoro to niewielka końcówka JEE, to czym dokładnie jest ta pozostała końcówka? to co wymieniłeś wyżej?

Co do jQuery - Primefaces JSFowe jest zbudowane na jQuery i widze jaką potęgę ma ta biblioteka ;) stąd mnie ciekawi jako ten element swietnego UI na stronie.

Chyba odpale pierwszy tutorial do springa MVC :P jest jakaś kolejność w jakiej warto byłoby poznawać springa? które moduły po kolei? może jakieś zewnetrzne narzędzia, biblioteki które często używa się wraz z nim? ;)

0

Chociażby obsługa transakcji rozproszonych, klastry, webservicy, JMS, cały stos związany ze wstrzykiwaniem zależności, JPA, CDI itd. Rzuc okiem na http://pl.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_6 i zobacz listę specyfikacji. JSF też jest częścią JEE, ale to tylko jedna z wielu końcówek.
Kilka lat temu tworzyłem aplikację w której nie było interfejsu webowego. Nawet do administracji. Wszystko na WSach, kolejkach i EJBach.

0

@Koziołek
Ahh tak, ten spis już czytałem parę razy, myślałem, że chodzi o coś innego o czym nie mam pojęcia :)
Bez interfejsu? ciekaw jestem jak to działało
Z tego co napisałeś wnioskuje, że developujesz już lat w dwucyfrowej liczbie. Więc spytam, gdzie najlepiej wdrążać się do springa, od czego zacząć?

edit
Co w springu jest odpowiednikiem EJB? z resztą, mógłbyś mniej-wiecej napisać jakie technologie Springa są odpowiednikami jakich w JEE? przydałoby sie:)

0

Co w springu jest odpowiednikiem EJB? z resztą, mógłbyś mniej-wiecej napisać jakie technologie Springa są odpowiednikami jakich w JEE? przydałoby sie:)

Spring ma swoje adnotacje Service, Repository, Component, ale nie są one klonem EJB, bo są trochę "słabsze". EJB pozwala ci korzystać z komponentów rozproszonych pomiędzy wiele serwerów aplikacji.
http://spring.io/projects

0

@Shalom
Chyba pierwszy raz usłyszałem, że Spring ma coś słabsze :D chociaż pewnie jest słabsze pod jednym względem, a lepsze pod drugim
projekty ze spring.io ogladalem, ale nie każdy jeszcze wiem do czego, ale to z czasem.

Od którego modułu zacząć? słyszałem, że wszystko opiera się na DI i IoC dlatego czytam na razie o Springu Core. Potem MVC? (zakładając, że chce web-developować ;)) jakieś źródło dobrze tłumaczące wymienione wcześniej DI i IoC?

1
  1. Pracowałem przy dużych projektach ale nigdy nie było potrzeby rozpraszania komponentów z logiką biznesową pomiędzy kilka serwerów, więc nie wiem na ile ta możliwość w EJB jest przydatna (zresztą na upartego można użyć do tego Spring Remoting, albo WebServices ;) )
  2. Dokumentacja Springa? ;) http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/html/
0

@Shalom
1.Czyli przydatne ale z umiarem ;)
2.hmm no tak, tylko w dokumentacji zwykle odstrasza ilość teorii która trzeba przeczytać :D ja nie mówię, że nie warto, tylko, że najłatwiej sie uczy jak widac jakis efekt ;) chodzi mi bardziej o takie ogólne pojęcie jak to wszystko wyglada, a w razie potrzeby zaglądanie do dokumentacji

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