Java web - rozterki na temat języka web i nie web

2

Witam
Jakis czas juz wchodze w swiat javy EE, aktualnie badam JSP :)
Robie duzo tutoriali, czytam pisze przyklady(z ksiazek rowniez) i tak sie zastanawiam, gdzie pojawia sie wspaniałość javy? Nie mowie ze jest zła, tylko napisanie nawet najprostszej strony ktora pobiera 2 parametry i co sprawdza wymaga sporo pisania i dosc duzej ilosci rzeczy do opanowania. Nawet hosting aplikacji javowej to dosc spory problem. Czy to samo jest w np. PHP?
Wiem ze php to jezyk typowo webowy, ale ponoć w javie najczesciej wybierana sciezka rozwoju jest wlanie webówka.
Moje rozterki biorą się z tego, że Java to tak wlasciwie pierwszy jezyk za który wziąłem się tak poważniej, bo zaczelo mnie interesować programowanie. Nie mam jakiegos specjalnego celu - aplikacje desktopowe, webowe czy jakąś wizję która chce stworzyc - po prostu mam zapał do programowania. Wybrałem jave, tak mi polecano, czysto przypadkowo. Pisze w niej juz troche, ciagle amatorsko. I teraz - nie wiem czy dobrze robie, skoro nie sprecyzowalem sobie sciezki rozwoju czy nie bardziej opłacałoby się juz wziac cos typowo webowego?(albo "pojsc w inna strone" i nawet typowo desktopowego, jakis c++ - chociaz moze jak wzialem się za web to juz kuc póki gorące? szczegolnie ze teraz swiatem włada sieć :D)

Nie wiem, czy warto kontynuować webówke Javową? Duzo w niej pisania, zeby mało stworzyć - tak powiem. Przynajmniej na moim aktualnym poziomie - ciagle poznaje nowe rzeczy ale wlasciwie nie wiem jak działają, a lubie wiedzieć :) Moze po prostu JSP i servlety to shit, a dopiero prawdziwe frameworki-kolosy Spring GWT itd są wartościowe i mimo ze do prostych aplikacji trzeba sie napisać, tak dla wiekszych projektów kodu nie jest tak dużo i łatwo nad nim zapanować?

Wiem, że zaraz zostane zmieszany z błotem, że w dziale java pisze o tym ze jest ona "nie-typowo-webowa" :D ale nie to mam na celu zeby powiedziec ze taka jest be bo trudno ja ogarnac.

Chcialbym znać wasze stanowisko w mojej sprawie, co byscie zrobili?
I jak to porównanie w "rozlazłości" javowej do php i typowych jezykow webowych?

pozdrawiam i prosze o WYROZUMIAŁOŚĆ

#edit
tak jeszcze w post scriptum dodam, ze kumpel jakis czas temu wzial sie za C#, pisze w visual studio i idzie mu gites, jezyk wydaje sie dosc elastyczny, elastyczniejszy niz java. Moze dlatego, ze visual zapewnia gotowe "wyklikane" opcje? generalnie co sie dzieje w kodzie czesto nie umie powiedziec - ale program jako program działa. Jak wygladaloby zestawienie C# i Javy?

2

Możesz się uczyć czego chcesz. ;-)
W Javie można pisać wszystko - aplikacje desktopowe/okienkowe (np. Swing), konsolowe, webowe, mobilne (Android) i pewnie wiele innych rzeczy. Najwięcej rozwiązań javowych dotyczy aplikacji webowych, ponieważ jest to najbardziej praktyczne i chyba najczęstsze zastosowanie tej technologii w praktyce. Z moich obserwacji wynika, że w większości firm javy używa się właśnie do pisania aplikacji webowych lub mobilnych.
Możesz przejrzeć oferty pracy dla java developerów, zobaczyć, jakie są wymagania i tego się uczyć. Java jest tak szeroką technologią, że nie sposób ją całą ogarnąć.
Jeśli chodzi o PHP, to jest to język prostszy. Java jest w pełni obiektowa i mocno typowana, można tam także we właściwy sposób korzystać z wzorców projektowych, a w PHP mamy taką "pół-obiektowość" i luźne typowanie. PHP jest świetnym językiem do szybkiego pisania małych i średnich aplikacji webowych. Nie ma problemu z uruchamianiem takich aplikacji na jakimkolwiek hostingu. Ten język nadaje się praktycznie tylko i wyłącznie do internetu. Ewentualnie, można go użyć do pisania jakichś skryptów w linuksie. Jeżeli chcesz uruchomić swój własny serwis internetowy, blog, czy stronę, która nie będzie miała miliona requestów na sekundę, to polecam PHP. Java jest raczej do rozwiązań klasy enterprise i jeśli chcesz zrobić swoją "stronkę", którą będziesz chciał potem zamieścić w internecie, to darowałbym sobie użycie javy, bo będzie to jak, strzelanie do muchy z armaty.
Ponadto, programiści java z reguły zarabiają lepiej, niż programiści PHP. Polecam się Tobie nauczyć obu tych języków. Można też liznąć C#, który jest taką Microsoftową Javą i C++, w którym pisze się jeszcze inaczej i trzeba ręcznie zarządzać pamięcią. Niemniej jednak, obecnie C++ jest rzadko wykorzystywany w branży, ale są miejsca, gdzie nadal się go używa. Generalnie, im więcej wiesz, tym lepiej dla Ciebie. Warto poznawać różne technologie, bo to poszerza horyzonty.

