Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: Jak się teraz pisze w Javie?

Grzegorz G.:
Od siebie mogę dorzucić jeszcze jooq, czyli SQL sprawdzany przez kompilator Javy. Trochę nieładnie ze Springiem się integruje, ale używam i mocno chwalę. Szczególnie do odziedziczonych baz danych.

to z takich wynalazków warto spojrzeć na:
http://www.querydsl.com/
lepsza wersja Static JPA Metamodel
Michał Pyclik

Michał Pyclik Architekt
Oprogramowania,
Biuro Projektowania
Systemów Cy...

Temat: Jak się teraz pisze w Javie?

A widziałem to już :D Fajne. Zamiast QueryDsl mogli to nazwać JLinq :P Wszyscy by wiedzieli o co chodzi :) Sam zrobiłem coś podobnego w Delphi ale się nie przyjęło... Ale fajne.

konto usunięte

Temat: Jak się teraz pisze w Javie?

Jarosław S.:
lekki offtop ale najwyższy czas przestać traktować standardową J6EE jako "ciężką" (EJB / JPA / CDI itp.). Aktualnie jej jedyna "ciężkość" wyraża się tylko tym że kontener w którym aplikacja działa dłużej wstaje (choć z tym jest coraz lepiej np. mikroarchitektura Glassfisha, lub Apache Tomee, choć ten ostatni nie osiągnał moim zdaniem jeszcze gotowości produkcyjnej na poziomie innych kontenerów). Liczba deskryptorów i konfiguracji niezbędnej do działania aplikacji w kontenerze aplikacji EJB3 / JPA2 / REST jest niejednokrotnie znacznie mniejsza niż w Springu.
Z całym szacunkiem do autorów springa ale pod FUD podpada wykazywanie głównej wartości springa jako lekkości we wprowadzeniu do książki Spring in Action (ostatnie wydanie z 2011) używając porównania do EJB 2 i wcześniejszych, kiedy od 2007 a wiec od 4 lat przed napisaniem Spring in Action jest dostępna EJB3 która jest oparta na zwykłym POJO. Moim zdaniem główna zaleta Springa to wielorakość wyboru sposobu osiągnięcia danego rozwiązania + pewne "gemy" w określonych dziedzinach (np. aspekty). Daną aplikację można zrobić na mnóstwo sposobów korzystając z tego co Spring daje.

Zainteresowany tą wypowiedzą wziąłem się za stworzenie aplikacji JPA (Toplink)+EJB3+JSF. Dotychczasowe bóle i męki dla osób korzystającej z Hibernate i Spring:
-brak Criteria API, a co za tym idzie ciężko o dynamiczne generowanie odpytań do bazy (potrzebne chociażby na komponencie DataTable)
-ciężko się przestawić w podejściu EntityManager'a do utrwalania danych. W springu interfejs sessionfactory posiadał metody save(), update(), saveorUpdate(), w dodatku wszystko void. EntityManager posaida persist() void, oraz merge(), który zwraca utrwaloną encję.

Z plusów na pewno mniej dodatkowych bibliotek, zamiast kilkunastu dependency w mavenie, jedna "jee6-api" i możemy stawiać szkielet aplikacji. Całkiem zachęcające. Ale ktoś ma jakieś rozwiązanie odnośnie Criteria ? jest jakiś odpowiednik tego ?
Marcin Mroczkowski

Marcin Mroczkowski Programista JAVA/JEE

Temat: Jak się teraz pisze w Javie?

JPA posiada bardzo potężnie rozbudowane criteria API, poniżej link to tutoriala Oracle:
http://docs.oracle.com/javaee/6/tutorial/doc/gjrij.html

Jedyne co naprawdę mnie bolało w JPA to całkowity brak query by example, które bardzo w Hibernate lubię.

konto usunięte

Temat: Jak się teraz pisze w Javie?