0

Co było takiego trudnego w JSP?

2

Moze po prostu JSP i servlety to shit, a dopiero prawdziwe frameworki-kolosy Spring GWT itd są wartościowe

o to to! ;) To tak jakbyś się zalił że ci opowiadali że można sobie programowaniem ułatwić zadania w pracy a ty klepiesz w asemblerze i 100 linijek ci zajmuje wczytanie jednej liczby z klawiatury... ;]

Moze dlatego, ze visual zapewnia gotowe "wyklikane" opcje?

A ty piszesz lodówką? Zainstaluj sobie jakiegoś IntelliJ ;]

0

@wiciu
Dzieki za wyczerpującą odpowiedz. Tak właśnie myślałem, że php jest łatwiejszy i lepszy do takich mniejszych serwisów (pytanie czemu facebook opiera sie na php? :D) a java do czegos potężnego. Osobiscie nie wiem, który ze znanych serwisów ukorzystuje Jave w duzym stopniu. Jesli chodzi o technologie to właśnie tak zrobilem kiedys ze przejrzalem czego chca pracodawcy (bo pomijajac mozliwosc dostania pracy - wiem co aktualnie jest używane "na topie"). Zapamietalem kilka nazw poczytalem o nich a teraz robie tak jak gdzies wyczytalem - czyli wszystko od podstaw. Jednak myśle czy dobrze robie, dlatego temat założyłem.
Gdybym mial jakas wybraną sciezke która chce isc, cel - byloby latwiej, a tak prawde mówiąc moglem i moge(chociaz juz troche szkoda zostawic jave) chwycic dowolny jezyk. Mowisz ze java to dobry wybór?
Co do poszerzania horyzontów - mam takie samo zdanie. Myslalem o pythonie, ostatnio jakos czytam o javascripcie bo slyszalem ze sie przydaje w pracy developera javy (i nie moge znalezc zadnego porzadnego tutoriala, ale to swoja droga :D), PHP mamy zaczac w szkole niedlugo, takze start bym mial lagodniejszy. Fajnie znać wszystko po trochu, ale najfajniej znać jedno bardzo dobrze. Tak bym wlasnie chciał, w swoim by dobrym, ale wszystkiego chociaz liznąc. Pytnie co wybrac jako ta "główną" umiejetnosc. Randomowo padło na jave, ale co z tym dalej?

Szczery:
z dogryzaniem zapraszam na samosie

@Shalom
Powiadasz ze jak dojde do Springa zycie stanie sie piekniejsze, a biel bedzie bardziej biała?
Używam eclipse - a w nim bida, jesli chodzi o "wyklykywanie". Jedyne o czym slyszalem do windowbuilder dla swinga. A cóż to InteliiJ ciekawego posiada? gdzies slyszalem, ale nie testowalem. Uzywaja tego jako IDE w jakichs korporacjach itd?

edit
Chodzi mi po głowie stosunkowo dziwne pytanie, dygresja, a mianowicie: jakich technologii użyć zeby stworzyć taką ciekawie i przyjemnie wygladajaca strone? jak strona Springa lub Vaadina? Czy w pracy developera javy trzeba znac ten zakres technologii? I za co sie złapać zeby tak ciekawie nasze "stronki" wygladały? :P

1

@azalut facebook opiera sie na PHP bo nikt nie przewidywał że będzie tak popularny a potem było juz za późno. Weź pod uwagę że FB kompiluje tego php za pomocą hiphopa do C++ żeby to jakoś działało :D
Java to głównie biznesowe aplikacje których normalni ludzie nie widzą
Python jak najbardziej! :)
No Spring i inne frameworki znacznie ułatwiają życie ;) Bo masę rzeczy masz out-of-the-box i myślisz o tym jak rozwiązać problem stawiany przed twoim systemem, a nie nad tym jak nawiązać połączenie, wysłać formularz z danymi czy zapisać coś do bazy danych.
IntelliJ używają w tych lepszych korporacjach, które wiedzą, że te kilkaset dolarów na licencje to nie jest koszt tylko inwestycja.

Spring to jest dość duży framework ale nie daje żadnych "wodotrysków" jeśli chodzi o UI bo Spring o głównie backend. Do wodotrysków musiałbyś użyć jakiegoś jQueryUI, YUI, Dojo.
Vaadin tak samo jak Wicket, GWT/GXT, JSF to są framworki komponentowe i tam można sobie UI aplikacji zrobić trochę jak w Swingu.

W pracy developera trzeba trochę technologii znać, ale to które technologie zależy od danego stanowiska i firmy. Zwykle jednak sprowadza się to do znajomości stosu Springa albo stosu JEE (jako backend) i jakiejś technologii związanej z frontendem.

0

@Shalom a ty co bys wybral do fb? :D
czemu python taki superaśny? czytalem chwile o nim to pisali, ze do wszystkiego po trochu jest, i ze fajny bo składnia nastawiona na czytelnosc
Jesli chodzi o jaki kolwiek ciekawszy framework z zakresu "Java" to ja jestem totally green. Nie wiem kiedy sie za to wziąć zeby nie dać d**y, że brak mi podstaw
Pobiore to IntelliJ jak bedem mial dostep do neta stałego :)

No to wychodzi nam konkluzja, ze:
Na stanowisko developera javy trzebaby było znac HTML5, CSS3 na blache w 100%(mylę się?), JaveSE/EE wiadomo tez perfekto, do tego jakis framework typu Spring Framework(kolos) jakis GWT czy Wicketa do UI, oczywiscie bardzo wazny jest tez JavaScript - bo bilbioteki te ktore podałes: Dojo, jQuery opieraja sie na js - wiec JS perfekt i ktoras z bibliotek na poziomie bardzo dobrym. Ale oprocz tego zeby miec ogolne pojecie warto troche szarpnąć PHP, pythona, c#, może zobaczyć co piszczy w C++ albo javo-pochodnych typu Scala i tak dalej.. i tak dalej..

Mysle ze rozumiesz co chce powiedziec :D sporo tego prawda? Za co sie wziac zeby potem nie była bida z nędzą?

Miedzy wierszami spytam: jakies KONKRETNE źródło wiedzy na temat javascriptu, skad sie tego uczyc? oraz: czy biblioteki ktore podales tj. jQuery maja skladnie itd. jak czysty JavaScript czy też to coś całkiem innego? (cos w stylu podlaczenia bilbioteki do projektu javowego, czy raczej uzywania JSTL zamiast zwykłej javy - o takie małe porównanie :P)

0

Python tak samo jak inne języki bardzo wysokiego poziomu mają dużą siłę wyrazu, tzn piszesz mało kodu a dzieje się dużo.
Zasadniczo masz rację, z punktu widzenia technologii to developer javy który klepie aplikacje webowe faktycznie powinien znać html, css, podstawy js, Javę i jakiś stos do backendu i framework do frontendu. Sporo, to fakt, ale przecież nie płacą koderom tyle ile płacą za surfowanie po necie, tylko za ciężką pracę...
Od czegokolwiek zacznij, to nie ma większego znaczenia.
Ja specjalistą od JS nie jestem więc nie mogę nic polecić.

2
azalut napisał(a):

@Shalom a ty co bys wybral do fb? :D
czemu python taki superaśny? czytalem chwile o nim to pisali, ze do wszystkiego po trochu jest, i ze fajny bo składnia nastawiona na czytelnosc
Jesli chodzi o jaki kolwiek ciekawszy framework z zakresu "Java" to ja jestem totally green. Nie wiem kiedy sie za to wziąć zeby nie dać d**y, że brak mi podstaw
Pobiore to IntelliJ jak bedem mial dostep do neta stałego :)

No to wychodzi nam konkluzja, ze:
Na stanowisko developera javy trzebaby było znac HTML5, CSS3 na blache w 100%(mylę się?)

Jeżeli będzie to java web developer, to tak, ale te technologie nie są jakoś szczególnie trudne do ogarnięcia, jeśli ktoś długo zajmował się aplikacjami webowymi.

azalut napisał(a):

, JaveSE/EE wiadomo tez perfekto, do tego jakis framework typu Spring Framework(kolos) jakis GWT czy Wicketa do UI, oczywiscie bardzo wazny jest tez JavaScript - bo bilbioteki te ktore podałes: Dojo, jQuery opieraja sie na js - wiec JS perfekt i ktoras z bibliotek na poziomie bardzo dobrym. Ale oprocz tego zeby miec ogolne pojecie warto troche szarpnąć PHP, pythona, c#, może zobaczyć co piszczy w C++ albo javo-pochodnych typu Scala i tak dalej.. i tak dalej..