a jednak jest, mój błąd :) wezmę się za tutorial oracle'owy. Rzeczywiście dosyć rozbudowane criteria api. Query by example jeszcze mogę przeboleć :)
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: Jak się teraz pisze w Javie?

Andrzej C.:
Zainteresowany tą wypowiedzą wziąłem się za stworzenie aplikacji JPA (Toplink)+EJB3+JSF. Dotychczasowe bóle i męki dla osób korzystającej z Hibernate i Spring:
-brak Criteria API, a co za tym idzie ciężko o dynamiczne generowanie odpytań do bazy (potrzebne chociażby na komponencie DataTable)

jak koledzy wcześniej wspomnieli jest Criteria API w JPA z 3 poziomami "type-safe"w tym compilation time validation jeżeli użyje się generacji metamodelu:

http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html...

podobny do querydsl

konto usunięte

Temat: Jak się teraz pisze w Javie?

Polecam na początku zapoznać się ze Spring Roo który dostepny jest razem ze Spring Tool Suite. Jest to RAD tool, który pozwala bardzo szybko napisać podstawowy szkielet aplikacji (konfiguracja, model, podstawowe jspy). Nie wiem jak sprawdza się przy naprawdę złożonych projektach, ponieważ jestem początkujący w tym temacie, ale mi przy nauce Springa bardzo pomógł. Co ciekawsze - pozwala on utworzyć podstawowe warstwy widoku dla takich frameworków jak Vaadin, Play, GWT lub (oczywiscie) SpringMVC. Jest też możliwość rozszerzania funkcjonalności Spring Roo poprzez addony. A co najważniejsze - jak już utworzy się podstawowy szkielet aplikacji i Roo jednak nie przypadnie do gustu to można się go pozbyc w 10minut z projektu nie tracąc na dotychczasowej funkcjonalności. :)
Łukasz Woźniak

Łukasz Woźniak Starszy programista,
Asseco Business
Solutions S.A.

Temat: Jak się teraz pisze w Javie?

Andrzej C.:
a jednak jest, mój błąd :) wezmę się za tutorial oracle'owy. Rzeczywiście dosyć rozbudowane criteria api. Query by example jeszcze mogę przeboleć :)

Witam,

Ciekawy wątek się rozwinął. Nawiązując do tematu Criteria API, warto zapoznać się z samą specyfikacją, a dopiero potem ( oraz w razie problemów ) odwoływać się do specyfikacji i rozwiązań jakie zastosował provider JPA. Fajnie opisane niuanse JPA są w książce "Pro JPA 2", która polecam razem z uzupełnianiem wiedzy zespecyfikacji ( więcej na ten temat opisałem TUTAJ )Ten post został edytowany przez Autora dnia 13.05.13 o godzinie 20:42
Łukasz Kwiatkowski

Łukasz Kwiatkowski Programista Java

Temat: Jak się teraz pisze w Javie?

Witam
Myślę, że wiele osób zapomina czym jest sztuka programowania.
Dobry programista potrafi przy użyciu wzorców projektowych i zwykłych klas POJO stworzyć kod, który modeluje dany problem. Dopiero w następnym kroku szuka (lub są narzucone) narzędzi (frameworków), które pomogą np. utrwalić dane.
Warstwy Application Services, DAO etc. to zazwyczaj przelotki, delegujące operacje do innych klas.

Będąc też kilkakrotnie na rekrutacjach zauważyłem, że zawsze pojawiają się tylko pytania ze znajomości języka lub biblioteki. Nigdy nie dostałem pytania sprawdzającego abstrakcyjne myślenie (np. Narysuj diagram UML dla prostego systemu zamówień, w którym istnieją różne polityki rabatowe ...).
Myślę, że to duży błąd gdyż języka i narzędzi bardzo łatwo się nauczyć, a nie to jest najważniejszą cechą dobrego programisty.