Biblioteki JS-owe też są proste do ogarnięcia. Większość rzeczy bez problemu zrobisz z dokumentacją. W przypadku webowej javy warto też dorzucić znajomość ORM-a, typu Hibernate i baz danych. Wymieniłeś mnóstwo rzeczy. Wszystkiego na raz i tak nie ogarniesz. ;) Trzeba poświęcić lata, żeby osiągnąć jakiś poziom, więc najlepiej skupić się na jednej rzeczy i po kolei ogarniać kolejne. Ponadto, wydaje mi się, że znacznie bardziej istotną kwestią, niż znajomość jakiegoś frameworka lub technologii, które się często zmieniają, jest dobra znajomość ogólnych zasad programowania obiektowego, wzorców projektowych i architektonicznych, Domain Driven Design-u, refaktoringu, czystego kodu, a także TDD. Niewiele osób potrafi pisać porządnie, a pozwala to zaoszczędzić sporo pracy i nerwów. Składni, czy frameworka możesz się łatwo i szybko nauczyć, a wspomniane zasady są uniwersalne dla większości projektów w różnych technologiach, choć wiem, że są miejsca, gdzie nie przywiązuje się do tego wagi, ale IMO jest to błąd.

azalut napisał(a):

Mysle ze rozumiesz co chce powiedziec :D sporo tego prawda? Za co sie wziac zeby potem nie była bida z nędzą?

Miedzy wierszami spytam: jakies KONKRETNE źródło wiedzy na temat javascriptu, skad sie tego uczyc? oraz: czy biblioteki ktore podales tj. jQuery maja skladnie itd. jak czysty JavaScript czy też to coś całkiem innego? (cos w stylu podlaczenia bilbioteki do projektu javowego, czy raczej uzywania JSTL zamiast zwykłej javy - o takie małe porównanie :P)

Niestety nie spotkałem się z jakimś jednym, konkretnym źródłem dotyczącym JS (jak np. dokumentacja javy na stronie Oracle lub dokumentacja PHP na php.net). Najlepiej przetrzepać internet, przejrzeć różne strony, artykuły, książki, etc. Poza tym, obecnie mało kto naprawdę zna czysty JS. Większość ludzi używa frameworków typu jQuery, AngularJS, etc. nie rozumiejąc samego, czystego JavaScriptu. Znajomość czystego JS może pomóc w pracy web developera, ale nie jest to warunek konieczny do tego, aby wykonać jakieś zadanie. Zresztą czysty JS jest nieźle pokręcony. Można pisać obiektowo, ale nie ma klas, tylko są prototypy pełniące rolę "klas". "Dziedziczenie" jest dziwne i można je robić na różne sposoby, luźne typowanie sprawia problemy, często korzysta się z callbacków, itd.

1

Jeżeli nigdy nie miałeś do czynienia z js, to na początek polecam taki kurs online: http://www.doman.art.pl/kursjs/

0

@Shalom czyli pythona to tylko tak "z pasji" jeśli chodzi ofc o prace javowca? mam zaczać mocno wkuwać html5 i css3 rozumiem? bo obecnie znam je ale nie na jakims mega poziomie. Co do javy obecnie zmierzam w celu poznania stosu javy EE potem myslalem o Springu bo tyle osób poleca i pracodawcy chętni, a do UI nie mam pojęcia co wybrać. Z tego co mi wiadomo mam opcje: biblioteki JavaScriptu, ktore podales wyzej lub duze frameworki javowe, dobrze rozumiem? co polecasz?

Tak btw (nie ten dział wiem) kiedys slyszalem ze developerom webowym płacą mniej niz innym, tym piszacym pod desktopy itd, prawda to? z autopsji i z "opinii ogólnej"

@wiciu Ah tak jeszcze hibernate.. :P Stawiam, że wszystkich frameworków nie sposób ogarnąć. Co do ogólnych zasad OOP - możesz polecic jakas lekture, stronę gdzie ładnie opisuja?

Większość ludzi używa frameworków typu jQuery, AngularJS, etc. nie rozumiejąc samego, czystego JavaScriptu.

To oznacza, że składnia frameworków JS jest inna niż czystego JS? troche glupio mi wkuwać gotowe "regułki" nie wiedząc skąd się wzięły :D dlatego pytam

@Qbisiek oo, wydaje się ciekawe, przejrze go chetnie

Czyli ogólnie rzecz biorąc każdy z tych frameworków działa tak samodzielnie jak razem?
Czy np springa moge użyc w połączeniu z.. swingiem? bedzie to użyteczne? Jak np do aplikacji swinga dodać możliwosc obsługi sieci (jakiejs strony internetowej, serwera itp), właśnie springiem czy sa inne bilbioteki od tego? :D czysto z ciekawosci pytam

__Więc warto kontynuować nauke Javy?(jako głowna "umiejetnosc") __do tego typowo webowe sprawy tj html css js i biblioteki, a po drodze poznawać jakiegos PHP, coś tam liznąć, żeby wiedzieć z czym sie je inne technologie?

1

Język skryptowy zawsze się przyda. Może nie bezpośrednio w sensie klepania w nim systemu skoro chcesz pisać w javie, ale jak będziesz musiał coś na szybko sparsować, coś przetransformować etc.
Nie musisz ich wkuwać, zresztą nie ma nawet czego...
Możesz używać Springa ze Swingiem, bo i czemu nie? Spokojnie możesz wykorzystać wtedy w swingu IoC na przykład.
Zadajesz to samo pytanie po raz 10. Zamiast spamować po prostu siądź i się zacznij uczyć.

2

@azalut

Co do ogólnych zasad OOP - możesz polecic jakas lekture, stronę gdzie ładnie opisuja?

Chyba najlepiej opanować porządnie podstawy Javy.
Moim zdaniem, jest to wzorcowy język obiektowy. Dobrym źródłem jest dokumentacja i tutoriale na oficjalnych stronach Oracle.

Teraz masz co robić. ;-)

0

@Shalom ucze się, ucze, miedzy uczeniem, a piciem wody pisze posty :P
Właśnie się tak zastanawiam, czytam o tym JSP, o języku EL - Expression Language, niedlugo wejde w dział JSTL (czytam ksiązkę Java EE6 programowanie aplikacji WWW) jednak tak sie zastnawiam czy to ma sens, skoro doszły mnie słuchy, ze nikt juz tego nie używa? Moim problemem akutalnie jest to, że nie wiem co teraz wziąć do nauki. Ksiązka pisana jest dosc.. "rozciapciowato", duzo tekstu, a malo wyjasnien jakichs trafnych.
W internecie duzo tutoriali różnych technologii, tylko który przerabiać. Zwykle jest tak, że w jednym jak czegos nie zrozumiem to w drugim wyjaśnia i tak na zmiane. Aktualnie poznaje bardzo dużo nowych rzeczy, nazw itd, ale nie wiem jak je użyc w praktyce - pisząc jakąś stronę(pytanie też jaką, co ja moge tym zrobic :D?)

Wszystko to jakieś takie.. długie i właściwie nie wiem co do czego i po co, ucze sie ucze, a rezultatów nie ma(takie mam wrażenie). Złapał mnie troche "kryzys", bo chce coś robić, ale nie wiem co (oczywiscie pomijam to co pisał @wiciu ) W samej javie - co wziac zeby napisać cos ciekawego, jakis CMS, jakis serwis do bookowania biletów lotniczych (oczywiscie takie małe, pseudo :P), cokolwiek.

Uprzedzajac stwierdzenia, ze jestem zrozpaczony i zebym zaczal sie uczyc po prostu - jestem tylko troche zakrecony nadmiarem wiadomosci i nie wiem jak to poukładac w głowie

2

Java jest stosowana do webdev, mobile, aplikacji naukowych i finansowych.
Aktualnie się uczę Javy (zaliczone podstawy, teraz JSF i Spring) i mam podobne wrażenia jak autor wątku.
Znam PHP (Drupal, ZenCart, phpBB) i trochę Pythona (web2py).

Jak mogę podsumować pracę w Java/webdev?

  • JSP to prawdopodobnie historia. pominąłem ten etap bo:
  • JSF jest eleganckie ale wygląda jak naprawianie JSP, wygodne łączenie z obiektami, trochę krzywa nawigacja, jednak efektywność pracy z tym nie była chyba celem autorów (podpinanie klas do wszystkiego w XML-u - walidatory, formatery)
  • Spring - podobnie jak JSF, z tym że bardziej "naprawia" EJB. Mniej XML-i, więcej adnotacji.
  • EJB 3 - ogarnęli się (może za sprawą Spring) i nie stosują już tyle XML-i. Adnotacje i POJO - na plus.

XML-a sam wprowadzałem do firmy, ale nigdy nie myślałem o nim jako o narzędziu do programowania. Do konfiguracji - OK.
Ale w EJB stosowany był na taką skalę, że trudno mówić tylko o konfiguracji.

W narzędziu do webdev najważniejsza powinna być zasada "convention over configuration".
Przyspiesza wielokrotnie budowanie rozwiązań.

Z tego co wiem stosowana w:

  • Ruby: Ruby on Rails
  • Python: web2py
  • PHP: Yii, CakePHP
  • Java/Scala: Play! Framework

W Python czy PHP programuje się o wiele szybciej niż w językach kompilowanych (cykl zmiany to: zmiana/save/refresh w przeglądarce).