Polecam poniższe książki jako lektura obowiązkowa dla wszystkich programistów:
Pragmatyczny programista. Od czeladnika do mistrza
Autorzy: Andrew Hunt, David Thomas
http://helion.pl/ksiazki/pragmatyczny-programista-od-c...

Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
Autorzy: Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
http://helion.pl/ksiazki/wzorce-projektowe-elementy-op...

Temat: Jak się teraz pisze w Javie?

Łukasz K.:
Witam
Myślę, że wiele osób zapomina czym jest sztuka programowania.
Dobry programista potrafi przy użyciu wzorców projektowych i zwykłych klas POJO stworzyć kod, który modeluje dany problem. Dopiero w następnym kroku szuka (lub są narzucone) narzędzi (frameworków), które pomogą np. utrwalić dane.
Warstwy Application Services, DAO etc. to zazwyczaj przelotki, delegujące operacje do innych klas.

Zgodzę się tylko częścciowo. Tworząc delegację do delegacji, bardzo szybko powstaje mały potworek. Wybierając framework i związaną z nim architekturę chdzi o to, by do minimum ograniczyć programistyczne "ceremonie". By skupić się na rozwiązaniu konkretnego problemu a nie na rozwiązywaniu problemów infromatyki. Framework często też narzuca lub preferuje konkretne wzorce projektowe (np. Dependency Injection).
Łukasz Kwiatkowski

Łukasz Kwiatkowski Programista Java

Temat: Jak się teraz pisze w Javie?

Sylwester R.:

Zgodzę się tylko częścciowo. Tworząc delegację do delegacji, bardzo szybko powstaje mały potworek. Wybierając framework i związaną z nim architekturę chdzi o to, by do minimum ograniczyć programistyczne "ceremonie". By skupić się na rozwiązaniu konkretnego problemu a nie na rozwiązywaniu problemów infromatyki. Framework często też narzuca lub preferuje konkretne wzorce projektowe (np. Dependency Injection).

Chodzi mi o to, że powinno się dobierać frameworki/narzędzia najlepsze (najlepiej/dopasowane) do rozwiązywanego problemu. Czyli modelujemy abstrakcje (rozwiązanie problemu), a dopiero później dodajemy "magię" nowoczesnych frameworków.
Marcin Mroczkowski

Marcin Mroczkowski Programista JAVA/JEE

Temat: Jak się teraz pisze w Javie?

Sprawa jest bardzo na czasie, ale w tym temacie to trochę off-top. Ta dyskusja zasługuje moim zdaniem na nowy temat.
Łukasz K.:
Witam
Myślę, że wiele osób zapomina czym jest sztuka programowania.

Ciężko się z tym stwierdzeniem nie zgodzić, ale sytuacje kreuje rynek i nie jest to wina frameworków. Oczywiście są podejścia, które stawiają zbyt duży nacisk na framework, ale moim zdaniem nie jest to główna przyczyna degradacji umiejętności ludzi i jakości kodu.
Łukasz K.:
Będąc też kilkakrotnie na rekrutacjach zauważyłem, że zawsze pojawiają się tylko pytania ze znajomości języka lub biblioteki. Nigdy nie dostałem pytania sprawdzającego abstrakcyjne myślenie

Programowanie jest sztuką, wie to każdy kto z programuje z pasji. Problem w tym, że pracodawcy zwykle nie potrzebują ludzi, którzy potrafią sami przeanalizować biznes i stworzyć abstrakcję od początku. Potrzebny jest zastęp szeregowych programistów, którzy mogą nie mieć zielonego pojęcia o analizie obiektowej. Pytania o framework mają zapewnić, że pracownik będzie w stanie szybko wdrożyć się w kod i nie pogubi się w nim. Ogromna większość roboty to maintanace starych systemów, nie refactoring/developing.
Pisząc to wcale nie chcę wyrazić, że mi się to podoba. Moim zdaniem takie podejście jest tanie i skuteczne do czasu. Zatrudnianie programistów, którzy piszą bez podstawowych umiejętności obiektowych i robienie na zasadzie "ma działać" prowadzi do powstania potworów, w których po pewnym czasie nikt nie jest w stanie się połapać.
Michał Pyclik

Michał Pyclik Architekt
Oprogramowania,
Biuro Projektowania
Systemów Cy...

Temat: Jak się teraz pisze w Javie?

Łukasz K.:
Witam
Myślę, że wiele osób zapomina czym jest sztuka programowania.
Dobry programista potrafi przy użyciu wzorców projektowych i zwykłych klas POJO stworzyć kod, który modeluje dany problem. Dopiero w następnym kroku szuka (lub są narzucone) narzędzi (frameworków), które pomogą np. utrwalić dane.
Warstwy Application Services, DAO etc. to zazwyczaj przelotki, delegujące operacje do innych klas.

Będąc też kilkakrotnie na rekrutacjach zauważyłem, że zawsze pojawiają się tylko pytania ze znajomości języka lub biblioteki. Nigdy nie dostałem pytania sprawdzającego abstrakcyjne myślenie (np. Narysuj diagram UML dla prostego systemu zamówień, w którym istnieją różne polityki rabatowe ...).
Myślę, że to duży błąd gdyż języka i narzędzi bardzo łatwo się nauczyć, a nie to jest najważniejszą cechą dobrego programisty.

Polecam poniższe książki jako lektura obowiązkowa dla wszystkich programistów:
Pragmatyczny programista. Od czeladnika do mistrza
Autorzy: Andrew Hunt, David Thomas
http://helion.pl/ksiazki/pragmatyczny-programista-od-c...

Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku
Autorzy: Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
http://helion.pl/ksiazki/wzorce-projektowe-elementy-op...

Oj oj, Panie kolego Łukaszu, zacząłeś tym postem zupeeełnie inny wątek. To oczym Ty mówisz najlepiej opisuje unclebob w swoich wykładach np. Clean Architecture (http://vimeo.com/43612849). Natomiast książka "bandy czworka" którą przytoczyłeś nie jest moim zdaniem tak bardzo "must read" jak Clean Code wuja boba: http://helion.pl/ksiazki/czysty-kod-podrecznik-dobrego...

Ale to jest temat rzeka, można by o tym mówić godzinami ale moim zdaniem lepiej coś stworzyć - nie dużego, nie doskonałego ale coś, co będzie można udoskonalać - bo będzie technicznie podatne na udoskonalanie. Np. jak FitNesse... (genialny projekt).Ten post został edytowany przez Autora dnia 08.06.13 o godzinie 15:13
Michał Pyclik

Michał Pyclik Architekt
Oprogramowania,
Biuro Projektowania
Systemów Cy...

Temat: Jak się teraz pisze w Javie?

Marcin M.:
Sprawa jest bardzo na czasie, ale w tym temacie to trochę off-top. Ta dyskusja zasługuje moim zdaniem na nowy temat.
Łukasz K.:
Witam
Myślę, że wiele osób zapomina czym jest sztuka programowania.

Ciężko się z tym stwierdzeniem nie zgodzić, ale sytuacje kreuje rynek i nie jest to wina frameworków. Oczywiście są podejścia, które stawiają zbyt duży nacisk na framework, ale moim zdaniem nie jest to główna przyczyna degradacji umiejętności ludzi i jakości kodu.
Łukasz K.:
Będąc też kilkakrotnie na rekrutacjach zauważyłem, że zawsze pojawiają się tylko pytania ze znajomości języka lub biblioteki. Nigdy nie dostałem pytania sprawdzającego abstrakcyjne myślenie

Programowanie jest sztuką, wie to każdy kto z programuje z pasji. Problem w tym, że pracodawcy zwykle nie potrzebują ludzi, którzy potrafią sami przeanalizować biznes i stworzyć abstrakcję od początku. Potrzebny jest zastęp szeregowych programistów, którzy mogą nie mieć zielonego pojęcia o analizie obiektowej. Pytania o framework mają zapewnić, że pracownik będzie w stanie szybko wdrożyć się w kod i nie pogubi się w nim. Ogromna większość roboty to maintanace starych systemów, nie refactoring/developing.
Pisząc to wcale nie chcę wyrazić, że mi się to podoba. Moim zdaniem takie podejście jest tanie i skuteczne do czasu. Zatrudnianie programistów, którzy piszą bez podstawowych umiejętności obiektowych i robienie na zasadzie "ma działać" prowadzi do powstania potworów, w których po pewnym czasie nikt nie jest w stanie się połapać.


HAHA! Marcinie! No to trafiłeś! :) Rodzi się pytanie: Kto płaci za dobry kod? Dobry projekt, dobrych programistów? Pokaż mi taką firmę - bo ja znam tylko takie w których się tworzy własnie takie potwory... :)