PHP to język bałaganiarski:

  • zestaw funkcji,
  • kosmiczne błędy / features w rozumieniu autorów języka - spróbuj porównać MD5,
  • ma pokręconą logikę odwoływania się do elementów obiektu
  • nie ma obsługi modułów (ma za to include wymyślone w latach '70 obiegłego wieku na potrzeby C, może nawet wcześniej)
  • ale jest od groma softu napisanego w tym języku (do wszystkiego)

Z języków skryptowych lepszy jest Python. Ale stosowany był dość długo do innych rzeczy, co widać w masie dostępnego oprogramowania (albo w jej braku).
Poza tym bardzo fajny język, do tego prawie uniwersalny (webdev, desktop, finanse, GPU, matematyka). W mobile - spotkałem raz.

Jeśli chodzi o wydajność to z tego co wiem tylko Ruby niezbyt się wyrabia. A i tak jest często stosowany.
PHP i Python nie mają problemów z wydajnością, nawet w dużych serwisach (patrz Facebook, Allegro).
Java / Scala będą oczywiście z tego zestawu najszybsze.

0

W Python czy PHP programuje się o wiele szybciej niż w językach kompilowanych (cykl zmiany to: zmiana/save/refresh w przeglądarce).

To akurat przesada bo często da się robić "hot swap" o ile nie modyfikowałeś interfejsów i wtedy w takiej javie trwa to tyle samo co save i refresh.

1

W czym przejawia się wyższość Javy.

Myślę, że Java zdobyła swoją popularność nie ze względu na to, że jest mega szybka. Tylko dlatego, że przede wszystkim:

  1. Można szybciej nauczyć się dobrze pisać w Javie niż np. w C++. Większe bespieczeństwo, sprawdzanie rozmiaru tablic, brak destruktora, ładowanie klas. Do tego Java jest bardziej zorientowana obiektowo. Dużo szybciej można coś napisać w Javie niż np. w C++ (oczywiście zależy od umiejętności).

  2. Jedno bazowe dzieciczenie. To co w C++ może sporo namieszać w Javie zostało według mnie super rozwiązane. Pamiętasz ile jest kruczków przy wielodziedziczeniu w C++, w Javie zamiast tego masz za to Interfejsy, lub klasy wbudowane które rozwiązują problem wielodziedziczenia.

  3. Java fajnie komponuje się z linuxem.
    Po prostu systemy w C++ , PHP jeśli są "zbytnio" rozbudowane są drogie w utrzymaniu. Problemy z wyciekami pamięci, dynamiczne typowanie w PHP (tfu jak ja tego nie lubiałem).

Wyobraź sobie aplikacje finansową napisaną w PHP czy C++, gdzie możemy odwołać się poza zakres tablicy. Można by całą książkę napisać dlaczego Java odniosła sukces. Jednak wszystko odnosi się do dwóch kwestii:

  1. Jak duży jest problem
  2. Jak bardzo skomplikowany jest problem

PS. Ja też na początku zaczynałem od JEE, ale gdy poznałem Springa dopiero wtedy zakochałem się w Javie.

1
vpiotr napisał(a):

Java jest stosowana do webdev, mobile, aplikacji naukowych i finansowych.
Aktualnie się uczę Javy (zaliczone podstawy, teraz JSF i Spring) i mam podobne wrażenia jak autor wątku.
Znam PHP (Drupal, ZenCart, phpBB) i trochę Pythona (web2py).

Jak mogę podsumować pracę w Java/webdev?

  • JSP to prawdopodobnie historia. pominąłem ten etap bo:
  • JSF jest eleganckie ale wygląda jak naprawianie JSP, wygodne łączenie z obiektami, trochę krzywa nawigacja, jednak efektywność pracy z tym nie była chyba celem autorów (podpinanie klas do wszystkiego w XML-u - walidatory, formatery)
  • Spring - podobnie jak JSF, z tym że bardziej "naprawia" EJB. Mniej XML-i, więcej adnotacji.
  • EJB 3 - ogarnęli się (może za sprawą Spring) i nie stosują już tyle XML-i. Adnotacje i POJO - na plus.

Powiem tak Walić JEE oni zawsze są do tyłu (pisze jak musze ale wole springa :D). Spring ma dużo większe zalety niż JEE.

  1. Wstrzykiwanie zależności w springu BAJKA w JEE co to jest :D
  2. AOP w springowy lub AspectJ w JEE jak sobie dodasz :P
  3. Spring Security łatwo konfigurowalny, intuicyjny a co ma JEE - syf
  4. Pisanie REST w Springu znowu BAJKA. Co ma JEE eee.........

Dlatego mam gdzieś JSF, JEE Spring wymiata, JEE może mu buty czyścić :D

Na twoim miejscu zrezygnował bym z uczenia JSF lepiej czas zainwestować w AngularJS lub DART'a to są technologiie przyszłości. Podobnie jak JSP odeszło do lamusa to teraz przyjdzie czas na JSF

0

@lukasw44
Co nie powiedzą, ze warto sie czegos uczyc, zaczne i nagle sie dowiaduje ze to g**no warte :D w końcu nie wiadomo za co sie brać :P

1
azalut napisał(a):

@lukasw44
Co nie powiedzą, ze warto sie czegos uczyc, zaczne i nagle sie dowiaduje ze to g**no warte :D w końcu nie wiadomo za co sie brać :P

To nie jest tak. Wszystki zależy co chcesz robić.
Jeśli chcesz tworzyć stronki 4 web pages dla firm to bierz php i jest ok.
Ja mam wolną rękę jeśli chodzi o technologie dlatego zazwyczaj wybieram springa, spring security, spring rest, spring data, spring integration i masz całe środowisko klasy enterprise gotowe do pracy. W przypadku JEE nie masz całego stosu technologii. Dlatego musisz szukać rozwiązań, przykładowo Jboss AOP itd itp. Spring jest fajny bo dostarcza, Ci praktycznie wszystkiego co byś chciał do tworzenia aplikacji klasy enterprise. Dodatkowo to wszystko fajnie ze sobą współpracuje.

Jeśli nauczysz się JSF to twoja wiedza nie idzie na marne. Tylko po prostu w 80 % będziesz pracował nad utrzymywaniem starych projektów które były napisane X lat temu. Teraz na topie jest REST, DART , Bootstrap, AngularJS, Akka, Vert.x, Spring integration itp itd

0

powiem ci szczerze @lukasw44 ze nazwy które podałeś sa mi tak obce ze nawet ich nigdy nie spotkałem :P Myslałem zeby zrobić tak, że poznam stos JEE tak w stopniu srednio-zaawansowanym, zeby dowiedziec sie z czym to sie je, a potem wziac sie za springa, również na tym poziomie, potem będę wiedziec ktore mi bardziej pasuje. Mam watpliwosci jednak, ze moze to zajac nie rok czy dwa, ale dlugie lata, a chcialbym miec ta specjalizacje w ktorej bede kumaty i cos potrafil ciekawego wykodować :)
Słyszałem np. ze do springa do frontendowych spraw uzywa sie html5 (tak?) wraz z bibliotekami typu jQuery czy Dojo - tu dochodzi kolejna rzecz do poznania - javascript, troche tego nie mało

1

@azalut nie ma się co martwić ja od ok. 4 lat siedzę w jee, springu i jeszcze wszystkiego nie poznałem i o wszystkim się jeszcze nie dowiedziałem.
Moje pierwsze zderzenie z Javą było takie, że miałem napisać servlet, który wyciągnie z bazy listę elementów i przekaże to na widok do strony jsp, przy użyciu jstl. Robiłem to chyba ze 3 godziny, teraz takie rzeczy z palca strzelam. Chodzi o to żeby się nie zniechęcać. Ja miałem super szczęście, że bez żadnego doświadczenia zostałem wrzucony w projekt dla niemców. Na początku jak rozwinołem drzewo katalogów w projekcie to nie wiedziałem co to jest i z czym się to je. Byłem zero z JS a musiałem pisać rzeczy w ExtJS, masakra to był kosmos dla mnie. Często myślałem, żeby rzucić to wszystko. Jednak siedziałem po 14 godzin, pracowałem po godzinach. Chociaż zarobki były naprawde marne. Nie zależało mi jednak na kasie, wiedziałem jedno jak przetrwam rok to będę miał na tyle doświadczenia aby potem mieć mase ofert pracy. Po tym roku pojechałem do Krk i byłem zdziwiony ilością ofert.

Z perspektywy powiem Ci tak. Samo czytanie książek to tak naprawdę mało. Ja miałem coś takiego, że najpierw praktyka, a potem w wolnej chwilil czytałem książke i wszystko stawało się dla mnie dziecinnie proste. Przykładowo weź sobie książkę do JEE i zacznij czytać, rozumiesz coś, bo ja mało co rozumiałem, czarna magia. Jednak jeśli najpierw coś pisałem i podpatrywałem kod kolegów (copy - paste) , i potem czytałem o tym to było ok.

Dam Ci radę przerób sobie tutki do Springa, teraz tam w dziale guide na samym dole masz 3 tutoriale. Całe aplikacje napisane od A do Z.

0

To ja zadam pytanie dodatkowe - czy do webdev w Springu wykorzystuje się tylko Spring MVC, czy też równie często WebFlow?
Co ze Spring Roo? Nadaje się to do czegoś?

1
vpiotr napisał(a):

To ja zadam pytanie dodatkowe - czy do webdev w Springu wykorzystuje się tylko Spring MVC, czy też równie często WebFlow?
Co ze Spring Roo? Nadaje się to do czegoś?

Zadajesz trudne pytania :)

Wszystko zależy od m.in poniższych :

  1. Co chcesz pisać
  2. W czym lubisz pisać
  3. Jak bardzo złożony jest problem
  4. Jak dużo użytkowników docelowo będzie korzystać z aplikacji.