ps. masz rację założyłem nowy wątek: http://www.goldenline.pl/forum/3276658/kto-placi-za-do...
Michał Pyclik

Michał Pyclik Architekt
Oprogramowania,
Biuro Projektowania
Systemów Cy...

Temat: Jak się teraz pisze w Javie?

Tomasz B.:
Polecam na początku zapoznać się ze Spring Roo który dostepny jest razem ze Spring Tool Suite. Jest to RAD tool, który pozwala bardzo szybko napisać podstawowy szkielet aplikacji (konfiguracja, model, podstawowe jspy). Nie wiem jak sprawdza się przy naprawdę złożonych projektach, ponieważ jestem początkujący w tym temacie, ale mi przy nauce Springa bardzo pomógł. Co ciekawsze - pozwala on utworzyć podstawowe warstwy widoku dla takich frameworków jak Vaadin, Play, GWT lub (oczywiscie) SpringMVC. Jest też możliwość rozszerzania funkcjonalności Spring Roo poprzez addony. A co najważniejsze - jak już utworzy się podstawowy szkielet aplikacji i Roo jednak nie przypadnie do gustu to można się go pozbyc w 10minut z projektu nie tracąc na dotychczasowej funkcjonalności. :)

Wracając do tematu bardzo zainteresowała mnie wypowiedź Tomka. Szybko zainstalowałem ten cały stuff ale... właśnie, to czego najbardziej nie lubię w tych wszystkich "eclipsowych" rozwiązaniach... Są robione jakby "na kolanie" - przecież, kto wypuścił projekt którego podstawowa formatka do tworzenia nowego projektu Roo nie mieści się na ekranie laptopa :(

edit: po uruchomieniu Spring Tool Suite:
java.exe 100% proc (i3-2350M).,
0,5GB RAM...

Czy są jakieś środowiska do Javy które aż nie potrzebują tyle zasobów? Jednak nie pytam tu o notatnik, chcę pełny refactoring i intelisense... (znam NetBeans, IntelliJ, Eclipse)... W czym Wy piszecie w Javie?Ten post został edytowany przez Autora dnia 01.06.13 o godzinie 08:53

konto usunięte

Temat: Jak się teraz pisze w Javie?

Niestety ja osobiscie do Eclipse'a jestem bardzo przywiązany i mimo znajomości jego wad trudno jest mi przejść na inne środowisko (przyzwyczajenia robią swoje).
A co do Spring Roo, którego głównie dotyczyła moja wypowiedź, to ten dodatek może działać jako całkowicie odseparowany od IDE shell. Czyli możesz pisać w czymkolwiek tylko chcesz a Spring Roo będzie sobie działał w tle Twojego projektu. Jeśli temat Cie zainteresował to przejrzyj sobie e-booka udostępnionego na stronie głównej Spring Source
Tomasz D

Tomasz D Programista
Java/JEE, freelancer

Temat: Jak się teraz pisze w Javie?

Z rozmowy z prelegentem ze SpringSource na GeeCON-ie wiem, że mają zarzucić rozwijanie Spring Roo i zostawić go całkowicie społeczności.
Tomasz Cejner

Tomasz Cejner Senior Responsive
Agile Polyglot
Developer

Temat: Jak się teraz pisze w Javie?

Skoro przewinęły się wszystkie trendy mody, i bardzo mądra odpowiedź o sztuce programowania (kolegi Łukasza), dodam od siebie jeszcze jeden gorący temat czyli Domain-Driven Design. Brzmi jak buzzword, ale w skrócie polega to na takim projektowaniu aplikacji, by zacząć od budowania odpowiedniego *modelu* w ścisłej współpracy z ekspertem z danej dziedziny, a potem dopiero wkładać to we frameworki (prawdopodobnie skończy się i tak na Hibernate :).

Wymaga to jednak poważnej zmiany w myśleniu, bardzo trudnej niestety dla doświadczonych programistów, którzy często nie widzą innej drogi niż 1. zaprojektowanie tabelek, 2. napisanie DAO 3. napisanie serwisów, 4. napisanie kontrolerów. W sprawie DDD proponuję słuchać Sławka Sobótki, on na ten temat dużo mówi i pisze: http://www.bottega.com.pl/artykuly-i-prezentacje

Ale żeby było o frameworkach i narzędziach, to w ramach zaburzania utrwalonych standardów (Spring, Hibernate...) proponuję zainteresować się mikro-serwisami i bardzo fajnym lekkim frameworkiem DropWizard http://www.infoq.com/presentations/Dropwizard. Ostrzegam tylko że rezygnacja z serwera aplikacji typu JBoss może być dla kogoś trudna do zrozumienia :)

Temat: Jak się teraz pisze w Javie?

Tomasz C.:
Skoro przewinęły się wszystkie trendy mody, i bardzo mądra odpowiedź o sztuce programowania (kolegi Łukasza), dodam od siebie jeszcze jeden gorący temat czyli Domain-Driven Design.

Koncepcja bardzo bliska do DSL, czyli programowania zorientowanego na język. Zadaniem programisty jest zaprojektowanie języka, w którym można łatwo wyraźć problem z danej dziedziny.
Michał Pyclik

Michał Pyclik Architekt
Oprogramowania,
Biuro Projektowania
Systemów Cy...

Temat: Jak się teraz pisze w Javie?

Chciałem jeszcze wrócić do kwestii interfejsu. Z czasem jak poszerzam swoją wiedzę nt technologii Java (bo nazywanie tego językiem było by co najmniej krzywdzące), zauważyłem, iż jest silnie dedykowany pod Web. Poprawcie mnie jeśli się mylę. Ale próbując stworzyć aplikację Desktopową w Javie natrafiamy na całą masę problemów.
Z jednej strony mamy stosunkowo nową platformę - JavaFX która proponuje całkiem ciekawy sposób wytwarzania aplikacji (powiem to z pewną ostrożnością ale dostrzegam pewne podobieństwa do Microsoftowego WPF-a...). Jednak wymaga nauki od podstaw całej biblioteki, nowego narzędzia, java-css-a - nie każdy ma na to czas, i nie wiadomo czy to się przyjmie...
Z drugiej strony natomiast mamy (archaiczne?) Swing i AWT (ostatnio zaciekawiło mnie też SWT) jednak nie znam żadnych frameworków - lub po prostu metodyk wytwarzania aplikacji za pomocą tych bibliotek (Swing Framework został porzucony). Pościągałem trochę softu z SourceForge - dobrego softu - i każdy ma swój sposób na realizację interfejsu. Czy jesteście w stanie polecić jakieś inne biblioteki, albo co lepsze metodyki tworzenia GUI dla aplikacji Java? Czy WindowsBuilder Eclipse lub Designer z NetBeans są wykorzystywane przez kogokolwiek? Odnoszę wrażenie że są jednak mało praktyczne... Aczkolwiek wszystkie moje wnioski są mocno powierzchowne, a więc proszę ich nie odbierać jako krytyki ;)



Wyślij zaproszenie do