I na podstawie tego wybierasz odpowiednie rozwiązanie. Przykładowo dla "aplikacji internetowych", najlepiej skorzystać z REST, ma jednak jeden minus ciężko się pozycjonuje. Jednak jak tworzysz jakąś aplikacje to nie z zamiarem jej pozycjonowania, np. Gmail, Tweeter itp. Natomiast jak chcesz w jeden dzień szybko napisać znajomemu stronke to możesz skorzystać ze Spring Roo. Raczej nie spotkałem się z tym, aby Spring Roo był wykorzystywany w jakiejś poważnej aplikacji biznesowej. Istnieje też mase "aplikacji internetowych", które są używane tylko wewnątrz firm, np. zarządzanie ośrodkiem zdrowia. Wtedy najczęściej, wybierane są takie właśnie technologie jak GWT, JSF, WebFlow, ExtJS.

Ja osobiście preferują podejście REST. Dobrze sprawdza się w "aplikacjach internetowych" jak i w aplikacjach dla firm.

0
lukasw44 napisał(a):

Ja osobiście preferują podejście REST. Dobrze sprawdza się w "aplikacjach internetowych" jak i w aplikacjach dla firm.

Co rozumiesz przez "podejście REST"?
Java + Spring jako serwer REST API oraz na kliencie np. Bootstrap + AngularJS + jQuery?

Czy REST API jest wystarczające żeby zastąpić WebServices? Np. właśnie w aplikacji webowej typu "moje finanse" wystawionej na zewnątrz?

I co masz konkretnie do JSF, bo oglądam teraz tutoriale i przyznam że jeszcze nie widzę co jest nie tak.
Owszem, prymitywne, ale przecież można dołożyć Dependency Injection (np. Google Guice), warstwę bazy danych (Hibernate), aspekty (AspectJ) i powinno to jakoś tam hulać.

1

Oczywiście REST z powodzeniem może zastąpić twoje usługi sieciowe i na dodatek jest bardziej elastyczny, zintegrowany z protokołem HTTP, wsparcie dla wszystkich metod PUT,GET,DELETE,HEAD,POST oraz OPTION .Dodatkowo może zwracać dane w różnych formatach JSON, XML i co tam jeszcze chcemy.

Nie ma nic do JSF. Jest po prostu trochę złożone, trzeba się przestawić na inny punkt widzenia. Jak sie nauczysz to tworzy się bardzo szybko stronki, formularze itd. Jest bardzo dobry do korporacyjnych aplikacji, programista Javy z małą znajomością HTML , CSS , JS i tak dalem, może tworzyć aplikacje.

Przykładowe podejście REST to tak jak napisałeś, może być AngularJS + JQuery + HTML a po stronie servera REST. Zauważ, że w takiej konfiguracji developer Javy wystawia zazwyczaj tylko usługi REST nie interesuje go frontend. Programiści HTML, JS itd martwią się jak to ma wyglądać. Możesz łatwo rozdzielić aplikacje na web, mobile i co tam jeszcze dusza zapragnie.

Podam Ci przykład. Pisaliśmy aplikacje pod GWT. Była rozwijana przez długi czas, szybko się kodowało, przyjemnie itd. Za dwa lata przyszły zmiany i klient zażyczył sobie zmiany layout. Wiesz co to oznacza w przypadku gwt, mase pracy (zwłaszcza, że używaliśmy SmartGWT) . Dodatkowo część elementów ui. była rozjechana na różnych przeglądarkach, podsumowując masakra.

Gdyby ta sama aplikacja była napisana w podejściu REST. Nowy layout można zmienić w jeden dzień :)

0

to ja może bez zbytniego pisania spytam: czym jest w ogóle REST? :D

0
lukasw44 napisał(a):

Podam Ci przykład. Pisaliśmy aplikacje pod GWT. Była rozwijana przez długi czas, szybko się kodowało, przyjemnie itd. Za dwa lata przyszły zmiany i klient zażyczył sobie zmiany layout. Wiesz co to oznacza w przypadku gwt, mase pracy (zwłaszcza, że używaliśmy SmartGWT) . Dodatkowo część elementów ui. była rozjechana na różnych przeglądarkach, podsumowując masakra.

Gdyby ta sama aplikacja była napisana w podejściu REST. Nowy layout można zmienić w jeden dzień :)

OK, ale w takim razie to wina GWT, że nie da się oddzielić warstwy widoku od warstwy logiki aplikacji?
Czy w JSF mogę mieć z tym problem, żeby zrobić MVC?
Czy w "podejściu REST" po stronie serwera implementujesz tylko usługi REST czy też inne?

Czy REST jest lepszy od WebServices bo jest prostszy (co widać gołym okiem) czy też dlatego że może być po prostu stosowany w JS?

Czy dla REST jest jakaś popularna alternatywa oparta na JSON-RPC (stosuję obecnie w C++) którą można łatwo wykorzystać w Java i w JavaScript?

0

@up
JSF to jest MVC, tylko takie trochę upośledzone.

0

A tak w zasadzie to obecnie jak nie web i mobile to co pozostaje?

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